zoossh said:
4. i read somewhere that for optimal printing, i have to either change it into cmyk (or cymk?) instead of RGB, or to load dunno what printer profiling from the shop. i've no idea of how to do that, but it seem again another step of color profile selection....
so what is the diff between color mode v.s. workspace v.s. ICC profile?
The common nomenclature is a bit of a misnomer. A more descriptive term for colour "space" would be "coordinate system".
Normal human colour vision employes three different types of receptors. Thus, a complex spectrum of light is reduced to just three "stimuli" (I think CIE calls this "tristimulus"), spanning a 3-dimensional manifold. A different colour space just employs a different coordinate system to label the points within this manifold.
In practice, most colour spaces arbitrarily limit the range of coordinate values, thus artificially restricting the range of colours that can be expressed ("gamut"). This is usually due to historical baggage coming from unsophisticated graphics software. To give an example, sRGB uses integer values from 0 to 255 to encode R, G, and B channels (since that's what can be expressed with 8 bits), clipping the gamut. If one would use floating point numbers instead and, in particular, allowed negative values, sRGB could reproduce any colour (and even colours that have no equivalent in nature - as a side note, JPEG compressed image files can contain such "imaginary" colours). Some more modern image processing software lifts these limitations, but it's not in widespread use (yet).
Another limitation of using low-precision numbers (e.g. 8 bit values) is that there are a lot of roundoff errors. As a general rule of thumb, it is therefore advisable to change the colour space as seldom as possible, as roundoff errors accumulate. Also note that different colour gamuts mean that after conversion, the image is limited to the smallest common gamut subset common to all colour spaces, i.e. one can not gain, only lose, from a conversion.
CMYK employs 4 coordinates to label the points of a 3-dimensional manifold. Obviously, this is a degenerate case (i.e. different CMYK coordinates represent exactly the same colour), and how colour is translated to CMYK always employs an arbitrary element. The reason for CMYK lies in limitations of printing technology, and a "good" conversion to CMYK would always depend on the specific type of printer/set of inks used. Many modern ink printers do not print in CMYK at all, but use more inks - an inkjet employing 7 different inks would employ its own 7-dimensional coordinate system. CMYK is therefore pretty useless, unless it is within the very narrow context of 4-colour printing on a specific machine with specific inks. Even if it was standardized, the degeneracy introduces ambiguities and unneccessary headaches when doing any image processing without any benefit.
Note that virtually all colour capable photographic recording systems are based on additive tristimuli (i.e. RGB-like). CMY is based on subtractive colour mixing and its only practical use is on the reproduction side. Also note that e.g. photographic film/paper may employ CMY dyes, but is exposed (= recorded) as RGB.
The concept of a "connecting space" is simply a tool to keep colour space conversions manageable. Conversions from a colour space "A" to a colour space "B" are described by "colour profiles" (and "ICC profiles" are just a standardized format for specifying these profiles).
In photography, a picture is first recorded, then reproduced. The image recording device (i.e. camera) uses one native colour space, the reproduction device (i.e. printer) another. For N different recording devices and M different reproduction devices, there are N*M profiles necessary to cover all combinations. By using one connecting colour space C as an intermediate, only N+M profiles are necessary - a much smaller number. The choice of C is in principle arbitrary.
The "working space" is similar to a connecting space. In principle, the same image manipulations can be performed in any coordinate system. In practice, much software operates blindly on the coordinate values, ignoring how they are defined (this is strictly speaking a design flaw). In such a case, the result would depend on what coordinate system is used. By standardizing on one specific connecting space as a "working space", operations can be made reproducible.
To summarize, in principle it does not matter what kind of colour coordinate system one uses. In practice, many colour spaces have arbitrary restrictions, so it is best to work in a colour space as close as possible to the "native" colour space of the imaging devices used. This almost invariably boils down to a variant of RGB.
Finally, a very significant part of images is stored/transferred in "compressed JPEG". Despite all claims about "sRGB" or "aRGB" colours, JPEG compressed images do not use RGB at all - they are based on a colour space called YCrCb, to/from which it is converted on-the-fly while saving/loading the image. In this light, "RGB" colour profiles for JPEG images have to be taken with a huge grain of salt.