12 #ifndef mitkCLPolyToNrrd_cpp 13 #define mitkCLPolyToNrrd_cpp 24 #include <itkImageRegionIteratorWithIndex.h> 26 #include <QApplication> 30 #include "vtkRenderLargeImage.h" 31 #include "vtkPNGWriter.h" 40 template<
typename TPixel,
unsigned int VImageDimension>
44 int idx = VImageDimension - 1;
46 int size = mask->GetLargestPossibleRegion().GetSize()[idx];
47 std::vector<int> numberOfSamples;
48 numberOfSamples.resize(size,0);
50 itk::ImageRegionIteratorWithIndex<itk::Image<TPixel, VImageDimension> > mask1Iter(mask, mask->GetLargestPossibleRegion());
51 while (!mask1Iter.IsAtEnd())
53 if (mask1Iter.Value() > 0)
55 numberOfSamples[mask1Iter.GetIndex()[idx]]+=1;
60 for (std::size_t i = 0; i < numberOfSamples.size(); ++i)
62 if (numberOfSamples[selectedSlice] < numberOfSamples[i])
76 nodeI->SetData(image);
82 auto geo = ds->ComputeBoundingGeometry3D(ds->GetAll());
88 unsigned int numberOfSteps = 1;
89 if (sliceNaviController)
91 numberOfSteps = sliceNaviController->GetSlice()->GetSteps();
92 sliceNaviController->GetSlice()->SetPos(numberOfSteps-index);
96 renderWindow.resize(256, 256);
107 vtkRender->GetRenderWindow()->WaitForCompletion();
109 vtkRenderLargeImage* magnifier = vtkRenderLargeImage::New();
110 magnifier->SetInput(vtkRender);
111 magnifier->SetMagnification(3.0);
113 std::stringstream ss;
115 std::string tmpImageName;
117 auto fileWriter = vtkPNGWriter::New();
118 fileWriter->SetInputConnection(magnifier->GetOutputPort());
119 fileWriter->SetFileName(tmpImageName.c_str());
121 fileWriter->Delete();
124 int main(
int argc,
char* argv[])
135 parser.
setTitle(
"Image with Overlay Plotter");
139 std::map<std::string, us::Any> parsedArgs = parser.
parseArguments(argc, argv);
141 std::string imagePath =
us::any_cast<std::string>(parsedArgs[
"image"]);
142 std::string maskPath =
us::any_cast<std::string>(parsedArgs[
"mask"]);
143 std::string outputPath =
us::any_cast<std::string>(parsedArgs[
"output"]);
145 if (parsedArgs.size()==0)
149 if ( parsedArgs.count(
"help") || parsedArgs.count(
"h"))
154 std::string version =
"Version: 1.0";
163 QApplication qtapplication(argc, argv);
166 int currentSlice = 0;
virtual bool InitializeViews(const BaseGeometry *geometry, RequestType type=REQUEST_UPDATE_ALL, bool preserveRoughOrientationInWorldSpace=false)
static BaseRenderer * GetInstance(vtkRenderWindow *renWin)
itk::Image< unsigned char, 3 > MaskImageType
vtkRenderer * GetVtkRenderer() const
void SetDataStorage(mitk::DataStorage *storage) override
set the datastorage that will be used for rendering
Organizes the rendering process.
void setContributor(std::string contributor)
MITKQTWIDGETS_EXPORT void QmitkRegisterClasses()
ValueType * any_cast(Any *operand)
void addArgument(const std::string &longarg, const std::string &shortarg, Type type, const std::string &argLabel, const std::string &argHelp=std::string(), const us::Any &defaultValue=us::Any(), bool optional=true, bool ignoreRest=false, bool deprecated=false, mitkCommandLineParser::Channel channel=mitkCommandLineParser::Channel::None)
std::map< std::string, us::Any > parseArguments(const StringContainerType &arguments, bool *ok=nullptr)
static void FindMostSampleSlice(itk::Image< TPixel, VImageDimension > *mask, int &selectedSlice)
#define AccessByItk_1(mitkImage, itkImageTypeFunction, arg1)
itk::Image< double, 3 > FloatImageType
static RenderingManager * GetInstance()
MITK implementation of the QVTKWidget.
virtual mitk::VtkPropRenderer * GetRenderer()
void setCategory(std::string category)
mitk::Image::Pointer image
void setArgumentPrefix(const std::string &longPrefix, const std::string &shortPrefix)
virtual void PrepareRender()
This methods contains all method neceassary before a VTK Render() call.
static void SaveSliceOrImageAsPNG(mitk::Image::Pointer image, mitk::Image::Pointer mask, std::string path, int index)
mitk::Image::Pointer mask
virtual mitk::SliceNavigationController * GetSliceNavigationController()
vtkRenderWindow * GetVtkRenderWindow() override
void setTitle(std::string title)
void setDescription(std::string description)
int main(int argc, char *argv[])