日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vtk类之vtkFixedPointVolumeRayCastMapper :一个固定像素点的体数据映射器

發布時間:2024/4/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 :一个固定像素点的体数据映射器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。