let's say i have the image:
img = [1 0 -1; 0 -1 0; 1 1 -1];
and I'd like to get the values on the 8-connected area around the center:
vals = [0 -1 0 1 0 1 1 -1];
and then get the most common and least common values, and if there are two, to pick the lowest value.
I can only thing to do:
meh = im2col(img,[3 3],'distinct'); meh(5,:) = []; answer = mode(meh);
but i can't figure out a way to get the least common thing unless i do ~mode a bunch of times...
Any ideas? Thanks :)
No products are associated with this question.
You could use blockproc and have the blockproc function call hist. But you know that there could be up to 8 values that are the least common. What if your 8 neighbors are 8 unique values? What do you want to do then?
Also, check out NLFILTER. It's similar to BLOCKPROC, but for this specific problem I think the syntax might be a little simpler
Yes, you could do the same thing with nlfilter and it is easier to understand. Good point.
0 Comments