Current Server Time: 14:11 (Central Europe)

#apertus IRC Channel Logs

2014/05/27

Timezone: UTC


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