赞
踩
用结构元素的中心点,从左到右从上到下,依次扫描灰度图的像素点,图片上该像素点的值取为结构元素所覆盖区域中像素点的 最小值,扫描一遍后会得到一张新图,就是原图的腐蚀图。
用该结构元素:
对下面矩阵进行腐蚀:
对第一个像素点的腐蚀操作如下:
当移动到中间某像素点时腐蚀操作如下:
用结构元素的中心点,依次扫描灰度图的每个像素点,图片上该像素点的值取为结构元素覆盖的所有像素点中的 最大值,扫描一遍后会得到一张新图,就是原图的膨胀图。
用该结构元素:
对下面矩阵进行膨胀:
对第一个像素点的膨胀操作如下:
扫描到中间某像素点时的膨胀操作为:
下图示例结果表明,对灰度图进行腐蚀操作后,图片整体变暗,由于结构体的选择原因,图片分块颜色相似,有颗粒状的颜色分布;对图片进行膨胀操作后,图片整体变亮,也有块状分布的趋势。
本例代码:
clear,clc,close all;
f=imread('lemon.jpg');
g=rgb2gray(f);
figure,imshow(g);
se=strel('disk',10);
g_en=imerode(g,se);
figure;
subplot(1,2,1),imshow(g_en),title('腐蚀');
g_di=imdilate(g,se);
subplot(1,2,2),imshow(g_di),title('膨胀');
观察开运算和闭运算的图像可以看出,经过开运算后,图片先腐蚀后膨胀,图片的整体色调变暗,但是图片中阴影和明亮处的界限并未改变,每一部分的亮部和暗部都更加平滑了。
经过闭运算后,图片先膨胀后腐蚀,图片的整体色调变亮,界限没有改变,明亮也更加平滑了。
本演示代码为:
clear,clc,close all;
f=imread('lemon.jpg');
g=rgb2gray(f);
figure,imshow(g);
se=strel('disk',10);
g_open=imopen(g,se);
g_close=imclose(g,se);
ge=cat(2,g,g_open,g_close);%cat函数解释在下面
figure,imshow(ge);
ge = cat(2, g, g_open, g_close);
cat
的参数为,cat( num , im1 , im2 , im3 [ ,... ] )
cat
函数是将后面的几张图片拼接为一张,其中 num 为拼接的方式,1代表从上到下拼接,2代表从左向右拼接,3代表从前向后拼接(即将几张图片重叠起来,变为一张图片,后面会有应用)。
顶帽操作的效果等同于原图-开运算,即原图减去开运算的图像。顶帽用来对灰度图进行操作。函数为:
tophat = imtophat(g, se);
顶帽操作通常用来去除背景。等价于 g - g_open
底帽操作的效果等同于原图-闭运算,即原图减去闭运算的图像。底帽用来对灰度图进行操作。函数为:
bothat = imbothat(g, se);
注:顶帽和底帽操作都是对于灰度图的操作。
对下图进行顶帽和底帽操作,查看效果。
步骤:
首先将图片转为灰度图,因为底帽和顶帽操作都是针对灰度图。
直接用函数进行顶帽和底帽操作
可以看出,顶帽操作只保留了一些高亮的区域,偏暗的部分都被去除了,而后面较亮的背景也被去除。
根据上面开运算的图可以知道,开运算保留了偏亮部分,用原图减去开运算,只保留高亮的部分。
闭运算得到的是比较亮的部分,用原图减去闭运算,得到比较暗部的细节。
本例代码为:
clear,clc,close all;
f=imread('lemon.jpg');
imshow(f);
g=rgb2gray(f);
figure,imshow(g);
tophat=imtophat(g,strel('disk',10));
subplot(1,2,1),imshow(tophat),title('顶帽');
bothat=imbothat(g,strel('disk',10));
subplot(1,2,2),imshow(bothat),title('底帽');
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。