VTK VR图像 裁剪Demo C++

¥ 100

¥ 100 开源众包 Technology & Programming China
14 days ago

Description

价格可议,提供一个Demo即可,目前剩余裁剪部分

实现这个功能的第一步就是要能在VR图像上画一个多边形的标注,并获取多边形的顶点,在VTK中我们可以通过vtkInteractorStyleDrawPolygon实现。

this->m_iren->SetInteractorStyle(this->m_lassoStyle);
this->m_lassoStyle->GetPolygonPoints()

有了多边形的顶点,我们需要计算出体数据场vtkBoundingBox垂直屏幕方向最远点、和最近点,然后根据最近点和最远点以及顶点信息生成一个多边形vtkPolyData,计算该多边形与体数据场的最大交集,并根据交集生成一个vtkImageData用于掩膜。

上面过程我们用到了VTK中的vtkPolyDataToImageStencil、vtkImageStencilToImage类。

stencilToImage->SetInputData(BrushPolyDataToStencil->GetOutput());
stencilToImage->SetInsideValue(0);
stencilToImage->SetOutsideValue(255);
stencilToImage->SetOutputScalarType(VTK_UNSIGNED_CHAR);
stencilToImage->Update();
有了掩膜vtkImageData后,我们就可以进行裁剪操作了,如果体绘制使用的是vtkGPUVolumeRayCastMapper类,可以调用SetMaskInput函数来实现裁剪操作。

如果体绘制用的不是vtkGPUVolumeRayCastMapper,则可以根据掩膜结果直接操作原始vtkImageData,将原始数据中对应的值设置成一个边缘值,通过映射后该边缘值会被映射成一个黑色。

关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now

Similar Teleworks

¥ 0-5000 Technology & Programming 开源众包 China
3 days ago