1、所谓的膨胀就是给图像的边界添加额外的像素,首先启动你的matlab。如下图所示
2、首先是对对象原点坐标的获取。然后创建3维元素>> origin = floor((size(nhood)敫苻匈酃+1)/2) >> se = strel ('diamond',3) Flat STREL object containing 25 neighbors. Decomposition: 3 STREL objects containing a total of 13 neighborsNeighborhood: 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0
3、接着需要用getsequence函数获得结构侍厚治越元素序列,如下图所示>> seq=getsequence(sel) seq = 4x1 array of STREL objects >> seq(1) ans = Flat STREL object containing 5 neighbors.Neighborhood: 0 1 0 1 1 1 0 1 0 >> seq(2) ans = Flat STREL object containing 4 neighbors.Neighborhood: 0 1 0 1 0 1 0 1 0 >> seq(3) ans = Flat STREL object containing 4 neighbors.Neighborhood: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 >> seq(4) ans = Flat STREL object containing 4 neighbors.Neighborhood: 0 1 0 1 0 1 0 1 0
4、我们以一个轮胎的图像膨胀为例讲解,图像膨胀操作,首先利用mat2gray函数将数据矩阵转灰度图像:I=mat2gray(A,[amin amax]) I=mat2gray(A) I=rgb2gray(RGB) newmap=rgb2gray(map) BW=im2bw(I,level) BW=im2bw(X,map,level)BW=im2bw(RGB,level)
5、对图像边缘操作,每次处理一个像素,将图像边缘形成一个像素集。将这个像素集但矩阵块处理。移动时可以同向移动。>>I=imread('tire.tif'); %读取图片像素>>f=inline('max(x(:))'); %像素的边缘块>>I2=nlfilter(I,[3 3],f); %边缘滤波
6、查找图片中心像素的所有像素点,重复第四步和第五步步骤。图像处理完成!>>imshow(I);>>figure,imshow(I2);