Ich versuche, die Pixel innerhalb eines Bereichs zu berechnen. Ich die Reichweite berechnet, aber ich kann nicht die Pixel zählen enthält 0.Finden von Pixeln mit 0
Mein Code:
first_value_of_i = zeros(M,1);
first_value_of_j = zeros(N,1);
second_value_of_i = zeros(M,1);
second_value_of_j =zeros(N,1);
for i = 2:M-1
for j = 2:N-1
Pix = [image(i,j) image(i-1,j) image(i-1,j+1) image(i,j+1) image(i+1,j+1) image(i+1,j) image(i+1,j-1) image(i,j-1) image(i-1,j-1) image(i-1,j)];
if((Pix(1)==0) && ((Pix(2)*Pix(3)*Pix(4)*Pix(5)*Pix(6)==0) || (Pix(2)*Pix(6)*Pix(7)*Pix(8)*Pix(9)==0)))
if (((Pix(2)+Pix(6)+Pix(7)+Pix(8)+Pix(9))>=5) || ((Pix(2)+Pix(3)+Pix(4)+Pix(5)+Pix(6))>=5))
first_value_of_i(i,1) = i;
first_value_of_j(j,1) = j;
end
if (((Pix(2)+Pix(3)+Pix(4)+Pix(8)+Pix(9))>=5) || ((Pix(4)+Pix(5)+Pix(6)+Pix(7)+Pix(8))>=5))
second_value_of_i(i,1) = i;
second_value_of_j(j,1) = j;
end
end % if
end %for
end %for
rest_stroke = zeros(M,2);
for p = first_value_of_i : second_value_of_i
count_rest=0;
for q = first_value_of_j:second_value_of_j
if((image(p,q)==0))
count_rest=count_rest+1;
end
end
rest_stroke(i,1)=i;
rest_stroke(i,2)=count_rest;
end
Aber die Ausgabe zeigt:
Subscript Indizes müssen entweder reale positive ganze Zahlen oder logische
Error (Linie 173)
if ((Bild (p, q) == 0)) bei dem Versuch,
Nach meiner Berechnung soll es in Ordnung sein, aber offenbar ist es nicht. Kann mir jemand helfen?
Ich würde Ihren Code debuggen, indem ich es durchtrete und die Werte von 'p' und' q' beobachte. Offensichtlich ist einer von ihnen irgendwann Null oder negativ. – Suever
'first_value_of_i' und andere ähnlich benannte Indizes werden mit' zeros() 'initialisiert ... das ist wahrscheinlich ein guter Startpunkt. –
Vielen Dank für die Hilfe. – shamima