形态学
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形态学汇报
2019年11月28日
二值形态学操作集合
DIRECTORY
0 1 腐蚀(Erode) 0 2 膨胀(Dilate) 0 3 开运算(Opening Operation) 0 4 闭运算(Closing Operation) 0 5 击中击不中变换(Hit or Miss) 0 6 标注连通分量 0 7 细化 0 8 骨骼化 0 9 重构(Reconstruct)
‘MarkerFaceColor’,‘k’,‘MarkerSize’,10); plot(cbar,rbar,'Marker','*','MarkerFaceColor','w');%其中的marker为标记 end title('标记所有对象质心后的图像');
09形态学重建(Reconstruct)
A
B
膨胀的简单应用——桥接裂缝
A1=imread('.\images\dipum_images_ch09\Fig0906(a)(broken-text).tif');
B=[0 1 0 111 0 1 0];
010 111 010
A2=imdilate(A1,B);%图像A1被结构元素B膨胀 A3=imdilate(A2,B);
05击中击不中变换(Hit Miss Transform , HMT)
击中-击不中运算常用于二值图像,它用于基于结构元素的配置,从图像中寻找具有某种像素排列特征的目标,如单个像素、颗粒中交叉或 纵向的特征、直角边缘或其他用户自定义的特征等。击中击不中变换是形状检测的一个基本工具。 定义:
原理和解释: 击中-击不中结构是用来检测形状的,不是提取边界的。 用击中结构去腐蚀原始图像得到击中结果X(这个过程可以理解为在原始图像中寻找和击中结构完全匹配的模块,匹配上了之后,保留 匹配部分的中心元素,作为腐蚀结果的一个元素) 然后用击不中结构去腐蚀原始图像的补集得到击不中结果Y(即在原始图像上找到击不中结构与原始图像没有交集的位置,这个位置的 元素保留,作为腐蚀结果的一个元素) 取X和Y的交集就是击中-击不中的结果。 通俗理解就是:用一个小的结构元素(击中结构)去射击原始图像,击中的元素保留;再用一个很大的结构元素(击不中,一般取一个 环状结构)去射击原始图像,击不中原始图像的位置保留。满足击中元素能击中and击不中元素不能击中的位置的元素就是最终的形状结 果。 应用: 图像识别以及图像细化
图像的细化主要是针对二值图而言 ★结构元B对集合A的细化可表示为AB,它可以用击中击不中变换来定义:
细化过程举例 A
×表示不考虑的点
细化举例
%% bwmorph组合常见形态学之细化 f=imread('E:\MATLABcode\morphology\image\Fig0911.tif'); %f=imread('E:\MATLABcode\morphology\image\f10.bmp'); %f = im2bw(f);%二值化 subplot(221),imshow(f); title('指纹图像细化原图');
08连通分量的提取
A
08连通分量的提取
Matlab图像工具箱函数bwlabel函数,就是对二值图像连通区域进行标记的函数。该函数返回一个与原图大小一致的标记图像矩阵。
%% 使用函数bwlabel标注连通分量
f=imread('E:\MATLABcode\morphology\image\FigP0919.tif’); imshow(f),title('标注连通分量原始图像');
半径20 39×39
腐蚀应用:边界提取
对原图像X进行腐蚀操作得到X1,X-X1可以得到图像边界。边界提取也是腐蚀的一种,不会产生边缘的断裂。
X=imread(‘zimu2.bmp’); imshow(X),figure; X1=imerode(X,ones(3,3)); imshow(X1),figure; Z=X-X1; imshow(Z);
subplot(224),imshow(A4); title('使用B后3次膨胀后的图像');
03开运算
开运算数学上是先腐蚀后膨胀的结果。
它的作用是平滑物体的轮廓,断开狭窄的 连接,并去掉细小的突出部分 。
04闭运算
闭运算在数学上是先膨胀再腐蚀的结果。 闭运算一般会将狭窄的缺口连接起来形成 细长的弯口,并填充比结构元素小的沟 。
%顶帽变换和底帽变换联合起来用,用于增加对比度 f3=imsubtract(imadd(f,imtophat(f,se)),imbothat(f,se)); subplot(224),imshow(f3); title('使用顶帽底帽联合变换后图像’);
08灰度级重构:展平复杂背景
THE END
01腐蚀(Erode)
111 110 111
111 110 101
01 0 01 0 01 0
02膨胀(Dilate) PA R T / 0 1
灰度级腐蚀和膨胀的说明 PA R T / 0 1
03形态学梯度
开运算和闭运算
PA R T / 0 1
灰度级开运算和闭运算做形态学平滑 由于开运算可以除去比结构元素更小的明亮细节,闭运算可以除去比结构元素更小的暗色细节 所以它们经常组合起来一起进行平滑图像并去除噪声。
[L,n]=bwlabel(f);%L为标记矩阵,n为找到连接分量的总数 [r,c]=find(L==3);%返回第3个对象所有像素的行索引和列索引
rbar=mean(r); cbar=mean(c);
figure,imshow(f) hold on%保持当前图像使其不被刷新 for k=1:n
[r,c]=find(L==k); rbar=mean(r); cbar=mean(c); plot(cbar,rbar,'Marker','o','MarkerEdgeColor','k',...
se=strel('disk',10); f1=imtophat(f,se);%使用顶帽变换 subplot(222),imshow(f1); title('使用顶帽变换后的图像');
%底帽变换是原始图像减去其闭运算后的图像 f2=imbothat(imcomplement(f),se); f2=imbothat(f,se);%使用底帽变换 subplot(223),imshow(f2); title('使用底帽变换后的图像');
PA R T / 0 1
06顶帽运算 顶帽变换是指原始图像减去其开运 算的图像。
07黑帽运算 底帽变换是其闭运算后的图像减去 原始图像。
顶帽操作和底帽操作是灰度图像所特有的 顶帽变换用于暗背景上的亮物体。顶帽变换 的一个重要用途是校正不均匀光照的影响。
底帽运算用于亮背景上的暗物体。
%% 使用顶帽变换和底帽变换 f=imread('E:\MATLABcode\morphology\image\Fig0940.tif'); subplot(221),imshow(f); title('顶帽底帽变换原始图像');
07骨骼化
骨骼化举例
%% bwmorph组合常见形态学之骨骼化
f=imread('E:\MATLABcode\morphology\image\FigP0919.tif'); subplot(131),imshow(f); title('指纹图像骨骼化原图');
fs=bwmorph(f,'skel',Inf); subplot(132),imshow(fs); title('指纹图像骨骼化');
g1=bwmorph(f,‘thin’,1);%一次细化处理 subplot(222),imshow(g1); title('指纹图像细化原图');
g2=bwmorph(f,‘thin’,2);%两次细化处理 subplot(223),imshow(g2); title('指纹图像细化原图');
g3=bwmorph(f,‘thin’,Inf);%无穷次细化处理 subplot(224),imshow(g3); title('指纹图像细化原图');
击中击不中变换(Hit Miss Transform , HMT)
E
C
D
图2.设D被一个 小窗口W包围
图3.关于W的D的 局部背景定义为
集合差(W-D)
图5.D对A的腐蚀
图5与图6取交集即击中击不中结果
05击中击不中变换举例
Βιβλιοθήκη Baidu
结构元
包含边长为1,3,5,7,9和15 像素正方形的二值图像
06细化
111 111 111
结构元
原始图像X
被腐蚀后图像X1
X - X1
02膨胀(Dilate)
膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的空洞。 二值图像:
用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操 作,如果都为0,则该像素为0,否则为1。
结构元
A4=imdilate(A3,B);
subplot(221),imshow(A1); title('imdilate膨胀原始图像');
subplot(222),imshow(A2); title('使用B后1次膨胀后的图像');
subplot(223),imshow(A3); title('使用B后2次膨胀后的图像');
01腐蚀(Erode)
腐蚀的作用是消除物体边界点,使目标缩小,清除两个物体间的细小连通,可以消除小于结构元素的噪声点。 二值图像:
苹果代表有值1,梨代表没有值0
01腐蚀(Erode)
腐蚀的作用是消除物体边界点,使目标缩小,清除两个物体间的细小 连通,可以消除小于结构元素的噪声点。
半径5 9×9
半径10 19×19
谢谢观看
应用实例二:填充孔洞
应用实例二:填充孔洞
应用实例三:边界清除
灰度形态学操作集合
DIRECTORY
0 1 腐蚀(Erode) 0 2 膨胀(Dilate) 0 3 形态学梯度 0 4 开运算(Opening Operation) 0 5 闭运算(Closing Operation) 0 6 顶帽变换(Top Hat) 0 7 底帽变换(Buttom Hat) 0 8 灰度级重建(Reconstruct)
2.测地腐蚀 有限数量图像的测地膨胀和腐蚀经过有限数量的迭代步骤总会收敛,因为标记图像的扩散或收缩受模板约束
3.用膨胀和腐蚀的形态学重建
应用实例一:重建开操作
形态学开操作首先删除小物体,再通过膨胀试图恢复遗留物体的形状。然而,这种恢复的准确性高度依赖于物体的形状和所用结构元的相似性。
重建开操作即先进行(至少一次)腐蚀,然后利用该腐蚀结果F作为标记,原图像G作为模板,进行重建,整个过程叫做重建开操作。 重建开操作的作用是:可正确地恢复腐蚀后所保留物体的形状。
2019年11月28日
二值形态学操作集合
DIRECTORY
0 1 腐蚀(Erode) 0 2 膨胀(Dilate) 0 3 开运算(Opening Operation) 0 4 闭运算(Closing Operation) 0 5 击中击不中变换(Hit or Miss) 0 6 标注连通分量 0 7 细化 0 8 骨骼化 0 9 重构(Reconstruct)
‘MarkerFaceColor’,‘k’,‘MarkerSize’,10); plot(cbar,rbar,'Marker','*','MarkerFaceColor','w');%其中的marker为标记 end title('标记所有对象质心后的图像');
09形态学重建(Reconstruct)
A
B
膨胀的简单应用——桥接裂缝
A1=imread('.\images\dipum_images_ch09\Fig0906(a)(broken-text).tif');
B=[0 1 0 111 0 1 0];
010 111 010
A2=imdilate(A1,B);%图像A1被结构元素B膨胀 A3=imdilate(A2,B);
05击中击不中变换(Hit Miss Transform , HMT)
击中-击不中运算常用于二值图像,它用于基于结构元素的配置,从图像中寻找具有某种像素排列特征的目标,如单个像素、颗粒中交叉或 纵向的特征、直角边缘或其他用户自定义的特征等。击中击不中变换是形状检测的一个基本工具。 定义:
原理和解释: 击中-击不中结构是用来检测形状的,不是提取边界的。 用击中结构去腐蚀原始图像得到击中结果X(这个过程可以理解为在原始图像中寻找和击中结构完全匹配的模块,匹配上了之后,保留 匹配部分的中心元素,作为腐蚀结果的一个元素) 然后用击不中结构去腐蚀原始图像的补集得到击不中结果Y(即在原始图像上找到击不中结构与原始图像没有交集的位置,这个位置的 元素保留,作为腐蚀结果的一个元素) 取X和Y的交集就是击中-击不中的结果。 通俗理解就是:用一个小的结构元素(击中结构)去射击原始图像,击中的元素保留;再用一个很大的结构元素(击不中,一般取一个 环状结构)去射击原始图像,击不中原始图像的位置保留。满足击中元素能击中and击不中元素不能击中的位置的元素就是最终的形状结 果。 应用: 图像识别以及图像细化
图像的细化主要是针对二值图而言 ★结构元B对集合A的细化可表示为AB,它可以用击中击不中变换来定义:
细化过程举例 A
×表示不考虑的点
细化举例
%% bwmorph组合常见形态学之细化 f=imread('E:\MATLABcode\morphology\image\Fig0911.tif'); %f=imread('E:\MATLABcode\morphology\image\f10.bmp'); %f = im2bw(f);%二值化 subplot(221),imshow(f); title('指纹图像细化原图');
08连通分量的提取
A
08连通分量的提取
Matlab图像工具箱函数bwlabel函数,就是对二值图像连通区域进行标记的函数。该函数返回一个与原图大小一致的标记图像矩阵。
%% 使用函数bwlabel标注连通分量
f=imread('E:\MATLABcode\morphology\image\FigP0919.tif’); imshow(f),title('标注连通分量原始图像');
半径20 39×39
腐蚀应用:边界提取
对原图像X进行腐蚀操作得到X1,X-X1可以得到图像边界。边界提取也是腐蚀的一种,不会产生边缘的断裂。
X=imread(‘zimu2.bmp’); imshow(X),figure; X1=imerode(X,ones(3,3)); imshow(X1),figure; Z=X-X1; imshow(Z);
subplot(224),imshow(A4); title('使用B后3次膨胀后的图像');
03开运算
开运算数学上是先腐蚀后膨胀的结果。
它的作用是平滑物体的轮廓,断开狭窄的 连接,并去掉细小的突出部分 。
04闭运算
闭运算在数学上是先膨胀再腐蚀的结果。 闭运算一般会将狭窄的缺口连接起来形成 细长的弯口,并填充比结构元素小的沟 。
%顶帽变换和底帽变换联合起来用,用于增加对比度 f3=imsubtract(imadd(f,imtophat(f,se)),imbothat(f,se)); subplot(224),imshow(f3); title('使用顶帽底帽联合变换后图像’);
08灰度级重构:展平复杂背景
THE END
01腐蚀(Erode)
111 110 111
111 110 101
01 0 01 0 01 0
02膨胀(Dilate) PA R T / 0 1
灰度级腐蚀和膨胀的说明 PA R T / 0 1
03形态学梯度
开运算和闭运算
PA R T / 0 1
灰度级开运算和闭运算做形态学平滑 由于开运算可以除去比结构元素更小的明亮细节,闭运算可以除去比结构元素更小的暗色细节 所以它们经常组合起来一起进行平滑图像并去除噪声。
[L,n]=bwlabel(f);%L为标记矩阵,n为找到连接分量的总数 [r,c]=find(L==3);%返回第3个对象所有像素的行索引和列索引
rbar=mean(r); cbar=mean(c);
figure,imshow(f) hold on%保持当前图像使其不被刷新 for k=1:n
[r,c]=find(L==k); rbar=mean(r); cbar=mean(c); plot(cbar,rbar,'Marker','o','MarkerEdgeColor','k',...
se=strel('disk',10); f1=imtophat(f,se);%使用顶帽变换 subplot(222),imshow(f1); title('使用顶帽变换后的图像');
%底帽变换是原始图像减去其闭运算后的图像 f2=imbothat(imcomplement(f),se); f2=imbothat(f,se);%使用底帽变换 subplot(223),imshow(f2); title('使用底帽变换后的图像');
PA R T / 0 1
06顶帽运算 顶帽变换是指原始图像减去其开运 算的图像。
07黑帽运算 底帽变换是其闭运算后的图像减去 原始图像。
顶帽操作和底帽操作是灰度图像所特有的 顶帽变换用于暗背景上的亮物体。顶帽变换 的一个重要用途是校正不均匀光照的影响。
底帽运算用于亮背景上的暗物体。
%% 使用顶帽变换和底帽变换 f=imread('E:\MATLABcode\morphology\image\Fig0940.tif'); subplot(221),imshow(f); title('顶帽底帽变换原始图像');
07骨骼化
骨骼化举例
%% bwmorph组合常见形态学之骨骼化
f=imread('E:\MATLABcode\morphology\image\FigP0919.tif'); subplot(131),imshow(f); title('指纹图像骨骼化原图');
fs=bwmorph(f,'skel',Inf); subplot(132),imshow(fs); title('指纹图像骨骼化');
g1=bwmorph(f,‘thin’,1);%一次细化处理 subplot(222),imshow(g1); title('指纹图像细化原图');
g2=bwmorph(f,‘thin’,2);%两次细化处理 subplot(223),imshow(g2); title('指纹图像细化原图');
g3=bwmorph(f,‘thin’,Inf);%无穷次细化处理 subplot(224),imshow(g3); title('指纹图像细化原图');
击中击不中变换(Hit Miss Transform , HMT)
E
C
D
图2.设D被一个 小窗口W包围
图3.关于W的D的 局部背景定义为
集合差(W-D)
图5.D对A的腐蚀
图5与图6取交集即击中击不中结果
05击中击不中变换举例
Βιβλιοθήκη Baidu
结构元
包含边长为1,3,5,7,9和15 像素正方形的二值图像
06细化
111 111 111
结构元
原始图像X
被腐蚀后图像X1
X - X1
02膨胀(Dilate)
膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的空洞。 二值图像:
用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操 作,如果都为0,则该像素为0,否则为1。
结构元
A4=imdilate(A3,B);
subplot(221),imshow(A1); title('imdilate膨胀原始图像');
subplot(222),imshow(A2); title('使用B后1次膨胀后的图像');
subplot(223),imshow(A3); title('使用B后2次膨胀后的图像');
01腐蚀(Erode)
腐蚀的作用是消除物体边界点,使目标缩小,清除两个物体间的细小连通,可以消除小于结构元素的噪声点。 二值图像:
苹果代表有值1,梨代表没有值0
01腐蚀(Erode)
腐蚀的作用是消除物体边界点,使目标缩小,清除两个物体间的细小 连通,可以消除小于结构元素的噪声点。
半径5 9×9
半径10 19×19
谢谢观看
应用实例二:填充孔洞
应用实例二:填充孔洞
应用实例三:边界清除
灰度形态学操作集合
DIRECTORY
0 1 腐蚀(Erode) 0 2 膨胀(Dilate) 0 3 形态学梯度 0 4 开运算(Opening Operation) 0 5 闭运算(Closing Operation) 0 6 顶帽变换(Top Hat) 0 7 底帽变换(Buttom Hat) 0 8 灰度级重建(Reconstruct)
2.测地腐蚀 有限数量图像的测地膨胀和腐蚀经过有限数量的迭代步骤总会收敛,因为标记图像的扩散或收缩受模板约束
3.用膨胀和腐蚀的形态学重建
应用实例一:重建开操作
形态学开操作首先删除小物体,再通过膨胀试图恢复遗留物体的形状。然而,这种恢复的准确性高度依赖于物体的形状和所用结构元的相似性。
重建开操作即先进行(至少一次)腐蚀,然后利用该腐蚀结果F作为标记,原图像G作为模板,进行重建,整个过程叫做重建开操作。 重建开操作的作用是:可正确地恢复腐蚀后所保留物体的形状。