# when should I pad image before filtering?

Started by March 25, 2005
```I am always confused by the padding for image filtering.

I have an 270x230 "image" and is to be filtered with a 250x250 "filter".

I have made sure that the sum of all filter coefficients sum to be 1.

In Matlab,

sum(sum(filter)) =1.0000,

then I do image filtering:

result=imfilter(image, filter, 'same');

so the result is the also a 270x230 image... since I've used 'same' option,
...

I am not sure if the result is correct or not...

in fact, I even don't understand when a 270x230 image convolved with a
250x250 filter, is the result meaningful at all?

Anybody please give me some enlightment?

And Matlab has so many options: such as "replicate", "symmetric", etc:

X            Input array values outside the bounds of the array
are implicitly assumed to have the value X.  When no
boundary option is specified, IMFILTER uses X = 0.

'symmetric'  Input array values outside the bounds of the array
are computed by mirror-reflecting the array across
the array border.

'replicate'  Input array values outside the bounds of the array
are assumed to equal the nearest array border
value.

'circular'   Input array values outside the bounds of the array
are computed by implicitly assuming the input array
is periodic.

When do we choose which option?

```
```"lucy" <losemind@yahoo.com> wrote in message
news:d20avh\$p2b\$1@news.Stanford.EDU...
>I am always confused by the padding for image filtering.
>
> I have an 270x230 "image" and is to be filtered with a 250x250 "filter".
>
> I have made sure that the sum of all filter coefficients sum to be 1.
>
> In Matlab,
>
> sum(sum(filter)) =1.0000,
>
> then I do image filtering:
>
> result=imfilter(image, filter, 'same');
>
> so the result is the also a 270x230 image... since I've used 'same'
> option, ...
>
> I am not sure if the result is correct or not...
>
> in fact, I even don't understand when a 270x230 image convolved with a
> 250x250 filter, is the result meaningful at all?
>
> Anybody please give me some enlightment?
>
> And Matlab has so many options: such as "replicate", "symmetric", etc:
>
>        X            Input array values outside the bounds of the array
>                     are implicitly assumed to have the value X.  When no
>                     boundary option is specified, IMFILTER uses X = 0.
>
>        'symmetric'  Input array values outside the bounds of the array
>                     are computed by mirror-reflecting the array across
>                     the array border.
>
>        'replicate'  Input array values outside the bounds of the array
>                     are assumed to equal the nearest array border
>                     value.
>
>        'circular'   Input array values outside the bounds of the array
>                     are computed by implicitly assuming the input array
>                     is periodic.
>
> When do we choose which option?
>
>
>

Strange. I really don't understand this:

what happens if I have a 270x230 image convolved with a
600x600 filter using Matlab function?

result=imfilter(image, filter, 'same')?

what happens if I have a 270x230 image convolved with a 100 x 100 filter
using the same matlab function?

Are these results still correct?

I understand the small case: if an image 270x230 convolved with a 3x3
filter, I understand, the image will have false values on its 4 side 1pixel
width boundary. All other values should be correct value...

```
```lucy wrote:
> "lucy" <losemind@yahoo.com> wrote in message
> news:d20avh\$p2b\$1@news.Stanford.EDU...
>
>>I am always confused by the padding for image filtering.
>>
>>I have an 270x230 "image" and is to be filtered with a 250x250 "filter".

The bit in the middle is almost correct.  The rest
of the output image will be wrong.  Whether this is
a problem for you depends on why you are doing this.

...
>>When do we choose which option?

They are all wrong.  You use the one which is least
wrong, and which that is depends on your input image
and what you seek to achieve with it.

> Strange. I really don't understand this:
>
> what happens if I have a 270x230 image convolved with a
> 600x600 filter using Matlab function?

Try it and see.

> what happens if I have a 270x230 image convolved with a 100 x 100 filter
> using the same matlab function?

Try it and see.

> Are these results still correct?

"Still" correct; what makes you think any of this
is correct?

> I understand the small case: if an image 270x230 convolved with a 3x3
> filter, I understand, the image will have false values on its 4 side 1pixel
> width boundary. All other values should be correct value...

Yep.  The large filter case is no different (except
that it is larger).

Regards,
Martin

--
Regards,
Martin Leese