C#处理医学影像(三):基于漫水边界自动选取病灶范围的实现思路
开发背景:
医生在实际使用PACS软件观察病灶时,经常会测量不规则病灶的周长和面积,使用画笔工具勾勒比较耗时且准度欠佳,
或者在标记人工智能训练样本时少则几百张,多则几千张,为极大减少耗时和极大提高工作效率,故开发此功能用来自动勾勒病灶范围并自动测量。
国际惯例,先看效果:
思路流程概览:
①以鼠标按下作为漫水算法中心点向外扩散填充
②裁剪最大外接矩形,缩小计算范围
③灰度转换
④Canny算子或Sobel算子提取轮廓
⑤背景降噪
⑥提取边界轮廓
⑦设置容差范围
⑧可变多边形坐标转化
⑨缩放、平移、旋转后的坐标映射
准备一张样本并以手臂骨头作为假设病灶:
①以鼠标按下作为漫水算法中心点向外扩散填充
通过给定指定的中心坐标,和指定染色的颜色值,向四周扩撒,遇到一样或近似值将其包含在范围内,网上源码很多,很容易实现。
②裁剪最大外接矩形,缩小计算范围
将漫水填充范围的最大外接矩形裁剪出来,提高后续计算效率。
③灰度转换
转换成灰度图,为后续计算做准备。
④Canny算子或Sobel算子进行边缘检测
Canny算子和Sobel算子区别:
Canny算子:
在计算前先将图像进行高斯滤波转换,得到一个相对模糊的图像,使得噪点在平滑过度时的影响降到最低:
根据算法原理得到如下结果:
Sobel算子:
根据算法原理得到如下结果:
其中直观区别是canny算子计算的结果清晰,但不连续,容易受噪点影响,而sobel算子线条相对柔和,连续性强。
⑤背景降噪
进行一次手动背景降噪,使得展现的无用边缘更少,结果更清晰:
⑥提取边界轮廓
经过上面的计算后会得到一个边界坐标集合记为List<Point> list;
这些点是不连续的,不首尾相连的,我们需要将非边缘坐标删除,并将边缘坐标按顺时针或逆时针排序;
此时虽然得到了边缘坐标,但他是非连续性的,当我们把这些点连起来的时候就会出现问题:
所以我们将这些边缘坐标按逆时针或顺时针排序:
⑦在界面上增加滑块控件并设置容差范围
当碰到边界不是很清晰的时候,我们需要调整容差范围,以影响漫水扩散时的范围准确性:
观察容差范围10和20的区别:
⑧可变多边形坐标转化
根据本系列教程的测量工具开发,在此基础上我们将标识的范围转化为可变多边形:
微调结果并显示周长和面积:
⑨缩放、平移、旋转后的坐标映射
当图像发生放大、平移、旋转时,要注意边缘坐标的映射以保证结果正确:
配合色彩增强,食用效果更佳!
C#开发PACS、RIS、3D医学影像处理系统系列教程 目录整理:
菜鸟入门篇
PACS客户端:
C#开发PACS医学影像处理系统(七):读取影像Dicom信息
C#开发PACS医学影像处理系统(十):Dicom影像下载策略与算法
C#开发PACS医学影像处理系统(十一):Dicom影像挂片协议
C#开发PACS医学影像处理系统(十二):绘图处理之图形标记
C#开发PACS医学影像处理系统(十三):绘图处理之病灶测量
C#开发PACS医学影像处理系统(十四):处理Dicom影像窗宽窗位
C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法
C#开发PACS医学影像处理系统(十六):2D处理之影像平移和缩放
C#开发PACS医学影像处理系统(十七):2D处理之影像旋转和翻转
医学影像三维篇
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#处理医学影像(一):基于Hessian矩阵的血管肺纹理骨骼增强对比
C#处理医学影像(二):基于Hessian矩阵的医学影像增强与窗宽窗位
C#处理医学影像(三):基于漫水边界自动选取病灶范围的实现思路
C#处理医学影像(四):基于Stitcher算法拼接人体全景脊柱骨骼影像
胶片打印:
C#开发医学影像胶片打印系统(二):胶片打印机通讯
C#开发医学影像胶片打印系统(三):Pacs二维功能在排版中的应用
登峰造极篇
C#开发基于Python人工智能的肺结节自动检测
C#开发基于Python人工智能的脊柱侧弯曲率算法
C#开发基于Python机器学习的医学影像骨骼仿真动画
C#开发基于Python机器学习的术后恢复模拟
C#开发基于U3D的VR眼镜设备虚拟人体三维重建
C#开发基于全息投影的裸眼3D医学影像显示技术
医疗影像软件产品友情链接

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步