01:01 | SashaC | joined the channel | |
02:30 | Bertl | off for a nap ... bbl
| |
02:31 | SashaC | rest well Bertl
| |
04:35 | troy_s | Bertl: FANTASTIC Bertl !!!
| |
04:35 | troy_s | Bertl: I have been slugging on the Axiom lab app... no matrix yet. :(
| |
04:35 | troy_s | Bertl: 12 mean error is crap. You can use profcheck to get DE values
| |
04:36 | troy_s | Bertl: DE 1.0 is undetectable. (less than)
| |
04:36 | troy_s | Bertl: Use DE2000
| |
04:36 | troy_s | (our current matrices are probably de 14 :))
| |
04:36 | troy_s | (as in crap)
| |
06:51 | Bertl | back now ...
| |
06:53 | Bertl | so you've been giving me crap all the time :)
| |
07:08 | troy_s | Bertl: Always.
| |
07:08 | Bertl | appreciate it, but seriously, any idea what the problem with the calibration is?
| |
07:09 | Bertl | gabe hat similar issues with similar results (like 12-15%)
| |
07:09 | troy_s | Bertl: To be fair, all Gabe and I do is take the crap you two give us and reshape it into different crap. Lulz.
| |
07:09 | troy_s | Bertl: Well he and I were using your shot
| |
07:09 | troy_s | Bertl: Which is inconsistently lit (top to bottom) and sub exposed.
| |
07:09 | Bertl | okay, so let's say that one is crap, no problem with that, why don't we get better results with new shots?
| |
07:10 | troy_s | Bertl: Se6's are very exhaustive
| |
07:10 | troy_s | Bertl: But I haven't seen them debayered with VNG yet. I was going to kill two birds and use the lab.
| |
07:10 | Bertl | and as you say, uneven lighting, could this be the main issue?
| |
07:11 | troy_s | Bertl: Because Gabe didn't see them yet (I remember Se6 taking the shots, but I hadn't looked)
| |
07:11 | troy_s | Bertl: It is also a scanner image.
| |
07:11 | troy_s | Bertl: So we may be fighting a few things.
| |
07:11 | Bertl | okay, we haven't found a 'camera' chart yet
| |
07:11 | troy_s | Bertl: 1) Lack of daylight shot. We couldn't do it previously as the prototype was hard mounted.
| |
07:12 | Bertl | IIRC, somebody suggested to send us one, but then didn't
| |
07:12 | troy_s | 2) Chart might be decayed and likely sub optimal due to scanner.
| |
07:12 | troy_s | (I think Se6 bought a new one)
| |
07:12 | Bertl | sebastian has a new IT8 chart, yes
| |
07:12 | troy_s | 3) I haven't twiddled enough yet.
| |
07:12 | Bertl | it is again a 'scanner' chart, as they do not sell anything else AFAIC
| |
07:13 | Bertl | *AFAIK
| |
07:13 | troy_s | Hrm. Wolf had a camera chart I thought.
| |
07:14 | Bertl | maybe but please double check with sebastian, I had a quick look at the ITU docu, and it doesn't really differentiate between scanner or camera
| |
07:14 | troy_s | C1
| |
07:14 | troy_s | http://www.targets.coloraid.de
| |
07:14 | Bertl | they only have reflective and non-reflective charts
| |
07:14 | troy_s | Yep
| |
07:14 | Bertl | and IIRC, your suggestion was to take the reflective one
| |
07:14 | troy_s | I am unsure. I suspect the camera charts have some anti-yellowing twinges to pull the illuminant to more neutral
| |
07:15 | Bertl | on the page you linked: Wolf Faust is manufacturing reflective and transmissive scanner calibration targets
| |
07:15 | troy_s | Well a glossy chart has a wider gamut, but more difficult to shoot.
| |
07:15 | troy_s | Yes look at C1
| |
07:15 | troy_s | Bertl: But again, we are miles away from a high grade calibration
| |
07:16 | troy_s | Bertl: Eventually a Hutch or something would probably be something to aim for.
| |
07:16 | troy_s | Bertl: I just want to get to a 2de zone
| |
07:16 | Bertl | yes, I agree, but it annoys me that we do not even have a basic 'working' calibration
| |
07:16 | troy_s | Which is more than satisfactory for me.
| |
07:16 | troy_s | Bertl: Part of it is me. I need to do calibs on the new images.
| |
07:16 | troy_s | Bertl: If you can tiff 16 that link se6 sent us
| |
07:16 | Bertl | btw, the matrix you gave last time has coefficients up to 12
| |
07:17 | troy_s | I will do some more tests tomorrow
| |
07:17 | troy_s | Bertl: Exposure proble.
| |
07:17 | Bertl | that looks somewhat fishy to me with 'red' around 2 or so
| |
07:17 | troy_s | I had one that had correct exposure, but the mean error was 13.9
| |
07:17 | troy_s | Which is bad
| |
07:17 | Bertl | i.e. first, I presume it needs to be inverted/transposed
| |
07:17 | troy_s | Basically our chart shot stinks
| |
07:18 | troy_s | But seb's new ones look exhaustibe
| |
07:18 | troy_s | exhaustive
| |
07:18 | Bertl | but still, that means that green/red or red/green is a factor of 6, which is almost a magnitude higher?
| |
07:18 | troy_s | With well noted color temp etc. I want to generate a neutral (as in color temp is achromatic equal channel)
| |
07:18 | troy_s | Well the curves are wonk
| |
07:19 | troy_s | Relatively smooth, but wonk
| |
07:19 | troy_s | which I _think_ is because our chart shot sucked
| |
07:19 | troy_s | Linear 16 bit TIFFs of the new batch would be excellent
| |
07:20 | troy_s | The software lab is still a ways off.
| |
07:20 | troy_s | (much dickery to get things working for forward thinking items)
| |
07:20 | troy_s | (EG: An image cache for multiple frames, scrubbing, scrobbling image, etc.)
| |
07:21 | troy_s | I have about 98% of that done, just need to cooy / paste some code.
| |
07:21 | troy_s | Then I can do up some OCIO configs and we are home free.
| |
07:21 | troy_s | A viewer app that will spit out TIFFs and EXRs and DPXs with full color management.
| |
07:21 | Bertl | just use the raw16 and convert them like this:
| |
07:22 | Bertl | convert \( -size 4096x3072 -depth 16 gray:IT8_incand.raw16 \) \( -clone 0 -crop -1-1 \) \( -clone 0 -crop -1+0 \) \( -clone 0 -crop +0-1 \) -sample 2048x1536 \( -clone 0,1 -average \) -delete 0,1 +swap -combine IT8_incand.tiff
| |
07:22 | troy_s | Crappers.
| |
07:22 | troy_s | What does sample do?
| |
07:22 | troy_s | That is some IM fu there.
| |
07:22 | Bertl | reduce the pixels to separate the bayer pattern
| |
07:23 | troy_s | How does it interp the RGGB mosaic?
| |
07:23 | Bertl | this is a simple/primitive debayer, we have it on the wiki since I came up with that
| |
07:23 | Bertl | i.e. it overlays R,(g1+g2)/2,B
| |
07:23 | troy_s | Genius boy.
| |
07:24 | troy_s | Are the greens at the same gain?
| |
07:24 | Bertl | there is a small variation if you have flipped images
| |
07:24 | troy_s | Ok I will do that now.
| |
07:24 | Bertl | convert \( -size 4096x3072 -depth 16 gray:colors_500ms.raw16 \) \( -clone 0 -crop -1-1 \) \( -clone 0 -crop -1+0 \) \( -clone 0 -crop +0-1 \) -sample 2048x1536 \( -clone 2,3 -average \) -delete 2,3 -swap 0,1 +swap -combine colors_500ms.tiff
| |
07:25 | Bertl | this is for flipped ones, which should be the default now as it gives 'normal' looking images :)
| |
07:25 | Bertl | i.e. if the first one looks wrong, take the second one :)
| |
07:25 | troy_s | Which ones are flipped?
| |
07:25 | troy_s | And why?
| |
07:25 | troy_s | (Haven't been following the transitions.)
| |
07:25 | Bertl | the sensor can do image flipping, horizontal and vertical
| |
07:26 | troy_s | Does that change the RGGB alignment?
| |
07:26 | Bertl | in the beginning, I turned that off, so the early images are not flipped
| |
07:26 | troy_s | (Asking because my debayer will obviously need to know)
| |
07:26 | troy_s | Need a bash script to do that.
| |
07:26 | troy_s | Hrm...
| |
07:26 | Bertl | yes, the pattern is flipped as well, i.e. RGGB becomes GBRG
| |
07:26 | troy_s | Ok. I guess I'll include all debayers then
| |
07:27 | troy_s | Is there a simple bash script on the wiki?
| |
07:27 | troy_s | I'm going to decode them all.
| |
07:27 | Bertl | bash script for what exactly?
| |
07:27 | troy_s | (Does Imagemagick try to apply a tone curve to the data or does it dump the raw linear values?)
| |
07:27 | troy_s | To convert the images.
| |
07:27 | Bertl | well, the lines I pasted here are all you need
| |
07:28 | Bertl | they are listed here for reference: https://wiki.apertus.org/index.php?title=Axiom_Alpha_Software#Simple_debayer_with_ImageMagick:
| |
07:28 | troy_s | Converting batch 3 now.
| |
07:28 | troy_s | (Not sure the difference in batches.)
| |
07:28 | SashaC | left the channel | |
07:28 | Bertl | and AFAIK, imagemagic doesn't apply anything unless you specify extra spaces
| |
07:28 | Bertl | which you can easily do
| |
07:29 | Bertl | (e.g. with -colorspace)
| |
07:30 | troy_s | Well that thing was riddled with bugs
| |
07:30 | Bertl | a good way to check is with the test pattern
| |
07:30 | troy_s | I can't count the number of forum posts.
| |
07:30 | Bertl | let me see if I have that uploaded somewhere
| |
07:30 | troy_s | I only care about linear
| |
07:30 | troy_s | If you can do a quick test that'd be awesome.
| |
07:30 | Bertl | yes, the test pattern is 0 1 2 3 4 5 ... 127, then 1 2 3 4 5 ... 128 ...
| |
07:30 | troy_s | (The PNGs I have _no_ way of knowing, but I do know that PNGs are enforced sRGB so any tool should actually be assuming a transfer curve.
| |
07:31 | Bertl | so it should be easy to check with a histogram on the resulting tiff
| |
07:31 | troy_s | With the test pattern raw data sample?
| |
07:31 | Bertl | yep
| |
07:31 | troy_s | Where's the tester?
| |
07:32 | troy_s | (Is the Hist tool listed on the wiki?)
| |
07:32 | troy_s | (By the way, OIIO has some image buffer algos that are at least as effective, plus OIIO is specifically crafted for scene referred images - a great toolset for this project.)
| |
07:33 | troy_s | (I did a test with a DNG by loading it as a tiff (rename) then resaving it as a TIFF. Worked great. In fact, probably the easiest way to get to a DNG by supplying tags. Yet to test this though)
| |
07:33 | troy_s | I see the hist command on the wiki
| |
07:33 | Bertl | http://vserver.13thfloor.at/Stuff/AXIOM/RAW/test_pattern.raw16.xz
| |
07:34 | Bertl | if you like, I can also create an artificial one with full gray range
| |
07:34 | Bertl | (this one is the actual built in sensor test pattern)
| |
07:35 | troy_s | Damn. Looks full frame
| |
07:35 | troy_s | But something is wrong methinks.
| |
07:35 | troy_s | (Slightly rotated, but Argyll can deal with that)
| |
07:35 | troy_s | Colors look whack. Green. Would that be wrong flip?
| |
07:36 | Bertl | probably, try the other line
| |
07:37 | Bertl | since a few days I've been playing with the HDMI output now, and I've added a shuffle unit to rearrange the bit pattern, you wouldn't believe how 'good' wrong colors can look :)
| |
07:37 | troy_s | That's it.
| |
07:38 | troy_s | Should write a quickie bash script that does both commands and toggles based on a CLI param.
| |
07:38 | troy_s | Shuffle does what Bertl?
| |
07:38 | Bertl | you could actually figure out the right one from the register dump at the end
| |
07:39 | Bertl | @shuffle, do you want a technical explanation or a simple one?
| |
07:42 | troy_s | Bertl: How about a middle ground.
| |
07:43 | troy_s | Bertl: A technical explanation for someone with an IQ of about 40.
| |
07:43 | Bertl | okay, let's try: it cuts a packed 64bit word into 4bit pieces and rearranges the order according to a configureable scheme
| |
07:45 | Bertl | so for example, 0123456789ABCDEF -> 01245689ACDE37BF
| |
07:46 | Bertl | this allows to accomodate the different formats the HDMI chip understands, but it also allows to swap channels
| |
07:47 | Bertl | so for example, swapping one green with the red channel gives really cool images :)
| |
07:48 | Bertl | pure green becomes yellow, red becomes green, yellow gets more orange, blue stays the same
| |
07:48 | troy_s | Damn. Having an error with scanin
| |
07:56 | troy_s | Odd
| |
07:56 | troy_s | Rotate is sucking
| |
07:56 | troy_s | convert foo.tiff -rotate 10 foobar.tiff
| |
07:56 | troy_s | is giving me tif_dirwrite.c TIFFWriteDirectoryTagCheckedRational: Assertion 'value>=0.0' failed.
| |
07:57 | Bertl | try with png? :)
| |
07:57 | troy_s | Again, PNG is junk. Argyll won't read it and it cannot be linear.
| |
07:57 | troy_s | :)
| |
07:58 | Bertl | try with .png, then convert it to tiff
| |
07:58 | Bertl | I presume imagemagick tries to be smart and not rotate the image at all
| |
07:58 | troy_s | And what's betting Imagemagick will convert the transfer curve?
| |
07:58 | Bertl | i.e. just specify a magic tiff tag that it is rotated
| |
07:58 | troy_s | Huh?
| |
07:58 | troy_s | I don't get it.
| |
07:58 | troy_s | WriteDirectoryTag is an odd one.
| |
07:59 | Bertl | I presume, one of the many tiff tag says, rotate this image by N degree
| |
07:59 | Bertl | and so, imagemagick being lazy does not want to rotate it at all, just sets a flag, this image needs to be rotated by N degree
| |
08:00 | Bertl | and as this is not well tested/your tools are out of date, it causes an obscure error
| |
08:03 | Bertl | it should be simple to check the transfer curve theory, by converting a tiff to png and back to tiff, then comparing the two tiff images (original and converted one)
| |
08:03 | troy_s | GRRRRR WHY is it failing loading the IT8 reference chart values in the Argyll dir????
| |
08:03 | troy_s | Grr.
| |
08:24 | troy_s | About to give up
| |
08:24 | troy_s | Bertl: I can't seem to crop the blasted images down to the chart only and get the rotate decent
| |
08:24 | troy_s | Imagemagick is a gongshow nightmare of segfaults
| |
08:24 | Bertl | what version/OS do you use?
| |
08:25 | troy_s | I'm on a Linux
| |
08:25 | troy_s | And god I hate it.
| |
08:25 | Bertl | and why not process it in steps as suggested and only convert the image at the end to tiff?
| |
08:25 | troy_s | (I've come to hate Imagemagick. So crap)
| |
08:25 | troy_s | I've been trying that.
| |
08:26 | troy_s | But the crop function is crap
| |
08:26 | Bertl | maybe you use it wrong or misinterpret what it does?
| |
08:26 | troy_s | -crop 1841x1305+149+116
| |
08:26 | troy_s | No. It's pretty much crap.
| |
08:27 | troy_s | Crop should give you a window (if you follow it with a !) that is widthxheight+xoffset+yoffset
| |
08:27 | Bertl | maybe add +repage ?
| |
08:27 | Bertl | http://www.imagemagick.org/Usage/crop/
| |
08:28 | Bertl | also be careful with unescaped '!' on a (ba)sh
| |
08:29 | Bertl | http://www.imagemagick.org/Usage/crop/#crop_repage
| |
08:29 | troy_s | Done the repage
| |
08:29 | troy_s | Keeps telling me no image is left
| |
08:29 | troy_s | (and I always escape it)
| |
08:30 | Bertl | okay, can you give me the complete command you are trying?
| |
08:30 | Bertl | note that the command you used before might have left an image with offsets
| |
08:30 | Bertl | check that with 'file <image>'
| |
08:31 | Bertl | (because you were missing the +repage before)
| |
08:32 | Bertl | no, sorry, check with:
| |
08:32 | Bertl | identify <image>
| |
08:32 | Bertl | it might show you an offset +x+y on the input image
| |
08:32 | Bertl | thus the specified crop region might be outside the actual image data
| |
08:33 | troy_s | Hold.
| |
08:33 | troy_s | First I did a crap dump to PNG because ImageMagick sucks donkey ween.
| |
08:33 | troy_s | Then I cropped using:
| |
08:33 | troy_s | convert ./out.png -crop 181x135+149+116\! +repage ./test-crop.png
| |
08:33 | troy_s | and that shits the bed
| |
08:34 | troy_s | (I actually wanted a much larger image, but it too shits the bed in ways only Imagemagick can)
| |
08:34 | troy_s | convert ./out.png -crop 1841x1305+149+116\! +repage ./test-crop.png
| |
08:34 | troy_s | Super Bed Shit.
| |
08:34 | troy_s | So frustrating.
| |
08:36 | troy_s | Format: TIFF (Tagged Image File Format)
| |
08:36 | troy_s | Class: DirectClass
| |
08:36 | troy_s | Geometry: 2084x1584+0+0
| |
08:36 | troy_s | So the resolution is larger than my crop window.
| |
08:41 | troy_s | God. I. Hate. The. Tools.
| |
08:43 | troy_s | Yay bugs
| |
08:43 | troy_s | I think I have negotiated it
| |
08:43 | troy_s | What junk
| |
08:45 | troy_s | Spoke. Too. Soon.
| |
08:45 | Bertl | well, I can't complain here, it works just fine for me, it is not one of the most intuitive tools out there but in my experience it gets the job done
| |
08:45 | Bertl | so maybe upload a complete script from .raw16 to your problem then I can take a look
| |
08:47 | troy_s | And ARGYLL BUG
| |
08:47 | troy_s | This is so awesome.
| |
08:47 | troy_s | Good luck... Here's what I've tried to do:
| |
08:48 | troy_s | (I got the buggy shitbag of IM to finally crop and rotate the image)
| |
08:48 | Bertl | btw, if you just want to cut out the chart, it is simple to do with the perspective transform
| |
08:48 | troy_s | Take seb's 3rd set of images
| |
08:48 | Bertl | just find the 4 corner points and use them as input
| |
08:48 | troy_s | 1) I randomly picked the 15ms
| |
08:49 | troy_s | 2) Rotate it and crop it or use the perspective tool.
| |
08:49 | troy_s | 3) Generate a tiff.
| |
08:49 | troy_s | (linear)
| |
08:49 | troy_s | then try scanin -v -G1.0 ./test.tiff /usr/share/color/argyll/ref/it8.cht ~/Develop/raws/R100604.txt
| |
08:49 | Bertl | can you do an md5sum <image> for me?
| |
08:49 | Bertl | so that we have the same source .raw16 image
| |
08:50 | troy_s | 7ffcf417c906fccaf180d739a9d484af
| |
08:50 | troy_s | ls
| |
08:51 | troy_s | scanin will either segfault (using repository Argyll) or bail out.
| |
08:51 | troy_s | Which is... well wrong.
| |
08:51 | Bertl | 7ffcf417c906fccaf180d739a9d484af IT8-tungsten-halogen-Run03-9.1.2014/IT8-tungsten-halogen-Run03-9.1.2014-15ms.raw16
| |
08:51 | troy_s | That's the one.
| |
08:51 | troy_s | 15ms.
| |
08:55 | troy_s | Bertl: Perspective is top left, top right bottom left bottom right?
| |
08:59 | Bertl | yes
| |
08:59 | Bertl | -distort Perspective '254,144 48,48 1876,188 2000,48 233,1242 2000,1488 1854,1275 48,1488' should work
| |
09:00 | Bertl | nope, sorry
| |
09:00 | troy_s | Why 48,48?
| |
09:00 | troy_s | Why not just scale it to original size?
| |
09:01 | Bertl | -distort Perspective '254,144 48,48 1876,188 2000,48 1854,1275 2000,1488 233,1242 48,1488'
| |
09:01 | Bertl | because that gives the correct source for the perfect chart :)
| |
09:01 | troy_s | at 2000x1488?
| |
09:02 | Bertl | yes, I wanted a border reference of 48 pixels
| |
09:02 | troy_s | read_line is erroring for me on scanin
| |
09:03 | troy_s | ARRGGGHHHHHHHFFHFHFHFHFFUFUUUU
| |
09:04 | troy_s | scanin: Error - CGATS file '/home/aphorism/Develop/raws/R100604.txt' read error : Read line got symbol
| |
09:04 | troy_s | '��������������������������������¿����������ü��������������������������������������������������������������������������������������������������������
| |
09:04 | troy_s | ��������������������������������������������������������������������������Ŀ�������������������������������������������������������������������������
| |
09:04 | troy_s | ���������������������������������������������������������������������������������������������������������������������������������������������������ï¿
| |
09:04 | troy_s | ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï
| |
09:04 | troy_s | ¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
| |
09:04 | troy_s | ���������������������������������������������������������������������������������������������������������������������������������������������������ï¿
| |
09:04 | troy_s | ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½' that's too long
| |
09:04 | troy_s | That's a great error.
| |
09:04 | Bertl | convert \( -size 4096x3072 -depth 16 gray:IT8-tungsten-halogen-Run03-9.1.2014/IT8-tungsten-halogen-Run03-9.1.2014-15ms.raw16 \) \( -clone 0 -crop -1-1 \) \( -clone 0 -crop -1+0 \) \( -clone 0 -crop +0-1 \) -sample 2048x1536 \( -clone 0,1 -average \) -delete 0,1 +swap -combine +repage -distort Perspective '254,144 48,48 1876,188 2000,48 1854,1275 2000,1488 233,1242 48,1488' IT8-tungsten-halogen-Run03-9.1.2014/IT8-tungsten-halogen-Run03-9.1.2014-15ms_c
| |
09:05 | Bertl | here, that gives the tiff you want without any problems
| |
09:06 | troy_s | apparently a bugger on larger images
| |
09:06 | troy_s | Trying smaller.
| |
09:06 | troy_s | Still bombing.
| |
09:07 | Bertl | and scanin runs fine, results are here:
| |
09:07 | troy_s | Good god.
| |
09:07 | Bertl | http://vserver.13thfloor.at/Stuff/AXIOM/RAW/IT8-tungsten-halogen-Run03-9.1.2014-15ms_cut.ti3
| |
09:07 | troy_s | All of my Argyll's die
| |
09:07 | troy_s | Now try this on that result:
| |
09:08 | Bertl | http://pastebin.com/wnnYJs94
| |
09:08 | troy_s | colprof -v -D"Berts Camera Matrix" -qh -am -u tungsten-halogen-RunBLAHBLAHBLAH (without the ti3)
| |
09:09 | Bertl | Matrix = 0.107625 1.044939 -0.850347 -0.150982 1.577119 -1.062272 -0.256328 0.420066 1.000908
| |
09:09 | Bertl | Profile check complete, peak err = 58.453423, avg err = 17.580975
| |
09:09 | troy_s | Error
| |
09:09 | troy_s | Fuuuuuu
| |
09:09 | troy_s | I'd need to check on how underexposed it is.
| |
09:09 | troy_s | That's the quickie version.
| |
09:10 | troy_s | If you batch that on all of the images
| |
09:10 | troy_s | I'd be interested in the lowest mean
| |
09:12 | troy_s | Bertl: This is the command to generate meaningful delta e's - which again, 1.0 or less is the discernable to average standard observer
| |
09:13 | troy_s | Bertl: profcheck -v 2 -k input.ti3 outputicc.icc
| |
09:13 | troy_s | and you can plot the curves using
| |
09:13 | troy_s | xicclu -g -f b output.icc
| |
09:14 | troy_s | -U in the colprof will apply a linear multiplier to get to 100 L
| |
09:14 | troy_s | (Which is basically needed to 'stretch' the values to the full range)
| |
09:14 | troy_s | a near perfect profile will show you three curves
| |
09:15 | troy_s | from 100 to 100
| |
09:19 | troy_s | Odd how fanned out the blasted curves are (Got mine to work)
| |
09:20 | troy_s | Likely due to the Tungsten source methinks.
| |
09:21 | troy_s | Average DE 10.5
| |
09:21 | troy_s | LOL
| |
09:21 | troy_s | That's ... uh... not good.
| |
09:25 | troy_s | Bertl: I'm going to bed it. You can also plop the values into Calc and read them (start at the row with the values and use spaces to separate)
| |
09:25 | troy_s | Bertl: That will give you some idea as to the readings.
| |
09:25 | Bertl | http://pastebin.com/FjHgjt8A
| |
09:26 | Bertl | so you already picked the best one :)
| |
09:26 | troy_s | Fluke
| |
09:26 | troy_s | Egads.
| |
09:26 | troy_s | I think we desperately need a Daylight shot to really figure out what is going on.
| |
09:27 | troy_s | (Properly exposed)
| |
09:27 | troy_s | I was JUST looking at the RGB values
| |
09:27 | guest | if that chart made a curve in blue or what i have noticed you talked about, then with linear matrix you are getting big errors, or does the error relate to a 3d lut ?
| |
09:27 | troy_s | and coincidentally the Greens are coming in at 99.977 which was a flukey guess
| |
09:27 | troy_s | Did you plot them using xicclu?
| |
09:27 | troy_s | You can see three fanned out curves
| |
09:27 | troy_s | I suspect our lighting sucks ass.
| |
09:28 | Bertl | guest: yes that would definitely explain the error, but nobody could explain those error values to me (yet)
| |
09:28 | troy_s | Bertl: Again, use profcheck
| |
09:28 | guest | what about running calibration on my chart, to see how much does it differ (e.g. problem of a source/exposure)
| |
09:28 | troy_s | Bertl: DE is a known idea of value - where < 1.0 is not discernable. > 1.0 is.
| |
09:29 | troy_s | guest: I have a hunch it's crap lighting or a decayed chart or... who knows.
| |
09:29 | guest | troy_s: but the number is linear (e.g. %) or logarithmic (like bits / dB)
| |
09:29 | guest | that is the most interesting question about DE
| |
09:29 | philippej | joined the channel | |
09:29 | Bertl | profcheck gives me a usage message
| |
09:30 | troy_s | guest: Google DE2000 or DE76
| |
09:30 | troy_s | Bertl: Using the commands I listed?
| |
09:30 | Bertl | ah, it needs the icc, where do I get the icc from?
| |
09:30 | troy_s | profcheck -v2 -k foo.ti3 foo.icc
| |
09:30 | troy_s | Bertl: Look in the directory
| |
09:31 | troy_s | Bertl: It will have created the ICC (matrix format) in there after colprof.
| |
09:31 | troy_s | :)
| |
09:31 | troy_s | scanin reads the chart
| |
09:31 | troy_s | colprof creates the color profile
| |
09:31 | Bertl | http://pastebin.com/5rBxi7W6
| |
09:31 | troy_s | xicclu is an xwindows icc look up
| |
09:31 | troy_s | and profcheck we.... profile checkers
| |
09:32 | troy_s | try -v2
| |
09:32 | troy_s | no space
| |
09:32 | Bertl | nice
| |
09:32 | troy_s | ?
| |
09:32 | Bertl | yep, that does it
| |
09:33 | troy_s | Your average Delta-E 2000 is 10.529ish
| |
09:33 | troy_s | Si?
| |
09:33 | Bertl | give really nice curves
| |
09:33 | troy_s | I _think_ that is largely due to the Tungsten
| |
09:33 | troy_s | And perhaps the metamerism is causing a nightmare for the chart.
| |
09:34 | Bertl | red starts on 200 wossname, and goes down to zero on whatnot
| |
09:34 | troy_s | I don't recall it being that bad with pure tungsten light.
| |
09:34 | troy_s | But that tungsten is pretty damn warm
| |
09:34 | troy_s | Yes
| |
09:34 | troy_s | And a well behaved profile should have smooth curves like that
| |
09:34 | Bertl | blue around 75 wossname and also down to 0 whatnot
| |
09:34 | troy_s | but closer together
| |
09:34 | troy_s | not stacked
| |
09:34 | troy_s | and about 100 to 100
| |
09:34 | troy_s | guest: Delta-E 2000 is more perceptual based
| |
09:35 | troy_s | guest: Meaning that the errors are biased toward perception and particular hue ranges
| |
09:35 | Bertl | no idea, what does that plot tell me?
| |
09:35 | troy_s | That the curves are decent
| |
09:35 | troy_s | (as in the curve responses aren't abnormal aside from the values they are showing)
| |
09:35 | Bertl | okay, so that is the profile curve, yes?
| |
09:35 | troy_s | The color of the light illuminating the chart can cause the colors to reflect their saturation values wrongish.
| |
09:35 | troy_s | That's the profile curves.
| |
09:36 | philippej | would it be related to the fact that the sensor seems to provide better daylight images without correction? That tungsteen creates too much distortion vs sensor "native" white balance (I know it's not the proper term), and that when daylight is done, you can compute tungsteen ?
| |
09:37 | troy_s | philippej: The sensor _always_ needs a profile
| |
09:37 | Bertl | tungsten should really be a 'smooth' spectral light, i.e. no fancy peaks anywhere
| |
09:37 | guest | where is the picture (jpeg is enough) of the chart you try to use ?
| |
09:37 | philippej | or said otherwise, that the chart should be done with daylight
| |
09:37 | troy_s | philippej: What you are seeing is in fact random when you view the data dumped directly to a near-sRGB display.
| |
09:37 | troy_s | philippej: There is no such thing as meaningful RGBs - RGB by definition is a relative color model.
| |
09:37 | guest | philippej: unless the values are clipped, it is fine even if it is warm
| |
09:37 | troy_s | philippej: Meaning that you _must_ account for the primaries. Always.
| |
09:38 | Bertl | guest: it is a normal IT8 chart
| |
09:38 | troy_s | guest: Normally. But again, malformed light can twist the values into what amounts to what humans see as metamerism - some colors lose their color due to white point / color of the source.
| |
09:38 | philippej | still it looks more correct (or needing less corection) when it's daylight. What you call "damn warmish" :-)
| |
09:38 | troy_s | philippej: That's just the wrong way to think of color.
| |
09:38 | troy_s | philippej: It's why I prefer to show people in XYZ
| |
09:38 | troy_s | philippej: Because the models mean nothing. RGB is just Foo, Bar, Blick.
| |
09:39 | guest | Bertl: i meant the shot you pass to the color detector.. export it please to quickly viewable form
| |
09:39 | troy_s | philippej: Because it HAPPENS to sort of kind of look sort of kind of like a reddish tint
| |
09:39 | troy_s | philippej: Means nothing.
| |
09:39 | troy_s | philippej: That's just random chance garbage.
| |
09:39 | troy_s | guest: Hold.
| |
09:39 | troy_s | bear in mind this is a literal dump of the image to sRGB so what you are seeing is random
| |
09:40 | guest | i know, i want to check for other things for which i have made my calibs to take a week (in terms of exposing the chart correctly , and I still have no perfection in that )
| |
09:40 | guest | -i
| |
09:40 | troy_s | guest: It's not that hard.
| |
09:41 | Bertl | http://vserver.13thfloor.at/Stuff/AXIOM/RAW/IT8-tungsten-halogen-Run03-9.1.2014-15ms.jpg
| |
09:41 | troy_s | guest: and the most ideal
| |
09:41 | troy_s | guest: Is to tweak the values using a spradsheet
| |
09:41 | Bertl | I also uploaded the profile results
| |
09:41 | troy_s | to 'idealize' the scales
| |
09:41 | troy_s | I can explain that if you'd like, but likely tomorrow
| |
09:41 | troy_s | (You effectively will end up creating an achromatic white - perfectly scaled RGB)
| |
09:41 | troy_s | http://www.pasteall.org/pic/show.php?id=66837
| |
09:43 | guest | bad exposure, col 15 is mostly 0xFF
| |
09:43 | guest | in reds
| |
09:46 | troy_s | Shiiit
| |
09:46 | troy_s | Bertl: -i
| |
09:46 | troy_s | dammit
| |
09:46 | troy_s | colprof can take the illuminant
| |
09:46 | Bertl | guest: gives different values when sampled manually
| |
09:47 | troy_s | guest: scanin samples across mean
| |
09:47 | Bertl | troy_s: okay, so what command now?
| |
09:48 | troy_s | IIRC
| |
09:48 | troy_s | -i A
| |
09:48 | guest | those patches are clipped, so you cant do a calibration with that shot
| |
09:48 | troy_s | (Which SHOULD be illuminant A)
| |
09:48 | troy_s | (Aka 2848k)
| |
09:48 | troy_s | guest: They are NOT clipped
| |
09:48 | troy_s | guest: That's an 8 bit dump
| |
09:48 | troy_s | and I have no idea where you are seeing clips
| |
09:49 | troy_s | That's also a linear dump.
| |
09:49 | guest | split the image to R/G/B planes, and check in the red, col. 15
| |
09:49 | troy_s | guest: That's an 8 bit dump.
| |
09:49 | guest | except few bottom patches, they all are full
| |
09:49 | troy_s | HUH?
| |
09:56 | Bertl | http://vserver.13thfloor.at/Stuff/AXIOM/RAW/IT8-tungsten-halogen-Run03-9.1.2014-15ms_perfect.png
| |
09:57 | troy_s | Some patches suck ass
| |
09:57 | troy_s | pastelink.me/dl/a8778e
| |
09:57 | troy_s | that's the ODS of the data
| |
09:57 | Bertl | the 'tiff' version is still uploading (slightly larger :)
| |
09:57 | troy_s | you can see the swatches and the readings
| |
09:57 | troy_s | Bertl: Is there a 12 ms?
| |
09:57 | troy_s | guest: pastelink.me/dl/a8778e
| |
09:57 | troy_s | guest: CHANGE YOUR HANDLE TO YOUR DAMN NAME
| |
09:57 | troy_s | guest: YOU AREN'T A GUEST ANY MORE
| |
09:57 | troy_s | Lulz.
| |
09:57 | guest | :)
| |
09:58 | Bertl | yes, there is a 12ms version :)
| |
09:58 | troy_s | Bertl: Check out that ODS. Guest _does_ have a point with the heavy exposure on the red channel, but that said, the others worry me more (the higher DE versions)
| |
09:59 | guest | so lets see if it helps, reconnect
| |
09:59 | guest | left the channel | |
09:59 | troy_s | Ideally we'd love to see a 5400k
| |
09:59 | daniel | joined the channel | |
09:59 | daniel | thats luck
| |
10:00 | daniel | changed nick to: Guest32211
| |
10:00 | Guest32211 | ahh
| |
10:00 | Guest32211 | changed nick to: danieeel
| |
10:00 | Bertl | weeelcome danieeel! :)
| |
10:00 | danieeel | hello :)
| |
10:01 | troy_s | Greets
| |
10:01 | Bertl | I have to leave for a little, grab my snail-mail, bbs
| |
10:01 | troy_s | danieeel: http://trumpetpower.com/photos/Exposure#Normalizing_exposure
| |
10:01 | troy_s | That's also a useful linky on normalizing.
| |
10:04 | danieeel | troy_s: can metamerism happen with tungsten?
| |
10:04 | troy_s | In humans. :)
| |
10:05 | troy_s | But it adversely impacts reproduction of all colours to some extent as I understand it.
| |
10:05 | troy_s | (Shooting a red swatch in a blue light for example)
| |
10:05 | danieeel | but tungsten is not blue light.. is shall have all wavelenghts (unless those shots lack true blue)
| |
10:06 | danieeel | i did my calibration on cloudy sunlight
| |
10:07 | danieeel | what are the column names in the ODS file ?
| |
10:09 | troy_s | danieeel: Too blue
| |
10:09 | troy_s | danieeel: If you do it in cloud, your sky taints the kelvin.
| |
10:09 | troy_s | danieeel: ICCs are all based around D50
| |
10:10 | troy_s | danieeel: No matter what light you pick, you will bias the color swatches
| |
10:10 | danieeel | my point was rather to get correct images under skylight
| |
10:11 | troy_s | danieeel: Shoot in direct sun then, in a covered area
| |
10:11 | troy_s | danieeel: You want to eliminate the blue sky
| |
10:11 | troy_s | danieeel: And use only the 5400 sun.
| |
10:12 | jucar | left the channel | |
10:12 | troy_s | danieeel: XYZ RGB to answer your next question
| |
10:13 | danieeel | with that i can not yet find a location which is not colored - it would need to be some skate field or some grayins surroundins to do it correctly
| |
10:13 | danieeel | grayish
| |
10:18 | se6astian | joined the channel | |
10:35 | danieeel | se6astian: any chance to stop by in Prague for a quick image comparison ?
| |
10:36 | se6astian | good morning
| |
10:36 | se6astian | ah nice, I see you dont consider yourself a guest only anymore
| |
10:36 | se6astian | we can ask the pilot of our flight to berlin if he would mind a little detour ;P
| |
10:40 | danieeel | pull your camera and shout the correct words, they might instantly land :)
| |
10:42 | troy_s | Night all.
| |
10:42 | troy_s | danieeel: I'll step you through normalizing tomorrow
| |
10:42 | troy_s | danieeel: You basically take the XYZ values, figure out the multipliers and scale them all
| |
10:43 | troy_s | danieeel: Then add two sets of data for Black and White (reverse engineer 100, 0, 0 Lab to XYZ)
| |
10:43 | troy_s | Ok... nacht.
| |
10:55 | philippej | left the channel | |
10:59 | jucar | joined the channel | |
11:04 | jucar | left the channel | |
11:05 | jucar | joined the channel | |
11:09 | se6astian | left the channel | |
11:10 | jucar | left the channel | |
11:10 | jucar | joined the channel | |
11:28 | Bertl | back now ...
| |
11:40 | se6astian | joined the channel | |
12:02 | Bertl | wb se6astian!
| |
12:20 | se6astian | good morning :)
| |
16:23 | Bertl | off for a nap ... bbl
| |
16:39 | philippej | joined the channel | |
16:51 | se6astian | hey philippej
| |
16:58 | philippej | left the channel | |
17:14 | gwelkind | joined the channel | |
17:46 | philippej | joined the channel | |
17:53 | philippej | left the channel | |
18:16 | philippej | joined the channel | |
18:57 | se6astian | time to leave
| |
18:57 | se6astian | see you
| |
18:57 | se6astian | left the channel | |
19:12 | troy_s | Morning all.
| |
19:13 | troy_s | Bertl: Back for monkey work for a bit.
| |
19:13 | troy_s | Greets also to the regular peeps philippej danieeel gwelkind etc.
| |
19:21 | troy_s | danieeel: If you are around, I can try to explain how to normalize your whites (Essentially Wrong Von Kries AFAICT)
| |
19:21 | troy_s | danieeel: Which leads to exceptional profiles (even with WVK aka XYZ scaling)
| |
19:21 | danieeel | i do not need to (yet) - found another issue
| |
19:21 | troy_s | danieeel: I'd suggest at least trying it. You will A) learn much and B) end up with the 'best' profile you can manage from the given limitations.
| |
19:23 | danieeel | anybody else interested? or we let them to read back from logs?
| |
19:23 | troy_s | Bertl: As an aside, a ColorChecker 24 swatch shot (Aka Macbeth) would be excellent to baseline our issues against (as opposed to single point of failure on an IT8)
| |
19:24 | troy_s | danieeel: I suspect very few would be.
| |
19:24 | troy_s | danieeel: It's sort of ++ thinking.
| |
19:24 | troy_s | (and logs are decent.)
| |
19:24 | troy_s | You asked what was going on with that TI3 chart
| |
19:24 | danieeel | i thought of simpler charts too.. but I ended up with HCT
| |
19:24 | troy_s | It's basically what you were doing sample picking, only a little more reliable and a little more uniform
| |
19:24 | troy_s | HCT is ideal
| |
19:24 | troy_s | More swatches = Better idea
| |
19:25 | troy_s | But more swatches also will reveal more inconsistencies
| |
19:25 | danieeel | so hit me, i give up on rgb-ycbcr yet - lets continue with that later.
| |
19:25 | troy_s | (Making LUTs more considerate of inconsistencies, but also more prone to potentail errors based on photograph of chart for example)
| |
19:25 | troy_s | LOL
| |
19:25 | troy_s | RGB YCbCr isn't nearly as complex as this.
| |
19:25 | danieeel | it is not working realtime with existing software :)
| |
19:26 | troy_s | (Two relative color models. Dead simple if you focus on that. One with by-the-book scaling if you are going to call it 709)
| |
19:26 | troy_s | Erf.
| |
19:26 | troy_s | Good times.
| |
19:26 | danieeel | i wanted to stream live.. its failing on this conversion
| |
19:26 | troy_s | So the TI3
| |
19:26 | danieeel | ok so..
| |
19:26 | troy_s | See that spreadsheet I posted?
| |
19:26 | danieeel | yes
| |
19:26 | danieeel | column names pleas
| |
19:26 | troy_s | Did I include the column names?
| |
19:26 | danieeel | no
| |
19:26 | troy_s | Do you have Calc handy or another spreadsheet?
| |
19:27 | danieeel | oocalc
| |
19:27 | danieeel | line 1 is A01 patch
| |
19:27 | danieeel | what is that patch/swatch difference?
| |
19:29 | troy_s | danieeel: Have you done any scanin or colprof?
| |
19:29 | troy_s | danieeel: Because when you do a scanin, you get a ti3 file
| |
19:29 | troy_s | I can post one if you don't have one.
| |
19:29 | danieeel | no
| |
19:30 | troy_s | danieeel: Save this and label it as TI3.
| |
19:30 | danieeel | ok
| |
19:30 | troy_s | http://pastebin.com/JXmZWnJ8
| |
19:31 | troy_s | danieeel: And to be clear, you are aware of the differences between RGB and XYZ (relative vs absolute and unscaled)
| |
19:31 | danieeel | sort of
| |
19:32 | troy_s | (XYZ is technically a "scene referred" absolute color model. See J. Selan's PDF on cinematic color if you still don't quite understand scene referred versus display referred (http://cinematiccolor.com))
| |
19:32 | troy_s | RGB is always relative.
| |
19:32 | troy_s | Taking values is meaningless.
| |
19:32 | danieeel | we have discussed that last time - and I have managed to make a xyz to sRGB converter to visualize my chart
| |
19:32 | troy_s | If I give you any display referred RGB values, you cannot replicate the color without asking what the primaries are (which is part of defining a color space)
| |
19:32 | troy_s | Clear?
| |
19:33 | troy_s | So when someone says "I have RGB values 1.0, 0.324, and 0.4333" it means _nothing_
| |
19:33 | danieeel | relative as - you need the specific color of color filters (primaries) on the display to make up the absolute color
| |
19:33 | troy_s | (Similar to saying some other stupid statement like "This is in linear color space!" Linear is an _attribute_ of a color space, not a color space. RGB is an attribute of a color space (the _model_) not a color space.)
| |
19:33 | danieeel | i think we are clear
| |
19:34 | troy_s | display referred = places special meaning on a 'maximum' value - generally 1.0 (or whatever the bit depth permits). Sometimes called output referred.
| |
19:35 | troy_s | scene referred = places no special value on the data range. Represents the 'reality' of the physics of the environment. Range is 0 to theoretical infinity.
| |
19:35 | danieeel | that is ok
| |
19:35 | troy_s | scene referred will be _linear_ data, meaning that if you want to go up a stop, double the values. Down a stop, halve them.
| |
19:36 | danieeel | display referred is before or after the transfer curve?
| |
19:36 | troy_s | display referred values _may_ be linearized. If you linearize display referred data, you are _always_ trapped in the 'max' range, and will arrive at linearized values by inverting the tone response / transfer curve.
| |
19:36 | troy_s | display referred is an attribute of the data
| |
19:36 | troy_s | 0..1 is always display referred
| |
19:37 | troy_s | device referred. display referred. output referred.
| |
19:37 | troy_s | All the same essentially
| |
19:37 | troy_s | they have a minimum and a maximum.
| |
19:37 | troy_s | So... quick tangent
| |
19:37 | danieeel | ok
| |
19:38 | troy_s | When we ship values to our display, are they display referred?
| |
19:38 | danieeel | yes
| |
19:38 | troy_s | Yes. And if we shipped display linear values to a display, will they display correctly?
| |
19:39 | danieeel | if you can set on it an linear input curve
| |
19:39 | troy_s | It won't.
| |
19:40 | troy_s | Because you are shipping linear values and your display is LDR.
| |
19:40 | danieeel | LDR?
| |
19:40 | troy_s | Low Dynamic Range.
| |
19:40 | troy_s | So your value .5 is not _half_ of the value output of 1.0 if you ship it directly.
| |
19:40 | troy_s | So your eye won't see it as the linearized values were in 'the real world'.
| |
19:41 | troy_s | Hence the need for a transfer curve.
| |
19:41 | troy_s | To 'cheat' the values
| |
19:41 | troy_s | danieeel: Sense?
| |
19:42 | troy_s | IF we had some UberTV, and the level of luminance were Uber(tm), we could in theory ship linearized values directly to the display
| |
19:42 | troy_s | and they would display in the same ratios as real-world physics.
| |
19:43 | danieeel | we should make a real example - tell me if that is correct
| |
19:43 | troy_s | Here's a simple example
| |
19:43 | troy_s | You go out and manually make a real world image in greyscale
| |
19:43 | danieeel | we ship 0-255 to our displays, as this is how the "linear" scale is percieved
| |
19:43 | troy_s | so you take a spot meter and meter every single 'pixel'
| |
19:43 | troy_s | we record the results
| |
19:43 | troy_s | and we are going to use linearized values
| |
19:44 | troy_s | so say the side of the barn is f2.0
| |
19:44 | troy_s | and the grass is f2.4
| |
19:44 | troy_s | (one stop hotter)
| |
19:44 | troy_s | (the grass is)
| |
19:44 | troy_s | If we used value 0.3 for our barn side
| |
19:44 | troy_s | (arbitrary)
| |
19:44 | troy_s | grass is .6
| |
19:44 | troy_s | If we did this for every pixel in the scene, we'd have a greyscale image in theory.
| |
19:44 | troy_s | danieeel: With me so far?
| |
19:45 | danieeel | yes of course
| |
19:45 | troy_s | danieeel: If we record those to a file, and we decide 1.0 is our upper limit
| |
19:45 | danieeel | i have got my linear data, and used a lut to view them correctly, in terms of intensity
| |
19:45 | troy_s | We have a display linear greyscale image.
| |
19:45 | troy_s | If we dump that file to the display
| |
19:46 | troy_s | it will look 'dark' because the values will not
| |
19:46 | troy_s | (when they are displayed) maintain the physical real-world ratios
| |
19:46 | troy_s | and our eyes won't see it as the ratios were in reality.
| |
19:46 | troy_s | danieeel: Clear?
| |
19:46 | troy_s | so key points:
| |
19:46 | danieeel | of course, have experienced that
| |
19:46 | troy_s | 1) display linear vs scene linear
| |
19:46 | troy_s | 2) display referred versus scene referred
| |
19:47 | troy_s | 3) absolute color models (xyY, XYZ, etc.) versus relative color models (RGB, YCbCr, etc.)
| |
19:47 | troy_s | Clear on all those points?
| |
19:47 | danieeel | so scene linear: render of a lamp, with true values of big intensities
| |
19:48 | danieeel | display linear: trim/crop/clip that to some usable max value
| |
19:48 | danieeel | good?
| |
19:48 | troy_s | danieeel: A scene referred image of a typical landscape with sun in the frame would have ranges from extreme low levels in shadows, to extremely MASSIVE numbers of the sun itself.)
| |
19:48 | troy_s | bingo.
| |
19:48 | troy_s | You got it!
| |
19:48 | troy_s | And the reasons for noting these differences are large.
| |
19:48 | troy_s | As you will hopefully see in hindsight ages later.
| |
19:48 | troy_s | So
| |
19:48 | danieeel | now.. the referred - it points to two sides of the transfer curve?
| |
19:49 | troy_s | XYZ
| |
19:49 | danieeel | as a point of conversion between scene/linear to display/curved
| |
19:49 | troy_s | It is A) an absolute color model
| |
19:49 | troy_s | B) scene referred (and hence scene linear)
| |
19:49 | troy_s | (Correct, but also in more subtle ways I'll try to touch on if you remind me after this quickie TI3 investigation)
| |
19:50 | troy_s | Clear on XYZ?
| |
19:50 | troy_s | (or at least those two facets of it.)
| |
19:50 | danieeel | in scene linear, the Z is any number
| |
19:50 | troy_s | They are all any numbers
| |
19:50 | troy_s | :)
| |
19:50 | troy_s | As you increase intensity of a color, all three vectors grow.
| |
19:50 | troy_s | Clear?
| |
19:50 | danieeel | xy usually being 0..1 no? :)
| |
19:50 | troy_s | Whoa! DIFFERENT MODEL FRIEND!
| |
19:51 | troy_s | Clear on XYZ as per A and B above?
| |
19:51 | danieeel | "increase intensity of a color" is very unspecific what you mean - saturation / brightness?
| |
19:51 | troy_s | danieeel: No, increase intensity.
| |
19:51 | troy_s | The side of the barn
| |
19:51 | troy_s | if we increase the intensity of the side of the barn
| |
19:51 | troy_s | XYZ all grow
| |
19:52 | troy_s | Up to infinity
| |
19:52 | troy_s | Clear?
| |
19:52 | troy_s | Think of it as three vectors that grow upwards and outwards like a pyramid (infinitely large base) on its head.
| |
19:52 | danieeel | okay, assume that. (not used to it yet) so continue
| |
19:53 | troy_s | A straight line down to the tip of the pyramid in any direction is a 'color'. Increasing the intensity of the color (the scene referred ratio) will move the color up and outward (unless it is perfectly in the center of the pyramid)
| |
19:53 | troy_s | XYZ is a unique model
| |
19:53 | troy_s | Which was deduced in 1931 by the CIE
| |
19:53 | troy_s | Using three lights.
| |
19:53 | troy_s | A red light
| |
19:53 | troy_s | a green light
| |
19:53 | troy_s | and a blue light
| |
19:53 | troy_s | with SPECIFIC colors
| |
19:54 | troy_s | (RGB model is relative. The primaries are fixed when using lights.)
| |
19:54 | troy_s | (That is, for RED for example, the color does not CHANGE as it increases in intensity.
| |
19:54 | troy_s | likewise, red 0.0001 on our display is the SAME 'color' as it is at 1.0
| |
19:54 | troy_s | Clear?
| |
19:54 | danieeel | yes
| |
19:54 | troy_s | The CIE used three lights
| |
19:55 | troy_s | and showed swatches of colors in a 2 degree field
| |
19:55 | troy_s | observers tried to match the colors in the swatches
| |
19:55 | troy_s | The CIE also chose primaries such that equal amounts of light pulled directly away from the other color.
| |
19:55 | troy_s | This forms a TRIANGLE at the base
| |
19:56 | troy_s | extending up in a warped fashion if you tried to view it in 3D.
| |
19:56 | troy_s | SOME swatches however, could not be matched using the three lights.
| |
19:56 | troy_s | They were OUT OF THE GAMUT.
| |
19:56 | troy_s | And so the researchers added small amounts of the primaries to the swatch values (thereby decreasing their saturation INTO gamut)
| |
19:56 | troy_s | until the observer could find a reasonable match
| |
19:57 | troy_s | By figuring out how much the observer added AND paying attention to how much THEY added to the swatches, they could fix the 'actual' color position relative to the smaller gamut three RGB primaries.
| |
19:57 | troy_s | Is this clear?
| |
19:57 | troy_s | (the transform of color in the real world is a simple thing - it is just a transform because all the values are linear as per energy laws)
| |
19:58 | troy_s | Are you clear on this danieeel?
| |
19:58 | troy_s | Or something not quite clear?
| |
19:58 | danieeel | trying to visualize it
| |
19:58 | troy_s | See a swatch in front of you
| |
19:58 | troy_s | You have THREE lights, RED, GREEN and BLUE of FIXED chromaticity (color)
| |
19:58 | troy_s | you can dial up the lights
| |
19:58 | troy_s | or down the lights
| |
19:58 | troy_s | When I show you some colors, you can't reach them!
| |
19:59 | troy_s | (the greenest of green things simply isn't the same green as your light)
| |
19:59 | troy_s | So I can desaturate the swatch green
| |
19:59 | troy_s | by adding RED and BLUE of my lights
| |
19:59 | troy_s | until you can match it.
| |
19:59 | troy_s | Clear?
| |
19:59 | danieeel | so if i have a very green swatch, on a poor green light, it will be percieved poor
| |
19:59 | troy_s | By POOR we need to be explicit
| |
19:59 | troy_s | the color is not saturated
| |
20:00 | troy_s | We can make it deadly deadly bright
| |
20:00 | troy_s | and it will be the same green
| |
20:00 | troy_s | The more saturated green is simply unreachable.
| |
20:00 | troy_s | Clear?
| |
20:00 | troy_s | So your three lights can't replicate the green
| |
20:00 | troy_s | So we need to figure out a way to replicate it and figure out what the green was
| |
20:00 | danieeel | because they are poor :) the green is not enough greenish
| |
20:00 | troy_s | So I 'reel it in' by adding RED and BLUE
| |
20:00 | danieeel | so clear
| |
20:01 | troy_s | Ok
| |
20:01 | troy_s | So we gather up our data
| |
20:01 | troy_s | and we have our ORIGINAL three CIE RGB values
| |
20:01 | troy_s | which form a triangle and a strange looking mesh as we work upward to 'white'
| |
20:01 | troy_s | Clear on this?
| |
20:01 | troy_s | PLUS we have all of the 'outside' stuff
| |
20:01 | troy_s | Which extend beyond the legs of the triangle
| |
20:02 | danieeel | yes
| |
20:02 | troy_s | The problem is, our RGB values go from 0 to .... HEY THAT'S REALLY BRIGHT
| |
20:02 | troy_s | So we need to scale all the values
| |
20:02 | troy_s | When we scale them in
| |
20:02 | troy_s | We can create a finite 'map' of the colors
| |
20:02 | troy_s | Which would be again, our CIE RGB triangle
| |
20:03 | troy_s | AND the stuff that 'pours over' beyond it.
| |
20:03 | troy_s | And that forms... something... that ... looks like...
| |
20:03 | troy_s | https://www.google.ca/search?q=cie+rgb&client=ubuntu-browser&tbm=isch&imgil=EkYw_LbmADWVaM%253A%253Bhttps%253A%252F%252Fencrypted-tbn0.gstatic.com%252Fimages%253Fq%253Dtbn%253AANd9GcTnqnu6Wco6Bmw67wRIlQ_iiRqa-cMrReaTA2H-50PNmqzgWoF_IQ%253B325%253B345%253BSKRQ9HbFToIhFM%253Bhttp%25253A%25252F%25252Fen.wikipedia.
| |
20:03 | troy_s | org%25252Fwiki%25252FCIE_1931_color_space&source=iu&usg=__PVA0sud8qse4CMkY1BYQPrCrkdQ%3D&sa=X&ei=Ccj_UoWXHZDjoAToh4CgAw&ved=0CDAQ9QEwAQ&biw=1145&bih=786#facrc=_&imgdii=_&imgrc=EkYw_LbmADWVaM%253A%3BSKRQ9HbFToIhFM%3Bhttp%253A%252F%252Fupload.wikimedia.org%252Fwikipedia%252Fcommons%252Fthumb%252F6%252F60%252FCIE1931xy_CIERGB.svg%252F325px-CIE1931xy_CIERGB.svg.png%3Bhttp%253A%252F%252Fen.wikipedia.
| |
20:03 | troy_s | org%252Fwiki%252FCIE_1931_color_space%3B325%3B345
| |
20:03 | troy_s | Grr.
| |
20:03 | danieeel | display the final image and post its link
| |
20:03 | troy_s | http://upload.wikimedia.org/wikipedia/commons/thumb/6/60/CIE1931xy_CIERGB.svg/325px-CIE1931xy_CIERGB.svg.png
| |
20:04 | troy_s | The BIGGER map
| |
20:04 | troy_s | is 'scaled' RGB values (actually another model we are almost at.)
| |
20:04 | troy_s | the TRIANGLE are the CIE lights (the primaries)
| |
20:04 | troy_s | and the stuff that escapes
| |
20:04 | troy_s | are the out of CIE RGB gamut values that were transformed back to their original positions.
| |
20:04 | troy_s | So... see the bluey green area? That's escape
| |
20:04 | danieeel | okay so in practice:
| |
20:05 | troy_s | There is much more slight escape in magenta / orangey
| |
20:05 | troy_s | (look closely)
| |
20:05 | danieeel | if we were to take 3 (r/g/b) lasers, the triangle would extend to the side of the colored area
| |
20:05 | troy_s | The EDGES of that triangle
| |
20:05 | danieeel | but once we use 3 not so saturated lights or filters, the triangle is all inside
| |
20:05 | troy_s | are the mix points
| |
20:06 | troy_s | So equal intensity GREEN and RED are the MIDDLE of that line
| |
20:06 | troy_s | With NO blue
| |
20:06 | troy_s | that is the full line
| |
20:06 | troy_s | same goes for the other legs
| |
20:06 | troy_s | Sense?
| |
20:06 | danieeel | that is simple, my point was somewhere else
| |
20:06 | troy_s | Yes... but there's a tricky thing to that chart
| |
20:06 | troy_s | It is a SCALED version of the primaries
| |
20:06 | troy_s | the chart is like looking DOWN on that pyramid
| |
20:07 | troy_s | Which is a little bit of a mind warp, but stay with me.
| |
20:07 | danieeel | like - more up you are, smaller the triange?
| |
20:07 | troy_s | No
| |
20:07 | troy_s | The chart is like grabbing it in a scaling image app
| |
20:07 | troy_s | As we scale it downward, we approach black
| |
20:07 | troy_s | as we scale it upward, we approach infinite intensity
| |
20:07 | troy_s | The vectors grow TOWARDS your eye and OUTWARD
| |
20:08 | troy_s | Just like scaling the image
| |
20:08 | troy_s | No matter how much you increase the intensity of the three primaries
| |
20:08 | troy_s | the out of gamut is always outside it
| |
20:08 | troy_s | The 'intentisy' of the light grows upward and outward
| |
20:08 | troy_s | danieeel: Clear?
| |
20:08 | troy_s | (I'll link to a video after this to visualize it)
| |
20:08 | danieeel | okay, fine with that
| |
20:08 | troy_s | So the researchers had a dilemma
| |
20:09 | troy_s | They could use RGB and have negative R, G, and B values to represent human standard observer vision
| |
20:09 | troy_s | (Which is a nightmare as you can imagine)
| |
20:09 | troy_s | or they could 'normalize' them
| |
20:09 | troy_s | into a lovely consistent triangle
| |
20:09 | troy_s | So they did this
| |
20:09 | troy_s | The 'BLUE' however
| |
20:09 | troy_s | would be at 0 0 in that chart
| |
20:09 | danieeel | negative rgb meant that swatch after-painting when it could not be matched, right?
| |
20:09 | troy_s | the 'RED' would be at way the hell off the chart
| |
20:10 | troy_s | the GREEN is way up top off the chart
| |
20:10 | troy_s | Forming a unique triangle
| |
20:10 | troy_s | The issue with this system is that it creates "imaginary" primaries
| |
20:10 | troy_s | they don't exist in the real world
| |
20:10 | troy_s | we cannot craft any light that is of the color those 'fake' primaries are.
| |
20:10 | troy_s | danieeel: Clear?
| |
20:10 | troy_s | Look at that chart again to see the triangle I speak of.
| |
20:10 | danieeel | yes
| |
20:11 | troy_s | So... it isn't RGB... we need a new name for it...
| |
20:11 | troy_s | Let's call it XYZ
| |
20:11 | troy_s | Where X is our fake RED, Y is our fake GREEN, and Z is our fake BLUE
| |
20:11 | danieeel | ah
| |
20:11 | troy_s | And while we are making this model, we could bend the values a wee bit and isolate intensity across the board as purely Y
| |
20:11 | troy_s | (But remember, it isn't that simple, all colors grow UP and OUTWARD)
| |
20:12 | danieeel | so as the Z is the blue thing, the top of the pyramid gets finally white
| |
20:12 | troy_s | Nope
| |
20:12 | troy_s | A) no such thing as white
| |
20:12 | troy_s | B) the XYZ model is infinitely large
| |
20:12 | danieeel | that E point, is it for equivalence?
| |
20:12 | troy_s | C) Each X, Y, and Z are TWO coordinates
| |
20:12 | troy_s | (Well three technically)
| |
20:12 | troy_s | We are inside a 3D space, NOT a 2D.
| |
20:13 | troy_s | With me so far (I appreciate there are outstanding questions... hopefully it will become clearer)
| |
20:13 | troy_s | So we have a NEW system
| |
20:13 | danieeel | so 3D XYZ is not that image, that is clear
| |
20:13 | danieeel | how does it get mapped to 2D XY?
| |
20:13 | troy_s | XYZ that we can express ALL possible standard observer colors (last point is critical - change the observer and this model sucks)
| |
20:13 | troy_s | Now to TALk about color
| |
20:13 | troy_s | we can SCALE the model
| |
20:13 | danieeel | wait
| |
20:13 | troy_s | so that we can uniquely LOOK at it on paper like our chart here
| |
20:14 | danieeel | XYZ can represent any color of any intensity
| |
20:14 | troy_s | see the lowercase x and y?
| |
20:14 | troy_s | Yes.
| |
20:14 | troy_s | All color
| |
20:14 | troy_s | Absolutely.
| |
20:14 | troy_s | (as in 'absolute model' not 'yes absolutely)
| |
20:14 | danieeel | by color i usually understand chromacity
| |
20:14 | troy_s | If we SCALE the X and Y channels
| |
20:14 | troy_s | we can map all possible intensities to a finite chart
| |
20:14 | troy_s | (again, think scaling the image in a 2D processor)
| |
20:15 | troy_s | As we scale the image UP, that's our intensity increasing
| |
20:15 | troy_s | but the relative distances will always be the same
| |
20:15 | troy_s | so we can scale the X and Y axis
| |
20:15 | troy_s | !
| |
20:15 | troy_s | which leads us to the FIRST subset model
| |
20:15 | troy_s | xyY
| |
20:15 | troy_s | Which is SCALED X, SCALED Y, and UNSCALED Y
| |
20:15 | troy_s | (hence lowercase and uppercase)
| |
20:15 | troy_s | THAT is your answer.
| |
20:16 | troy_s | So the chart we are looking at is scaled x, scaled y, and unscaled Y (Growing upward to our face, which completely FLATTENS the 2D image we are looking at - there is no more 'pyramid' because we have scaled the XYZ model in a unique way)
| |
20:16 | troy_s | danieeel: PHEW is that clear?
| |
20:17 | danieeel | that is possible because XY keeps its shape limited to that outside curve (annotated by wavelengts)
| |
20:17 | troy_s | well kind of
| |
20:17 | troy_s | remember - the three vectors travel from a single point if we were looking down
| |
20:18 | danieeel | xy is decoupled from XY by the scale of Y ...
| |
20:18 | troy_s | UP towards our eye and OUTWARD
| |
20:18 | troy_s | Yes.
| |
20:18 | danieeel | so what is lost from XYZ -> xzZ ?
| |
20:18 | troy_s | Simple scale
| |
20:18 | troy_s | xyY
| |
20:18 | troy_s | Y is luminance.
| |
20:18 | troy_s | PUre
| |
20:18 | troy_s | you cannot do it any other way
| |
20:18 | danieeel | ah, i forgot
| |
20:18 | danieeel | no longer Z
| |
20:18 | troy_s | If you are looking at the pyramid, the overall intensity of the light grows UPWARD (toward the wide base)
| |
20:18 | troy_s | but not all colors are at the same luminance
| |
20:19 | troy_s | (Greens and yellows live higher up for example to reds and blues)
| |
20:19 | troy_s | but the chart lets you visualize the 'color' separate from the intensity.
| |
20:19 | troy_s | and by having xyY (where Y is unbounded in theory)
| |
20:19 | troy_s | we can easily get our Z and z back.
| |
20:19 | troy_s | (basic fill-in-the-blank algebra
| |
20:19 | troy_s | danieeel: This clear or muddy as hell?
| |
20:20 | danieeel | it is perfectly clear now
| |
20:20 | troy_s | Great
| |
20:20 | troy_s | So XYZ is a relative or absolute color MODEL?
| |
20:20 | danieeel | absolute
| |
20:20 | troy_s | xyY?
| |
20:20 | danieeel | should be absolute too
| |
20:21 | troy_s | Yep
| |
20:21 | danieeel | it is derived from XYZ wihout using any external constants/data
| |
20:22 | troy_s | RGB?
| |
20:22 | danieeel | which RGB? :))
| |
20:22 | danieeel | RGB is relative to what the actual R,G,B is
| |
20:22 | troy_s | Bingo
| |
20:22 | troy_s | How about... uh... CIE RGB?
| |
20:23 | danieeel | that can do all colors.. but does it mean it is absolute?
| |
20:23 | troy_s | danieeel: Simpler question
| |
20:23 | troy_s | Is CIE RGB relative or absolute?
| |
20:24 | troy_s | (worry not about range or gamut)
| |
20:24 | danieeel | relative to those lamps CIE used
| |
20:24 | troy_s | Absolute
| |
20:24 | danieeel | why is that
| |
20:24 | troy_s | the CIE primaries are well known and well documented
| |
20:24 | troy_s | So when I say CIE RGB values Foo, Bar, Bing
| |
20:24 | danieeel | that is cheating :)
| |
20:24 | troy_s | You know precisely what chromaticity the result is.
| |
20:24 | danieeel | sRGB primaries are also well documented
| |
20:24 | troy_s | How about sRGB?
| |
20:24 | troy_s | Indeed.
| |
20:25 | danieeel | okay, so absolute is anything specific
| |
20:25 | troy_s | and it too is an absolute (of course, intensity aside for all of these RGB models)
| |
20:25 | danieeel | relative is just a format
| |
20:25 | troy_s | Yes.
| |
20:25 | danieeel | like - YCbCr ... relative
| |
20:25 | troy_s | Bingo
| |
20:25 | danieeel | 709 / 601 / 2020 absolute
| |
20:25 | troy_s | Bingo.
| |
20:25 | troy_s | Exactly.
| |
20:25 | troy_s | Relative models until you state which one.
| |
20:25 | troy_s | Phew.
| |
20:25 | troy_s | Ok.
| |
20:25 | troy_s | Soooooo
| |
20:25 | troy_s | TI3
| |
20:25 | troy_s | Did you download that one?
| |
20:25 | danieeel | yes
| |
20:25 | troy_s | See the column headers?
| |
20:26 | danieeel | yes, filled in the ODS file
| |
20:26 | troy_s | FIRST three are XYZ
| |
20:26 | troy_s | SECOND three are RGB
| |
20:26 | troy_s | THIRD three are error calcs.
| |
20:26 | troy_s | danieeel: Clear?
| |
20:27 | troy_s | The FIRST TWO sets of THREE columns we care about.
| |
20:27 | troy_s | So... what are the primaries of the RGBs in the file?
| |
20:27 | troy_s | (Trickier questions... :) )
| |
20:27 | danieeel | cie?
| |
20:27 | troy_s | (What do you think the RGB values are measurements of?)
| |
20:27 | troy_s | LOL
| |
20:27 | troy_s | They are arbitrary.
| |
20:27 | troy_s | They are in fact literal values of the RGB from the file
| |
20:27 | troy_s | Which are unknown
| |
20:28 | danieeel | those are the values from the sensor?
| |
20:28 | troy_s | So how can scanin deliver XYZ values from them?
| |
20:28 | troy_s | Yep.
| |
20:28 | danieeel | strange to appear in the middle :)
| |
20:28 | troy_s | (Or photo or whatever)
| |
20:28 | troy_s | So how does scanin know XYZ values for the swatch then??????
| |
20:29 | danieeel | xyz can come from reference data of the chart by series
| |
20:29 | troy_s | Yes. And white point here is elephant in the room
| |
20:29 | danieeel | that are the 3 columns before RGB
| |
20:29 | troy_s | ICC illuminant is ALWAYS D50 in the PCS
| |
20:29 | troy_s | (Profile connection space)
| |
20:29 | troy_s | So the "What should this XYZ value be" is calculated based on D50 formulas.
| |
20:29 | troy_s | And XYZ is aboslute
| |
20:30 | troy_s | Absolute even.
| |
20:30 | troy_s | And the values are LINEARIZED
| |
20:30 | troy_s | so the ratios can be manipulated accordingly.
| |
20:30 | troy_s | (For the RGBs)
| |
20:30 | danieeel | seems to be in 0..100 range
| |
20:30 | troy_s | Yep.
| |
20:30 | troy_s | Because they have to have an upper limit
| |
20:30 | troy_s | (Sensor, display whatever.)
| |
20:31 | troy_s | Quick note
| |
20:31 | troy_s | The Horseshoe image
| |
20:31 | troy_s | It is NOT perceptually uniform
| |
20:31 | troy_s | Meaning that if you took a measuring stick
| |
20:31 | troy_s | and measured a color
| |
20:31 | danieeel | 100 is easy if you want to find the 18% gray paper... it should have 18 in it, as this is linear, right?
| |
20:31 | troy_s | in 'distance' away from another color
| |
20:31 | troy_s | is NOT an accurate measurement as to how different it will appear to a standard observer
| |
20:32 | troy_s | You would need MacAdams circles to figure out roughly how 'warped' the model is to a perciever
| |
20:32 | troy_s | (And yes, there are models that take the XYZ CIE research and 'warp' it to be perceptually uniform, see Lab for example.)
| |
20:32 | danieeel | that is clear
| |
20:32 | troy_s | So that the distance across the whole model represents (relatively) how 'different' a color is.
| |
20:33 | danieeel | the relative being to the 2 colors in question
| |
20:33 | danieeel | pretty useless information that distance then
| |
20:34 | troy_s | http://en.wikipedia.org/wiki/File:CIExy1931_MacAdam.png
| |
20:34 | troy_s | So you can sort of see that ranges of reds and greens look JND (just noticable difference)
| |
20:34 | troy_s | Which is a little deceptive
| |
20:35 | danieeel | okay
| |
20:35 | troy_s | because it is easier to see a change in kelvin at say 2000-2100 versus say, 6000-6100 (you couldn't see a difference in the blue)
| |
20:35 | troy_s | Part of the lovely complexity of luminance tied to color.
| |
20:36 | troy_s | danieeel: So the TI3 has the values for the swatches
| |
20:36 | troy_s | danieeel: And we can scale an achromatic one to give us a theoretical 'neutral' (in terms of RGB values)
| |
20:36 | troy_s | danieeel: As well as add a "perfect' black (0,0,0,0,0,0) and a perfect white
| |
20:37 | philippej | left the channel | |
20:37 | troy_s | which allows the profile generator to create a more idealized profile.
| |
20:37 | troy_s | And HOPEFULLY the basics of the ICC system are a little clearer.
| |
20:38 | troy_s | ICC is NOT color management, but rather a form of color management.
| |
20:38 | troy_s | And it has plenty of nuances and details that aren't perfectly obvious.
| |
20:38 | troy_s | If we take our white swatch patch (the one that should be 'bright white' in our display referred model scale)
| |
20:38 | troy_s | we can pipe the values to xicclu
| |
20:39 | troy_s | to get our "perfect" white values in RGB
| |
20:39 | troy_s | (which is interpolated)
| |
20:40 | danieeel | so icc is a matrix and a lut for transfer curve ?
| |
20:41 | troy_s | xicclu -v (verbose) -s 100 (scale it to 0..100) -f if (if is INVERTED and FORWARD) -p l (l is LAB model) -i a (ABSOLUTE colorimetric - no warping) INPUT.ICC
| |
20:41 | troy_s | danieeel: Can be. Can also be a matrix with a LUT for color etc.
| |
20:41 | troy_s | danieeel: Can be plenty of things.
| |
20:41 | troy_s | danieeel: ICCs wrap up the rather confusing FROM and TO assumptions of all color
| |
20:41 | jucar | left the channel | |
20:41 | troy_s | And always have a protocol (which is limiting if you are an artist trying to do things with models and color)
| |
20:42 | troy_s | They always go TO an absolute Profile Connection Space (often XYZ)
| |
20:42 | troy_s | and wrap up assumptions in the protocol (this is why you can have an sRGB ICC profile - it can manage any from and any to in the assumptions and the protocol of application)
| |
20:43 | troy_s | (OCIO on the other hand is like a lower level thing - it has no such assumptions. You can muck with more variables and control)
| |
20:43 | troy_s | danieeel: So did the above ridiculous dribble help in any way?
| |
20:44 | troy_s | (The useful part of the xicclu command is that you can take a theoretical L 100 for example (press 100 0 0 then enter) and it will spit out the 'theoretical' values for that according to your data
| |
20:44 | danieeel | the basics, yes
| |
20:44 | troy_s | Then you can go back and reverse engineer your values (scale them) such that you are getting a more accurate profile.
| |
20:44 | troy_s | (or profile estimation)
| |
20:44 | danieeel | do you know how to interpret icc and what A and B are, they appear in the dng specs too
| |
20:45 | troy_s | The PCS in ICC must be D50
| |
20:45 | troy_s | (long history, but it was designed for print so has this rather goofy thing baked into it)
| |
20:45 | troy_s | and white point scaling wasn't mandated until later too (Bradford now)
| |
20:45 | troy_s | So you can see some skips that are weird... sRGB goes to a D50 PCS for example.)
| |
20:46 | jucar | joined the channel | |
20:48 | danieeel | i have an icc which says PCS: Lab
| |
20:48 | troy_s | Yep
| |
20:48 | troy_s | It's another absolute space (based off of the original 1931 CIE work of XYZ)
| |
20:49 | troy_s | Once you understand XYZ, you understand all models that are derived from it.
| |
20:49 | danieeel | my question is rather, where to use the values from this icc
| |
20:49 | troy_s | And the difference between absolute models / relative, perceptuals versus non perceptuals.
| |
20:49 | troy_s | You can scale the values manually in a spreadsheet.
| |
20:49 | troy_s | So for example, if your white point results in non achromatic balance of RGB
| |
20:50 | troy_s | you can scale them
| |
20:50 | troy_s | and then feed the result back into colprof and get a nicely aligned 'neutral' profile.
| |
20:51 | danieeel | but when you get a profile, how do you actually use it?
| |
20:51 | troy_s | (neutral by ICC standards, which means it is balanced against the D50, which makes not a huge difference to whatever you go to from the PCS)
| |
20:51 | troy_s | Well you have to slug it into your color pipeline
| |
20:51 | troy_s | So in this case... if you have a profile for your camera
| |
20:51 | troy_s | We have three sort of phases for our pipeline:
| |
20:51 | danieeel | it has an illuminant (XYZ) and a whitepoint (XYZ) - with these, we can make a matrix which fixes the whitebalance ?
| |
20:51 | troy_s | 1) Input
| |
20:51 | troy_s | 2) Working / Manipulation
| |
20:51 | troy_s | 3) Output
| |
20:51 | troy_s | Our input might be a Camera
| |
20:52 | troy_s | our working might be... Foobar.
| |
20:52 | troy_s | our Output might be sRGB display
| |
20:52 | troy_s | So...
| |
20:52 | troy_s | When we load our data
| |
20:52 | troy_s | We transform the data into our Foobar
| |
20:52 | troy_s | So we need a Camera to Foobar transform
| |
20:52 | troy_s | 1) Camera -> Foobar
| |
20:52 | troy_s | Then when working, we work in foobar
| |
20:53 | troy_s | 2) Work in foobar
| |
20:53 | troy_s | 3) Foobar -> sRGB
| |
20:53 | troy_s | which actually adds a third instance here
| |
20:53 | troy_s | 4) sRGB -> DaniMonitor.
| |
20:53 | troy_s | If we do this with ICCs there's secret sauce in there
| |
20:53 | troy_s | 1 becomes:
| |
20:53 | troy_s | 1) Camera -> ICC PCS -> Foobar
| |
20:54 | troy_s | 2) Foobar
| |
20:54 | troy_s | 3) Foobar -> ICC PCS -> sRGB
| |
20:54 | troy_s | 4) sRGB -> ICC PCS -> DaniMonitor
| |
20:54 | troy_s | danieeel: Clear?
| |
20:54 | troy_s | In OCIO it could be much simpler
| |
20:54 | danieeel | yes, that is the outside.. i am rather after how can I code it :)
| |
20:55 | troy_s | Erm... actually I left out more crap... remember that the PCS is linearized and absolute
| |
20:55 | troy_s | So let's pretend the PCS is XYZ
| |
20:55 | troy_s | 1 looks more complex
| |
20:55 | troy_s | Let's pretend that the camera isn't linearized data format.
| |
20:56 | troy_s | 1) CameraSpace -> Linearize via inverse transfer curve -> XYZ -> Foobar Space (is it linearized?)
| |
20:56 | troy_s | 2) Work in Foobar
| |
20:56 | troy_s | (and all tools need to transform (think color pickers!)
| |
20:56 | danieeel | camera->linear ... is that a B curve in icc?
| |
20:57 | danieeel | i see it has a description: A curve -> multiLUT -> M curve -> matrix -> B curve ...
| |
20:57 | danieeel | A being the input color space (in case of camera, the linear RGB)
| |
20:57 | troy_s | 3) Foobar -> Linearized if needed via inverted curve -> XYZ -> sRGB display linear -> sRGB tone curve
| |
20:57 | danieeel | B being... LAB ?
| |
20:58 | troy_s | There's a transfer curve
| |
20:58 | danieeel | as icc PCS = LAB ?
| |
20:58 | troy_s | PCS _can_ be Lab
| |
20:58 | troy_s | I believe
| |
20:58 | troy_s | and it commonly is XYZ
| |
20:58 | troy_s | A B tables I'm unsure of role
| |
20:58 | troy_s | I know they exist, but they fit into that overall idea.
| |
20:59 | danieeel | that icc is maybe perfect, but just for a color picker.. if I want to run live, maybe 4k over it.. cant imagine it now how that would work
| |
21:00 | danieeel | how can we reduce that TI3 file to a single 3x3 matrix?
| |
21:01 | troy_s | If you use the TI3 to generate an ICC matrix
| |
21:01 | troy_s | You get the matrix.
| |
21:01 | troy_s | :)
| |
21:02 | danieeel | my icc does not have a matrix - i need to figure out how to reduce the luts to that
| |
21:03 | troy_s | colprof does that
| |
21:03 | troy_s | So do you have an image handy of a chart?
| |
21:03 | troy_s | danieeel: ?
| |
21:05 | troy_s | danieeel: I can quickly step you through it so you can generate your own TI3 and ICC.
| |
21:05 | danieeel | i already have an icc, i need to understand what its fields are meant for
| |
21:06 | troy_s | the ICC is probably sub optimal if you don't have a matrix
| |
21:06 | troy_s | Nor if you don't know how it was calculated.
| |
21:06 | troy_s | ICCs hide so much they are a mess for this sort of thing.
| |
21:06 | troy_s | takes two seconds to generate profiles etc.
| |
21:06 | troy_s | Not long.
| |
21:06 | danieeel | it uses luts insted of matrices
| |
21:07 | troy_s | Yes, which reveals how bunk your ICCs are.
| |
21:07 | troy_s | Matrices should give you a good idea how out of whack your shot is.
| |
21:07 | troy_s | Because the matrix is a strictly real world transform to XYZ effectively.
| |
21:07 | troy_s | LUTs can hide how whack your data is.
| |
21:07 | danieeel | so which tools are required?
| |
21:07 | troy_s | (Because everything looks 'good')
| |
21:07 | troy_s | danieeel: Hardly any. Have Argyll handy?
| |
21:08 | troy_s | It's two commands.
| |
21:08 | troy_s | Sorry... what raw format is the image in?
| |
21:08 | danieeel | this? media-gfx/argyllcms
| |
21:08 | danieeel | 16bit png or tiff
| |
21:10 | troy_s | You need Argyll yes.
| |
21:10 | troy_s | And you will need a raw linear TIFF (debayered)
| |
21:11 | danieeel | it is linear
| |
21:11 | troy_s | danieeel: TIFF? If you have Argyll and that, you are good.
| |
21:11 | troy_s | danieeel: Ready?
| |
21:12 | troy_s | The two commands:
| |
21:12 | troy_s | http://www.argyllcms.com/doc/scanin.html
| |
21:12 | troy_s | http://argyllcms.com/doc/colprof.html
| |
21:13 | troy_s | Let me know when you are ready and I'll step you through the two commands
| |
21:13 | danieeel | the tiff has to be rotated and cropped?
| |
21:13 | troy_s | (And how to check them inspect them)
| |
21:13 | troy_s | Not entirely if it is reasonably squareish
| |
21:13 | troy_s | You can try and use the evaluation diagnostics to evaluate it.
| |
21:15 | troy_s | danieeel: Good? (You will also need the text file that came with your chart with spectro readings)
| |
21:15 | danieeel | i have to fix the file, it is rotated
| |
21:16 | troy_s | Rotated?
| |
21:16 | troy_s | Flipped?
| |
21:17 | danieeel | rotated, like 15 degrees
| |
21:18 | danieeel | how do we evaluate it then?
| |
21:18 | troy_s | Argyll should do that
| |
21:18 | troy_s | I wouldn't worry about it.
| |
21:18 | troy_s | You can see from diagnostics
| |
21:18 | troy_s | Don't worry about rotation
| |
21:18 | troy_s | Ready?
| |
21:18 | danieeel | yes
| |
21:18 | troy_s | Okie...
| |
21:18 | troy_s | You need to locate the chart reference
| |
21:19 | troy_s | is it an it8?
| |
21:19 | danieeel | hct
| |
21:19 | danieeel | FUJI-57R-0583.txt: ASCII text, with CR line terminators
| |
21:19 | troy_s | What OS?
| |
21:19 | troy_s | Great.
| |
21:19 | danieeel | gentoo
| |
21:19 | troy_s | Ok.
| |
21:20 | troy_s | Use 'find / -name Hutchcolor.cht'
| |
21:20 | troy_s | (It is a Hutch yes?
| |
21:20 | danieeel | can you be more specific? :) there is like 20TB of stuff to search for / :)
| |
21:20 | troy_s | Try /usr/share
| |
21:20 | troy_s | (if you have a color, it should be in ther)
| |
21:20 | danieeel | /usr/share/argyllcms/ref/Hutchcolor.cht
| |
21:20 | troy_s | Ok.
| |
21:20 | troy_s | Great.
| |
21:21 | troy_s | And the path to your chart spectro readings?
| |
21:21 | danieeel | ./
| |
21:21 | danieeel | its that FUJI-57R-0583.txt
| |
21:22 | troy_s | scanin -G1.0 -dipn -vv -p /path/to/image.tiff /path/to/chart.cht /path/to/spectro/values.txt
| |
21:22 | troy_s | WHERE:
| |
21:22 | troy_s | G = estimate of gamma in the chart 1.0 here.
| |
21:22 | danieeel | there is no scanin
| |
21:23 | danieeel | argyll-scanin
| |
21:23 | troy_s | -dipn generate diagnostics and use b&w image (i) p (draw pixel areas sampled) n (draw sample box names) -vv double verbose -p perspective correct (also will show up in diag)
| |
21:23 | troy_s | No... just scanin
| |
21:24 | danieeel | running...
| |
21:24 | troy_s | And... ?
| |
21:24 | danieeel | which is a general output how good/bad it is?
| |
21:24 | troy_s | You end up with TWO files
| |
21:25 | troy_s | filename.ti3 (we've covered this)
| |
21:25 | troy_s | and diag.tif
| |
21:25 | troy_s | Which is worth looking at to evaluate how it 'looked' at the chart.
| |
21:25 | danieeel | nice
| |
21:26 | danieeel | pretty smart
| |
21:26 | troy_s | Does it look valid?
| |
21:26 | troy_s | (Should show angle correction and the swatch regions it sampled)
| |
21:27 | danieeel | yes
| |
21:27 | troy_s | Ok.
| |
21:27 | troy_s | So let's generate a profile.
| |
21:27 | danieeel | http://home.rozsnyo.com/diag.jpeg
| |
21:27 | troy_s | Bingo.
| |
21:27 | troy_s | Looks good here.
| |
21:27 | troy_s | and the swatch regions are pretty good.
| |
21:27 | troy_s | Nice eh?
| |
21:28 | danieeel | so what with the TI3
| |
21:28 | troy_s | danieeel: That's the conversion of values to XYZ
| |
21:28 | troy_s | as discussed
| |
21:28 | danieeel | yes
| |
21:28 | troy_s | That is that lovely little spreadsheetable text file
| |
21:28 | danieeel | and from there?
| |
21:28 | troy_s | with errors and such
| |
21:28 | troy_s | now we will generate a profile from that data
| |
21:28 | troy_s | ready?
| |
21:28 | danieeel | of course
| |
21:31 | troy_s | danieeel: Sorry checking
| |
21:31 | troy_s | danieeel: colprof -vv -am -D"test" -u -qu ./sample
| |
21:31 | troy_s | -vv verbose level 2
| |
21:31 | troy_s | (or v2)
| |
21:32 | troy_s | -am Matrix
| |
21:32 | troy_s | -D description
| |
21:32 | troy_s | -u Scale auto scale white point
| |
21:32 | troy_s | -qu quality ultra
| |
21:33 | troy_s | danieeel: Give it a run
| |
21:33 | troy_s | You do NOT put the ti3 on there.
| |
21:33 | troy_s | It will find it.
| |
21:33 | danieeel | Profile check complete, peak err = 33.259319, avg err = 6.316813
| |
21:34 | troy_s | That's not horrible. Could be better.
| |
21:34 | troy_s | Your peaks will reveal the errors when you run profcheck
| |
21:34 | danieeel | there are reflections in the chart
| |
21:34 | troy_s | You can see where things are whack
| |
21:34 | troy_s | http://www.argyllcms.com/doc/profcheck.html
| |
21:34 | troy_s | So
| |
21:35 | troy_s | profcheck -v2 -k data.ti3 iccprofile.icc
| |
21:35 | troy_s | and that will spit out the superior DE2000 values for each.
| |
21:35 | troy_s | (lots of them)
| |
21:36 | danieeel | Profile check complete, errors(CIEDE2000): max. = 13.986425, avg. = 3.836771, RMS = 4.445354
| |
21:36 | danieeel | can it draw some red/green lights into the chart to see where are the issues?
| |
21:37 | troy_s | danieeel: Look at your diagnostic tif
| |
21:37 | troy_s | danieeel: And look at the text output
| |
21:38 | troy_s | danieeel: The values where you are getting 33 are the ones to look at
| |
21:38 | troy_s | (the high ones)
| |
21:38 | troy_s | and figure out which squares are which)
| |
21:39 | danieeel | the 13.98 is the worse
| |
21:39 | troy_s | SO 13 is quite whack in terms of DE2000
| |
21:39 | troy_s | can you evaluate why?
| |
21:39 | troy_s | (sheen or darker or?
| |
21:40 | danieeel | all above 10 are the very dark patches
| |
21:40 | troy_s | Do me a favor
| |
21:40 | troy_s | Pastebin your ti3
| |
21:41 | troy_s | Okie?
| |
21:41 | troy_s | And tell me what swatch is 'bright white'
| |
21:41 | troy_s | on your hutch
| |
21:41 | troy_s | what swatch is bright white?
| |
21:42 | danieeel | L1 white
| |
21:42 | troy_s | Ok great hold.
| |
21:42 | troy_s | See your TI3?
| |
21:42 | troy_s | for L1?
| |
21:42 | danieeel | yes
| |
21:43 | troy_s | L14 L1 etc
| |
21:43 | troy_s | Look at the RGB column
| |
21:43 | troy_s | You can jack up the exposure a little from what I can see.
| |
21:43 | danieeel | what about evennness?
| |
21:44 | danieeel | the 4 corners shall be same, does argyll count with that?
| |
21:44 | troy_s | danieeel: The revealing set is L1 L14 and
| |
21:44 | troy_s | Where's K29?
| |
21:44 | danieeel | not defined
| |
21:45 | troy_s | Interesting.
| |
21:45 | troy_s | So we can see from A29
| |
21:45 | troy_s | to L1
| |
21:45 | troy_s | what?
| |
21:45 | troy_s | :)
| |
21:45 | danieeel | it is not evenly lit, that i know for sure
| |
21:45 | troy_s | :)
| |
21:45 | troy_s | That's a big one.
| |
21:46 | troy_s | So your light is middle of the card on the left
| |
21:46 | troy_s | :)
| |
21:46 | troy_s | Look at L
| |
21:46 | danieeel | so at the end, the tool is not that smart, to compensate for such things (i know.. one can argue if unevenness is linear or what shape)
| |
21:46 | troy_s | G (most sensitive to luminance (Y closest value))
| |
21:46 | troy_s | is 93 in the middle
| |
21:46 | troy_s | and lower at top (A1)
| |
21:46 | troy_s | Well it can't.
| |
21:46 | troy_s | If you start mucking too much with non-linearity across a chart
| |
21:47 | troy_s | You are fudging numbers
| |
21:47 | troy_s | And those might be valid
| |
21:47 | troy_s | It has no real idea of figuring out what is white
| |
21:47 | troy_s | So it can't excatly interpolate that.
| |
21:47 | troy_s | Get my point?
| |
21:47 | danieeel | yes
| |
21:47 | troy_s | danieeel: Needless to say, evenness will help you
| |
21:48 | troy_s | Because the chart is underexposed by and large
| |
21:48 | troy_s | But you can't increase exposure much in that setup
| |
21:48 | troy_s | because you'll blow out that left side white region
| |
21:48 | troy_s | But I can also see from V01 that you have some room too
| |
21:48 | troy_s | So even lighting would let you more heavily saturate the image.
| |
21:48 | danieeel | have to go
| |
21:48 | troy_s | and probably bring up the values in the darker swatches
| |
21:48 | troy_s | danieeel: Okie.
| |
21:49 | troy_s | One more thing
| |
21:49 | troy_s | Do a plot
| |
21:51 | troy_s | xicclu -g -fb ./iccprofile.icc
| |
22:11 | danieeel | done
| |
22:11 | danieeel | back for a sec, but i have to end today
| |
22:16 | troy_s | danieeel: I'm sure you have plenty to chew on now
| |
22:16 | troy_s | danieeel: Probably some ideas too.
| |
22:18 | danieeel | well, it definitely helps to reach rec.709
| |
22:19 | troy_s | reaching rec709 is easy once you have a matrix.
| |
22:19 | troy_s | You just have to A) go to D65, B) go to 709 via a single matrix.
| |
22:19 | troy_s | Then probably slap on 1886
| |
23:54 | Bertl | back now ...
| 23:56 | Bertl | is reading up ...
|