体绘制之基本概念

基本概念

体绘制

        在自然环境和计算模型中,许多对象和现象只能用三维体数据场表示,和传统的计算机图形学相比,对象体不再是用几何曲面或曲线表示的三维实体,而是以体素(voxel)作为基本造型单元.对于每一体素,不仅其表面而且其内部都包含了对象信息,这是仅用曲线或曲面等几何造型方法所无法表示的。体绘制的目的就在于提供一种基于体素的绘制技术,它有别于传统的基于面的绘制,能显示出对象体的丰富的内部细节。
        体绘制的一个特点就在于放弃了传统图形学中体由面构造的这一约束,采用体绘制光照模型直接从三维数据场中绘制出各类物理量的分布情况。体绘制由于直接研究光线通过体数据场时与体素的相互关系,无需构造中间面,体素中的许多细节信息得以保留,结果的保真性大为提高。从结果图像的质量上讲,体绘制要优于面绘制.但从交互性能和算法效率上讲,至少在目前的硬件平台上,面绘制还是要优于体绘制的.

体光照模型

        体光照模型是进行体绘制的基础.当光线穿过体素与光线遇到一曲面时,会发生不同的光学现象.前者如光线穿过云层会发生吸收、散射等现象,后者如光线射到桌面上,有漫射、反射、透射等现象.不同的物理背景决定了体光照强度的计算与面光照强度的计算有着不同的模型和方法。体光照模型就是研究光线穿过体素时的光强变化,将光线穿过体素时的物理现象用数学模型来描述.在目前的体绘制中,采用得较多的有源-衰减模型、变密度发射模型和材料分类及组合模型。

  • 源—衰减模型
    源—衰减模型为体数据场中的每一体素分配一个源强度和一个衰减系数,每一体素作为一个质点光源,发出的光线在数据场中沿距离衰减后被投影到视平面上,形成结果图像。

  • 变密度发射模型
    变密度发射模型认为任一对象都是一个质点光源系统。整个对象空间中都充满着粒子云,每一粒子均可发光.模型处理的是宏观的质点密度,而非质点粒子本身.该模型认为质点足够小,以致可以认为质点是连续分布的。

  • 材料分类及混合模型
    材料分类及混合模型认为每一体素是由若干种材料组合而成,如在CT图像中每一体素由骨路、软组织、脂肪和空气等组成,其中每种材料的组成由该种材料在体素中所占的百分比来描述。每一体素中每种材料的百分比的确定采用的是概率分类而非二值分类。对不同材料分别计算其密度分布以及光照强度和不透明度,在分类的基础上,再通过组合公式,将各种材料的光照强度和不透明度以所占的百分比为权混合成该体素的亮度和不透明度。与前两种模型相比最根本的区别在于材料分类及混合模型是一种基于分割的光强组合计算方法,它着眼于分割,而非讨论体数据中的各类物理现象。

体绘制方法

        体光照模型提供了体数据中各数据点光照强度的计算方法,体绘制方法提供的是二维结果图像的生成方法。首先根据数据点值对每一数据点赋以不透明度值和颜色值;再根据各数据点所在点的梯度及光照模型计算出各数据点的光照强度,然后将投射到图像平面中同一象素点的各数据点的半透明度和颜色值综合在一起,形成最终的结果图像。根据不同的绘制次序,体绘制方法目前主要分两类:

  • 以图像空间为序的体绘制算法
  • 以对象空间为序的体绘制方法

以图像空间为序的体绘制算法——光线跟踪
        以图像空间为序的绘制算法是从屏幕上的每一象素点出发,根据设定的视点方向,发出一条射线,这条射线穿过三维数据场的体素矩阵,沿这条射线选择K个等距采样点,由距离某一采样点最近的8个体素的颜色值及不透明度值做三维线性插值,求出该采样点的不透明度值及颜色值。在求出该条射线上所有采样点的颜色值及不透明度值以后,可以采用由后到前或由前到后的两种不同的方法将每一采样点的颜色及不透明度进行组合,从而计算出屏幕上该象素点处的颜色值。

光线跟踪的主要步骤:
For 每条光线 Do
    For 每个与光线相交的体素 Do
          计算该体素对图像空间对应象素的贡献

以对象空间为序的体绘制算法——单元投影法
        该类算法首先根据每个数据点的函数值计算该点的不透明度及颜色值,然后根据给定的视平面和观察方向,将每个数据点的坐标由对象空间变换到图像空间。再根据选定的光照模型,计算出每个数据点处的光照强度.然后根据选定的重构核函数计算出从三维数据点光照强度到二维图像空间的映射关系,得出每个数据点所影响的二维象素的范围及对其中每个象素点的光照强度的贡献.最后将不同的数据点对同一象素点的贡献加以合成.

单元投影法的主要步骤:
For 每一体素或单元 Do
    For 该体素在视平面投影区域内的每一象素 Do
            计算象素点获得的光照强度
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PyQt5图形界开发,有一些基本概念需要了解: 1. 窗口(Window):窗口是应用程序的主要界,它是用户与应用程序交互的窗。在PyQt5,可以使用QMainWindow类创建主窗口,或使用其他窗口类创建自定义窗口。 2. 控件(Widget):控件是构成窗口界的基本元素,如按钮、文本框、标签、表格等。PyQt5提供了丰富的预定义控件,也可以通过自定义控件来满足特定需求。 3. 布局管理器(Layout Manager):布局管理器用于自动调整和排列控件的位置和大小,以适应窗口的大小和分辨率变化。PyQt5提供了多种布局管理器,如水平布局(QHBoxLayout)、垂直布局(QVBoxLayout)和网格布局(QGridLayout)等。 4. 事件(Event):事件是用户与应用程序交互时产生的动作或状态变化,如鼠标点击、键盘输入等。PyQt5使用事件驱动编程模型,通过连接信号(Signal)和槽(Slot)来处理各种事件。 5. 信号与槽(Signal and Slot):信号是对象发出的通知,槽是用于处理信号的函数。在PyQt5,可以使用QObject类的信号和槽机制来实现对象之间的通信和交互。 6. 样式表(Style Sheet):样式表可以用于设置控件的外观和样式,如字、颜色、背景等。PyQt5支持使用CSS(层叠样式表)语法来定义控件的样式。 7. 对话框(Dialog):对话框是用于显示特定信息或与用户进行交互的窗口。PyQt5提供了各种预定义对话框,如消息框、文件选择框、颜色选择框等。 8. 绘图(Painting):绘图是在窗口上绘制图形、图表和其他图形化元素的过程。PyQt5提供了绘图工具和API,开发者可以使用它们来实现自定义的绘图功能。 9. 数据库(Database):PyQt5集成了Qt的数据库模块,可以方便地进行数据库操作,如连接数据库、执行SQL查询等。 以上是PyQt5图形界开发的一些基本概念,了解这些概念将有助于开发者理解和构建GUI应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值