形态学运算——bwmorph
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形态学运算 —— BWMORPH
姓名 2018-xx-xx
BWMORPH
(1) BW2 = bwmorph (BW, operation) 对二值图像进行指定的形态学处理。
(2) BW2 = bwmorph (BW, operation, n)
对二值图像进行n次指定的形态学处理。
n可以是Inf(无穷大), 这意味着将一直对该图像做同样的形态 学处理直到图像不再发生变化。
粗化(THICKEN)
原图(bw)
膨胀孤点 (growMayb e)
角点轮廓 (oneNeighbo r)
oneNeighbor & growMaybe
bw | (oneNeighbor & growMaybe)
求补(c)
细化 (cc)
对角线填充(d)
(c & ~cc & d) | cc
结果图
骨架提取
原图
骨架化
去毛刺
分叉点
结束点
消除毛刺(SPUR)
消除毛刺:消除小的分支(毛刺) 原理:找到图像中小的分支(如下图八种结构)将其去除。 为了防止消除与边界相邻的点,我们对其补集进行操作。
空白处可以为0/1, 中心点由0变为1
骨架提取
原图
骨架化
去毛刺
分叉点
结束点
分支点(BRANCHPOINTS)
分支点 :找到骨架的分支点
形态学闭运算(即先膨胀后腐蚀) 采用对角线填充, 去除背景的八连通性 使用结构元素ones(3)对图像进行膨胀运算 找到骨架中的结束点 使用结构元素ones(3)对图像进行腐蚀运算 填充孤立的黑点
BWMORPH
operation hbreak majority open remove skel spur thicken thin tophat 用途 断开图像中的H型连接 如果一个像素的8邻域中有等于或超过5个像素点的 像素值为1, 则将该点像素值置1 进行形态学开运算(即先腐蚀后膨胀) 删除内部像素,提取边界 骨架提取 去除小的分支, 或引用电学术语“毛刺” 粗化 细化 顶帽,返回原图像减去开运算的图像
移除(REMOVE)
Remove:删除内部像素,提取边界像素
如何实现?
原理:如果其四邻域上的点都是1, 则该点被置为0
击中击不中
如果结构元B与图像中的前景和背景部分完全匹配, 则结构元原点对应的点被置为1,否则被置为0。
细化(THIN)
I = bwmorph (img, ’thin’, Inf)
含杂质的米粒二值图
消除孤立亮点去杂质
消除(CLEAN)
原理:比如3*3的矩阵, 除了中间元素为1外, 其余元素全部为0, 则这个1将被填充为0;(在八邻域上)
填充(FILL)
fill :填充孤立的黑点。
含杂质的米粒二值图
消除孤立亮点去杂质
填充(FILL)
原理 :比如3*3的矩阵, 除了中间元素为0外, 其余元素全部为 1, 则这个0将被填充为1;(在四邻域上)
对角线填充(DIAG)
用途:增强连通性,如区域填充
原图
对角线填充, 隔离背景
1 2 3 对填充后的 图像取反, 并划分连通 区域 颜色填充
4
大多数(MAJORITY)
majority:如果一个像素的8邻域中有等于或超过5个像素点的像素 值为1(0), 则将该点像素值置1 (0)。
用途:去除孤点,填充孔洞。
断开H形连接(HBREAK)
Hbreak :断开图像中的H型连接;
若3*3邻域呈H(正H或侧H), 将中心点由0赋值为1
桥接(BRIDGE)
Bridge:连接像素
若3*3邻域内有两个及以上连通 区域,将中心点赋值为1
对角线填充(DIAG)
Diag:采用对角线填充, 消除背景的八连通性。
原图
对角线填充,隔离背景
腐蚀(ERODE)
原图
腐蚀后
腐蚀(ERODE)
具体操作:将图像A与结构元B(通常为正方形或圆形)进行卷积,
用内核 B 覆盖区域的最小像素值代替中心点的像素。
用途:去除毛刺、粘连
相关函数: imerode
腐蚀(ERODE)
腐蚀应用——利用腐蚀去除图像中某些部分
(a)
(b)
(c)
(d)
(a)连线模板二值图 (b)~(d)分别使用11*11,15*15,45*45的结构元腐蚀的结果
细化:减少图像周围像素,使没有孔的对象收缩到最小连接的描边, 使有孔的对 象缩小到孔和外部边界之间的连接环。
通常细化过程需要不断重复直至图像不再发生变化
细化(THIN)
通常使用八个方向结构对进行细化,如果结构元B与图像中的前景和背景部分 完全匹配,则结构元原点对应的点被置为0,否则保持不变
粗化(THICKEN)
腐蚀(ERODE)
腐蚀应用:
边长为1、3、5、7、 用13*13像素的结构 9和15像素的正方形 元腐蚀原图 的二值图
用13*13像素的结构 元膨胀图像,恢复到 原图中15*15尺寸的 正方形
形态学梯度
CT图
腐蚀图
膨胀图
膨胀与腐蚀的差 描绘出图像边界
开运算(OPEN)
如图,如何去除图片中的线,并保留圆形呢?
相关函数: imtophat
米粒不 完整
背景不均匀的米粒
阈值处理
暗处的米粒 被完全检测
开运算
顶帽运算——均匀背景
阈值处理
底帽:闭运算与原图的差 底帽(BOTHAT)
用途:均匀光照,增强
对比度
相关函数: imtophat 背景不均匀的硬币 阈值处理
开运算
底帽运算——均匀背景
阈值处理
顶帽与底帽的比较
膨胀(DILATE)
原图
膨胀后
膨胀(DILATE)
具体操作:将图像A与结构元B(通常为正方形或圆形)进行卷积, 用内核 B 覆盖区域的最大像素值代替中心点的像素。
用途:孔洞填充、桥接裂缝
相关函数: imdilate
膨胀(DILATE)
膨胀应用——桥接裂缝
具有断裂字符的低分辨率样本文件
修复文本——断裂线段被连接
对角线填充(DIAG)
原理:取反,计算3*3邻域内四连通数量,若四连通区域个数大 于1,则将0赋值为1
在matlab中是如何实现的呢?
对角线填充(DIAG)
Eg: 3*3邻域: 二进制映射:
根据查找表,11号的值为1,所以 将中心点赋值为1
查找表:
序号 值
1 0
2 0
3 0
…… 511 512 …… 1 1
operation是一个字符串, 用于指定进行的形态学处理类型。
BWMORPH
operation bothat branchpoints 用途 底帽,返回闭运算减去源图像的图像 找到骨架中的分支点
bridge clean
close diag dilate endpoints erode fill
进行像素连接操作 去除图像中孤立的亮点
原图
骨架化
去毛刺
分叉点
结束点
骨架化(SKEL)
骨架化:在对象不断开的前提下删除对象边界上的像素,构成图像骨架。
(a)集合A (b)中心在A的骨架上的最大圆盘的 (a) (b) 不同位置 (c)位于A的骨架的不同线段上的另 一个最大圆盘 (d)完整的骨架 (c) (d)
骨架化(SKEL)
骨架提取
开运算(OPEN)
混有线条的图片
用半径为10的结构元 对原图进行腐蚀操作
用半径为10的结构元对 腐蚀后的图片进行膨胀
开运算:先腐蚀后膨胀。
用途:平滑轮廓,断开较窄的狭颈并消除细的突出物 相关函数: imopen
开运算(OPEN)
开运算应用
电路图
二值化
通过开运算找到电路元件
闭运算(CLOSE)
闭运算:先膨胀后腐蚀。
应用:统计米粒个数,对米粒进行处理后细化,再找到其分支点以统计 粘连米粒 要查找图像结束点必须先对图像进行骨架化操作
骨架提取
原图
骨架化
去毛刺
分叉点
结束点
结束点(ENDPOINTS)
结束点:找到骨架中的结束点
原理:对图像取反之后计算四连通区域,若四连通区域只有1个,则赋值为0
要查找图像结束点必须先对图像进行骨架化操作
粗化:与细化相反,通过向对象外部添加像素来使对象变粗,这样做会 导致以前未连接的对象被8连接
粗化(THICKEN)
粗化非常依赖于A的性质,可能产生孤立点,需要消除断点。
粗化(THICKEN)
在matlab中: (1)识别是否存在孤立像素 (2)若有孤立像素,将像素膨胀,并取原图角点轮廓和膨胀后的交集,防止膨胀 过后的点与原图元素边缘发生粘连 (3)对图像增加2px的边界 (4)对图像补集进行细化、对角线填充,去除粘连,再求补集
顶帽:原图与开运算的差 底帽:闭运算与原图的差
应用:用一个结构元通过开运算或闭运算从一副图像中删除物体,而不是拟
合物体,然后差操作得到一副仅保留已删除分量的图像。 顶帽变换用于暗背景上的亮物体,而底帽变换则亮背景上的暗物体 所以有:白顶帽变换和黑底帽变换之说
消除(CLEAN)
clean:去除孤立的亮点。
END
灰度图
二值化
结果图
用途:平滑轮廓,弥合较窄的间断和细长的沟壑,消除小的孔洞, 填补轮廓线中的断裂
相关函数: imclose
开闭运算应用
如何完全修复指纹 纹路?
开运算消除了噪 声,但是使指纹 纹路产生断裂
闭运算修复 指纹的部分 断裂处Βιβλιοθήκη Baidu
顶帽:原图与开运算的差 顶帽(TOPHAT)
用途:均匀光照,
增强对比度
姓名 2018-xx-xx
BWMORPH
(1) BW2 = bwmorph (BW, operation) 对二值图像进行指定的形态学处理。
(2) BW2 = bwmorph (BW, operation, n)
对二值图像进行n次指定的形态学处理。
n可以是Inf(无穷大), 这意味着将一直对该图像做同样的形态 学处理直到图像不再发生变化。
粗化(THICKEN)
原图(bw)
膨胀孤点 (growMayb e)
角点轮廓 (oneNeighbo r)
oneNeighbor & growMaybe
bw | (oneNeighbor & growMaybe)
求补(c)
细化 (cc)
对角线填充(d)
(c & ~cc & d) | cc
结果图
骨架提取
原图
骨架化
去毛刺
分叉点
结束点
消除毛刺(SPUR)
消除毛刺:消除小的分支(毛刺) 原理:找到图像中小的分支(如下图八种结构)将其去除。 为了防止消除与边界相邻的点,我们对其补集进行操作。
空白处可以为0/1, 中心点由0变为1
骨架提取
原图
骨架化
去毛刺
分叉点
结束点
分支点(BRANCHPOINTS)
分支点 :找到骨架的分支点
形态学闭运算(即先膨胀后腐蚀) 采用对角线填充, 去除背景的八连通性 使用结构元素ones(3)对图像进行膨胀运算 找到骨架中的结束点 使用结构元素ones(3)对图像进行腐蚀运算 填充孤立的黑点
BWMORPH
operation hbreak majority open remove skel spur thicken thin tophat 用途 断开图像中的H型连接 如果一个像素的8邻域中有等于或超过5个像素点的 像素值为1, 则将该点像素值置1 进行形态学开运算(即先腐蚀后膨胀) 删除内部像素,提取边界 骨架提取 去除小的分支, 或引用电学术语“毛刺” 粗化 细化 顶帽,返回原图像减去开运算的图像
移除(REMOVE)
Remove:删除内部像素,提取边界像素
如何实现?
原理:如果其四邻域上的点都是1, 则该点被置为0
击中击不中
如果结构元B与图像中的前景和背景部分完全匹配, 则结构元原点对应的点被置为1,否则被置为0。
细化(THIN)
I = bwmorph (img, ’thin’, Inf)
含杂质的米粒二值图
消除孤立亮点去杂质
消除(CLEAN)
原理:比如3*3的矩阵, 除了中间元素为1外, 其余元素全部为0, 则这个1将被填充为0;(在八邻域上)
填充(FILL)
fill :填充孤立的黑点。
含杂质的米粒二值图
消除孤立亮点去杂质
填充(FILL)
原理 :比如3*3的矩阵, 除了中间元素为0外, 其余元素全部为 1, 则这个0将被填充为1;(在四邻域上)
对角线填充(DIAG)
用途:增强连通性,如区域填充
原图
对角线填充, 隔离背景
1 2 3 对填充后的 图像取反, 并划分连通 区域 颜色填充
4
大多数(MAJORITY)
majority:如果一个像素的8邻域中有等于或超过5个像素点的像素 值为1(0), 则将该点像素值置1 (0)。
用途:去除孤点,填充孔洞。
断开H形连接(HBREAK)
Hbreak :断开图像中的H型连接;
若3*3邻域呈H(正H或侧H), 将中心点由0赋值为1
桥接(BRIDGE)
Bridge:连接像素
若3*3邻域内有两个及以上连通 区域,将中心点赋值为1
对角线填充(DIAG)
Diag:采用对角线填充, 消除背景的八连通性。
原图
对角线填充,隔离背景
腐蚀(ERODE)
原图
腐蚀后
腐蚀(ERODE)
具体操作:将图像A与结构元B(通常为正方形或圆形)进行卷积,
用内核 B 覆盖区域的最小像素值代替中心点的像素。
用途:去除毛刺、粘连
相关函数: imerode
腐蚀(ERODE)
腐蚀应用——利用腐蚀去除图像中某些部分
(a)
(b)
(c)
(d)
(a)连线模板二值图 (b)~(d)分别使用11*11,15*15,45*45的结构元腐蚀的结果
细化:减少图像周围像素,使没有孔的对象收缩到最小连接的描边, 使有孔的对 象缩小到孔和外部边界之间的连接环。
通常细化过程需要不断重复直至图像不再发生变化
细化(THIN)
通常使用八个方向结构对进行细化,如果结构元B与图像中的前景和背景部分 完全匹配,则结构元原点对应的点被置为0,否则保持不变
粗化(THICKEN)
腐蚀(ERODE)
腐蚀应用:
边长为1、3、5、7、 用13*13像素的结构 9和15像素的正方形 元腐蚀原图 的二值图
用13*13像素的结构 元膨胀图像,恢复到 原图中15*15尺寸的 正方形
形态学梯度
CT图
腐蚀图
膨胀图
膨胀与腐蚀的差 描绘出图像边界
开运算(OPEN)
如图,如何去除图片中的线,并保留圆形呢?
相关函数: imtophat
米粒不 完整
背景不均匀的米粒
阈值处理
暗处的米粒 被完全检测
开运算
顶帽运算——均匀背景
阈值处理
底帽:闭运算与原图的差 底帽(BOTHAT)
用途:均匀光照,增强
对比度
相关函数: imtophat 背景不均匀的硬币 阈值处理
开运算
底帽运算——均匀背景
阈值处理
顶帽与底帽的比较
膨胀(DILATE)
原图
膨胀后
膨胀(DILATE)
具体操作:将图像A与结构元B(通常为正方形或圆形)进行卷积, 用内核 B 覆盖区域的最大像素值代替中心点的像素。
用途:孔洞填充、桥接裂缝
相关函数: imdilate
膨胀(DILATE)
膨胀应用——桥接裂缝
具有断裂字符的低分辨率样本文件
修复文本——断裂线段被连接
对角线填充(DIAG)
原理:取反,计算3*3邻域内四连通数量,若四连通区域个数大 于1,则将0赋值为1
在matlab中是如何实现的呢?
对角线填充(DIAG)
Eg: 3*3邻域: 二进制映射:
根据查找表,11号的值为1,所以 将中心点赋值为1
查找表:
序号 值
1 0
2 0
3 0
…… 511 512 …… 1 1
operation是一个字符串, 用于指定进行的形态学处理类型。
BWMORPH
operation bothat branchpoints 用途 底帽,返回闭运算减去源图像的图像 找到骨架中的分支点
bridge clean
close diag dilate endpoints erode fill
进行像素连接操作 去除图像中孤立的亮点
原图
骨架化
去毛刺
分叉点
结束点
骨架化(SKEL)
骨架化:在对象不断开的前提下删除对象边界上的像素,构成图像骨架。
(a)集合A (b)中心在A的骨架上的最大圆盘的 (a) (b) 不同位置 (c)位于A的骨架的不同线段上的另 一个最大圆盘 (d)完整的骨架 (c) (d)
骨架化(SKEL)
骨架提取
开运算(OPEN)
混有线条的图片
用半径为10的结构元 对原图进行腐蚀操作
用半径为10的结构元对 腐蚀后的图片进行膨胀
开运算:先腐蚀后膨胀。
用途:平滑轮廓,断开较窄的狭颈并消除细的突出物 相关函数: imopen
开运算(OPEN)
开运算应用
电路图
二值化
通过开运算找到电路元件
闭运算(CLOSE)
闭运算:先膨胀后腐蚀。
应用:统计米粒个数,对米粒进行处理后细化,再找到其分支点以统计 粘连米粒 要查找图像结束点必须先对图像进行骨架化操作
骨架提取
原图
骨架化
去毛刺
分叉点
结束点
结束点(ENDPOINTS)
结束点:找到骨架中的结束点
原理:对图像取反之后计算四连通区域,若四连通区域只有1个,则赋值为0
要查找图像结束点必须先对图像进行骨架化操作
粗化:与细化相反,通过向对象外部添加像素来使对象变粗,这样做会 导致以前未连接的对象被8连接
粗化(THICKEN)
粗化非常依赖于A的性质,可能产生孤立点,需要消除断点。
粗化(THICKEN)
在matlab中: (1)识别是否存在孤立像素 (2)若有孤立像素,将像素膨胀,并取原图角点轮廓和膨胀后的交集,防止膨胀 过后的点与原图元素边缘发生粘连 (3)对图像增加2px的边界 (4)对图像补集进行细化、对角线填充,去除粘连,再求补集
顶帽:原图与开运算的差 底帽:闭运算与原图的差
应用:用一个结构元通过开运算或闭运算从一副图像中删除物体,而不是拟
合物体,然后差操作得到一副仅保留已删除分量的图像。 顶帽变换用于暗背景上的亮物体,而底帽变换则亮背景上的暗物体 所以有:白顶帽变换和黑底帽变换之说
消除(CLEAN)
clean:去除孤立的亮点。
END
灰度图
二值化
结果图
用途:平滑轮廓,弥合较窄的间断和细长的沟壑,消除小的孔洞, 填补轮廓线中的断裂
相关函数: imclose
开闭运算应用
如何完全修复指纹 纹路?
开运算消除了噪 声,但是使指纹 纹路产生断裂
闭运算修复 指纹的部分 断裂处Βιβλιοθήκη Baidu
顶帽:原图与开运算的差 顶帽(TOPHAT)
用途:均匀光照,
增强对比度