码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C#开发PACS医学影像三维重建(十三):基于人体CT值从皮肤渐变到骨骼的梯度透明思路


    当我们将CT切片重建为三维体之后,通常会消除一些不必要的外部组织来观察内部病灶,

    一般思路是根据人体常见CT值范围来使得部分组织透明来达到效果,

    但这是非黑即白的,即,要么显示皮肤,要么显示神经,要么显示骨骼…

    然而,当病灶介于两个CT值范围中间或重合时,要观察病灶这将是一个非常困难的工作,需要手动旋转、切割等一系列操作,

    严重降低判断准确性和工作效率,故此采用梯度透明思想来展现渐变过程。

     

    准备一张人体CT值范围表参考:

     

    当我们对三维体使用鼠标操作时,将CT值从最小值到最大值映射到三维体上面,并将透明度从0到100渐变,

    如果能自己用代码实现效果最好,否则也可以用VTK进行梯度透明,部分C++代码如下:

    vtkSmartPointer<vtkPiecewiseFunction> GradualOp = vtkSmartPointer<vtkPiecewiseFunction>::New();
    GradualOp->AddPoint(10, 0.0);
    GradualOp->AddPoint(20, 0.5);
    GradualOp->AddPoint(30, 1.0);
    volumeProperty->SetGradientOpacity(GradualOp);

    梯度小于10点的不透明度乘子设为0,完全透明。

    梯度大小为10时,不透明度为0;

    梯度大小为20时,不透明度乘子为0.5;

    梯度大小在10-20时,不透明度乘子通过线性映射至0-0.5之间的数值;

    当梯度大小在20-30之间时,不透明度乘子通过线性映射至0.5-1.0之间;

    梯度值大于30时,不透明度乘子为1

    同样最后还是用观察者模式展现体重建

    复制代码
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    //设置相机
        vtkCamera aCamera = new vtkCamera();
     
        aCamera.SetViewUp(0, 0, -1);
     
        aCamera.SetPosition(0, 1, 0);
     
        aCamera.SetFocalPoint(0, 0, 0);
     
        aCamera.ComputeViewPlaneNormal();
     
     
        //设置Actor
        vtkActor coneActor = new vtkActor();
     
        coneActor.SetMapper(skinMapper);
     
        coneActor.GetProperty().SetAmbient(0.5);
     
        coneActor.GetProperty().SetDiffuse(1);
     
        coneActor.GetProperty().SetSpecular(0.6);
     
        //显示类
        vtkRenderer renderer = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();
     
        renderer.AddActor(coneActor);//添加coneActor对象
     
        //renderer.AddActor2D(new vtkProp());//添加textActor对象
     
        renderer.SetBackground(0, 0, 0);
     
        renderer.SetActiveCamera(aCamera);//添加相机
     
        renderer.ResetCamera();
     
        vtkRenderWindow renWin = renderWindowControl1.RenderWindow;//设置绘图窗口renWin->AddRenderer(renderer);//装载绘图类
     
        vtkWin32RenderWindowInteractor iren = new vtkWin32RenderWindowInteractor();
     
        iren.SetRenderWindow(renWin);//装载绘图窗口

      

    依照上述思想,实现最终效果,

    案例①:从面部重建渐变到口腔牙齿,显露出牙床钢钉:

     

     

    更为直观、方便的观察牙床钢钉及口腔其他情况:

     

    案例②:颅脑及上胸腔平扫,从皮肤渐变到肌肉、神经、骨骼

     

     

    渐变过程中观察骨骼、神经、血管等病灶:

     

     

    C#开发PACS、RIS、3D医学影像处理系统系列教程 目录整理:

    菜鸟入门篇

    PACS客户端:

    C#开发PACS医学影像处理系统(一):开发背景和功能预览

    C#开发PACS医学影像处理系统(二):界面布局之菜单栏

    C#开发PACS医学影像处理系统(三):界面布局之工具栏

    C#开发PACS医学影像处理系统(四):界面布局之状态栏

    C#开发PACS医学影像处理系统(五):查询病人信息列表

    C#开发PACS医学影像处理系统(六):加载Dicom影像

    C#开发PACS医学影像处理系统(七):读取影像Dicom信息

    C#开发PACS医学影像处理系统(八):单元格变换

    C#开发PACS医学影像处理系统(九):序列控件与拖拽

    C#开发PACS医学影像处理系统(十):Dicom影像下载策略与算法

    C#开发PACS医学影像处理系统(十一):Dicom影像挂片协议

    C#开发PACS医学影像处理系统(十二):绘图处理之图形标记

    C#开发PACS医学影像处理系统(十三):绘图处理之病灶测量

    C#开发PACS医学影像处理系统(十四):处理Dicom影像窗宽窗位

    C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法

    C#开发PACS医学影像处理系统(十六):2D处理之影像平移和缩放

    C#开发PACS医学影像处理系统(十七):2D处理之影像旋转和翻转

    C#开发PACS医学影像处理系统(十八):Dicom使用LUT色彩增强和反色

    C#开发PACS医学影像处理系统(十九):Dicom影像放大镜

     

    PACS三维处理医学图像:

    C#开发PACS医学影像三维重建(一):使用VTK重建3D影像

    C#开发PACS医学影像三维重建(二):使用VTK进行体绘制

    C#开发PACS医学影像三维重建(三):纹理映射与颜色传输

    C#开发PACS医学影像三维重建(四):3D网格平滑效果

    C#开发PACS医学影像三维重建(五):基于梯度透明的组织漫游

    C#开发PACS医学影像三维重建(六):三维光源与阴影效果

    C#开发PACS医学影像三维重建(七):空间测量与标注

    C#开发PACS医学影像三维重建(八):VR体绘制

    C#开发PACS医学影像三维重建(九):MPR三视图切面重建

    C#开发PACS医学影像三维重建(十):MIP最小密度投影

    C#开发PACS医学影像三维重建(十一):CPR曲面重建

    C#开发PACS医学影像三维重建(十二):VE虚拟内镜技术

    C#开发PACS医学影像三维重建(十三):基于人体CT值从皮肤渐变到骨骼的梯度透明思路

    熟手进阶篇

    医学影像算法:

    C#处理医学影像(一):基于Hessian矩阵的血管肺纹理骨骼增强对比

    C#处理医学影像(二):基于Hessian矩阵的医学影像增强与窗宽窗位

    C#处理医学影像(三):基于漫水边界自动选取病灶范围的实现思路

    C#处理医学影像(四):影像锐化增强对比

     

    PACS网页端 开发Web版本的PACS:

    C#开发Web端PACS(一):基于PACS客户端思想重写Web端

    C#开发Web端PACS(二):使用 .Net MVC 开发手机端PACS服务端

    C#开发Web端PACS(三):使用HTML5和CSS3开发PACS手机端页面

    C#开发Web端PACS(四):Web端与服务端的DICOM传输

    C#开发Web端PACS(五):Web端的平移缩放旋转2D操作

    C#开发Web端PACS(六):Web端的窗宽窗位调整

    C#开发Web端PACS(七):将移动端接入微信公众号实现医院云胶片

    登峰造极篇

    C#开发基于Python人工智能的肺结节自动检测

    C#开发基于Python人工智能的脊柱侧弯曲率算法

    C#开发基于Python机器学习的医学影像骨骼仿真动画

    C#开发基于Python机器学习的术后恢复模拟

    C#开发基于U3D的VR眼镜设备虚拟人体三维重建

    C#开发基于全息投影的裸眼3D医学影像显示技术

    周边附加篇

    胶片打印:

    C#开发医学影像胶片打印系统(一):万能花式布局的实现思路

    C#开发医学影像胶片打印系统(二):胶片打印机通讯

    C#开发医学影像胶片打印系统(三):Pacs二维功能在排版中的应用

     

    PACS服务端:

    C#开发PACS医学影像处理系统服务端(一):医疗设备的连接与收图

    C#开发PACS医学影像处理系统服务端(二):高并发架构

     

    PACS与RIS系统的通信与集成

    在RIS系统中调起PACS并打开Dicom影像

     

    云PACS与远程会诊

    C#开发PACS医学影像处理系统之云PACS(区域PACS)(一):架构概述

    C#开发PACS医学影像处理系统之云PACS(区域PACS)(二):远程会诊与双向转诊

     

    科幻级视频特效:

    使用Adobe After Effects 制作PACS影像处理系统宣传视频

  • 相关阅读:
    uboot启动流程源码分析(一)
    C语言 & 图形化界面方式连接MySQL【C/C++】【图形化界面组件分享】
    六 系统可靠性分析与设计
    91.(leaflet之家)leaflet态势标绘-进攻方向绘制
    Spring基于XML装配Bean
    数据结构与算法拾遗九(异或运算)
    common Vocabulary3
    【主流技术】Mybatis Plus的理解与应用
    智能网联「中国百强供应商」都有谁?8月30-31日现场揭晓
    测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)
  • 原文地址:https://www.cnblogs.com/Uncle-Joker/p/16224192.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号