ab1a235550a5be7c9a90454e403db2b6 视觉图像:matlab纹理分割编程实例 - 知知经验网

视觉图像:matlab纹理分割编程实例

2024-10-11 21:15:02

1、读取图像:%Step 1: Read ImageI1 = imread('bag.png');I = rgb2gray(I1);figureimshow(I);

视觉图像:matlab纹理分割编程实例

3、为底层纹理创建二值掩膜兔脒巛钒图像①分割后的图像目标区域显示为白色;②与原图像相比,图像顶部的纹理被过度分割,而底部纹理则以一个整体被分割出来;③使用bwareaopen函数提取图像的底部纹理;④分遥菇障彝割图像的边界并不光滑,并且含有很多孔洞,使用imclose函数对图像执行形态学关操作;使用imfill函数对图像中的孔洞进行填充;%Step 3: Create Rough Mask for the Bottom TextureBW1 = imbinarize(Eim,0.8);%阈值分割figureimshow(BW1);imwrite(BW1,'thresholdimg1.png');BWao = bwareaopen(BW1,2000);%开运算,连通域imshow(BWao)nhood = true(11);closeBWao = imclose(BWao,nhood);%闭合孔洞imshow(closeBWao)roughMask = imfill(closeBWao,'holes');%孔洞填充imshow(roughMask)

视觉图像:matlab纹理分割编程实例视觉图像:matlab纹理分割编程实例

4、使用掩膜图像分割出上层图像%Step 4: Use Rough Mask to Segment the Top TextureI2 = I稆糨孝汶;I2(roughMask) = 0;%掩膜操作imshow(I2);imwrite(I2,'segmentimg1.png');E2 = entropyfilt(I2);%重计算纹理图像E2im = rescale(E2);imshow(E2im)BW2 = imbinarize(E2im);%自适应阈值分割imshow(BW2);mask2 = bwareaopen(BW2,1000);imshow(mask2);

视觉图像:matlab纹理分割编程实例视觉图像:matlab纹理分割编程实例

5、提取底层、上层图像和绘制边界:%Step 5: Display Segmentation Resultstexture1 = I;texture1(~mask2) = 0;%上层图像imshow(texture1)texture2 = I;texture2(mask2) = 0;%底层图像figureimshow(texture2)imwrite(texture2,'bottomimg.png');boundary = bwperim(mask2);segmentResults = I;segmentResults(boundary) = 255;%绘制边界imshow(segmentResults)

视觉图像:matlab纹理分割编程实例视觉图像:matlab纹理分割编程实例视觉图像:matlab纹理分割编程实例

7、【注】:matlab rescale()函数:function y = rescale(x,a,b)% rescale - rescale data in [a,b]% y = rescale(x,a,b);% Copyright (c) 2004 Gabriel Peyr?if nargin<2 a = 0;endif nargin<3 b = 1;endm = min(x(:));M = max(x(:));y = (b-a) * (x-m)/(M-m) + a;

猜你喜欢