vtk 11 对图像进行布尔操作

#include <vtkSmartPointer.h>

#include <vtkImageExtractComponents.h>

#include <vtkImageLuminance.h>

#include <vtkImageMathematics.h>

#include <vtkImageLogic.h>

#include <vtkPNGReader.h>

#include <vtkImageViewer2.h>

#include <vtkRenderWindow.h>

#include <vtkRenderWindowInteractor.h>

#include <vtkRenderer.h>

#include <vtkBMPReader.h>

#include <vtkJPEGReader.h>

#include <vtkImageData.h>

#include <vtkImageIterator.h>

#include "vtkAutoInit.h"

VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2

VTK_MODULE_INIT(vtkInteractionStyle);


//测试图像:../data/lena.bmp

int main()

{

    vtkSmartPointer<vtkJPEGReader> reader1 =

        vtkSmartPointer<vtkJPEGReader>::New();

    reader1->SetFileName("test22.jpg");

    reader1->Update();

    vtkSmartPointer<vtkImageLuminance> luminanceFliter1 = vtkSmartPointer<vtkImageLuminance>::New();

    luminanceFliter1->SetInputConnection(reader1->GetOutputPort());

    luminanceFliter1->Update();



    vtkSmartPointer<vtkJPEGReader> reader2 =

        vtkSmartPointer<vtkJPEGReader>::New();

    reader2->SetFileName("test33.jpg");

    reader2->Update();


    vtkSmartPointer<vtkImageLuminance> luminanceFliter2 = vtkSmartPointer<vtkImageLuminance>::New();

    luminanceFliter2->SetInputConnection(reader2->GetOutputPort());

    luminanceFliter2->Update();

   

    //如果两个图像大小必须相等

    //有2个参数

    vtkSmartPointer<vtkImageLogic> imgMath = vtkSmartPointer<vtkImageLogic>::New();

    imgMath->SetOperationToAnd();

    imgMath->SetOutputTrueValue(128);

    imgMath->SetInput1Data(reader2->GetOutput());

    imgMath->SetInput2Data(reader1->GetOutput());




    有1个参数

    //vtkSmartPointer<vtkImageLogic> imgMath = vtkSmartPointer<vtkImageLogic>::New();

    //imgMath->SetOperationToNot();

    //imgMath->SetOutputTrueValue(128);

    //imgMath->SetInput1Data(reader1->GetOutput());

   

   


    imgMath->Update();

    int dims[3];

    imgMath->GetOutput()->GetDimensions(dims);

    std::cout << "图像维数:" << dims[0] << " " << dims[1] << " " << dims[2] << std::endl;

   


    //显示

    vtkSmartPointer<vtkImageViewer2> imageViewer =

        vtkSmartPointer<vtkImageViewer2>::New();

    imageViewer->SetInputConnection(imgMath->GetOutputPort());


    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =

        vtkSmartPointer<vtkRenderWindowInteractor>::New();

    imageViewer->SetupInteractor(renderWindowInteractor);

    imageViewer->Render();

    imageViewer->GetRenderer()->ResetCamera();

    imageViewer->Render();


    imageViewer->GetRenderer()->SetBackground(1.0, 1.0, 1.0);

    //imageViewer->SetSize(640, 480);

    imageViewer->GetRenderWindow()->SetWindowName("VisitImagePixelDirectlyExample");



    renderWindowInteractor->Start();


    system("pause");


    return EXIT_SUCCESS;

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用VTK中的vtkImageData和vtkMarchingCubes等类进行超声图像的三维重建。以下是基本示例代码: ```python import vtk # 读取超声图像数据 reader = vtk.vtkDICOMImageReader() reader.SetDirectoryName("path/to/dicom/files") reader.Update() # 创建vtkImageData数据 imageData = vtk.vtkImageData() imageData.SetDimensions(reader.GetOutput().GetDimensions()) imageData.AllocateScalars(vtk.VTK_UNSIGNED_SHORT, 1) imageData.SetSpacing(reader.GetOutput().GetSpacing()) imageData.SetOrigin(reader.GetOutput().GetOrigin()) imageData.GetPointData().SetScalars(reader.GetOutput().GetPointData().GetScalars()) # 进行等值面提取和渲染 contourFilter = vtk.vtkMarchingCubes() contourFilter.SetInputData(imageData) contourFilter.ComputeNormalsOn() contourFilter.SetValue(0, 1000) # 设置等值面的值 mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(contourFilter.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(1.0, 1.0, 1.0) # 设置渲染颜色 # 创建渲染窗口和渲染器 renderer = vtk.vtkRenderer() renderer.AddActor(actor) renderer.SetBackground(0.0, 0.0, 0.0) # 设置背景颜色 renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindow.SetWindowName("Ultrasound 3D Reconstruction") # 创建交互器 interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) # 启动渲染器和交互器 renderWindow.Render() interactor.Start() ``` 当然,这只是基本示例,如果要进行更复杂的超声图像处理和可视化,还需要进一步了解和学习VTK中的其他类和方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值