- 一、腐蚀
我们假设结构元素为S,则腐蚀算法如下:
其中,F为二值图像原图,X为结构元素原点所在的二值图像中的连通域。
假设F中目标像素为255(白色),非目标为0(黑色),当结构元素S原点移动到点(x,y)时,如果S中所有点均包含在X中(X中对应在S中所有点的位置均为255),则在腐蚀后的二值图像中,对应于S原点的位置为255(白色),否则为0(黑色)。
用通俗的话来说就是:用结构元素作为模板在原始二值图像种平滑一遍,扫描图像的每一个像素,用结构元素中的每一个元素与其覆盖的二值图像做“与”操作(假设结构元素都为1),如果结果都为1,则二值图像中对应结构元素原点位置的像素值为1,否则为0。
腐蚀能够消融物体的边界,而具体的腐蚀结果与图像本身结构元素形状有关。
I=imread('/1.jpg');
se = strel('square',16)
Ib = imerode(I,se);%腐蚀
se = strel('square',32)
Ic = imerode(I,se);%腐蚀
figure,
subplot(1,3,1);imshow(I);
subplot(1,3,2);imshow(Ib);
subplot(1,3,3);imshow(Ic);
常用的方法包括:灰度变换增强、直方图增强、灰度变换增强、灰度变换增强是在空间域内对图像进行增强的一种简单而有效的方法。灰度变换增强不改变原图像中像素的位置,只改变像素点的灰度值,并逐点进行,和周围的其他像素点无关。为了进行灰度变换,首先需要获取图像的直方图。在MATLAB中,可以通过编写程序获取灰度图像的直方图,也可以通过函数imhist( )获取灰度图像的直方图。空域内处理是直接对图像进行处理,频域内处理是在图像的某个变换域内,对图像的变换系数进行运算,然后通过逆变换获得图像增强效果。空域内的图像增强就是调整灰度图像的明暗对比度,是对图像中各个像素的灰度值直接进行处理。
- 二、膨胀
-
膨胀和腐蚀相反,能使物体边界扩大,
-
I=imread('D:/3-matlab-example/2/2.png');
Ie1 = imerode(I,[1,1,1;1,1,1;1,1,1]);%3x3正方形结构元素的腐蚀
Ie2 = imerode(Ie1,[0,1,0;1,1,1;0,1,0]);%3x3十字形结构元素的腐蚀
Id1 = imdilate(Ie2,[1,1,1;1,1,1;1,1,1]);%3x3正方形结构元素的膨胀
Id2 = imdilate(Id1,[1,1,1;1,1,1;1,1,1]);%3x3正方形结构元素的膨胀
Id3 = imdilate(Id2,[0,1,0;1,1,1;0,1,0]);%3x3十字形结构元素的膨胀
figure,
subplot(2,3,1);imshow(I);
subplot(2,3,2);imshow(Ie1);
subplot(2,3,3);imshow(Ie2);
subplot(2,3,4);imshow(Id1);
subplot(2,3,5);imshow(Id2);
subplot(2,3,6);imshow(Id3);
- 三、图像增强
I = imread('lena_color_512.tif');
I_G = rgb2gray(I);% 将真彩色图像RGB转换为灰度强度图像I
row = size(I_G, 1);% 表示取矩阵I_G的列数
column = size(I_G, 2);
N = zeros(1,256);% 这个产生一个1*256的全0矩阵
for i = 1: row
for j = 1: column
k = I_G(i, j);
N(k+1) = N(k+1) + 1;
end
end
figure
subplot(121), imshow(I_G);
subplot(122), bar(N);
axis tight;
当然也可以直接对灰度图使用imhist函数不进行别的操作,只绘制直方图
I = imread('lena_color_512.tif');