Direct resampling vs zero order hold + convolution

Discuss digital image processing techniques and algorithms. We encourage its application to ImageMagick but you can discuss any software solutions here.
BryantMoore
Posts: 56
Joined: 2011-04-23T22:21:52-07:00
Authentication code: 8675308

Direct resampling vs zero order hold + convolution

original
https://dl.dropbox.com/u/106615031/dsp/ ... e2/new.png
zero order hold
https://dl.dropbox.com/u/106615031/dsp/ ... zoh10x.png
direct resampling
https://dl.dropbox.com/u/106615031/dsp/ ... ize10x.png
zoh + convolution
https://dl.dropbox.com/u/106615031/dsp/ ... lur10x.png

The last two images both use an orthogonal triangle filter. What are the implications of this?

fmw42
Posts: 26108
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: Direct resampling vs zero order hold + convolution

a triangle filter does a linear interpolation in x and in y between pixels in the input image to find the correct color to assign to each output pixel based upon the scale factor.

There is much on this and more discussed at:

http://www.imagemagick.org/Usage/resize/#filter
http://www.imagemagick.org/Usage/distorts/#summary

BryantMoore
Posts: 56
Joined: 2011-04-23T22:21:52-07:00
Authentication code: 8675308

Re: Direct resampling vs zero order hold + convolution

I guess what I should ask is if the direct resampling or the convolution is a more accurate representation of how the final image should look.

fmw42
Posts: 26108
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: Direct resampling vs zero order hold + convolution

sumawo13 wrote:I guess what I should ask is if the direct resampling or the convolution is a more accurate representation of how the final image should look.
You will have to tell us what the resampling filter is and what the convolution kernel is?

In general, resampling filters are nearestneighbor, bilinear (triangle), cubic convolution, lanczos, etc as described in the reference I provided. Whereas, convolution is just a blurring of the resulting enlargement. Typically a good resampling filter will beat a blurring convolution.

On the other hand, for example, photoshop does a bilinear or cubic convolutoin resampling followed by a hidden unsharp (misnomer) sharpening convolution. In this case there has been quite some discussion on the forum recently and tests by Professor Nicolas Robidoux suggesting that a properly designed filter can do as well or better than the photoshop process. See http://www.imagemagick.org/Usage/resize/#nicolas

"Adjusting the blur (between about 0.7 and 1.0) or B parameters (between 0.0 and 1.0) should obviate any need for USM (Unsharp) Sharpening. You may also want to try sigmoidizing."

BryantMoore
Posts: 56
Joined: 2011-04-23T22:21:52-07:00
Authentication code: 8675308

Re: Direct resampling vs zero order hold + convolution

fmw42 wrote:You will have to tell us what the resampling filter is and what the convolution kernel is?

In general, resampling filters are nearestneighbor, bilinear (triangle), cubic convolution, lanczos, etc as described in the reference I provided. Whereas, convolution is just a blurring of the resulting enlargement. Typically a good resampling filter will beat a blurring convolution.

Code: Select all

``````\$ convert rose: -sample 2000% +repage -define filter:verbose=1 -define filter:blur=20 -filter triangle -resize 100% 00-rose-blur-triangle.png
# Resize Filter (for graphing)
#
# filter = Triangle
# window = Box
# support = 1
# window-support = 1
# scale-blur = 20
# practical-support = 20``````

Code: Select all

``````\$ convert rose: -define filter:verbose=1 -filter triangle -resize 2000% 00-rose-resize-triangle.png
# Resize Filter (for graphing)
#
# filter = Triangle
# window = Box
# support = 1
# window-support = 1
# scale-blur = 1
# practical-support = 1``````
And as far as my version.

Code: Select all

``````\$ identify
Version: ImageMagick 7.0.0-0 2012-09-29 Q32 http://www.imagemagick.org
Features: OpenMP  HDRI``````

BryantMoore
Posts: 56
Joined: 2011-04-23T22:21:52-07:00
Authentication code: 8675308

Re: Direct resampling vs zero order hold + convolution

Code: Select all

``````\$ convert rose: -sample 2000% +repage -define filter:verbose=1 -define filter:blur=20 -filter mitchell -resize 100% 00-rose-blur-mitchell.png
# Resize Filter (for graphing)
#
# filter = Cubic
# window = Box
# support = 2
# window-support = 2
# scale-blur = 20
# practical-support = 40
# B,C = 0.333333,0.333333``````
EWA Jinc Lanczos

It seems to have a similar edge case with less ripple.

BryantMoore
Posts: 56
Joined: 2011-04-23T22:21:52-07:00
Authentication code: 8675308

Re: Direct resampling vs zero order hold + convolution

Code: Select all

``````\$ magick rose: -sample 2000% -define filter:verbose=1 -define filter:blur=20 -filter lanczos -resize 100% rose-lanczos.png
# Resize Filter (for graphing)
#
# filter = SincFast
# window = SincFast
# support = 3
# window-support = 3
# scale-blur = 20
# practical-support = 60``````
Gives similar results to EWA Jinc Lanczos.

It seems to be more "true" to the original image.

BryantMoore
Posts: 56
Joined: 2011-04-23T22:21:52-07:00
Authentication code: 8675308

Re: Direct resampling vs zero order hold + convolution

rose-blur-box.png (1400×920)
http://ompldr.org/vZnBhMw/rose-blur-box.png

rose-blur-triangle.png (1400×920)
http://ompldr.org/vZnBhNA/rose-blur-triangle.png

rose-blur-mitchell.png (1400×920)
http://ompldr.org/vZnBhNQ/rose-blur-mitchell.png

rose-blur-catrom.png (1400×920)
http://ompldr.org/vZnBhNg/rose-blur-catrom.png

rose-blur-lanczos.png (1400×920)
http://ompldr.org/vZnBhNw/rose-blur-lanczos.png

Code: Select all

``````#!/bin/sh
for f in box triangle mitchell catrom lanczos;
do
magick rose: -colorspace rgb +sigmoidal-contrast 8 -sample 2000% -define filter:blur=20 -filter \$f -resize 100% -sigmoidal-contrast 8 -colorspace srgb rose-blur-"\$f".png
done``````
It seems with convolution, the box filter creates an effect similar to direct resampling with a triangular filter.