Current Server Time: 07:09 (Central Europe)

#apertus IRC Channel Logs

2013/11/01

Timezone: UTC


23:03
Bertl
troy_s: http://vserver.13thfloor.at/Stuff/AXIOM/RAW/self_10ms.png is this more what you 'expect' from a real world scene?
23:04
Bertl
note that this was done with the floodlight, which is very yellowish
23:09
se6astian
hoho, the prototype is getting self-aware :)
23:09
se6astian
I am off to bed
23:09
se6astian
good night
23:09
se6astian
left the channel
23:28
Bertl
there is a 15ms and 20ms version as well, and of course, the 16bit raws for all of them
23:42
Bertl
okay, off for a nap ... bbl
23:43
gcolburn
joined the channel
23:43
gcolburn
hi herbert. got a question for you
23:45
dmj_nova
Bertl:
23:46
gcolburn
i'm trying to understand the exact bit order in the raw file. I'm using colors_400ms.raw16. the first pixel value I read in as a unit16 is 30560, which doesn't seem right. The values should be less than 4096 for 12 bit, how are these encoded (little endian, big endian, etc.)
23:56
gcolburn
I've got to head out. If you get a chance could you send me an email with more details on the bit order and the first couple pixel values for the image "colors_400ms.raw16"? I can successfully read a DNG, and re-write the image to a DNG (excluding thumbnails) and open it in photoshop raw. My first test will be to just replace the image from a Canon camera with one from the CMV12000, and then after that I'll work on writing a DNG with minimal tags.
23:57
gcolburn
left the channel
23:57
FergusL
Evening !
23:59
dmj_nova
gcolburn: Each 16 bits has the value in the highest12 bits and the lowest 4 bits are 0000
23:59
dmj_nova
evening FergusL
00:04
FergusL
Must be little-endian then, if I'm corre
00:05
FergusL
Correct
00:37
FergusL
ping troy_s ?
00:38
FergusL
http://vserver.13thfloor.at/Stuff/AXIOM/RAW/linear_2.svg regarding this
00:38
FergusL
I know saying "linear" doesn't always mean a linear, straight line
00:38
FergusL
but in that case, I was expecting to be indeed straight
00:38
FergusL
shall we try an invert sRGB on this for example ?
00:39
FergusL
Bertl: about the real world scene ? it could be identified as linear if the scene was visually well exposed
00:40
FergusL
if it was indeed that dark, then it might not be linear
01:12
dmj_nova
left the channel
01:13
dmj_nova
joined the channel
02:52
Bertl
FergusL: I'd say it was well exposed with the floodlight directly beneath the board :)
02:53
FergusL
so you'd say, if you were expecting an "OK" picture, it's unreasonable dark on the left ?
02:54
Bertl
and actually it is big endian, but the values are padded to 16bit on the lsb side
02:54
Bertl
yes, it is definitely too bright on the white paper and way too dark on the board itself
02:55
FergusL
you didn't change anything from the color tapes pictures ? exepct for the exp tie
02:55
FergusL
time
02:55
Bertl
it has f/11 but the sensor settings should be the same
02:56
Bertl
IIRC, the color tapes were f/5.6
02:56
FergusL
hm... I see
02:56
FergusL
because it definitely looks like being linear, but just looking like isn't enough at all
02:58
Bertl
hehe, well, I guess you are still fighting with yourself over the linearity measurements, right?
02:58
FergusL
yes
02:58
FergusL
I think I simply didn't understand "what" exactly the curves say
03:00
Bertl
shall I try to explain it once again?
03:01
FergusL
I understood the test I think : plotting data from the sensor of the evolution of brightness received
03:02
FergusL
and compare with what maths say
03:02
Bertl
yep, physics says that a point light will have even illumination in all directions
03:03
FergusL
yes
03:03
Bertl
and because the light will radiate in all directions, it will get dimmer relative to the surface of the sphere with a radius equal to the distance
03:03
FergusL
yes
03:04
Bertl
so you expect a 1/(r*r) behaviour there
03:04
FergusL
yes
03:04
Bertl
now something similar happens when you shine light on a diffuse surface (like paper)
03:05
Bertl
i.e. near the normal, you get bright illumination, near the tangential you get no illumination (lambert's cosine law)
03:05
Bertl
this gives you a cos(theta) behaviour
03:06
Bertl
again, it is the result of 'looking' at the area covered
03:06
FergusL
yes
03:07
Bertl
the light source is at a distance D perpendicular 'above' the paper
03:07
FergusL
still with you
03:07
Bertl
now the pythagoras comes in to get the distance to the paper
03:08
Bertl
i.e. D^2 + x^2 = d^2
03:08
FergusL
yes
03:08
Bertl
on the other end (the cosine law) we get
03:09
Bertl
cos(atan2(x, D))
03:10
Bertl
both combined basically give cos(atan2(x,D) * C/(D^2 * x^2)
03:10
Bertl
which is a term proportional to the initial intensity
03:11
Bertl
still with me?
03:16
FergusL
the other end ?
03:16
Bertl
the other end being the diffuse reflection
03:16
FergusL
I see, ok
03:16
Bertl
so that formular gives us a few nice curves
03:17
Bertl
when plotted against 'x'
03:17
Bertl
http://vserver.13thfloor.at/Stuff/AXIOM/RAW/linear_2.svg (the dark colored ones)
03:17
Bertl
which curve we get just depends on the 'C' a constant factor
03:18
Bertl
make C = 1.1, we get the dark red curve
03:18
Bertl
make C = 0.8, we get the dark green curve
03:19
Bertl
(ignore the fuzzy curves for now)
03:19
Bertl
okay?
03:19
FergusL
why these values ? am I asking because I missed something
03:20
Bertl
ah, the C is arbitrary
03:20
Bertl
i.e. they give a field of curves for all different Cs
03:20
Bertl
we do not know which one will match what color channel
03:21
FergusL
ok
03:21
Bertl
(because we don't know the color composition of our light source)
03:21
FergusL
ha, yes
03:21
Bertl
so, next step, is almost without math
03:22
Bertl
(well, I'm lying, but hey :)
03:22
Bertl
what we do is cut center strips from the image taken broken down per color channel
03:22
Bertl
http://vserver.13thfloor.at/Stuff/AXIOM/RAW/linear_test2_c0_32.png
03:22
FergusL
I see
03:23
Bertl
http://vserver.13thfloor.at/Stuff/AXIOM/RAW/linear_test2_c1_32.png
03:23
Bertl
and then we do some averaging, called 'decimation'
03:23
Bertl
i.e. we sort the values in each column from lowest to highest
03:24
Bertl
and then we throw away the 8 lowest and 8 highest values
03:24
Bertl
to remove most dead/hot pixels
03:24
FergusL
smart !
03:24
Bertl
and the 16 values we have left, we simply add together
03:24
Bertl
(building an average)
03:25
FergusL
yes
03:25
Bertl
the result is plotted in http://vserver.13thfloor.at/Stuff/AXIOM/RAW/linear_2.svg (as the fuzzy, bright colored curves)
03:25
FergusL
hm, yes
03:26
Bertl
now we simply try to match the field of math curves to the fuzzy curves obtained by analyzing the picture
03:26
Bertl
and we find that there are close matches at C=1.1 for red, C=0.8 for green and C=0.4 for blue
03:26
FergusL
I get the factors
03:27
Bertl
and we 'see' that the curves are quite similar to eachother
03:27
Bertl
(confirming our assumption that the sensor indeed provides linear data)
03:27
Bertl
of course, on the far right side, the lamp itself destorts the measurement
03:28
FergusL
yes
03:28
Bertl
i.e. we do not see the reflected light on the paper, we see the lamp instead
03:28
Bertl
and on the far left, we seem to have some kind of noise floor
03:29
Bertl
but what we now can do is calculate f(x)/g(x) for f(x) being the measured values of (x) and g(x) being the calculated values for x
03:30
Bertl
i.e. the relation between the curves, and if everything is fine, we should get 1
03:30
Bertl
I actually dropped the 'C' from g(x) so I'm using h(x) which is the original calculated funtion without the C
03:31
Bertl
which brings us to this plot: http://vserver.13thfloor.at/Stuff/AXIOM/RAW/linear_1.svg
03:32
FergusL
what does "sqd" mean ?
03:32
Bertl
it's short (and misleading) for square distance
03:32
FergusL
I see
03:32
Bertl
because actually it is the square distance compensated by the cosine
03:33
Bertl
and basically if you draw a horizontal line for each color component, that would mean a perfect fit
03:33
Bertl
as you see there is some variation caused by a multitude of things (mostly the fact that our light source and the paper is not perfect)
03:33
FergusL
yes
03:34
FergusL
but the second file is rather clear !
03:34
FergusL
linear_2
03:34
Bertl
yeah, just the linear_1 shows the correlation better
03:35
Bertl
i.e. linear_2 could still look similar but the curves in linear_1 would bend or have an angle
03:35
FergusL
why are they spread around 1 ? because of the factors ?
03:35
Bertl
yes, it is the relation of those C factors
03:37
Bertl
a very interesting detail is the straight line on the left end of the blue curve
03:37
Bertl
it is caused by the sensor defect on the left side of the picture :)
03:37
FergusL
ha yes
03:42
Bertl
so everything clear now?
03:44
FergusL
yes, much clearer
03:46
Bertl
good! :)
03:53
FergusL
what is the difference between the raw16 and raw16.xy files ?
03:53
FergusL
.xz
03:54
Bertl
.xz is just compressed, to save space
03:54
Bertl
i.e. lossless compression
03:55
FergusL
oh... of course
03:55
FergusL
what are the raw16 files like ? direct binary dump ?
03:56
Bertl
kind of, they are the gray values from the sensor (in bayer pattern) shifted by 4 to fill 16 bits (we actually get 12 bits from the sensor)
03:57
FergusL
are developpers supposed to use this as-is and write code to handle ,files that way ?
03:58
Bertl
well, gabe is working on a DNG writer, which will process this input and generate DNG files
03:59
FergusL
yes
03:59
Bertl
but yes, for now it is how data is stored
03:59
Bertl
we added the register dump yesterday/today
03:59
FergusL
I'm not saying it's bad or anything, just wanted to know if I got it right :)
03:59
FergusL
maybe I can try to do something with OCIO and python
03:59
FergusL
OIIO, rather
03:59
Bertl
so the new files are slightly larger (256 bytes) but contain the register values
04:06
FergusL
do you know python ?
04:06
Bertl
yup
04:11
dmj_nova
As far as the values of C go, it could have to do with human perception of red, green, and blue light
04:12
Bertl
no, the human is not part of the equation :)
04:12
FergusL
I compiled all the ocio and oiio suite on some of my linuxs
04:12
FergusL
can't remember which one...
04:13
FergusL
will have to find out
04:13
Bertl
the C factors depend solely on the light source and the spectral response of the sensor
04:13
dmj_nova
Bertl: no, I mean in the response the sensor was designed to have
04:15
Bertl
as we have no idea about the spectral response of the sensor, we just don't know
04:15
dmj_nova
as far as the green, how did you handle the fact that a row will have 2x the green pixels?
04:15
Bertl
I just ignored one green channel completely
04:15
Bertl
c0,c1,c2,c3 are all channels, I just used c0,c1 and c3 IIRC
04:16
dmj_nova
cause the ratio of Red and Blue are about right for ntsc
04:16
Bertl
I'd say that is probably coincidence
04:18
dmj_nova
The Green would actually be a bit undercompensated, but still in a somewhat similar proportion
04:18
dmj_nova
(if you double the signal because of the bayer pattern)
04:18
Bertl
I'd say the light source was mainly in the red spectrum, with more reds than greens and only little blue
04:19
dmj_nova
Which also coincides mostly with human sensitivity to various wavelengths
04:19
dmj_nova
hmm
04:19
dmj_nova
so it wasn't something close to a white light?
04:19
dmj_nova
or what would look white to you?
04:20
Bertl
not at all, it was a tiny 12V incandescent light bulb
04:21
dmj_nova
I'd be curious to see the response to a white bulb
04:21
Bertl
send me one :)
04:26
FergusL
night guys
04:26
FergusL
I'll try to be useful tomorrow
04:27
Bertl
cya, have a good night!
04:28
FergusL
thanks, you too
04:28
FergusL
thanks for all your efforts :)
04:30
Bertl
you're welcome!
06:57
Bertl
off to bed now ... have a good one everyone!
14:38
FergusL
hi here
14:42
se6astian
joined the channel
14:46
se6astian
good afternoon
14:46
FergusL
hello se6astian
15:35
FergusL
giving a try on my own at a raw->anything converter
15:48
se6astian
great
15:49
se6astian
I will release the news article now to the public
16:14
FergusL
ping Bertl ? from what I can understand, the bayer pattern should be RGGB
16:17
FergusL
as per page 58
16:43
Bertl
the bayer2rgb calls it RGGB
16:43
Bertl
i.e. it is R G R G in the first row
16:43
Bertl
and G B G B in the second row
16:44
se6astian
article released
16:44
Bertl
so 4 pixels (2 from each row) give the RGGB pattern when read from left to right and from top to bottom
16:44
Bertl
se6astian: great! thanks!
16:50
se6astian
twitter, fb and g+ propaganda released
16:50
se6astian
please sprad it ;)
16:50
se6astian
writing to news websites again now
16:51
FergusL
yes Bertl, the mozaic pattern is generally expressed as 2 from the first row and then 2 from the second row
16:51
FergusL
do you use invert Y Bertl ?
16:51
FergusL
apparently it's recommended
16:51
Bertl
I used both, depending on the test case and motive
16:52
FergusL
ok
16:52
Bertl
it is recommended, because otherwise the image will be mirrored :)
16:52
FergusL
makes sense
16:52
FergusL
actually I had forgotten that
16:52
FergusL
true, that's the very functionning of light
16:53
Bertl
actually it is more the way how CMOSIS numbers the rows, but yes, mirrors are fun :)
17:09
FergusL
ping troy_s ? could use some help with oiio
17:09
FergusL
compiled with py bindings, all fine
17:09
FergusL
just wondering about writing data to file
17:15
FergusL
oh, oiio even has interpolation functions
17:56
se6astian
newsletter and news websites contacted
17:56
se6astian
The apertus° association will hold its 2013 general assembly in 2 weeks
17:56
se6astian
https://www.apertus.org/forums/viewtopic.php?f=23&t=1329
17:57
se6astian
all members are invited
17:57
se6astian
people who are not yet members can apply for membership at any time
17:57
se6astian
the only requirement is to have made a contribution to the project
17:58
se6astian
more details here: https://www.apertus.org/association
18:00
Bertl
shall I apply for a membership?
18:06
se6astian
if you want to participate in the democratic processes of the association yes!
18:07
se6astian
I think you fullfil the criterias by a tiny margin :P
18:51
FergusL
I'm afraid python with really rapidly crumble under the heavyweight data
18:55
dmj_nova
FergusL: what do you want to use python *for*?
18:55
FergusL
dumping the .raw16 to exrs or whatver
18:56
dmj_nova
I wouldn't use python for low level data manipulation (though it would be reasonable to use it if the number of images you need to dump is small)
18:59
FergusL
it's not that it's low level, it's just that it is a lot of data
19:01
FergusL
but I agree, indeed
19:07
FergusL
I have the solution to build a lot of empty variables beforehand so that it is easy to fill, but Python provides more elegant solutions
19:08
FergusL
or maybe I should seek on-demand to the desired byte...
19:16
mars_
will you publish the code?
19:43
se6astian
http://www.slashcam.de/news/single/Erste-4K-RAW-Bilder-vom-Apertus-Axiom-Prototypen---10995.html
19:51
mars_
great!
20:15
dmj_nova1
joined the channel
20:17
dmj_nova
left the channel
20:18
dmj_nova1
changed nick to: dmj_nova
20:33
FergusL
of course mars_
20:34
FergusL
interested ? interested in helping ?
20:57
dmj_nova1
joined the channel
20:57
dmj_nova
left the channel
21:02
dmj_nova1
left the channel
21:03
dmj_nova
joined the channel
21:07
dmj_nova1
joined the channel
21:08
dmj_nova
left the channel
21:09
troy_s
FergusL: Go
21:09
troy_s
Briefly here
21:10
troy_s
And the test we devised Bertl applied, and it does look like the data is linear which is great (and expected) so the only thing would be to calculate a suitable starting TRC
21:10
FergusL
troy_s: you used oiio, right ?
21:10
FergusL
okay
21:10
troy_s
(Which is ideally a Cineon or JoshPines Log probably, as those are very much reference standard logs for grading)
21:10
FergusL
actually I could answer my oiio-specific question, am going to use ImageBuf to store the pixels and then saving
21:11
troy_s
I have used OIIO, but via C.
21:11
FergusL
the API is very similar (maybe not for oiio Iterators)
21:11
troy_s
(to dump raw YCbCr from a video stream into a TIFF)
21:11
FergusL
yes, I remember
21:11
troy_s
It is pretty simple.
21:11
troy_s
Load a buffer and dump.
21:12
troy_s
(page me if you direct to me now. I am on notify mode for a few)
21:13
FergusL
the next question is more general regarding programming
21:13
FergusL
I'm going to try on a small debayer program
21:14
dmj_nova1
left the channel
21:14
FergusL
dinner, later !
21:18
dmj_nova
joined the channel
21:36
troy_s
FergusL: Do VNG interpolation
21:37
troy_s
FergusL: Or try cubic b with prefilter and correct chroma citing.