// clitk
#include "clitkTransformUtilities.h"
-
+#include "clitkAffineRegistrationGenericFilter.h"
// qt
#include <QMessageBox>
#include <QFileDialog>
// qsize.setWidth(850);
// mToolWidget->setFixedSize(qsize);
-
// Set how many inputs are needed for this tool
- // mFilter = new clitk::AffineTransformGenericFilter<args_info_clitkAffineTransform>;
+ mFilter = new clitk::AffineRegistrationGenericFilter;
// Set how many inputs are needed for this tool
- AddInputSelector("Select moving image");
- AddInputSelector("Select fixed image");
+ AddInputSelector("Select moving image",mFilter);
+ AddInputSelector("Select fixed image",mFilter);
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolRigidReg::reject()
{
- return vvToolWidgetBase::reject();
+
+ return vvToolWidgetBase::reject();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolRigidReg::GetArgsInfoFromGUI()
-{
- DD("works");
+{
+ QFont font=QFont("Times New Roman",10);
+ tab2textedit->setTextColor(QColor(255,0,0));
+ tab2textedit->setCurrentFont(font);
+ tab2textedit->update();
+ QString str;
+ QString file = QFileDialog::getOpenFileName(
+ this,
+ "Choose the Transformation Parameters file",
+ mMainWindow->GetInputPathName(),
+ "Text (*.conf *.txt *.rtf *.doc)");
+ if (file.isEmpty())
+ return;
+ QFile Qfile1(file);
+ // ifstream readfile;
+ std::string configfile= file.toStdString();
+ cmdline_parser_clitkAffineRegistration_configfile(const_cast<char*>(configfile.c_str()),&mArgsInfo,1,1,1);
+ mArgsInfo.gradient_flag=1;
+
+ //Read from File and display it on the TextBox 2
+ ifstream readfile;
+ std::vector<QString> Qstr;
+ readfile.open(configfile.c_str());
+ if (readfile.is_open())
+ {
+ while (!readfile.eof())
+ {
+ readfile >> configfile;
+ Qstr.push_back(QString(configfile.c_str()));
+ }
+ readfile.close();
+ }
+ else {
+ cout << "Unable to open file";
+ }
+ for(unsigned int i=0;i<Qstr.size();i++)
+ {
+ str=tab2textedit->toPlainText();
+ str.append(Qstr.at(i));
+ tab2textedit->setText(str);
+ str.append("\n");
+ tab2textedit->setText(str);
+ }
}
//------------------------------------------------------------------------------
QMessageBox::information(this, "Warning","Your Reference and Target Images are the same");
}
mTwoInputs = true;
- SetOverlay();
+ SetOverlay(mInput2->GetImage());
mImageSize=mInput1->GetImage()->GetSize();
SetRotationCenter();
SetSliderRanges();
//connect all sigs to slots
connect(resetbutton, SIGNAL(pressed()), this, SLOT(ResetTransform()));
- connect(tab2loadbutton, SIGNAL(pressed()), this, SLOT(AutoRegister()));
+ connect(tab2loadbutton, SIGNAL(pressed()), this, SLOT(GetArgsInfoFromGUI()));
+ connect(tab2applybutton, SIGNAL(pressed()), this, SLOT(AutoRegister()));
+
connect(Xval, SIGNAL(editingFinished()), this, SLOT(SetXvalue()));
connect(Yval, SIGNAL(editingFinished()), this, SLOT(SetYvalue()));
connect(xrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
connect(yrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
connect(zrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
-
+
connect(loadbutton, SIGNAL(pressed()), this, SLOT(ReadFile()));
connect(savebutton, SIGNAL(pressed()), this, SLOT(SaveFile()));
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
-void vvToolRigidReg::SetOverlay()
+void vvToolRigidReg::SetOverlay(vvImage::Pointer Image)
{
for (int i =0; i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
- mCurrentSlicerManager->GetSlicer(i)->SetOverlay(mInput2->GetImage());
+ mCurrentSlicerManager->GetSlicer(i)->SetOverlay(Image);
mCurrentSlicerManager->GetSlicer(i)->SetActorVisibility("overlay",0,true);
mCurrentSlicerManager->SetColorMap();
mCurrentSlicerManager->Render();
//------------------------------------------------------------------------------
void vvToolRigidReg::SetTransform(vtkMatrix4x4 *matrix)
{
- vtkSmartPointer<vtkTransform> transform =mCurrentSlicerManager->GetImage()->GetTransform();
- transform->SetMatrix(matrix);
+ vtkSmartPointer<vtkTransform> transform=vtkSmartPointer<vtkTransform>::New();
+ for(int i=0; i<4;i++)
+ for(int j=0;j<4;j++)
+ mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix()->SetElement(i,j,matrix->GetElement(i,j));
+
Render();
}
//------------------------------------------------------------------------------
-
+
//------------------------------------------------------------------------------
void vvToolRigidReg::Render()
{
for (int i=0; i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
- mCurrentSlicerManager->GetSlicer(i)->ForceUpdateDisplayExtent();
+ mCurrentSlicerManager->GetSlicer(i)->ForceUpdateDisplayExtent();
mCurrentSlicerManager->GetSlicer(i)->Render();
}
}
ytrans_slider->value()*mInput1->GetImage()->GetSpacing()[1],
ztrans_slider->value()*mInput1->GetImage()->GetSpacing()[2],
xrot_slider->value(),yrot_slider->value(),zrot_slider->value(),false);
- UpdateTransform(true);
- Render();
+ UpdateTransform(true);
+ // Render();
}
//------------------------------------------------------------------------------
ytrans_sb->value(),
ztrans_sb->value(),
xrot_sb->value(),yrot_sb->value(),zrot_sb->value(),false);
+ DD(xtrans_sb->value());
UpdateTransform(false);
- Render();
+ // Render();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolRigidReg::AutoRegister()
-{
- GetArgsInfoFromGUI();
- //clitk::AffineRegistrationGenericFilter::Pointer filter =
- // clitk::AffineRegistrationGenericFilter::New();
- //filter->SetArgsInfo(mArgsInfo);
- // filter->Update();
-
+{
+ if (!mCurrentSlicerManager) close();
+ QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+ std::vector<vvImage::Pointer> inputs;
+ // Input
+ inputs.push_back(mInput1->GetImage());
+ inputs.push_back(mInput2->GetImage());
+ // Check input type
+ // Main filter
+ clitk::AffineRegistrationGenericFilter::Pointer filter =
+ clitk::AffineRegistrationGenericFilter::New();
+ filter->SetInputVVImages(inputs);
+ filter->SetArgsInfo(mArgsInfo);
+ DD("ArgsInfo given in");
+ filter->EnableReadOnDisk(false);
+ filter->Update();
+ DD("I am done...! Updated");
+ vvImage::Pointer output = filter->GetOutputVVImage();
+ DD("filter getoutput done...");
+ std::ostringstream osstream;
+ //osstream << "Registered" << "_ "
+ // << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
+ //AddImage(output,osstream.str());
+ SetOverlay(output);
+
+ QApplication::restoreOverrideCursor();
+ // close();
}
//------------------------------------------------------------------------------
QString xcord,ycord,zcord;
std::vector<double> imageorigin;
imageorigin=mInput1->GetImage()->GetOrigin();
-
+ DD("before bug");
xcord=xcord.setNum(imageorigin[0]+mImageSize[0]*mInput1->GetImage()->GetSpacing()[0]/2, 'g', 3);
ycord=ycord.setNum(imageorigin[1]+mImageSize[1]*mInput1->GetImage()->GetSpacing()[1]/2, 'g', 3);
zcord=zcord.setNum(imageorigin[2]+mImageSize[2]*mInput1->GetImage()->GetSpacing()[2]/2, 'g', 3);
if(sliders){
xtrans_slider->blockSignals(true);
- DD(xtrans_slider->value());
xtrans_slider->setValue(rint(xtrans));
xtrans_slider->blockSignals(false);
ytrans_slider->blockSignals(true);
ztrans_slider->blockSignals(false);
}
xrot_sb->blockSignals(true);
- xrot_sb->setValue(xrot);
+ xrot_sb->setValue(xrot);
xrot_sb->blockSignals(false);
yrot_sb->blockSignals(true);
yrot_sb->setValue(yrot);
zrot_slider->setRange(-360,360);
zrot_slider->blockSignals(false);
-
xrot_sb->blockSignals(true);
xrot_sb->setRange(-360,360);
xrot_sb->blockSignals(false);