> For correct editing operations, and correct display. Why should I care if this is the case in images as display technology evolves when this is already a problem with every physical medium? The analogue in photography is photographs lose color clarity and fade as they age. > We're stuck with images stored in the display profile of old CRTs by default, because that was the most practical option at the time. You might think we could do away with color profiles for high-dynamic-range images, but the non-linearity of our vision and our displays means that linear encodings are still inefficient with their bits even if you have 32 bits per channel. The color profile is just a record of what was done to correct the colors, so someone else can un-correct them as needed. So, in order to not have color banding, we correct the colors before storing them by trying to make the colors have even steps between any 1-bit change in the spectrum. You lose up to 2 bits of color precision in some regions, notably the dark colors. And a linear color space encoded in 8 bits leaves noticeable gaps between colors, such that you can see color banding if you try to render a smooth gradient. The problem with storing “ground truth” values for pixels in 8-bits-per-channel formats is that many experts would probably say this implies a linear color space. 8 bits is barely enough (or some would say almost enough) to represent low-dynamic-range images on TVs and monitors even when you have the colors gamma encoded or use a perceptual color space. So what is “ground truth” exactly? We need to know what units we’re talking about is it lumens, or “tristimulus” values (what we want our eyes to see), or LCD monitor voltages, or something else? First we have to agree on what ground truth means.Ī big reason for common formats like PNG and JPEG to need color profiles is because 8 bits per channel is not enough color resolution unless you store the colors non-linearly. If we don’t account for it, then (for example) a 1-bit difference between two bright colors means something very different from a 1-bit difference between two dark colors. The point is to use bits effectively and not waste them, by accounting for what usually happens on most displays and in our eyes & brains. OpenColorIO even has a function to directly get a colorspace from a filename. Though currently a lot of people just tag the filename with a colorspace suffix and call it a day. These four fields can cover pretty much everything I have seen people do. Best to just force the values to be unstructured.Ī lot of arbitrary strings, but that's how it is - there is really no standard list of colorspace names. You could say that you can put the same data in some string format in the colorspace tag, but then everyone will invent their own slightly different way of specifying it and interoperability will suffer. The reason I want them is because people do mix and match. Display images get tone-mapped, textures do not, data only gets linearised, even if it has rgb_primaries attached, other values only have internal meaning to the concrete art pipeline.įor the first three, rgb_primaries and transfer_function take precedence over colorspace. intent - one of display, texture, data, or an arbitrary string. transfer_function - arbitrary string, indicates the function to use to linearise the values from disk into the RGB primaries. rgb_primaries - arbitrary string, indicates the physical meaning of the linear RGB values. colorspace - arbitrary string, the colorspace of the color data on disk. For completeness I would want the following fields: You would think that the colorspace would tell you, but people do silly things like save specular maps as sRGB. I would also like to have "usage intent" tag for whether this is color or non-color data. The colorspace data should be an arbitrary string. I work in a VFX adjacent space, so I have some pretty strong feelings about what data should be stored in the colorspace tags.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |