matlab图像问题

bw_img = im2bw(J1,level); %输出图像为二值
获取边界后数值达到2050个,图形显示太密集,该如何降低这个数值,最后图形是这样,想要减少圆点的数量或者是增大圆点之间的距离该怎么进行

img

如果想要降低圆点数量或者增大圆点之间的距离,可以考虑进行形态学操作。形态学操作可以通过改变图像形状和大小来调整二值图像的形态。

常用的形态学操作包括膨胀、腐蚀、开运算和闭运算。膨胀和腐蚀操作可以用于增加或减少二值图像中的白色区域,从而达到调整二值图像的目的。开运算可以平滑图像的轮廓并消除小的噪声点,闭运算可以填补图像中的小孔并连接分离的区域。

以下是一些示例代码,用于演示如何进行形态学操作以减少圆点数量或增大圆点之间的距离:
膨胀操作

SE = strel('disk', 2);
bw_img_dilate = imdilate(bw_img, SE);

在上述代码中,使用 strel 函数定义一个半径为2的圆形结构元素,然后使用 imdilate 函数进行膨胀操作。

SE = strel('disk', 2);
bw_img_open = imopen(bw_img, SE);

在上述代码中,使用 strel 函数定义一个半径为2的圆形结构元素,然后使用 imopen 函数进行开运算操作。
闭运算操作

SE = strel('disk', 2);
bw_img_close = imclose(bw_img, SE);


在上述代码中,使用 strel 函数定义一个半径为2的圆形结构元素,然后使用 imclose 函数进行闭运算操作。

上述示例中的 bw_img 表示输入的二值图像,可以根据实际情况进行替换。使用形态学操作之后,可以得到一个调整后的二值图像,从而达到减少圆点数量或者增大圆点之间距离的效果。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7575855
  • 这篇博客也不错, 你可以看下求助matlab崩溃问题的解决方案
  • 除此之外, 这篇博客: matlab插值计算中的 2.1 二维插值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    使用interp2(X,Y,Z,X1,Y1,method)函数, method包含:nearest,‘linear’,‘spline’,‘cubic’

    x = linspace(-5,5,11);
    y = linspace(-5,5,11);
    [X,Y] = meshgrid(x,y);
    Z = 3.*sin(X.^2+Y.^2);
    
    xi = linspace(-5,5,100);
    yi = linspace(-5,5,100);
    [XI,YI]=meshgrid(xi,yi);
    ZI = interp2(X,Y,Z,XI,YI,'cubic');
    
    surf(XI,YI,ZI),view(-25,25)
    

    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^