37 #include "vtkImageData.h"
38 #include "vtkMetaImageReader.h"
39 #include "vtkLookupTable.h"
40 #include "vtkImageMapToColors.h"
45 #include <vtkImageExtractComponents.h>
46 #include <vtkImageAppendComponents.h>
47 #include <vtkImageLuminance.h>
61 std::vector<PropertyPtr> retval;
71 "Select a 3D image file to stream from",
75 retval->setGroup(
"File");
82 bool defaultValue =
false;
84 "Create two streams, the second one a dummy color image",
86 retval->setAdvanced(
true);
87 retval->setGroup(
"File");
94 retval[
"--type"] =
"MHDFile";
97 retval[
"--secondary"] =
"1";
104 retval <<
"--filename: name of image file to stream from ";
105 retval <<
"--secondary: Create two streams, the second one a dummy color image";
122 lut->SetNumberOfTableValues(numberOfTableValues);
123 lut->SetTableRange(0, numberOfTableValues - 1);
124 lut->SetSaturationRange(0, 0.5);
125 lut->SetHueRange(0, 1);
126 lut->SetValueRange(0, 1);
134 mapper->SetInputData(input);
135 mapper->SetLookupTable(lut);
143 int numberOfTableValues = 256;
153 QString colorFormat =
"R";
154 if (source->GetNumberOfScalarComponents() == 3)
158 splitterRGB->SetInputData(source);
159 splitterRGB->SetComponents(0, 1, 2);
161 merger->AddInputConnection(splitterRGB->GetOutputPort());
163 splitterA->SetInputData(source);
164 splitterA->SetComponents(0);
165 merger->AddInputConnection(splitterA->GetOutputPort());
169 colorFormat =
"RGBA";
171 else if (source->GetNumberOfScalarComponents() == 4)
174 colorFormat =
"RGBA";
176 else if (source->GetNumberOfScalarComponents() == 1)
182 retval.
mRawUid = QString(
"%1 [%2]").arg(QFileInfo(filename).completeBaseName()).arg(colorFormat);
191 QString colorFormat =
"R";
192 if (source->GetNumberOfScalarComponents() == 3)
194 vtkSmartPointer < vtkImageLuminance > luminance = vtkSmartPointer < vtkImageLuminance > ::New();
195 luminance->SetInputData(source);
201 else if (source->GetNumberOfScalarComponents() == 4)
204 colorFormat =
"RGBA";
206 else if (source->GetNumberOfScalarComponents() == 1)
212 retval.
mRawUid = QString(
"uchar %1[%2]").arg(QFileInfo(filename).completeBaseName()).arg(colorFormat);
227 image->setAcquisitionTime(QDateTime::currentDateTime());
228 package->mImage = image;
234 mUseSecondaryStream(false),
235 mPrimaryDataSource(),
236 mSecondaryDataSource()
246 vtkImageDataPtr DummyImageStreamer::internalLoadImage(QString filename)
251 std::cout <<
"DummyImageStreamer: Initialized with source file: " << getFileName().toStdString() << std::endl;
253 std::cout <<
"DummyImageStreamer: Failed to initialize with source file: " << getFileName().toStdString() << std::endl;
257 QString DummyImageStreamer::getFileName()
272 if (!this->shouldSetupSecondaryDataSource())
276 std::cout <<
"DummyImageStreamer: Initialized secondary data with uid=" << mSecondaryDataSource.
mRawUid << std::endl;
281 mUseSecondaryStream = secondaryStream;
282 mFilename = filename;
289 this->createTestDataSource(source);
290 this->setSendOnce(sendonce);
299 std::cout <<
"DummyImageStreamer: Failed to start streaming: Not initialized." << std::endl;
312 vtkSmartPointer<vtkImageData> DummyImageStreamer::hasSecondaryData()
317 void DummyImageStreamer::sendTestDataFrames()
322 if(!this->hasSecondaryData())
326 mSender->send(secondaryPackage);
329 void DummyImageStreamer::streamSlot()
334 this->sendTestDataFrames();
337 void DummyImageStreamer::setSendOnce(
bool sendonce)
339 mSendOnce = sendonce;
342 bool DummyImageStreamer::shouldSetupSecondaryDataSource()
344 return mUseSecondaryStream;
static BoolPropertyPtr initialize(const QString &uid, QString name, QString help, bool value, QDomNode root=QDomNode())
void createSendTimer(bool singleshot=false)
static PackagePtr createPackage(ImageTestData *data)
StringPropertyBasePtr getFilenameOption(QDomElement root)
static ImageTestData initializePrimaryData(vtkImageDataPtr source, QString filename)
void setSendInterval(int milliseconds)
how often an image should be sent (in milliseconds)
vtkLookupTablePtr createLookupTable(int numberOfTableValues)
vtkImageDataPtr mImageData
boost::shared_ptr< class Image > ImagePtr
virtual std::vector< PropertyPtr > getSettings(QDomElement root)
virtual void initialize(QString filename, bool secondaryStream, bool sendonce=false)
virtual QString getType()
vtkSmartPointer< class vtkImageMapToColors > vtkImageMapToColorsPtr
boost::shared_ptr< class StringProperty > StringPropertyPtr
std::map< QString, QString > StringMap
QStringList getArgumentDescription()
vtkSmartPointer< class vtkImageAppendComponents > vtkImageAppendComponentsPtr
boost::shared_ptr< class BoolPropertyBase > BoolPropertyBasePtr
virtual void stopStreaming()
void setInitialized(bool initialized)
vtkSmartPointer< class vtkLookupTable > vtkLookupTablePtr
vtkImageDataPtr applyLUTToImage(vtkImageDataPtr input, vtkLookupTablePtr lut)
static StringPropertyPtr initialize(const QString &uid, QString name, QString help, QString value, QStringList range, QDomNode root=QDomNode())
virtual QStringList getArgumentDescription()
vtkSmartPointer< class vtkImageExtractComponents > vtkImageExtractComponentsPtr
boost::shared_ptr< struct Package > PackagePtr
boost::shared_ptr< class SplitFramesContainer > mDataSource
vtkImageDataPtr convertToTestColorImage(vtkImageDataPtr image)
StringMap convertToCommandLineArguments(QDomElement root)
boost::shared_ptr< class BoolProperty > BoolPropertyPtr
boost::shared_ptr< Sender > SenderPtr
virtual bool startStreaming(SenderPtr sender)
static ImageTestData initializeSecondaryData(vtkImageDataPtr source, QString filename)
BoolPropertyBasePtr getSecondaryOption(QDomElement root)
int getSendInterval() const
how often an image should be sent (in milliseconds)
boost::shared_ptr< class StringPropertyBase > StringPropertyBasePtr