体绘制算法

本文介绍了三维体绘制中的RayCasting算法,该算法通过四个步骤——Ray casting, Sampling, Shading and Composition实现最接近人眼视觉的绘制效果。RayCasting中的关键概念是Transfer Function,用于根据体素密度和位置赋予颜色和透明度。在VTK库中,提供了实现Volume Rendering的示例代码。参考多个资料深入理解体绘制技术。" 125218832,11806197,OSA-50工业在线余氯传感器:高精度、稳定可靠的水处理监测工具,"['传感器技术', '水质监测', '工业自动化', '环保技术', '数据采集']
摘要由CSDN通过智能技术生成

    三维绘制包括面绘制和体绘制。体绘制可以提供最接近人眼视觉的绘制效果。体绘制的方法包括:

  1. RayCasting
  2. Splatting
  3. Shear Warp
  4. Texture based volume rendering

   其中RayCasting是最常用的方法之一。包括四个步骤:Ray casting, Sampling, Shading and Composition。具体的描述如下:

  

    在RayCasting算法中,主要涉及到的是transfer function的概念。Transfer Function通常被用来对不同密度或者不同位置的体素单元加上颜色和透明度属性。Transfer Function的实例如下:

     

    在VTK中,实现volume Rendering的程序示例如下:

   
#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkVolume16Reader.h>
#include <vtkVolume.h>
#include <vtkVolumeRayCastMapper.h>
#include <vtkGPUVolumeRayCastMapper.h>
#include <vtkVolumeRayCastCompositeFunction.h>
#include <vtkVolumeProperty.h>
#include <vtkColorTransferFunction.h>
#include <vtkPiecewiseFunction.h>
#include <vtkCamera.h>
#include <vtkDICOMImageReader.h>
#include <vtkImageShiftScale.h>

int main (int argc, char *argv[])
{

  vtkSmartPointer< vtkDICOMImageReader > reader = vtkSmartPointer< vtkDICOMImageReader >::New();
  reader->SetDirectoryName("E:\\Coding\\ReadDICOMSeries\\data\\DicomSeries");
  reader->SetDataScalarTypeToUnsignedShort();
  reader->SetDataSpacing(1, 1, 1);
  reader->SetDataByt
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值