Görüntüdeki piksellerin yoğunluk farkına göre bir bitişik liste yapıyorum. şöyle Matlab kod parçacığı geçerli:Matlabdaki döngüler için nasıl yuvalanır?
m=1;
len = size(cur_label, 1);
for j=1:len
for k=1:len
if(k~=j) % avoiding diagonal elements
intensity_diff = abs(indx_intensity(j)-indx_intensity(k)); %intensity defference of two pixels.
if intensity_diff<=10 % difference thresholded by 10
adj_list(m, 1) = j; % storing the vertices of the edge
adj_list(m, 2) = k;
m = m+1;
end
end
end
end
y = sparse(adj_list(:,1),adj_list(:,2),1); % creating a sparse matrix from the adjacency list
nasıl döngüler için bu kötü iç içe kaçınabilirsiniz? Eğer görüntü boyutu büyükse, o zaman sadece bir felaket gibi çalışır. Herhangi bir çözümü varsa, benim için çok yardımcı olur. Saygılarımızla Ratna
selam ve karşılama, .... problemin bu tür ilk standart anwser http://ch.mathworks.com/ ([vectorisation] olurdu help/matlab/matlab_prog/vectorization.html) (birkaç [Tricks] (http://www-h.eng.cam.ac.uk/help/tpl/programs/Matlab/tricks.html)) –
Kesinleştirir misiniz? "cur_label" ve "indx_intensity" nedir? Her zaman len olarak len büyüklüğünde kare bir görüntü mü? – Ratbert
cur_label bir vektördür (varsayalım, 120x1, bitişiklik matrisi için 120 piksel veya köşe var demektir) bir görüntüden bir küme. Ve indx_intensity bu piksellerin gri değerleridir (120 gri değer). 120 köşe olduğu için, bitişik matris 120x120 boyutunda olacaktır. –