Ejemplo n.º 1
0
/**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()));
}
Ejemplo n.º 2
0
/** 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;
	}
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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;
}