IM7 has a different syntax for colourspace management, so I imagine that there are internal changes as well.
What used to be
Code: Select all
convert INPUT.IMG -colorspace sRGB -resize WIDTHxHEIGHT -colorspace RGB OUTPUT.IMG
Code: Select all
magick INPUT.IMG -colorspace RGB -resize WIDTHxHEIGHT -colorspace sRGB OUTPUT.IMG
My student Adam Turcotte and I are producing a quantitative comparison of upsampling methods based on ImageMagick and VIPS (for the image metrics).
For better or worse, we have decided that 16-bit sRGB TIFF is our "reference" space. As it turns out, there is more than one sRGB, so our standard needs to be standardized.
This probably could be fixed by blindly using ImageMagick to produce the reference images, but we'd rather not be blind.
Because we want to factor out errors that come from colourspace mismatch, we need to make sure that there is no discrepancy between the sRGB/intent used for the input images and the re-enlargements.
In addition, in the "linear light" toolchain, we need to make sure that the sRGB we convert from is the same as the sRGB we convert to. That is: Every downsampler and upsampler is tested with a colorspace blind version (taking sRGB literally) and one that converts into and out of linear RGB.
Questions
What would you suggest we use as "standardized" sRGB format when we are in sRGB (we're pretty committed to TIFF, and I'm partial to Absolute because Relative seems to give the same result as Perceptual in photivo, and I don't like Perceptual much)?
P.S. We're going to use sRGB v4 (not IM's default, although IM7 understands it) with Perceptual rendering intent (which is IM's default). v4 because the inverse conversions are higher quality than with v2 (good for our linear toolchain), Perceptual because this is the most commonly used, and it minimizes clipping without major ill effects as far as a quantitative test suite goes: we actually do not really care what things look like.
Does IM7 read the rendering intent from the loaded image and propagates it, or do we have to set it manually at read (and write) with -intent?
P.S. We'll use Perceptual, which takes care of this issue (actual = default). This being said, it would be nice if IM could somehow (does it already?) pick up the rendering intent when loading with an embedded profile.
Is there any gotcha we should be aware of? Can we trust the IM6 documentation?