Current Server Time: 00:59 (Central Europe)

#apertus IRC Channel Logs

2014/05/27

Timezone: UTC


02:00
gcolburn
joined the channel
02:14
gcolburn
left the channel
07:17
intracube
joined the channel
07:40
se6astian
joined the channel
07:57
sb0
joined the channel
08:41
Marco742
joined the channel
08:43
mars_
hi marco
09:25
Marco742
hi
09:27
Marco742
mars_: just on another client, therefore other username
09:36
sb0
left the channel
09:55
Marco742
left the channel
10:04
Bertl
morning folks!
10:36
Marco74
mahlzeit
11:10
se6astian
left the channel
11:15
Marco74
left the channel
11:30
Marco74
joined the channel
11:32
troy_s
left the channel
14:26
Lunastyx
left the channel
14:29
Lunastyx
joined the channel
14:36
Lunastyx
left the channel
14:39
Lunastyx
joined the channel
14:48
Lunastyx
left the channel
14:50
Lunastyx
joined the channel
15:20
se6astian
joined the channel
15:21
se6astian
good evening
15:38
Bertl
evening se6astian!
15:39
Marco74
good evening
15:40
Marco74
Bertl: just trying to figure out how image data will be represented in the memory
15:41
Marco74
I assume pixel_remap.vhd defines the architecure for this?
15:41
Bertl
in memory, we currently have blocks of 4 sensel (R/G/G/B) packed together in a 64bit word
15:41
Bertl
they come from the first and second row/column
15:42
Bertl
there is some space left in that word because the data is 12bit (atm) which leaves 16 bit for other stuff (currently used as overlay)
15:42
Bertl
the pixel_remap.vhd reorders the data from the sensor to match this format
15:43
Bertl
the data is transmitted as sensel over two lines with 128 columns distance
15:43
Marco74
as the cmv12000 spec says
15:45
Bertl
yep, precisely
15:46
Marco74
So, I need to read an image from a file an store it to the memory in the same manner?
15:53
Bertl
yes, I'd suggest to read some kind of standard deep bit (i.e. 12 or 16bit) format like PNG or TIFF or PPM either gray or in color and generate the sensel information and the memory layout from that
15:53
Bertl
note that you want to apply the parts of the sensor pipeline which affect the data
15:54
Bertl
namely the 4 LUTs (12 to 18bit signed) and the Row/Col Noise correction
15:56
Bertl
there is also a clipping which can be enabled and disabled at the end of the R/C Noise correction
15:57
Bertl
i.e. values greater than 4095 (12bit) will become white (4095) and values less than 0 will become black (0)
15:57
Bertl
the clipping can be enabled independantly
15:59
Marco74
ok, but at the moment I'm struggling to figure out where the single pixels are stored in memory
15:59
Marco74
Is is like that:
15:59
Marco74
|row 1|row 2|...|row n|
15:59
Marco74
where
15:59
Marco74
row1 is like
16:00
Marco74
|col 1|col 2|...|col n|
16:00
Marco74
?
16:00
Bertl
no
16:00
Marco74
sorry indexes should start with 0
16:00
Bertl
the sensor has sensel (different colors) in a bayer pattern
16:00
Bertl
so the first row looks like this:
16:00
Bertl
R G R G R G .... (4096 sensel total)
16:01
Bertl
the second row looks like this:
16:01
Bertl
G B G B G B .... (again 4096 sensel)
16:01
Marco74
ah, ok the cmv12000 does not recalculate the colors...
16:01
Marco74
s/colors/full colors/
16:01
Bertl
no, it would give the same data with a monochrome sensor
16:02
Bertl
where all sensel would just report brightness
16:02
Marco74
exactly
16:02
Bertl
the remap part now isolates blocks of 4 pixels
16:02
Bertl
(0,0) (1,0) (0,1) and (1,1)
16:03
Bertl
i.e. the first red in the first row, the first green in the first row, the first green in the second row and the first blue in the second row form one block
16:03
Bertl
12x4 = 48 bit
16:04
Bertl
those get mapped through the 4 12u->18s LUTs
16:04
Bertl
i.e. each sensel in the block has its own LUT
16:04
Bertl
creating 4 18bit signed values
16:05
Bertl
then the R/C correction adds a certain value (depending on row and column) to each 18s value
16:06
Bertl
and then the result is optionally clipped and again reduced to 12bit unsigned per value
16:06
Bertl
the result is packed in the upper 48bit of a 64bit word in memory
16:07
Bertl
this happens along a row, for each two rows (3072/2) of the sensor
16:08
Marco74
ok, now also the two sided read-out makes really sense ...
16:12
Bertl
note that it would be nice to model the R/C noise correction as well, as it would allow to test various corrections without actual hardware
16:12
Marco74
so 4096x3072 sensel information form a 2048x1536 image or will the "missing" information be interpolated?
16:13
Bertl
the sensor on the alpha has 4096x3072 sensel
16:13
Bertl
we can assume that the input image can be scaled to fit the size
16:14
Bertl
but, only certain information will hit the sensel, i.e. from the pixel at (0,0) only the red channel
16:14
Bertl
from the pixel at (0,1) only the green channel
16:14
Marco74
so my input image should be 2048x1536, because one rgb pixel can be used for two rows and two columns
16:14
Marco74
s/should/could/
16:14
Bertl
I wouldn't do that because the spacial information is different
16:15
Bertl
here is an example:
16:15
Marco74
ah, ok
16:15
Bertl
consider a pattern of white and black 1pixel wide bars
16:15
Bertl
assuming they start with white, then sensor will see some kind of yellow
16:16
Bertl
as there is no blue (black bars) and only half of the green lit
16:16
Marco74
but full red
16:16
Bertl
yep, this is not immediately obvious to the tester, so it is probably better to take a larger image and do the spacial sampling
16:17
Marco74
interesting aspect ... :)
16:18
Bertl
if you want to cover all cases, add a switch to change the image processing from bayer pattern (R/G/G/B) to gray (just brightness)
16:18
Bertl
which would be what we would get from a monochrome cmv12k
16:23
Marco74
ok.
17:48
jucar
joined the channel
18:30
jucar
left the channel
20:35
se6astian
left the channel
23:43
FergusL
left the channel