Пример #1
0
/**Create and return the structure that would have been read by UsReconstructFileReader,
 * if written from this object.
 *
 */
USReconstructInputData UsReconstructionFileMaker::getReconstructData(ImageDataContainerPtr imageData,
																	 std::vector<TimeInfo> imageTimestamps,
																	 TimedTransformMap trackerRecordedData,
																	 std::map<double, ToolPositionMetadata> trackerRecordedMetadata,
																	 std::map<double, ToolPositionMetadata> referenceRecordedMetadata,
																	 ToolPtr tool, QString streamUid,
																	 bool writeColor, Transform3D rMpr)
{
	if(trackerRecordedData.empty())
		reportWarning("No tracking data for writing to reconstruction file.");

	USReconstructInputData retval;

	retval.mFilename = mSessionDescription; // not saved yet - no filename
	retval.mUsRaw = USFrameData::create(mSessionDescription, imageData);
	retval.rMpr = rMpr;
	retval.mTrackerRecordedMetadata = trackerRecordedMetadata;
	retval.mReferenceRecordedMetadata = referenceRecordedMetadata;

	for (TimedTransformMap::iterator it = trackerRecordedData.begin(); it != trackerRecordedData.end(); ++it)
	{
		TimedPosition current;
		current.mTime = it->first;
		current.mTimeInfo.setAcquisitionTime(it->first);
		current.mPos = it->second;
		retval.mPositions.push_back(current);
	}

	std::vector<TimeInfo> fts = imageTimestamps;
	for (unsigned i=0; i<fts.size(); ++i)
	{
		TimedPosition current;
		current.mTimeInfo = fts[i];
		current.mTime = current.mTimeInfo.getAcquisitionTime();
		current.mPos = Transform3D::Identity();
		// current.mPos = not written - will be found from track positions during reconstruction.
		retval.mFrames.push_back(current);
	}

	if (tool && tool->getProbe())
	{
		retval.mProbeDefinition.setData(tool->getProbe()->getProbeDefinition(streamUid));
	}

	if (tool)
		retval.mProbeUid = tool->getUid();

	this->fillFramePositions(&retval);

	return retval;
}