大家好,欢迎来到IT知识分享网。膨胀 = 加长、变粗
映射并平移后的结构元素至少与原二值图的某些部分重叠。
函数imdialate
构造结构元素strel(shape, parameters)
%% 膨胀的应用
A = imread('broken_text.tif');
B = [0 1 0; 1 1 1; 0 1 0]; % 结构元素
A2 = imdilate(A, B); % imdilate函数
figure;
subplot(1,2,1),imshow(A);
subplot(1,2,2), imshow(A2);
腐蚀 = 收缩、细化
平移的结构元素与原二值图的背景并不叠加。
函数imerode
%% 腐蚀的应用
A = imread('wirebond_mask.tif');
se = strel('disk', 10);
A2 = imerode(A, se);
figure;
subplot(1,2,1), imshow(A);
subplot(1,2,2), imshow(A2);
开运算:
A被B开 = B在A内完全匹配的平移的并集。 A被B腐蚀后再用B来膨胀腐蚀结果。
平滑轮廓,断开狭窄的连接,去掉细小突出部分。
函数imopen(A, B);
闭运算:
A被B闭 = 所有不与A重叠的B的平移的并集。 A被B膨胀后再用B来腐蚀膨胀结果。
将狭窄缺口连接起来形成细长弯口,填充比结构元素小的洞。
函数imclose(A, B);
%% imopen imclose的应用
A = imread('shapes.tif');
se = strel('square', 20);
A2 = imopen(A, se);
figure;
% subplot(1,2,1), imshow(A);
% subplot(1,2,2), imshow(A2);
A3 = imclose(A, se);
imshow(A3);
开闭结合去除噪声
%% 开闭结合
f = imread('noisy_fingerprint.tif');
se = strel('square', 3);
fo = imopen(f, se); % 先做开操作
foc = imclose(fo, se); % 后做闭操作
figure;
subplot(1,3,1), imshow(f);
subplot(1,3,2), imshow(fo);
subplot(1,3,3), imshow(foc);
左原图, 中开运算后的图像(消除了杂散点,但引入了缺口), 右先开后闭结果
函数bwmorph
g = bwmorph(f, operation, n)
f:输入二值图像
operation:指定期望操作的字符串 常用操作:close dialate erode fill open
n:指定将被重复的操作次数(可选)
由重构做开运算
fe = imerode(f, se);
fr = imreconstruct(fe, f);
%% 由重构做开运算
% imreconstruct(marker, mask)
% marker标记,变换的开始; mask约束变换过程,marker是mask的子集。
f = imread('book_text.tif');
fe = imerode(f, ones(51, 1));
fo = imopen(f, ones(51, 1));
fr = imreconstruct(fe, f);
figure;
subplot(2,2,1), imshow(f), title('原图');
subplot(2,2,2), imshow(fe), title('腐蚀后图像');
subplot(2,2,3), imshow(fo), title('开运算后图像');
subplot(2,2,4), imshow(fr), title('重构后图像');
填充孔洞
填充二值图像或者灰度图像的孔洞,对于二值图像,用背景像素填充;对于灰度图像,用较亮像素包围的暗像素填充。
g = imfill(f, ‘holes’
);
);
% 填充孔洞
%f = imread('gt.tif');
fh = imfill(f, 'holes');
figure;
subplot(1,2,1), imshow(f), title('原图');
subplot(1,2,2), imshow(fh), title('填充后图像');
清除边界对象
清除图像中比周围对象更亮且与图像边界相连接的结构。
g = imclearborder(f, conn); conn默认八连接
% 清除边界对象
fc = imclearborder(f); % 默认四连接
figure;
subplot(1,2,1), imshow(f), title('原图');
subplot(1,2,2), imshow(fc), title('清除边界后图像');
来自为知笔记(Wiz)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32061.html