初步肺部分割---记录一个星期的苦逼生活

本文记录了一位开发者尝试使用OpenCV进行肺部图像分割的过程,包括使用Canny边缘检测失败,提出自定义算法思路,遇到位深度和色彩空间问题,最终解决并得出初步结果的历程。
摘要由CSDN通过智能技术生成

初步肺部分割---记录一个星期的苦逼生活

肺部分割结果不是很好,望大神们指教,不慎感激

一:一开始的想法:

由于最近在学习计算机视觉,使用OpenCV开发程序,所以第一个想法是使用OpenCV里自带的一个分割函数Canny进行分割。我写了一个简单的程序,输入我是从给的肺的资料中随便挑了一个,如下:

 

然后运行canny边缘检测,通过调整canny函数中的小阈值和大阈值,得到如下结果:

二:自己的算法思想:

然后我了解到canny边缘检测是根据梯度变化检测边缘的,只要梯度出现明显变化就认为是边缘,在上图中边缘明显出来了,但是我们只要肺部的边缘,而不需要其他边缘,所以使用canny边缘检测是不行的。

然后我看图像想出了一个方法可以检测肺部的区域,具体的思想如下:

首先读入图像,然后对图像一行一行的扫描。首先从左往右扫描,如果出现了像素值明显变化,即从白变成黑,那么它一定是左肺的起始点,然后再往后扫描,如果出现像素值从黑变到白,那么这个点就是左肺的末点。此时停止扫描,转化到从右开始往左扫描,利用同前面的思想可以找到右肺的部分。

伪代码如下:

对于图像的每一行像素:

从左往右扫描此行:

Flag=0;//flag是一个标志,0表示未找到起始点,1表示找到起始点,2表示找到终止点

如果flag == 0{

如果当前像素大于某个阈值的时候(此处的阈值表示白色的范围),且这个像素的后一个像素小于某个阈值的时候(此处的阈值表示黑色的范围),那么可以断定是左肺的起始点(此行的左肺的起始点)。

Flag = 1;

}

如果flag ==1{

如果当前像素小于某个阈值的时候(此处的阈值表示黑色的范围),且这个像素的后一个像素大于某个阈值的时候(此处的阈值表示白色的范围),那么断定是左肺的终止点(此行的左肺的终止点)。

Flag = 2

}

如果flag == 2{

Break;

从右往左扫描此行:

Flag=0;//flag是一个标志,0表示未找到起始点,1表示找到起始点,2表示找到终止点

如果flag == 0{

如果当前像素大于某个阈值的时候(此处的阈值表示白色的范围),且这个像素的前一个像素小于某个阈值的时候(此处的阈值表示黑色的范围),那么可以断定是右肺的起始点(此行的右肺的起始点)。

Flag = 1;

}

如果flag ==1{

如果当前像素小于某个阈值的时候(此处的阈值表示黑色的范围),且这个像素的前一个像素大于某个阈值的时候(此处的阈值表示白色的范围),那么断定是右肺的终止点(此行的右肺的终止点)。

Flag = 2

}

如果flag == 2{

Break;

//算法结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值