ITK濾波 BinaryThresholdImageFilter


```cpp
void ITKTestClass::BinaryThresholdImageFilter(std::string inputImageFile,std::string outputImageFile,
	double lowerThreshold,double upperThreshold, int outsideValue,int insideValue)
{
	itk::PNGImageIOFactory::RegisterOneFactory();
	itk::TIFFImageIOFactory::RegisterOneFactory();
	itk::BMPImageIOFactory::RegisterOneFactory();
	itk::GDCMImageIOFactory::RegisterOneFactory();
	itk::JPEGImageIOFactory::RegisterOneFactory();

	//  Software Guide : BeginLatex
	//
	//  The next step is to decide which pixel types to use for the input and output
	//  images.
	//
	//  Software Guide : EndLatex

	// Software Guide : BeginCodeSnippet
	typedef unsigned short InputPixelType;
	typedef unsigned short OutputPixelType;
	// Software Guide : EndCodeSnippet


	//  Software Guide : BeginLatex
	//
	//  The input and output image types are now defined using their respective
	//  pixel types and dimensions.
	//
	//  Software Guide : EndLatex

	// Software Guide : BeginCodeSnippet
	typedef itk::Image<InputPixelType, 3> InputImageType;
	typedef itk::Image<OutputPixelType, 3> OutputImageType;
	// Software Guide : EndCodeSnippet


	//  Software Guide : BeginLatex
	//
	//  The filter type can be instantiated using the input and output image
	//  types defined above.
	//
	//  Software Guide : EndLatex

	// Software Guide : BeginCodeSnippet
	typedef itk::BinaryThresholdImageFilter<InputImageType, OutputImageType> FilterType;
	// Software Guide : EndCodeSnippet


	//  Software Guide : BeginLatex
	//
	//  An \doxygen{ImageFileReader} class is also instantiated in order to read
	//  image data from a file. (See Section \ref{sec:IO} on page
	//  \pageref{sec:IO} for more information about reading
	//  and writing data.)
	//
	//  Software Guide : EndLatex

	// Software Guide : BeginCodeSnippet
	typedef itk::ImageFileReader<InputImageType> ReaderType;
	// Software Guide : EndCodeSnippet


	//  Software Guide : BeginLatex
	//
	// An \doxygen{ImageFileWriter} is instantiated in order to write the output
	// image to a file.
	//
	//  Software Guide : EndLatex


	// Software Guide : BeginCodeSnippet
	typedef itk::ImageFileWriter<OutputImageType> WriterType;
	// Software Guide : EndCodeSnippet


	//  Software Guide : BeginLatex
	//
	//  Both the filter and the reader are created by invoking their \code{New()}
	//  methods and assigning the result to \doxygen{SmartPointer}s.
	//
	//  Software Guide : EndLatex

	// Software Guide : BeginCodeSnippet
	ReaderType::Pointer reader = ReaderType::New();
	FilterType::Pointer filter = FilterType::New();
	// Software Guide : EndCodeSnippet

	WriterType::Pointer writer = WriterType::New();
	writer->SetInput(filter->GetOutput());
	reader->SetFileName(inputImageFile);


	//  Software Guide : BeginLatex
	//
	//  The image obtained with the reader is passed as input to the
	//  BinaryThresholdImageFilter.
	//
	//  \index{itk::Binary\-Threshold\-Image\-Filter!SetInput()}
	//  \index{itk::FileImageReader!GetOutput()}
	//
	//  Software Guide : EndLatex

	// Software Guide : BeginCodeSnippet
	filter->SetInput(reader->GetOutput());
	// Software Guide : EndCodeSnippet


	//  Software Guide : BeginLatex
	//
	//  The method \code{SetOutsideValue()} defines the intensity value to be
	//  assigned to those pixels whose intensities are outside the range defined
	//  by the lower and upper thresholds. The method \code{SetInsideValue()}
	//  defines the intensity value to be assigned to pixels with intensities
	//  falling inside the threshold range.
	//
	//  \index{itk::Binary\-Threshold\-Image\-Filter!SetOutsideValue()}
	//  \index{itk::Binary\-Threshold\-Image\-Filter!SetInsideValue()}
	//  \index{SetOutsideValue()!itk::Binary\-Threshold\-Image\-Filter}
	//  \index{SetInsideValue()!itk::Binary\-Threshold\-Image\-Filter}
	//
	//  Software Guide : EndLatex

	// Software Guide : BeginCodeSnippet
	filter->SetOutsideValue(outsideValue);
	filter->SetInsideValue(insideValue);
	// Software Guide : EndCodeSnippet


	//  Software Guide : BeginLatex
	//
	//  The methods \code{SetLowerThreshold()} and \code{SetUpperThreshold()}
	//  define the range of the input image intensities that will be transformed
	//  into the \code{InsideValue}. Note that the lower and upper thresholds are
	//  values of the type of the input image pixels, while the inside and
	//  outside values are of the type of the output image pixels.
	//
	//  Software Guide : EndLatex
 

	// Software Guide : BeginCodeSnippet
	filter->SetLowerThreshold(lowerThreshold);
	filter->SetUpperThreshold(upperThreshold);
	// Software Guide : EndCodeSnippet


	//  Software Guide : BeginLatex
	//
	//  The execution of the filter is triggered by invoking the \code{Update()}
	//  method.   If the filter's output has been passed as input to subsequent
	//  filters, the \code{Update()} call on any downstream filters in the
	//  pipeline will indirectly trigger the update of this filter.
	//
	//  Software Guide : EndLatex

	// Software Guide : BeginCodeSnippet
	filter->Update();
	// Software Guide : EndCodeSnippet

	//  Software Guide : BeginLatex
	//
	// \begin{figure}
	// \center
	// \includegraphics[width=0.44\textwidth]{BrainProtonDensitySlice}
	// \includegraphics[width=0.44\textwidth]{BinaryThresholdImageFilterOutput}
	// \itkcaption[BinaryThresholdImageFilter output]{Effect of the
	// BinaryThresholdImageFilter on a slice from a MRI proton density image  of the
	// brain.} \label{fig:BinaryThresholdImageFilterInputOutput} \end{figure}
	//
	//  Figure \ref{fig:BinaryThresholdImageFilterInputOutput} illustrates the
	//  effect of this filter on a MRI proton density image of the brain. This
	//  figure shows the limitations of the filter for performing segmentation
	//  by itself. These limitations are particularly noticeable in noisy images
	//  and in images lacking spatial uniformity as is the case with MRI due to
	//  field bias.
	//
	//  \relatedClasses
	//  \begin{itemize}
	//  \item \doxygen{ThresholdImageFilter}
	//  \end{itemize}
	//
	//  Software Guide : EndLatex

	writer->SetFileName(outputImageFile);
	writer->Update();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章