VTK之图像处理
2019-07-27 06:46
127 查看
原文链接:https://www.geek-share.com/detail/2554568360.html
在VTK中,图像数据被作为一种特别的数据类型来处理,由vtkImageData表示,这种数据类型是结构化的,这意味着每个数据点的位置可隐含由图像数据的原点(第一张图像左下角在世界坐标系中的位置)、数据点间距(沿坐标方向相邻两个数据点的距离,或体素的长宽高)和维数(沿坐标方向体素或数据点的数目)确定。 VTK为图像数据提供了很多处理类,这里给出运行成功的代码示例(pReader读取图像文件): (1)计算梯度: vtkImageGradient* pGradient = vtkImageGradient::New(); pGradient->SetInput((vtkDataObject*)pReader->GetOutput()); pGradient->SetDimensionality(3); vtkImageViewer* pViewer = vtkImageViewer::New(); pViewer->SetInput(pGradient->GetOutput()); pViewer->SetColorLevel(127.5); pViewer->SetColorWindow(256); pViewer->GetActor2D()->SetPosition(0,0); vtkRenderWindow* pRenWnd = vtkRenderWindow::New(); pRenWnd->AddRenderer(pViewer->GetRenderer()); pRenWnd->SetSize(512, 512); vtkRenderWindowInteractor* pRenWndInact = vtkRenderWindowInteractor::New(); pRenWndInact->SetRenderWindow(pRenWnd); pRenWndInact->Initialize(); pRenWndInact->Start(); (2)高斯平滑: vtkImageGaussianSmooth* pGaussian = vtkImageGaussianSmooth::New(); pGaussian->SetInput((vtkDataObject*)pReader->GetOutput()); pGaussian->SetDimensionality(2); pGaussian->SetStandardDeviations(1, 1); vtkImageViewer* pViewer = vtkImageViewer::New(); pViewer->SetInput(pGaussian->GetOutput()); pViewer->SetColorLevel(127.5); pViewer->SetColorWindow(256); pViewer->GetActor2D()->SetPosition(0,0); vtkRenderWindow* pRenWnd = vtkRenderWindow::New(); pRenWnd->AddRenderer(pViewer->GetRenderer()); pRenWnd->SetSize(512, 512); vtkRenderWindowInteractor* pRenWndInact = vtkRenderWindowInteractor::New(); pRenWndInact->SetRenderWindow(pRenWnd); pRenWndInact->Initialize(); pRenWndInact->Start(); (3)直方图: double range[2]; vtkImageData* pImg = (vtkImageData*)pReader->GetOutput(); pImg->Update(); pImg->GetScalarRange(range); vtkImageAccumulate* pHistgram = vtkImageAccumulate::New(); pHistgram->SetInput((vtkDataObject*)pReader->GetOutput()); pHistgram->SetComponentExtent(0, static_cast<int>(range[1] - range[0]), 0, 0, 0, 0); pHistgram->SetComponentOrigin(range[0], 0, 0); pHistgram->UpdateWholeExtent(); vtkXYPlotActor* plot = vtkXYPlotActor::New(); plot->ExchangeAxesOff(); plot->SetLabelFormat("%g"); plot->SetXRange(range[0], range[1]); plot->SetYRange(0, 4096); plot->SetXTitle("Gray Level"); plot->SetYTitle(""); plot->AddInput(pHistgram->GetOutput()); plot->SetXValuesToValue(); vtkRenderer* pRender = vtkRenderer::New(); pRender->AddActor(plot); vtkRenderWindow* pRenWnd = vtkRenderWindow::New(); pRenWnd->AddRenderer(pRender); pRenWnd->SetSize(512, 512); vtkRenderWindowInteractor* pRenWndInact = vtkRenderWindowInteractor::New(); pRenWndInact->SetRenderWindow(pRenWnd); pRenWndInact->Initialize(); pRenWndInact->Start();(4)布尔逻辑计算: vtkImageEllipsoidSource* psrc1 = vtkImageEllipsoidSource::New(); vtkImageEllipsoidSource* psrc2 = vtkImageEllipsoidSource::New(); psrc1->SetCenter(100, 100, 0); psrc2->SetCenter(170, 100, 0); psrc1->SetRadius(70, 70, 70); psrc2->SetRadius(70, 70, 70); vtkImageLogic* pxor = vtkImageLogic::New(); pxor->SetInput1((vtkDataObject *)psrc1->GetOutput()); pxor->SetInput2((vtkDataObject *)psrc2->GetOutput()); pxor->SetOperationToXor(); pxor->SetOutputTrueValue(150); vtkImageViewer* pViewer = vtkImageViewer::New(); pViewer->SetInput(pxor->GetOutput()); pViewer->SetColorWindow(255); pViewer->SetColorLevel(127.5); vtkRenderWindow* pRenWnd = vtkRenderWindow::New(); pRenWnd->AddRenderer(pViewer->GetRenderer()); pRenWnd->SetSize(270, 200); vtkRenderWindowInteractor* pRenWndInact = vtkRenderWindowInteractor::New(); pRenWndInact->SetRenderWindow(pRenWnd); pRenWndInact->Initialize(); pRenWndInact->Start();
trackback:http://blog.csdn.net/bingo_gmwu/article/details/4747038
转载于:https://www.cnblogs.com/JohnShao/archive/2012/07/29/2614309.html
相关文章推荐
- VTK学习笔记之图像处理
- VTK修炼之道14:图像处理_创建
- VTK修炼之道16:图像处理_窗口分割和图像融合(Viewport&vtkImageBlend)
- 05-VTK在图像处理中的应用(8)
- 5、VTK在图像处理中的应用
- iOS集成VTK(三维计算机图形学、图像处理和可视化)
- 05-VTK在图像处理中的应用(9)
- Vtk图像处理
- vtkPropPicker在图像处理中的应用
- VTK图像处理之vtkImageMapToColors
- 05-VTK在图像处理中的应用(1)
- 05-VTK在图像处理中的应用(2)
- 05-VTK在图像处理中的应用(6)
- VTK之图像处理
- 05-VTK在图像处理中的应用(4)
- 05-VTK在图像处理中的应用(5)
- vtk 图像处理 多种 操作
- VTK图像处理之访问图像像素值
- 05-VTK在图像处理中的应用(3)
- 【图像处理】VTK二维图像标记bug修正