60 connect(mParameters.get(), SIGNAL(elastixParametersChanged()),
this, SIGNAL(
elastixChanged()));
64 "Display messages from the running registration process in CustusX",
70 "Disable rendering while running process.\n"
71 "Can be used to avoid clash in GPU usage.",
76 connect(mExecuter.get(), SIGNAL(finished()),
this, SLOT(executionFinishedSlot()));
77 connect(mExecuter.get(), SIGNAL(aboutToStart()),
this, SLOT(preprocessExecuter()));
89 void ElastixManager::preprocessExecuter()
91 QStringList parameterFiles = mParameters->getActiveParameterFiles();
93 QDir outDir(mServices.
patientModelService->getActivePatientFolder()+
"/"+mParameters->getConfigUid()+
"/"+timestamp);
95 mExecuter->setDisplayProcessMessages(mDisplayProcessMessages->getValue());
96 mExecuter->setInput(mParameters->getActiveExecutable()->getEmbeddedPath().getAbsoluteFilepath(),
99 outDir.absolutePath(),
102 if (mDisableRendering->getValue())
108 void ElastixManager::executionFinishedSlot()
110 if (mDisableRendering->getValue())
114 Transform3D mMf = mExecuter->getAffineResult_mMf(&ok);
121 QStringList parameterFiles = mParameters->getActiveParameterFiles();
122 QString desc = QString(
"Image2Image [exe=%1]").arg(QFileInfo(mParameters->getActiveExecutable()->getValue()).fileName());
123 for (
unsigned i=0; i<parameterFiles.size(); ++i)
124 desc += QString(
"[par=%1]").arg(QFileInfo(parameterFiles[i]).fileName());
145 this->addNonlinearData();
152 void ElastixManager::addNonlinearData()
155 QString nonlinearVolumeFilename = mExecuter->getNonlinearResultVolume(&ok);
161 ImagePtr raw = boost::dynamic_pointer_cast<Image>(MetaImageReader().load(nonlinearVolumeFilename, nonlinearVolumeFilename));
165 report(QString(
"Failed to import nonlinear volume %1").arg(nonlinearVolumeFilename));
169 QString uid = movingImage->getUid() +
"_nl%1";
170 QString name = movingImage->getName()+
" nl%1";
174 raw->getBaseVtkImageData(), movingImage);
177 nlVolume->get_rMd_History()->setRegistration(mServices.
registrationService->getFixedData()->get_rMd());
181 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())
static QString getConfigUid()
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