【问题标题】:From 4-connectivity to 8-connectivity in MATLAB在 MATLAB 中从 4 连接到 8 连接
【发布时间】:2011-11-13 06:02:01
【问题描述】:

假设我在logical matrix 中有一个边界图像,其中true 表示边界,false 表示区域内部。该图像对二维域的细分进行编码。

我想知道 MATLAB 中是否有一种紧凑的方法来“修复”那些相邻区域之间的间隔仅为 4-connected 的像素邻域,并以保留镶嵌拓扑的方式将它们转换为 8-connected

我相信这可以通过LUTs 完成,但我不确定如何进行。是否必须,如果需要,如何准确评估所有连通性仅为4-wise3x3 像素区域以填充相应的像素?

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    我提出的解决方案:使用BWHITMISS找到邻域至少为4连通的像素,用矩形结构元素对结果进行扩张,将这些邻域转换为8连通,最后与原始图像结合使用逻辑或。

    示例:

    bw = [
        0 0 0 1 0 1 0
        0 0 1 1 1 1 1
        0 1 1 1 0 1 0
        0 0 1 0 1 0 0
        0 1 1 0 0 0 0
        0 0 1 0 1 1 1
        0 0 1 0 0 1 0
    ];
    
    hm = bwhitmiss(bw, [0 1 0; 1 1 1; 0 1 0]);   %# [-1 1 -1; 1 1 1; -1 1 -1]
    bw2 = imdilate(hm,ones(3)) | bw;
    

    我们可以将结果可视化:

    [r c] = find(hm);
    subplot(121), imshow(bw), hold on, plot(c(:),r(:),'o')
    subplot(122), imshow(bw2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多