2015-07-20 64 views
4
相鄰像素

假設A爲,識別MATLAB

 1 1 1 1 1 1 
    1 2 2 3 3 3 
    4 4 2 2 3 3 
    4 4 2 2 2 3 
    4 4 4 4 3 3 
    5 5 5 5 5 5 

我需要確定所有其鄰近的特定強度值的數字。例如。強度1,3和4與強度值2相鄰。 在Matlab中做什麼是有效的方法?

我可以使用以下,

glcm = graycomatrix(A) 

但是,如果A具有強度值更大數目的例如10000 graycomatrix不是一個有效的方法。

+0

嗯,我懷疑將有10000個值的情況下有效的方法,除非你可以對它進行更多的限制(因爲有大量的可能組合)。 – nkjt

+0

爲什麼'2'還沒有返回?有'2'與其他'2'相鄰 –

回答

5

可以構建與2D卷積掩模,根據該掩模選擇的值,然後將它們減少到唯一值:

% // Data: 
A = [ 1 1 1 1 1 1 
     1 2 2 3 3 3 
     4 4 2 2 3 3 
     4 4 2 2 2 3 
     4 4 4 4 3 3 
     5 5 5 5 5 5 ]; 
value = 2; 
adj = [0 1 0; 1 0 1; 0 1 0]; %// define adjacency. [1 1 1;1 0 1;1 1 1] to include diagonals 

%// Let's go 
mask = conv2(double(A==value), adj, 'same')>0; %// pixels adjacent to those equal to `value` 
result = unique(A(mask)); 

在該示例中,這將產生

result = 
    1 
    2 
    3 
    4 

請注意,結果包括2,因爲某些像素值爲2的相鄰像素具有該值。