Finding 3 consecutive zero values row by row in an image.
Ältere Kommentare anzeigen
Hi,
I would like to be able to go through every row in an image looking for when there are 3 consecutive pixels with a zero value. What I need is it to print the row(X) and column(Y) for the pixel before those 3 pixels. And then continue to move through the rest of the rows. So in the end I would have a list for the Xs and Ys. Can anyone help me make this loop?
Thanks
6 Kommentare
Sean de Wolski
am 9 Apr. 2012
What if the three consecutive pixels occur int he first three columns? If there are four consecutive zeros, does this count? If so, which column(s) should be returned? A small example would be best.
Image Analyst
am 9 Apr. 2012
And is the image grayscale or color?
Ross
am 9 Apr. 2012
Ross
am 9 Apr. 2012
Image Analyst
am 9 Apr. 2012
Care to post the image (so we can see it), and let us know why you want/need to find locations of exactly 3 (no more and no less) black pixels? What are you going to do once you know the location of the pixels before the black line starts?
Ross
am 10 Apr. 2012
Antworten (2)
Andrei Bobrov
am 10 Apr. 2012
x1 = all(img==0,3);
rst = conv2(x1+0,[1 1 1],'same');
[ii,jj] = find(rst == 3);
jj = bsxfun(@plus,jj,-1:1);
1 Kommentar
Sean de Wolski
am 10 Apr. 2012
conv2 and bsxfun! +1
Geoff
am 9 Apr. 2012
Simplest (and rather inefficient) approach:
for y = 1:size(img,1)
blacks = 0;
for x = 1:size(img,2)
if all(squeeze(img(y,x,:)) == 0)
blacks = blacks + 1;
if blacks == 3
% BTW, what do you do if first three pixels in the row are black??
disp( [x-blacks, y] );
break; % Stop processing row
end
else
blacks = 0;
end
end
end
Kategorien
Mehr zu Graphics Performance finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!