vtk类之vtkFixedPointVolumeRayCastMapper :一个固定像素点的体数据映射器
生活随笔
收集整理的這篇文章主要介紹了
vtk类之vtkFixedPointVolumeRayCastMapper :一个固定像素点的体数据映射器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在vtkImageData中,繪制體數據一種軟實現的光線投射算法。算法可以處理所有種類的數據類型,最多四種組件。算法可以采用復合或者MIP渲染方式,并且可以與幾何數據混合起來渲染。設置采樣間距space可以用來加速渲染進程。此外, 對于固定點精度是15的數據中,可以執行很好的計算。該算法是多線程的,可以跨多核心處理并行掃描。
對于vtkVolumeRayCastMapper來說,該算法是一個很好的替代者。但是,對于下面幾種情況該算法無法實現。
- 不能工作在等值面光線投射的情況下
- 它只能用內插值取代以前分類組合
- 它只有最大標量值MIP渲染。
VtkVolumeRayCastMapper不能用于下面2中情況,但vtkFixedPointVolumeRayCastMapper無此限制。
- 如果數據不是無符號的字符或者無符號的短整形
- 如果數據位多個組件的組合
從無符號字符類型到雙精度浮點類型,該算法都可以處理。
通過創建子采樣的提數據,執行跨越式的空間。在原始體數據中,4 × 4 × 4 單元的由最小,最大,并結合漸變和標志值表示。
?
public class FixedPointVolumeFactory{public vtkImageData ImageData { get; set; }public FixedPointVolumeFactory(vtkImageData imageData){this.ImageData = imageData;}public virtual vtkVolume NewActor(){return vtkVolume.New();}public virtual List<vtkProp> MakeActors(){List<vtkProp> actors = new List<vtkProp>();var actor = this.NewActor();vtkColorTransferFunction colorTFunc = this.GenerateColorTFunc();vtkPiecewiseFunction opacityFunc = this.GenerateOpacityFunc();vtkPiecewiseFunction gradient = this.GenerateGradientFunc();vtkVolumeProperty volumeProperty = vtkVolumeProperty.New();volumeProperty.SetColor(colorTFunc);volumeProperty.SetScalarOpacity(opacityFunc);volumeProperty.SetGradientOpacity(opacityFunc);volumeProperty.SetInterpolationTypeToLinear();volumeProperty.ShadeOn();//成體繪制函數:var volumeMapper = vtkFixedPointVolumeRayCastMapper.New();volumeMapper.SetInput(this.ImageData);volumeMapper.SetSampleDistance(0.5f);actor.SetMapper(volumeMapper);actor.SetProperty(volumeProperty);actors.Add(actor);return actors;}/// <summary>/// 梯度變換函數設置灰度值變換的大小與不透明度之間的映射。/// </summary>/// <returns></returns>private vtkPiecewiseFunction GenerateGradientFunc(){var gradient = vtkPiecewiseFunction.New();gradient.AddPoint(50, .2);//灰度值變化梯度與不透明度的關系gradient.AddPoint(500, 1);gradient.AddPoint(1500, 0.7);gradient.AddPoint(2000, .1);return gradient;}/// <summary>/// 不透明度映射函數是設置光線方向上的灰度值及其不透明度映射。/// </summary>/// <returns></returns>private vtkPiecewiseFunction GenerateOpacityFunc(){var opacityTransferFunction = vtkPiecewiseFunction.New();opacityTransferFunction.AddPoint(10, 0.0);//灰度值及不透明度值opacityTransferFunction.AddPoint(50, 0.1);opacityTransferFunction.AddPoint(200, 0.6);opacityTransferFunction.AddPoint(1000, 0.6);opacityTransferFunction.AddPoint(2000, 0.8);opacityTransferFunction.AddPoint(3000, 1);//不透明度值為1則為完全不透明 opacityTransferFunction.ClampingOff();return opacityTransferFunction;}/// <summary>/// 顏色映射函數是設置灰度值與RGB顏色的映射。/// </summary>/// <returns></returns>private vtkColorTransferFunction GenerateColorTFunc(){var colorTransferFunction = vtkColorTransferFunction.New();colorTransferFunction.AddHSVPoint(0, 0.67, 0.5, 1);colorTransferFunction.AddHSVPoint(94, 0.67, 0.17, 1);colorTransferFunction.AddHSVPoint(139, 0, 0.4, 0);colorTransferFunction.AddHSVPoint(160, 0.28, 0.447, 1);colorTransferFunction.AddHSVPoint(254, 0.38, 0.413, 1);colorTransferFunction.ClampingOff();return colorTransferFunction;}}?
轉載于:https://www.cnblogs.com/ankier/archive/2013/03/12/2956431.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的vtk类之vtkFixedPointVolumeRayCastMapper :一个固定像素点的体数据映射器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAXB简记
- 下一篇: 【转】解决多文件编译中连接错误 mult