How to simulate CMYK decoded as RGB?
-
- Posts: 8
- Joined: 2017-07-19T03:56:37-07:00
- Authentication code: 1151
How to simulate CMYK decoded as RGB?
Bit of an odd request, I know, but how would I simulate CMYK incorrectly decoded as sRGB while staying in the sRGB colorspace?
I'll try and post a sample later today if that isn't clear enough
Thank you ^^
I'll try and post a sample later today if that isn't clear enough
Thank you ^^
-
- Posts: 12159
- Joined: 2010-01-23T23:01:33-07:00
- Authentication code: 1151
- Location: England, UK
Re: How to simulate CMYK decoded as RGB?
I don't understand. CMYK has 4 channels. sRGB has 3 channels. So what does "incorrectly decoded" mean?
In IM, you could read the CMYK file, separate, delete a channel, combine, then "-set colorspace sRGB". This might do what you want.
In IM, you could read the CMYK file, separate, delete a channel, combine, then "-set colorspace sRGB". This might do what you want.
snibgo's IM pages: im.snibgo.com
-
- Posts: 8
- Joined: 2017-07-19T03:56:37-07:00
- Authentication code: 1151
Re: How to simulate CMYK decoded as RGB?
Yea, I had a feeling that might be unclear.
For example:
PNG Source
https://www.dropbox.com/s/xz7310y6a4met ... a.png?dl=0
PNG Source -> CMYK JPEG
https://www.dropbox.com/s/z53m2r9zprytqpt/cmyk.jpg?dl=0
PNG Source -> CMYK JPEG, incorrectly decoded with ms paint, resaved as PNG
https://www.dropbox.com/s/ml0shmsoiqpbs ... d.png?dl=0
I'm not sure how things are getting mangled, but I expect it's something along the lines of CMY being remapped into RGB (ie C->B, M->R, Y->G), not entirely sure though.
I'll keep playing around with -set colorspace to see if I can get anything similar.
Thanks
For example:
PNG Source
https://www.dropbox.com/s/xz7310y6a4met ... a.png?dl=0
PNG Source -> CMYK JPEG
https://www.dropbox.com/s/z53m2r9zprytqpt/cmyk.jpg?dl=0
PNG Source -> CMYK JPEG, incorrectly decoded with ms paint, resaved as PNG
https://www.dropbox.com/s/ml0shmsoiqpbs ... d.png?dl=0
I'm not sure how things are getting mangled, but I expect it's something along the lines of CMY being remapped into RGB (ie C->B, M->R, Y->G), not entirely sure though.
I'll keep playing around with -set colorspace to see if I can get anything similar.
Thanks
-
- Posts: 12159
- Joined: 2010-01-23T23:01:33-07:00
- Authentication code: 1151
- Location: England, UK
Re: How to simulate CMYK decoded as RGB?
Your third link doesn't look mangled. It's a slightly tweaked version of the Lenna image, somewhat desaturated.
snibgo's IM pages: im.snibgo.com
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: How to simulate CMYK decoded as RGB?
I think the main difference between your two results is that the first one has an "sRGB IEC61966-2-1 black scaled" profile and the one you think is wrong has no profile. Look at the results from identify -verbose yourimage. Profiles can make a difference in the way it looks.
The data is slightly different (2.7%) as shown by compare
1761.91 (0.026885)
The data is slightly different (2.7%) as shown by compare
Code: Select all
compare -metric rmse cmyk.jpg cmyk_incorrectly_decoded.png null:
-
- Posts: 8
- Joined: 2017-07-19T03:56:37-07:00
- Authentication code: 1151
Re: How to simulate CMYK decoded as RGB?
I think I'm still not being clear here.
Regarding the "two results", I'm not sure that's very accurate. Like I said, cmyk.jpg was derived by just converting from the PNG source using imagemagick. I understand that the wrong one has no profile - presumably because ms paint and other non-compliant decoders don't handle the profile correctly. Interesting to note however, that among the 3 images I linked, none report having a profile per say ( https://pastebin.com/tTTQrc7c )- unless by profile you meant colorspace field under the verbose output, but even that is sRGB, and not the fully qualified "sRGB IEC61966-2-1 black scaled" colorspace. That has me interested however, maybe it would be possible to achieve what I'm going for by converting to CMYK and then forcibly setting the colorspace back to sRGB, although I didn't have any luck with that earlier.
As a sidenote, I made an 8bit colormap covering from #000000-#FFFFFF (easy enough to do in a few lines of python), then imported that as RGB, converted it to CMYK colorspace, and exported as lossless TIF. Then loaded that into paint and resaved as bitmap to have a (albeit large) mapping table to map from RGB to this sort of pseudo colorspace. With that mapping table, I can just iterate over each pixel in the source, and replace each pixel according to that table. Only problem doing this is, think it could be done faster if it was done purely in imagemagick. Is there a way to remap based on a color mapping file? (not an ICC profile, but off an existing image with specific characteristics.)
The initial colormap (#000000-#FFFFFF) https://www.dropbox.com/s/b8rwiny5rn0nl ... p.png?dl=0
The "error" colormap (not sure what else to call it) https://www.dropbox.com/s/pmeiges2ev5tv ... p.png?dl=0
Let me know your thoughts on the matter.
Regarding the "two results", I'm not sure that's very accurate. Like I said, cmyk.jpg was derived by just converting from the PNG source using imagemagick. I understand that the wrong one has no profile - presumably because ms paint and other non-compliant decoders don't handle the profile correctly. Interesting to note however, that among the 3 images I linked, none report having a profile per say ( https://pastebin.com/tTTQrc7c )- unless by profile you meant colorspace field under the verbose output, but even that is sRGB, and not the fully qualified "sRGB IEC61966-2-1 black scaled" colorspace. That has me interested however, maybe it would be possible to achieve what I'm going for by converting to CMYK and then forcibly setting the colorspace back to sRGB, although I didn't have any luck with that earlier.
As a sidenote, I made an 8bit colormap covering from #000000-#FFFFFF (easy enough to do in a few lines of python), then imported that as RGB, converted it to CMYK colorspace, and exported as lossless TIF. Then loaded that into paint and resaved as bitmap to have a (albeit large) mapping table to map from RGB to this sort of pseudo colorspace. With that mapping table, I can just iterate over each pixel in the source, and replace each pixel according to that table. Only problem doing this is, think it could be done faster if it was done purely in imagemagick. Is there a way to remap based on a color mapping file? (not an ICC profile, but off an existing image with specific characteristics.)
The initial colormap (#000000-#FFFFFF) https://www.dropbox.com/s/b8rwiny5rn0nl ... p.png?dl=0
The "error" colormap (not sure what else to call it) https://www.dropbox.com/s/pmeiges2ev5tv ... p.png?dl=0
Let me know your thoughts on the matter.
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: How to simulate CMYK decoded as RGB?
According to ImageMagick identify -verbose, it has "sRGB IEC61966-2-1 black scaled" profile.
For remapping according to a colortable image see -remap at http://www.imagemagick.org/Usage/quantize/#remap and use +dither or -dither none.
Code: Select all
Image: cmyk.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: DirectClass
Geometry: 512x512+0+0
Units: Undefined
Type: TrueColor
Endianess: Undefined
Colorspace: sRGB
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Channel statistics:
Pixels: 262144
Red:
min: 60 (0.235294)
max: 255 (1)
mean: 184.865 (0.724961)
standard deviation: 40.2133 (0.157699)
kurtosis: -0.786883
skewness: -0.613539
entropy: 0.937151
Green:
min: 0 (0)
max: 246 (0.964706)
mean: 117.807 (0.46199)
standard deviation: 48.613 (0.190639)
kurtosis: -0.701391
skewness: -0.101691
entropy: 0.954101
Blue:
min: 11 (0.0431373)
max: 218 (0.854902)
mean: 104.063 (0.40809)
standard deviation: 35.061 (0.137494)
kurtosis: -0.288041
skewness: 0.484799
entropy: 0.919093
Image statistics:
Overall:
min: 0 (0)
max: 255 (1)
mean: 119.421 (0.468319)
standard deviation: 54.6132 (0.214169)
kurtosis: -0.923633
skewness: 0.100305
entropy: 0.936782
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Background color: white
Border color: srgb(223,223,223)
Matte color: grey74
Transparent color: black
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 512x512+0+0
Dispose: Undefined
Iterations: 0
Compression: JPEG
Quality: 80
Orientation: Undefined
Properties:
date:create: 2017-07-20T20:27:21-07:00
date:modify: 2017-07-20T20:27:21-07:00
icc:copyright: Dropbox, Inc.
icc:description: sRGB IEC61966-2-1 black scaled <------ see profile here
icc:manufacturer: sRGB IEC61966-2-1 black scaled
icc:model: sRGB IEC61966-2-1 black scaled
jpeg:colorspace: 2
jpeg:sampling-factor: 2x2,1x1,1x1
signature: abb5d0d696e90ff59ec4db53fd5ecec59d4b02823878708aff7367a4b32452c7
Profiles:
Profile-icc: 564 bytes
Artifacts:
filename: cmyk.jpg
verbose: true
Tainted: False
Filesize: 41679B
Number pixels: 262144
Pixels per second: 26.2144MB
User time: 0.010u
Elapsed time: 0:01.009
Version: ImageMagick 6.9.9-0 Q16 x86_64 2017-07-16 http://www.imagemagick.org
-
- Posts: 8
- Joined: 2017-07-19T03:56:37-07:00
- Authentication code: 1151
Re: How to simulate CMYK decoded as RGB?
As you can see from the pastebin earlier, identify wasn't reporting any of that information. I guess it has to do with me being a few months out of date on my installed copy of imagemagick (ImageMagick 6.9.8-0 Q16 x64 2017-03-11).
I'll try updating my 7.X install (trying to keep 6.X where it's at to avoid breaking python wand bindings), and see if that gives me the additional profile info.
I'll try updating my 7.X install (trying to keep 6.X where it's at to avoid breaking python wand bindings), and see if that gives me the additional profile info.
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: How to simulate CMYK decoded as RGB?
check your libpng and update it to the latest.
convert -list format
PNG* PNG rw- Portable Network Graphics (libpng 1.6.29,1.6.30)
Not sure why listing is showing two versions. MacPorts only has one listed as active.
libpng @1.6.29_0
libpng @1.6.30_0 (active)
This is weird. I have not seen that before.
convert -list format
PNG* PNG rw- Portable Network Graphics (libpng 1.6.29,1.6.30)
Not sure why listing is showing two versions. MacPorts only has one listed as active.
libpng @1.6.29_0
libpng @1.6.30_0 (active)
This is weird. I have not seen that before.
-
- Posts: 8
- Joined: 2017-07-19T03:56:37-07:00
- Authentication code: 1151
Re: How to simulate CMYK decoded as RGB?
I updated to ImageMagick 7.0.6-1 Q16 x64 2017-07-15, but it's interesting that I cannot reproduce your verbose options.
The verbose output is as follows:
As for the libpng version:
I'm using the prebuilt windows builds by the way, not sure if you're assuming that I've built from source or anything.
The verbose output is as follows:
Code: Select all
Image: cmyk.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: DirectClass
Geometry: 512x512+0+0
Units: Undefined
Type: ColorSeparation
Endianess: Undefined
Colorspace: CMYK
Depth: 8-bit
Channel depth:
Cyan: 8-bit
Magenta: 8-bit
Yellow: 8-bit
Black: 8-bit
Channel statistics:
Pixels: 262144
Cyan:
min: 0 (0)
max: 72 (0.282353)
mean: 1.79726 (0.00704806)
standard deviation: 3.72136 (0.0145936)
kurtosis: 47.416
skewness: 5.43316
entropy: 0.399016
Magenta:
min: 0 (0)
max: 253 (0.992157)
mean: 125.014 (0.490251)
standard deviation: 47.6473 (0.186852)
kurtosis: -0.652454
skewness: -0.148786
entropy: 0.944862
Yellow:
min: 0 (0)
max: 251 (0.984314)
mean: 102.496 (0.401944)
standard deviation: 37.1756 (0.145787)
kurtosis: -0.059145
skewness: -0.787878
entropy: 0.923729
Black:
min: 0 (0)
max: 200 (0.784314)
mean: 74.5686 (0.292426)
standard deviation: 48.9337 (0.191897)
kurtosis: -0.757828
skewness: 0.713265
entropy: 0.94823
Image statistics:
Overall:
min: 0 (0)
max: 253 (0.992157)
mean: 75.9689 (0.297917)
standard deviation: 60.5663 (0.237515)
kurtosis: -1.17537
skewness: 0.210133
entropy: 0.803959
Total ink density: 232.157%
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 512x512+0+0
Dispose: Undefined
Iterations: 0
Compression: JPEG
Quality: 92
Orientation: Undefined
Properties:
date:create: 2017-07-21T02:09:04-04:00
date:modify: 2017-07-21T02:09:04-04:00
jpeg:colorspace: 4
jpeg:sampling-factor: 1x1,1x1,1x1,1x1
signature: 2f2a7182c3f2f90d774e99f66475a1e3af04007d49c1cc05507865b700eb6592
Artifacts:
verbose: true
Tainted: False
Filesize: 195767B
Number pixels: 262144
Pixels per second: 37.4493MB
User time: 0.016u
Elapsed time: 0:01.006
Version: ImageMagick 7.0.6-1 Q16 x64 2017-07-15 http://www.imagemagick.org
Code: Select all
PNG* PNG rw- Portable Network Graphics (libpng 1.6.29)
See http://www.libpng.org/ for details about the PNG format.
PNG00* PNG rw- PNG inheriting bit-depth, color-type from original, if possible
PNG24* PNG rw- opaque or binary transparent 24-bit RGB (zlib 1.2.9)
PNG32* PNG rw- opaque or transparent 32-bit RGBA
PNG48* PNG rw- opaque or binary transparent 48-bit RGB
PNG64* PNG rw- opaque or transparent 64-bit RGBA
PNG8* PNG rw- 8-bit indexed with optional binary transparency
-
- Posts: 8
- Joined: 2017-07-19T03:56:37-07:00
- Authentication code: 1151
Re: How to simulate CMYK decoded as RGB?
Can't believe I didn't read your post more clearly - yea it looks like dropbox is fudging things. Depending on how you save the image from their site, it will add the profile or give you the original untouched source. Here's a zip with the original files, hopefully dropbox can't malform them then
https://www.dropbox.com/s/vp7pzgyt6vb8vd3/cmyk.zip?dl=0
https://www.dropbox.com/s/vp7pzgyt6vb8vd3/cmyk.zip?dl=0
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: How to simulate CMYK decoded as RGB?
Your two files are quite different. The "correct" one is CMYK. The "bad" one is sRGB.
I do not understand what you are trying to do and why? What was the ImageMagick command used to make the "bad" one? What did you do to create the "good" one?
Code: Select all
Image: cmyk.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: DirectClass
Geometry: 512x512+0+0
Units: Undefined
Type: ColorSeparation
Endianess: Undefined
Colorspace: CMYK
Depth: 8-bit
Channel depth:
cyan: 8-bit
magenta: 8-bit
yellow: 8-bit
black: 8-bit
Channel statistics:
Pixels: 262144
Cyan:
min: 0 (0)
max: 72 (0.282353)
mean: 1.79731 (0.00704826)
standard deviation: 3.72137 (0.0145936)
kurtosis: 47.4156
skewness: 5.43311
entropy: 0.399022
Magenta:
min: 0 (0)
max: 253 (0.992157)
mean: 125.014 (0.49025)
standard deviation: 47.6472 (0.186852)
kurtosis: -0.652458
skewness: -0.148792
entropy: 0.944862
Yellow:
min: 0 (0)
max: 251 (0.984314)
mean: 102.496 (0.401944)
standard deviation: 37.1756 (0.145787)
kurtosis: -0.0591612
skewness: -0.787875
entropy: 0.92373
Black:
min: 0 (0)
max: 200 (0.784314)
mean: 74.5686 (0.292426)
standard deviation: 48.9337 (0.191897)
kurtosis: -0.757827
skewness: 0.713265
entropy: 0.948229
Image statistics:
Overall:
min: 2 (0.00784314)
max: 255 (1)
mean: 179.031 (0.702083)
standard deviation: 60.5663 (0.237515)
kurtosis: -1.17538
skewness: 0.210131
entropy: 0.803961
Total ink density: 232.157%
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Background color: cmyk(255,255,255,0)
Border color: cmyk(223,223,223,0)
Matte color: cmyk(189,189,189,0)
Transparent color: cmyk(0,0,0,0)
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 512x512+0+0
Dispose: Undefined
Iterations: 0
Compression: JPEG
Quality: 92
Orientation: Undefined
Properties:
date:create: 2017-07-20T23:28:13-07:00
date:modify: 2017-07-19T07:51:40-07:00
jpeg:colorspace: 4
jpeg:sampling-factor: 1x1,1x1,1x1,1x1
signature: 709c112052f908e0223ef07da691c67349a277791cf29133b6250f1167491a6d
Artifacts:
filename: cmyk.jpg
verbose: true
Tainted: False
Filesize: 195767B
Number pixels: 262144
Pixels per second: 26.2144MB
User time: 0.010u
Elapsed time: 0:01.009
Version: ImageMagick 6.9.9-0 Q16 x86_64 2017-07-16 http://www.imagemagick.org
Code: Select all
Image: cmyk_incorrectly_decoded.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 512x512+0+0
Resolution: 37.8x37.8
Print size: 13.545x13.545
Units: PixelsPerCentimeter
Type: TrueColorAlpha
Endianess: Undefined
Colorspace: sRGB
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 1-bit
Channel statistics:
Pixels: 262144
Red:
min: 75 (0.294118)
max: 255 (1)
mean: 181.326 (0.711081)
standard deviation: 40.4909 (0.158788)
kurtosis: -0.822027
skewness: -0.546814
entropy: 0.949539
Green:
min: 29 (0.113725)
max: 249 (0.976471)
mean: 119.69 (0.469373)
standard deviation: 43.0388 (0.16878)
kurtosis: -0.672884
skewness: 0.132667
entropy: 0.951982
Blue:
min: 34 (0.133333)
max: 221 (0.866667)
mean: 102.647 (0.402539)
standard deviation: 31.3499 (0.122941)
kurtosis: -0.0195183
skewness: 0.695498
entropy: 0.915276
Alpha:
min: 255 (1)
max: 255 (1)
mean: 255 (1)
standard deviation: 0 (0)
kurtosis: -3
skewness: 0
entropy: nan
Image statistics:
Overall:
min: 0 (0)
max: 255 (1)
mean: 154.084 (0.604252)
standard deviation: 73.2801 (0.287373)
kurtosis: -1.09992
skewness: -0.000353022
entropy: nan
Rendering intent: Perceptual
Gamma: 0.45455
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Background color: white
Border color: srgba(223,223,223,1)
Matte color: grey74
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 512x512+0+0
Dispose: Undefined
Iterations: 0
Compression: Zip
Orientation: Undefined
Properties:
date:create: 2017-07-20T23:28:13-07:00
date:modify: 2017-07-19T07:54:36-07:00
png:bKGD: chunk was found (see Background color, above)
png:cHRM: chunk was found (see Chromaticity, above)
png:gAMA: gamma=0.45454544 (See Gamma, above)
png:IHDR.bit-depth-orig: 8
png:IHDR.bit_depth: 8
png:IHDR.color-type-orig: 6
png:IHDR.color_type: 6 (RGBA)
png:IHDR.interlace_method: 0 (Not interlaced)
png:IHDR.width,height: 512, 512
png:pHYs: x_res=3780, y_res=3780, units=1
png:sRGB: intent=0 (Perceptual Intent)
png:text: 2 tEXt/zTXt/iTXt chunks were found
signature: 1753dbe34ebca0d24802b4e63474369496ef8699fdb46ddbbbe11a7344600575
Artifacts:
filename: cmyk_incorrectly_decoded.png
verbose: true
Tainted: False
Filesize: 496175B
Number pixels: 262144
Pixels per second: 26.2144MB
User time: 0.010u
Elapsed time: 0:01.009
Version: ImageMagick 6.9.9-0 Q16 x86_64 2017-07-16 http://www.imagemagick.org
-
- Posts: 8
- Joined: 2017-07-19T03:56:37-07:00
- Authentication code: 1151
Re: How to simulate CMYK decoded as RGB?
Like it says in the title, I'm trying to simulate CMYK colorspace images being (incorrectly) decoded as RGB (well technically sRGB) by non-compliant software. (eg, ms paint, windows photo viewer, don't know of any non-compliant decoders that are cross platform yet.
I understand that this is an unconventional request.
convert Lenna.png -colorspace CMYK cmyk.jpg, then opened in ms paint, and saved as PNG.What was the ImageMagick command used to make the "bad" one?
(the latter part is what I am trying to simulate, outdated non-compliant software)
convert Lenna.png -colorspace CMYK cmyk.jpgWhat did you do to create the "good" one?
-
- Posts: 12159
- Joined: 2010-01-23T23:01:33-07:00
- Authentication code: 1151
- Location: England, UK
Re: How to simulate CMYK decoded as RGB?
If it was misinterpreting CMYK as sRGB, you might get something like this:
Code: Select all
convert lena.png -colorspace CMYK -separate -delete 3 -set colorspace sRGB -combine -quality 40 bad_lena.jpg
snibgo's IM pages: im.snibgo.com
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: How to simulate CMYK decoded as RGB?
PNG does not support CMYK. What your software does to "treat" it as sRGB is unknown. Perhaps it just drops the K channel and has CMY put into the RGB channels or perhaps negates them first.
But what I don't understand is why you want to recreate such bad behavior? Why not just convert properly?
But what I don't understand is why you want to recreate such bad behavior? Why not just convert properly?