2013-02-23 96 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 

假設你得到第二排和第三排之間的最小值。現在根據這個告訴我們你的意思是「找到一個最小化的像素」。