3
$\begingroup$

Can you please explain in simple terms what do the input parameters indicate in the ordfilt2 function in matlab?

B=ordfilt2(A,Order,Domain)

I have seen people use this function as J = ordfilt2(I, 9, true(5)) or J=ordfilt2(I,25,ones(3,3))

But I do not understand what each input does to the image I to give J as output..

Thanks a lot in advance

$\endgroup$
  • $\begingroup$ RTFM? Perhaps if you could explain what you do not understand about the manual entry? $\endgroup$ – Peter K. Nov 10 '13 at 1:30
  • $\begingroup$ In this example you used a [1 1; 1 1] matrix as your domain. What if you had a matrix that's either [0 1 0; 1 0 1; 0 1 0] or [1 1 1; 1 1 1; 1 1 1]. Actually, my question is: how do the zero elements affect the filter output? $\endgroup$ – Rafael Sep 20 '15 at 11:54
6
$\begingroup$

I'm pretty new to this myself, so please correct me if I get this wrong.

Using your example, J = ordfilt2(I, 9, true(5)). ordfilt2 will move over the 2d array I in blocks of the same size as true(5). For each of these 5x5 blocks, sort all the elements from smallest to largest. Now fill in the corresponding block in J with a bunch of copies of the 9th smallest element.

To use a smaller example, so I have room to type it:

I = [ 1 2 4 5 ;
      5 3 5 1 ;
      0 3 5 2 ;
      2 1 7 7 ];
J = ordfilt2(I,3, ones(2,2));

Now, let's go through a few blocks one at a time. The first ones(2,2) block is [1 2; 5 3] in the top left corner. If we sort these elements, we get [1 2 3 5], and since we're looking for the 3rd smallest, we receive a value of 3 for the (1,1) position of J.

J = [ 3 ? ? ? ;
      ? ? ? ? ;
      ? ? ? ? ;
      ? ? ? ? ];

next up is the I(1:2,2:3) block. Ordering those elements gives [2 3 4 5], so the third smallest is 4. Now we replace J(1,2) with a 4.

J = [ 3 4 ? ? ;
      ? ? ? ? ;
      ? ? ? ? ;
      ? ? ? ? ];

Go ahead and run this command and compare I, J to understand what's happening. One other thing to know is that the input matrix is padded by default with zeros at the lower and right sides. So the I(4:5,4:5) block is [ 7 0; 0 0].

| improve this answer | |
$\endgroup$
  • $\begingroup$ Looks like you can RTFM! :-) +1. $\endgroup$ – Peter K. Nov 13 '13 at 17:32

Not the answer you're looking for? Browse other questions tagged or ask your own question.