ITK阈值分割nrrd图像

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkNrrdImageIOFactory.h"
#include "itkThresholdImageFilter.h"
#include "itkImageToVTKImageFilter.h"
#include "vtkSmartPointer.h"
#include "vtkImageFlip.h"
#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkAutoInit.h" 
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);

int main(int argc, char ** argv) {
    typedef itk::Image<unsigned char, 3> ImageType;
    typedef itk::ThresholdImageFilter< ImageType > FilterType;
    typedef itk::ImageFileReader<ImageType> ReaderType;
    typedef itk::ImageFileWriter<ImageType> WriterType;
    typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;  //connenct itk and vtk

    itk::NrrdImageIOFactory::RegisterOneFactory();

    FilterType::Pointer filter = FilterType::New();
    ReaderType::Pointer reader = ReaderType::New();
    WriterType::Pointer writer = WriterType::New();
    ConnectorType::Pointer connector = ConnectorType::New();

    reader->SetFileName("1.nrrd");    //要读取的文件名
    writer->SetFileName("2.nrrd");    //写入的文件名

    filter->SetInput(reader->GetOutput());
    filter->SetOutsideValue(0);
    filter->ThresholdBelow(2604);
    filter->ThresholdAbove(3573);
    filter->Update();
    writer->SetInput(filter->GetOutput());
    try {
        writer->Update();
    }
    catch (itk::ExceptionObject &err) {
        std::cerr << "ExceptionObject Caught" << std::endl;
        std::cerr << err << std::endl;
        system("pause");
        return EXIT_FAILURE;
    }

    connector->SetInput(reader->GetOutput());
    connector->Update();

    vtkImageViewer *viewer = vtkImageViewer::New();
    vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();
    viewer->SetInputData(connector->GetOutput());
    viewer->SetupInteractor(interactor);
    viewer->GetRenderWindow()->SetSize(500, 500);//set window size
    viewer->SetColorWindow(255); //set window color
    viewer->SetColorLevel(128);   //set the level of window
    viewer->Render();

    interactor->Initialize();
    interactor->Start();

    return EXIT_SUCCESS;
}

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值