matlab三维图像如何进行膨胀

2025-11-01 08:42:10

1、所谓的膨胀就是给图像的边界添加额外的像素,首先启动你的matlab。如下图所示

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 neighbors

Neighborhood:      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

matlab三维图像如何进行膨胀

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

matlab三维图像如何进行膨胀

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);    %边缘滤波

matlab三维图像如何进行膨胀

6、查找图片中心像素的所有像素点,重复第四步和第五步步骤。图像处理完成!

>>imshow(I);

>>figure,imshow(I2);

matlab三维图像如何进行膨胀

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢