2013-02-23 62 views
0

说我有以下两个矩阵最小化像素:选择了距离

>> 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在共同的价值rresponding位置如下:

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

现在,我选择的是被认为是core4-neighbours但不是在核心的像素如下:

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

我的问题是:我们如何才能选择一个像素p属于four_neighbourhood_pixels,可最大限度地减少x & core之间的距离?

假设为距离我计算,如下所示:

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

只要x在前面的命令将与隶属程度取代zeros后的矩阵值y i中的对应位置?

那么,我该如何选择属于four_neighbourhood_pixels的像素,该像素可以最大限度地减少x与替换零点之间的距离,以及core

谢谢。

回答

0

如果我理解正确,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] 

Veify如果我的理解是正确的:

你想从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 

假设你得到第二排和第三排之间的最小值。现在根据这个告诉我们你的意思是“找到一个最小化的像素”。