So we have added a special JP4 mode that bypasses the Demosaic in the FPGA and provides an image with pixels in each 16x16 macroblock that are rearranged to separate Bayer colors in individual 8x8 blocks, then encoded as monochrome. Demosaic will be applied during post-processing on the host PC. This section describe different algorithms and implementations used to provide this functionality.
- compression speed improvement - possibility to obtain more high quality image (near to RAW) - drasticaly lowering data size
Image decodingJP4 format can be easy manipulated by Matlab
1. Read image
I=imread('hdr02.jp4'); %read JP4 file like JPEG I=I(:,:,1); %strip color data2. Remove block grouping
II=deblock16x16(I); %deblock image
%file deblock16x16.m function y=deblock16x16(I) y0=uint8(zeros(size(I))); for x=1:16:size(I,1) for y=1:16:size(I,2) blk16=I(x:x+15,y:y+15); for dx=0:7 for dy=0:7 y0(x+2*dx ,y+2*dy) = blk16(dx+1,dy+1); y0(x+2*dx+1,y+2*dy) = blk16(dx+9,dy+1); y0(x+2*dx ,y+2*dy+1) = blk16(dx+1,dy+9); y0(x+2*dx+1,y+2*dy+1) = blk16(dx+9,dy+9); end end end end y=y0;2. Demosaic image (Decode from Bayer CFA (Color Filter Array) encoded image)
3. Show image
JP4 stream can be decoded by mplayer. Use this patch for glue libdc1394 and mplayer video filter frontend.
Debayer (Demosaic) algorithm variants provided by libdc1394: - Nearest Neighbor - Simple AVT - Bilinear - HQLinear - Downsample - Edge Sense II - VNG - AHD - Linear - fast Linear
Bayer pattern look like this
Some sensors have possibility to set independed scale to G1 and G2. Considering that the accessible optics does not give the full permission of a sensor resolution, it can be used for increase in a dynamic range of a image sensor.
SSE optimized version ready now. Multithreaded in progress.