【问题标题】:Matlab: Finding distance to nearest TRUE value in a matrixMatlab:在矩阵中查找到最近 TRUE 值的距离
【发布时间】:2017-10-05 20:20:06
【问题描述】:

假设我有一个逻辑矩阵 A(大约 1000x1000 大小),并希望为每个元素找到最接近 TRUE 值的欧几里得距离。如何在 Matlab 中快速完成?

例如,如果我有矩阵 A:

A = [1 0 0 0
     0 1 1 1
     0 0 0 0
     0 0 1 0]

那我想要的是:

B = [0 1 1 1
     1 0 0 0
     1.41 1 1 1
     2 1 0 1]

一种可能是 imdilate(),但是我必须用 2Mx2N 矩阵来扩展 MxN 矩阵,这将花费太长时间。

我尝试使用 pdist2() 计算从每个元素到每个元素 ==1 的距离,然后取最小值,但结果证明使用了太多内存。

有什么建议吗?我也会满足于一个近似它的解决方案。

【问题讨论】:

    标签: matlab matrix distance


    【解决方案1】:

    图像处理工具箱中的bwdist 函数正是这样做的

    A = [1 0 0 0 
         0 1 1 1
         0 0 0 0
         0 0 1 0];
    
    B = bwdist(A);
    
    %   0.00000   1.00000   1.00000   1.00000
    %   1.00000   0.00000   0.00000   0.00000
    %   1.41421   1.00000   1.00000   1.00000
    %   2.00000   1.00000   0.00000   1.00000
    

    【讨论】:

    • 我的谷歌搜索技能肯定需要变得更好。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多