8 二值图像分析
问题的提出
经过图像分割之后,获得了目标物与非目标物两种不同的对象。但是提取出的目标物存在以下的问题:
1)提取的目标中存在伪目标物;
2)多个目标物中,存在粘连或者是断裂;
3)多个目标物存在形态的不同。
(一)二值图像分析基本概念
二值图像分析的目的
二值图像的分析首先是区分所提取出的不同的目标物,之后,对不同的目标物特征差异进行描述与计算,最后获得所需要的分析结果。
二值图像分析的基本概念
为讨论方便起见,这里,假设目标为黑色,背景为白色。
连接
四连接
:当前像素为黑,其四个近邻像素中至少有一个为黑;
八连接
:当前像素为黑,其八个近邻像素中至少有一个为黑。
连通域
将相互连在一起的黑色像素的集合称为一个连通域
。
几何特征的测量
面积:连通域中像素的总数
周长:包围某个连通域的边界轮廓线的长度
质心:连通域的几何中心
圆形度:与圆形相似程度。 圆形度=(
4
π
4π
4π面积)/(周长周长)
矩形度:与矩形相似程度。连通域的面积与包围连通域的最小矩形的面积的比值
长宽比:包围连通域的最小矩形的宽度与长度的比值
(二)二值图像分析方法
1贴标签
、2腐蚀
、3膨胀
、4开运算与闭运算
1)贴标签
基本思路
因为不同的连通域代表了不同的目标,为了加以区别,需要对不同的连通域进行标识。
算法步骤
设一个二值矩阵表示一个黑白图像,为讨论方便起见,令“黑=1”,“白=0”。
①初始化:设标签号为Lab=0,已贴标签数N=0,标签矩阵g为全0阵,按照从上到下,从左到右的顺序寻找未贴标签的目标点;
②检查相邻像素的状态:根据模板中的相邻像素的状态进行相应的处理;
如果扫描过的像素均为0,则Lab=Lab+1, g(i,j)=Lab,N=N+1;
如果扫描过的像素标签号相同,则g(i,j)=相同的标签号; (扫描过的像素均为0)
如果扫描过的像素标签号不相同,例如:Lab2> Lab1, 则g(i,j)=Lab1,N=N-1,修改所有为Lab2的像素值,使之为Lab1;
③将全部的像素进行②的处理,直到所有的像素全部处理完成;
④判断最终的Lab是否满足Lab=N,
如果是,则贴标签处理完成;
如果不是,则表明已贴标签存在不连号情况。这时,将进行一次编码整理,消除不连续编号的情况。
2)腐蚀
基本概念
腐蚀 是一种消除连通域的边界点,使边界向内收缩的处理。
设计思想
设计一个结构元素,结构元素的原点定位在待处理的目标像素上,通过判断是否覆盖,来确定是否该点被腐蚀掉。 【结构元素是否完全包含在连通域中,不完全包含即被腐蚀】
算法步骤
1)扫描原图,找到第一个像素值为1的目标点;
2)将预先设定好形状以及原点位置的结构元素的原点移到该点;
3)判断该结构元素所覆盖的像素值是否全部为1:
如果是,则腐蚀后图像中的相同位置上的像素值为1;
如果不是,则腐蚀后图像中的相同位置上的像素值为0;
4)重复2)和3)直到所有原图中像素处理完成
例题
应用: 腐蚀处理可以将粘连在一起的不同目标物分离,并可以将小的颗粒噪声去除。
3)膨胀
基本概念
膨胀是将与目标区域接触的背景点合并到该目标物中,使目标物边界向外部扩张的处理。
设计思想
设计一个结构元素,结构元素的原点定位在背景像素上,判断是否覆盖有目标点,来确定是否该点被膨胀为目标点。【结构元素是否与连通域有交集,有即膨胀】
算法步骤
1)扫描原图,找到第一个像素值为0的背景点;
2)将预先设定好形状以及原点位置的结构元素的原点移到该点;
3)判断该结构元素所覆盖的像素值是否存在为1的目标点:
如果是,则膨胀后图像中的相同位置上的像素值为1;
如果不是,则膨胀后图像中的相同位置上的像素值为0;
4)重复2)和3),直到所有原图中像素处理完成。
例题
应用: 膨胀处理可以将断裂开的目标物进行合并,便于对其整体的提取。
4)开运算与闭运算
提出背景
前面介绍的膨胀与腐蚀运算,对目标物的后处理有着非常好的作用。但是,腐蚀和膨胀运算的一个缺点是,改变了原目标物的大小。
为了解决这一问题,考虑到腐蚀与膨胀是一对逆运算,将膨胀与腐蚀运算同时进行。由此便构成了开运算与闭运算。
开、闭运算的变形
如果当按照常规的开运算不能分离粘连,或者是闭运算不能合并断裂:
对于开运算可以先进行
N
N
N次腐蚀,再进行
N
N
N次膨胀;
对于闭运算可以先进行
N
N
N次膨胀,再进行
N
N
N次腐蚀。
bingo~ ✨ 成功不是凭梦想和希望,而是凭努力和实践。