【问题标题】:Selecting that pixel that minimizes the distance选择最小化距离的像素
【发布时间】:2013-02-09 09:23:58
【问题描述】:

假设我有以下两个矩阵:

>> x = [1 4 3; 6 4 3; 6 9 3; 2 4 3; 5 4 0; 5 3 1; 6 4 7];
>> y = [0 0 1; 1 1 0; 1 1 0; 0 1 1; 0.2 0.8 0.54; 1 1 1; 0 0 0];

您可以将x 视为某个图像,将y 视为x 的每个元素对某个感兴趣区域的隶属度

假设我将x 中成员度= 1 的元素设置为1核心),将其他元素设置为0,如下所示:

x = zeros(size(y));
x(y==1) = 1;

在这种情况下,我将得到以下输出:

     0     0     1
     1     1     0
     1     1     0
     0     1     1
     0     0     0
     1     1     1
     0     0     0

现在,对于0 的元素,我将它们的值替换为相应位置的y 的值,如下所示:

x(x==0)=y(x==0);

现在,我选择那些被视为4-neighbourscore 但不在核心中的像素,如下所示:

four_neighbourhood_pixels = imdilate(core, strel('diamond', 1)) - core;

我的问题是:我们如何选择一个属于four_neighbourhood_pixels 的像素p 以最小化xcore 之间的距离

假设距离我计算如下:

pdist([x,core],'minkowski');

假设前面命令中的x为对应位置的隶属度值y代入zeros后的矩阵?

那么,我该如何选择属于four_neighbourhood_pixels 的像素,以最小化xcore 之间的距离?

谢谢。

【问题讨论】:

    标签: matlab select pixel distance minimize


    【解决方案1】:

    如果我理解正确,core 是以下矩阵:

     0     0     1
     1     1     0
     1     1     0
     0     1     1
     0     0     0
     1     1     1
     0     0     0
    

    先求xcore之间的距离。

    dist=pdist([x,core],'minkowski');
    dist1=squareform(dist);
    [row1,row2]=find(dist1==min(dist1(:)); %interpretation: you get the minimum distance  between row1 and row2 of [x core]
    

    验证我的理解是否正确:

    你想要一个与 x 的像素最小化dist 的距离,它应该属于four_neighbourhood_pixels。这是矩阵[x core]

     1     4     3     0     0     1
     6     4     3     1     1     0
     6     9     3     1     1     0
     2     4     3     0     1     1
     5     4     0     0     0     0
     5     3     1     1     1     1
     6     4     7     0     0     0
    

    假设您得到第 2 行和第 3 行之间的最小值。现在基于此告诉我们您所说的“找到一个最小化...的像素”是什么意思

    【讨论】:

      猜你喜欢
      • 2013-11-28
      • 2013-02-07
      • 1970-01-01
      • 2020-12-18
      • 2011-07-23
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多