【问题标题】:Find contour of 2D object in image in matlab在matlab中查找图像中二维对象的轮廓
【发布时间】:2016-08-05 19:49:29
【问题描述】:

我有这个问题:我有这个 2D 二值图像,我想提取这个图像中对象的轮廓。 这是图像:

我想拥有相同的矩阵图像,但仅在对象的轮廓中使用矩阵图像,而在其他位置使用零。 有解决办法吗? 如果是这样,是否有任何实现也可以为 3D 对象做同样的事情?

非常感谢

【问题讨论】:

    标签: matlab image-processing contour


    【解决方案1】:

    如果你有图像处理工具箱,你可以使用bwperim

    BW = imread('http://i.stack.imgur.com/05T06.png');
    BW = BW(:,:,1) == 255;
    
    boundary = bwperim(BW);
    
    imshow(boundary)
    

    这最终的作用是对原始图像执行卷积以腐蚀它,然后计算腐蚀版本和原始版本之间的差异。因此,如果您没有工具箱,您可以使用 conv2(或 3D 中的 convn)来执行此操作。

    eroded = ~conv2(double(~BW), ones(3), 'same');
    boundary = BW - eroded;
    

    或者在 3D 中:

    eroded = ~convn(double(~BW_3D), ones(3,3,3), 'same');
    boundary = BW_3D - eroded;
    

    【讨论】:

    • 非常感谢,它与 bwperim 功能完美配合!
    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多