56 mOptions =
profile()->getXmlSettings().descend(
"elastix");
59 connect(mParameters.get(), SIGNAL(elastixParametersChanged()),
this, SIGNAL(
elastixChanged()));
63 "Display messages from the running registration process in CustusX",
69 "Disable rendering while running process.\n"
70 "Can be used to avoid clash in GPU usage.",
75 connect(mExecuter.get(), SIGNAL(finished()),
this, SLOT(executionFinishedSlot()));
76 connect(mExecuter.get(), SIGNAL(aboutToStart()),
this, SLOT(preprocessExecuter()));
88 void ElastixManager::preprocessExecuter()
90 QStringList parameterFiles = mParameters->getActiveParameterFiles();
94 mExecuter->setDisplayProcessMessages(mDisplayProcessMessages->getValue());
95 mExecuter->setInput(mParameters->getActiveExecutable(),
98 outDir.absolutePath(),
101 if (mDisableRendering->getValue())
107 void ElastixManager::executionFinishedSlot()
109 if (mDisableRendering->getValue())
113 Transform3D mMf = mExecuter->getAffineResult_mMf(&ok);
120 QStringList parameterFiles = mParameters->getActiveParameterFiles();
121 QString desc = QString(
"Image2Image [exe=%1]").arg(QFileInfo(mParameters->getActiveExecutable()).fileName());
122 for (
unsigned i=0; i<parameterFiles.size(); ++i)
123 desc += QString(
"[par=%1]").arg(QFileInfo(parameterFiles[i]).fileName());
144 this->addNonlinearData();
151 void ElastixManager::addNonlinearData()
154 QString nonlinearVolumeFilename = mExecuter->getNonlinearResultVolume(&ok);
160 ImagePtr raw = boost::dynamic_pointer_cast<Image>(MetaImageReader().load(nonlinearVolumeFilename, nonlinearVolumeFilename));
164 report(QString(
"Failed to import nonlinear volume %1").arg(nonlinearVolumeFilename));
168 QString uid = movingImage->getUid() +
"_nl%1";
169 QString name = movingImage->getName()+
" nl%1";
173 raw->getBaseVtkImageData(), movingImage);
176 nlVolume->get_rMd_History()->setRegistration(mServices.
registrationService->getFixedData()->get_rMd());
180 report(QString(
"Added volume %1, created by a nonlinear transform").arg(nlVolume->getName()));
cxResource_EXPORT ProfilePtr profile()
static BoolPropertyPtr initialize(const QString &uid, QString name, QString help, bool value, QDomNode root=QDomNode())
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
boost::shared_ptr< class Image > ImagePtr
Parameter and preset handling for the ElastiX registration.
QString timestampSecondsFormat()
QDomElement getElement()
return the current element
ImagePtr createDerivedImage(PatientModelServicePtr dataManager, QString uid, QString name, vtkImageDataPtr raw, ImagePtr parent)
ElastiX command-line wrapper.
ElastixManager(RegServices services)
virtual ~ElastixManager()
VisualizationServicePtr visualizationService
PatientModelServicePtr patientModelService
RegistrationServicePtr registrationService