再谈extendedmax()函数
可以使用MATLAB图形处理工具箱中的函数来确定图像的高亮度区域和低亮度区域。
imregionalmax函数和imregionalmin函数确定所有的极大值和极小值
imextendedmax函数和imextendedmin函数确定大于某阈值的极大值和小于某阈值的极小值
这些函数报灰度图像作为输入参数,而把二值图像作为输出参数。在输出的二值图像中,局部极大值和局部极小值设为1,其他值设为0.
imextendedmax函数和imextendedmin函数,以imextendedmax为例,是首先将输入的阈值减去再用imregionalmax来做操作的。
所以都是为了确定极大值和极小值。
使用extendedmax()函数,输入一个矩阵如图:
A=[ 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11;
]
赋值处理后:
A =
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 15 15 15 15 15 15 15 15 15 15 15 15 11 11 11
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
采用:B=imextendedmax(A,2);
B =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
采用:C=imextendedmin(A,2);
C =
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
图片减去背景的一种方法探究:
著名的大米图像减去背景:
原图像
  
I =imread('rice.png');%读取图像
imshow(I);
background = imopen(I,strel('disk',20));%使用形态学图像开运算,将会删除那些不完全包括在半径为15的元盘中的图像
figure,imshow(background);
I2=imsubtract(I,background);
我做的图像



注意分析我所要的图像和上述算法的不同之处:
I =imread('ceshi1.jpg');
imshow(I);
background = imclose(I,strel('disk',20));%此处我将上面程序中的开操作改成了关操作
figure,imshow(background);
I2=imsubtract(background,I);%此处我用背景减去了原图像
figure,imshow(256-I2);%此为图像的取反操作,因为此RGB图像的最大值为256
|