dimkalinux wrote:
...
What differences with Mitchell and default distorts filter - its Robidoux filter, right?
Is Robidoux filter good for resize as Mitchell or it tunned special for pure distort operation (not resize)?
In IM, there are two different "general ways" that you can resize:
One is to use a tool which can only resize (-resize).
The other is to use a tool which can pretty much perform any resampling task, including, of course, resizing (-distort). Right now, unfortunately, there is no "simple" interface to -distort when you want to resize (like there is for -resize). You have to specify a lot of the reference point/affine transformation/cropping etc yourself.
Both -resize and -distort can use (in principle) any filter function (Mitchell, the default for -resize, Robidoux, the default for -distort, and many many others, can be used with -resize and -distort).
However, because filters are used very differently by the underlying method (standard orthogonal, two pass, tensor filtering for -resize; Elliptical Weighted Averaging (EWA) for -distort) the results obtained with a given filter are extremely different for -resize and -distort.
Mitchell, for example, works well when used with both -resize and -distort. But Sinc-windowed Sinc (a.k.a. Lanczos), which works well for -resize, does not for -distort. So, it is automatically substituted for a similar filter which does work well with -distort, namely Jinc-windowed Jinc, when -filter Lanczos is used with -distort.
Robidoux (cough! cough!) is basically a Mitchell filter tweaked so that it works a little better with EWA and consequently, with -distort when the image is barely enlarged, reduced or warped.
Technical note: Tensor filtering (the method used by -resize) can actually be used to do warping, but this is not, to my knowledge, implemented in IM. Likewise, EWA could be implemented so that all it can do is resize, but in IM it is used for any "non-trivial" resampling. This being said, there are computation shortcuts which can be taken with tensor methods which allow them to run faster (and have simpler code) than equivalent non-tensor methods. I just happen to like the results obtained with non-tensor methods a lot, even when the transformation is a tensor method's best friend, namely pure resizing.