/**If the registration is nonlinear, add the (last) volume * to CustusX. * */ void ElastixManager::addNonlinearData() { bool ok = true; QString nonlinearVolumeFilename = mExecuter->getNonlinearResultVolume(&ok); if (!ok) return; ImagePtr movingImage = boost::dynamic_pointer_cast<Image>(mServices->registration()->getMovingData()); ImagePtr raw = boost::dynamic_pointer_cast<Image>(MetaImageReader().load(nonlinearVolumeFilename, nonlinearVolumeFilename)); if (!raw) { report(QString("Failed to import nonlinear volume %1").arg(nonlinearVolumeFilename)); return; } QString uid = movingImage->getUid() + "_nl%1"; QString name = movingImage->getName()+" nl%1"; ImagePtr nlVolume = createDerivedImage(mServices->patient(), uid, name, raw->getBaseVtkImageData(), movingImage); // volume is resampled into the space of the fixed data: nlVolume->get_rMd_History()->setRegistration(mServices->registration()->getFixedData()->get_rMd()); mServices->patient()->insertData(nlVolume); report(QString("Added volume %1, created by a nonlinear transform").arg(nlVolume->getName())); }
/** Create object from file. * If file or file+.mhd exists, use this, * Otherwise assume input is split over several * files and try to load all mhdFile + i + ".mhd". * forall i. */ USFrameDataPtr USFrameData::create(QString inputFilename) { QFileInfo info(inputFilename); TimeKeeper timer; QString mhdSingleFile = info.absolutePath()+"/"+info.completeBaseName()+".mhd"; if (QFileInfo(mhdSingleFile).exists()) { vtkImageDataPtr image = MetaImageReader().loadVtkImageData(mhdSingleFile); // load from single file USFrameDataPtr retval = USFrameData::create(ImagePtr(new Image(mhdSingleFile, image))); retval->mName = QFileInfo(mhdSingleFile).completeBaseName(); timer.printElapsedms(QString("Loading single %1").arg(inputFilename)); return retval; } else { USFrameDataPtr retval(new USFrameData()); retval->mName = QFileInfo(inputFilename).completeBaseName(); retval->mImageContainer.reset(new cx::CachedImageDataContainer(inputFilename, -1)); retval->resetRemovedFrames(); return retval; } }
void Image::save(const QString& basePath) { QString filename = basePath + "/Images/" + this->getUid() + ".mhd"; this->setFilename(QDir(basePath).relativeFilePath(filename)); ImagePtr self = ImagePtr(this, null_deleter()); MetaImageReader().saveImage(self, filename); }
vtkImageDataPtr DummyImageStreamer::internalLoadImage(QString filename) { vtkImageDataPtr source = MetaImageReader().loadVtkImageData(filename); if (source) std::cout << "DummyImageStreamer: Initialized with source file: " << getFileName().toStdString() << std::endl; else std::cout << "DummyImageStreamer: Failed to initialize with source file: " << getFileName().toStdString() << std::endl; return source; }