数字图像处理--掩膜重建
2017年01月13日 19:54:11 i_chaoren 阅读数:2352更多
个人分类: 数字图像处理
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/54411569
内容描述:给定皮肤镜黑素细胞瘤图像,检测毛发噪声,并修复毛发遮挡部位的信息。
主要包括以下五个大的步骤,流程图如下:
过程分析
第一步:对原图进行灰值化处理;计算公式为:Gray = R*0.299 + G*0.587 + B*0.114。
下图分别为实验原图和灰值化之后的图:
图1 图2
第二步:波谷检测;波谷检测可以分解为两个小的步骤,首先是使用结构元素对原图进行灰度闭运算(先膨胀后腐蚀:填充物体内细小空洞、连接邻近物体),进过多次试验,最终采用的是5×5的结构元素;然后用原图减去闭运算的结果,会得到图像的波谷区,也就是本图中的毛发区域,检测结果如下图3所示。
第三步:固定阈值分割;由于图片中的毛发区域在整张图中的占比很小,查阅文献可知,一般情况下,毛发占比仅有5%,所以不宜使用大津阈值的方法,这里采用的是固定阈值分割,这里使用的阈值为15,由图4可知,除了毛发区域,也出现了很多小的噪声,所以需要对图像降噪。
图3 图4
第四步:区域生长;在这里区域生长的作用主要是用来滤除小噪声的,对整幅图进行区域生长,对每个连通区域进行数量统计,对于统计量小于15的区域进行滤除。降噪之后的结果如图5所示。
第五步:掩膜重建;首先,为了减少毛发区域的颜色对图像重建产生影响,以及标记掩膜区域,在原图中将毛发区域赋值为255;伪代码如下:
if (二值图掩膜区像素 == 255) {
for(int k=0;k<3;k++)
原彩色图对应的区域 = 255; }
然后建立了一个9×9的模板,在原始彩色图毛发区域对原图进行滤波,伪代码如下:
if ( 二值图掩膜区像素== 255)
{ 使用9×9的模板对原图进行卷积滤波 }
模板结构如下:
最后得到的结果如下图6所示。
图5 图6
结果分析
在整个实验中关键的一步是波谷检测,它能够有效的将原图中的毛发区域检测出来,提供了掩膜的主要框架,需要注意的是在结构元素选择的时候,选择稍微较大的结构元素,这样可以将图中较为粗大的毛发也能提取出来,否则将会提取不完整,如图7所示,当然也不能选择的太大,不然噪声会非常多。对于阈值分割和区域生长已经在过程分析中交代清楚,这里不再赘述。最后就是掩膜重建,在重建的时候,进行一次滤波不能达到有效的重建结果,如图8所示,所以需要多次滤波,这里选择的滤波次数loop=5。
图7 图8