just a question

Asked by Stephen on 29 May 2012
Latest activity Commented on by Stephen on 4 Jun 2012

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 :)

0 Comments

Stephen

Tags

Products

No products are associated with this question.

1 Answer

Answer by Image Analyst on 29 May 2012
Accepted answer

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?

5 Comments

Teja Muppirala on 29 May 2012

Also, check out NLFILTER. It's similar to BLOCKPROC, but for this specific problem I think the syntax might be a little simpler

Image Analyst on 29 May 2012

Yes, you could do the same thing with nlfilter and it is easier to understand. Good point.

Stephen on 4 Jun 2012

yeah, but you asked if all values were unique, what would happen. It should order from lowest to highest and return the extremes. Thanks Teja, I'll check out nlfilter

Image Analyst

Contact us