JP4
Format variations:
Show changes OlegJP4
JP46 processing on the host:
← Older revision Revision as of 16:22, 5 January 2017 (6 intermediate revisions not shown)Line 1: Line 1: -== JP4 Format ==+==JP4 Format== -JP4 format is based on JPEG compression, it was originally developed at Elphel for accurate representation of the scanned book pages and later used in other applications that involve post-processing. This format is supported in both [[353|NC353 series]] and current [[10393|NC393 series]] cameras. The standard JPEG was developed to compress images so they visually are almost the same as uncompressed but are significantly smaller in size. The goal of JP4 is camera-centric, not human-centric. It tries to preserve as much as possible of the information from the camera sensor (ideally "raw") while providing reasonable compression. The most damaging part of the color JPEG compression is the de-mosaic part of it. "Lossy" part of the compression (quantization after DCT) can be eliminated with setting compression quality to 100% that effectively disables quantization. Dynamic range compression ("gamma conversion") is usually designed to be lower than the sensor shot noise - significant for most modern small-pixel (and so low full-well capacity) sensors. That leaves the demosaic ("guessing" the missing colors in Bayer mosaic sensor outputs) a single most damaging operation. In the camera this is usually done by processing data in 3x3 or 5x5 pixel blocks and it is difficult to distinguish between variations (especially sharp) in intensity and the color tone. There are much more advanced algorithms that can be used during post-processing that will provide much better results, but they require "raw" sensor data. Or - the data saved in JP4 format.+The goal of the JP4 format is to preserve as much as possible of the information from the image sensor (ideally "raw") while providing reasonable compression. Based on JPEG compression, the format was originally developed at Elphel for accurate representation of the scanned book pages and later used in other applications that involve post-processing. + +The standard JPEG was developed to compress images so they visually look almost the same as uncompressed but are significantly smaller in size. The most damaging part of the color JPEG compression is the demosaic part of it. "Lossy" part of the compression (quantization after DCT) can be eliminated with setting compression quality to 100% that effectively disables quantization. Dynamic range compression ("gamma conversion") is usually designed to be lower than the sensor shot noise - significant for most modern small-pixel (and so low full-well capacity) sensors. That leaves the demosaic ("guessing" the missing colors in Bayer mosaic sensor outputs) a single most damaging operation. In the camera this is usually done by processing data in 3x3 or 5x5 pixel blocks and it is difficult to distinguish between variations (especially sharp) in intensity and the color tone. There are much more advanced algorithms that can be used during post-processing that will provide much better results, but they require "raw" sensor data. Or - the data saved in JP4 format. Here is a [http://community.elphel.com/jp4/jp4demo.php JP4 Demo] that illustrates this algorithm and how it is related to standard JPEG. Here is a [http://community.elphel.com/jp4/jp4demo.php JP4 Demo] that illustrates this algorithm and how it is related to standard JPEG. -JP4 mode bypasses the demosaic/color converiosn 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_on_client_side|Demosaic]] will be applied during post-processing on the host PC. This section describe different algorithms and implementations used to provide this functionality.+JP4 mode bypasses the demosaic/color conversion 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_on_client_side|Demosaic]] will be applied during post-processing on the host PC. This section describe different algorithms and implementations used to provide this functionality. -Main goals:+==Features== -* compression speed improvement+Compared to JPEG: -* possibility to obtain more high quality image (near to RAW)+* Higher compression speed -* drasticaly lowering data size+* Better image quality (close to RAW) -== Different JP4 Modes in 8.X Software ==+* Pixel data is not modified by demosaicing algorithm -only modes 0-2 can be processed with standard libjpeg: +* Smaller file size -*0 - mono6, monochrome (color YCbCr 4:2:0 with zeroed out color componets) + -*1 - color, YCbCr 4:2:0, 3x3 pixels + -*2 - jp46 - original JP4 (from 7.X software), encoded as 4:2:0 with zeroed color components + -*3 - jp46dc, modified jp46 so each color component uses individual DC diffenential encoding + -*4 - reserved for color with 5x5 conversion (not yet implemented)+ -*5 - jp4 with ommitted color components (4:0:0)+ -*6 - jp4dc, similar to jp46dc encoded as 4:0:0+ -*7 - jp4diff, differential where (R-G), G, (G2-G) and (B-G) components are encoded as 4:0:0+ -*8 - jp4hdr, (R-G), G, G2,(B-G) are encoded so G2 can be used with high gain + -*9 - jp4fiff2, (R-G)/2, G,(G2-G)/2, (B-G)/2 to avoid possible overflow in compressed values + -*10 - jp4hdr2, (R-G)/2, G,G2,(B-G)/2 + -*14 - mono, monochrome with ommitted color components (4:0:0)+ +== Format variations== +{| class="wikitable" +|- +! Name +! Description +|- +| align='center' | '''jp46''' +| original JP4 (from 7.X software in 10353s), encoded as 4:2:0 with zeroed color components +|- +| align='center' | '''jp4dc''' +| modified jp46 so each color component uses individual DC differential encoding +|- +| align='center' | - +| reserved for color with 5x5 conversion (not yet implemented) +|- +| align='center' | '''jp4''' +| 4:0:0, omitted color components +|- +| align='center' | '''jp4dc''' +| similar to jp46dc encoded as 4:0:0 +|- +| align='center' | '''jp4diff''' +| differential where (R-G), G, (G2-G) and (B-G) components are encoded as 4:0:0 +|- +| align='center' | '''jp4hdr''' +| (R-G), G, G2,(B-G) are encoded so G2 can be used with high gain +|- +| align='center' | '''jp4fiff2''' +| (R-G)/2, G,(G2-G)/2, (B-G)/2 to avoid possible overflow in compressed values +|- +| align='center' | '''jp4hdr2''' +| (R-G)/2, G,G2,(B-G)/2 +|} +====other formats==== +{| class="wikitable" +|- +! Name +! Description +|- +| align='center' | '''color''' +| YCbCr 4:2:0, 3x3 pixels +|- +| align='center' | '''mono6''' +| monochrome - color YCbCr 4:2:0 with zeroed out color components +|- +| align='center' | '''mono''' +| monochrome - color YCbCr 4:0:0 with omitted color components +|} -=== [[JP4 HDR]] ===+==== [[JP4 HDR]] ==== -Bayer pattern look like this+Bayer pattern looks like this {| class="wikitable" {| class="wikitable" |- |- Line 81: Line 119: |} |} -The remark: all kinds of bayer patterns can be received from initial RGGB by flipping on X and/or Y.+'''Note:''' all kinds of Bayer patterns can be derived from initial RGGB by flipping on X and/or Y. -Some sensors have possibility to set independed scale to G1 and G2.+Some sensors have possibility to set independent scales to G1 and G2. -Considering that the accessible optics does not give the full permission of a sensor resolution, it [[JP4_HDR|can be]] used for increase in a dynamic range of a image sensor.+Considering that the accessible optics does not give the full permission of a sensor resolution, it [[JP4_HDR|can be]] used to increase the dynamic range of a image sensor. == JP46 processing on the host == == JP46 processing on the host == === JP46 image decoding in MATLAB === === JP46 image decoding in MATLAB === -JP4 format can be easy manipulated by [http://www.mathworks.com/matlabcentral/fileexchange/22144 MATLAB] [[Image:Fruits_jp4.jpg|thumb|JP4 image]]+JP4 format can be easy manipulated by [http://www.mathworks.com/matlabcentral/fileexchange/22144 MATLAB] [[Image:Fruits_jp4.jpg|thumb|JP46 image]] 1. Read image 1. Read image OlegTmp manual
Image formats:
← Older revision Revision as of 15:59, 5 January 2017 (2 intermediate revisions not shown)Line 221: Line 221: ==<font color="blue">Image formats</font>== ==<font color="blue">Image formats</font>== ====jpeg==== ====jpeg==== -* supported but is not the best for processing since a lot of information is lost at demosaicing+* '''color''': YCbCr 4:2:0, 3x3 pixels +* '''mono6''': monochrome - color YCbCr 4:2:0 with zeroed out color components +* '''mono''' : monochrome - color YCbCr 4:0:0 with omitted color components + +'''Note:''' Is not the best for processing since a lot of information is lost at demosaicing ====jp4 raw==== ====jp4 raw==== * [[JP4|'''More information''']] * [[JP4|'''More information''']] Line 257: Line 261: ==<font color="blue">Other info</font>== ==<font color="blue">Other info</font>== +====Tools for calibrated systems==== +* [[Elphel_Software_Kit_for_Ubuntu#ImageJ_and_Elphel_plugins_for_imageJ|Install ImageJ plugins]] +** decode jp4 raw format +** aberrations correction +** distortion correction (pixel mapping) +** rectification and projection + ====switch between ERS and GRR modes in MT9P006==== ====switch between ERS and GRR modes in MT9P006==== * [[Electronic_Rolling_Shutter#ERS_and_GRR_in_MT9P001_on_10393|Read article]] * [[Electronic_Rolling_Shutter#ERS_and_GRR_in_MT9P001_on_10393|Read article]] OlegTmp manual
← Older revision
Revision as of 15:05, 5 January 2017
Line 257:
Line 257:
==<font color="blue">Other info</font>== ==<font color="blue">Other info</font>==
+====Tools for calibrated systems====
+* [[Elphel_Software_Kit_for_Ubuntu#ImageJ_and_Elphel_plugins_for_imageJ|Install ImageJ plugins]]
+** decode jp4 raw format
+** aberrations correction
+** distortion correction (pixel mapping)
+** rectification and projection
+
====switch between ERS and GRR modes in MT9P006==== ====switch between ERS and GRR modes in MT9P006====
* [[Electronic_Rolling_Shutter#ERS_and_GRR_in_MT9P001_on_10393|Read article]] * [[Electronic_Rolling_Shutter#ERS_and_GRR_in_MT9P001_on_10393|Read article]]
Oleg
Poky 2.0 manual
Features:
← Older revision Revision as of 14:47, 5 January 2017 (One intermediate revision not shown)Line 14: Line 14: ** [https://github.com/Elphel/vdt-plugin VDT Plugin repository] ** [https://github.com/Elphel/vdt-plugin VDT Plugin repository] -* Once everything is built it supports updating software projects on the target system+* Once everything is built it supports updating software projects (files and binaries) on the target system ** access is set up in yocto's ''local.conf'' (see ''setup.py'' output) + ''ssh-copy-id'' ** access is set up in yocto's ''local.conf'' (see ''setup.py'' output) + ''ssh-copy-id'' ** ''bitbake some-app -c target_scp'' from the command line or Eclipse IDE - see examples in '''elphel-apps-...''' at [https://github.com/Elphel GitHub] ** ''bitbake some-app -c target_scp'' from the command line or Eclipse IDE - see examples in '''elphel-apps-...''' at [https://github.com/Elphel GitHub] Line 20: Line 20: ==<font color="blue">Supported OSes</font>== ==<font color="blue">Supported OSes</font>== -** Kubuntu 14.04.3 LTS x64 (until June 2016)+* Kubuntu 14.04.3 LTS x64 (until June 2016) -** Kubuntu 16.04 x64 (as of June 2016)+* Kubuntu 16.04 x64 (as of June 2016) ==<font color="blue">Required packages</font>== ==<font color="blue">Required packages</font>== Oleg01/05/17 [imagej-elphel][master] by AndreyFilippov: changing flavor of dctiii
AndreyFilippov committed changes to the Elphel git project :
changing flavor of dctiii
changing flavor of dctiii
01/05/17 [imagej-elphel][master] by AndreyFilippov: changing flavor of dctiii
AndreyFilippov committed changes to the Elphel git project :
changing flavor of dctiii
changing flavor of dctiii
10393
← Older revision
Revision as of 05:19, 5 January 2017
(One intermediate revision not shown)Line 2:
Line 2:
[[Image:10393_top_sm.png|frame|[[Media:10393_top.jpeg|10393 board, top view]]]] [[Image:10393_top_sm.png|frame|[[Media:10393_top.jpeg|10393 board, top view]]]]
[[Image:10393_bottom_sm.png|frame|[[Media:10393_bottom.jpeg|10393 board, bottom view]]]] [[Image:10393_bottom_sm.png|frame|[[Media:10393_bottom.jpeg|10393 board, bottom view]]]]
-10393 is the system board of Elphel NC393 series camera. It will also replace [[10353|10353 board]] in [[Elphel_Eyesis4Pi|Eyesis4pi]] and other Elphel multi-sensor cameras. It has the same physical dimensions as 10353 and may be used as an upgrade to the previous camera modules.+10393 is the system board of Elphel NC393 series camera. It is the core part of the [[Eyesis4Pi_393|Eyesis4Pi 393]], the full-sphere multi-camera system. It has the same physical dimensions as the 10353 (previous generation) and may be used as an upgrade to the previous camera modules.
==Overview== ==Overview==
Line 34:
Line 34:
** 2x 10-conductor flex cable ports ** 2x 10-conductor flex cable ports
*** carry 3.3VDC, 5VDC, USB, I<sup>2</sup>C and GPIO *** carry 3.3VDC, 5VDC, USB, I<sup>2</sup>C and GPIO
-*** support other extension boards ([[103695|IMU]], [[103696|GPS]])+*** supports other extension boards ([[103695|IMU]], [[103696|GPS]])
====Other==== ====Other====
Oleg
01/04/17 [imagej-elphel][master] by AndreyFilippov: after removing old code
AndreyFilippov committed changes to the Elphel git project :
after removing old code
after removing old code
01/04/17 [imagej-elphel][master] by AndreyFilippov: after removing old code
AndreyFilippov committed changes to the Elphel git project :
after removing old code
after removing old code
Poky 2.0 manual
Build kernel:
← Older revision Revision as of 02:19, 5 January 2017 (11 intermediate revisions not shown)Line 2: Line 2: * Building embedded Linux image for Zynq ARMv7 platform - Elphel 10393 board * Building embedded Linux image for Zynq ARMv7 platform - Elphel 10393 board +* Yocto Poky revision = 2.0 (Jethro) -==<font color="blue">About</font>==+==<font color="blue">Features</font>== +* Environment is set up with a single script +* All Elphel projects are configured for Eclipse IDE: +** fpga projects (verilog) +** kernel +** applications projects +* All steps for fpga projects are run from Eclipse IDE +** Read about [http://blog.elphel.com/2016/05/tutorial-02-eclipse-based-fpga-development-environment-for-elphel-cameras/ setting up Eclipse based FPGA development] +** [https://github.com/Elphel/vdt-plugin VDT Plugin repository] + +* Once everything is built it supports updating software projects on the target system +** access is set up in yocto's ''local.conf'' (see ''setup.py'' output) + ''ssh-copy-id'' +** ''bitbake some-app -c target_scp'' from the command line or Eclipse IDE - see examples in '''elphel-apps-...''' at [https://github.com/Elphel GitHub] + +==<font color="blue">Supported OSes</font>== -* Yocto Poky revision = 2.0 (Jethro) -* Host OSes: ** Kubuntu 14.04.3 LTS x64 (until June 2016) ** Kubuntu 14.04.3 LTS x64 (until June 2016) ** Kubuntu 16.04 x64 (as of June 2016) ** Kubuntu 16.04 x64 (as of June 2016) Line 76: Line 89: . ./oe-init-build-env . ./oe-init-build-env bitbake u-boot device-tree linux-xlnx core-image-elphel393 bitbake u-boot device-tree linux-xlnx core-image-elphel393 +</font> + +==<font color="blue">Compare '''built''' vs '''running on target system''' software</font>== +* +<font size='2'> + cd elphel393 + ./check_versions.py root@192.168.0.9 </font> </font> Line 87: Line 107: </font> </font> ====Output==== ====Output==== -* poky/build/tmp/deploy/images/<machine>/'''boot.bin'''+* '''boot.bin''' -* poky/build/tmp/deploy/images/<machine>/'''u-boot-dtb.img'''+* '''u-boot-dtb.img''' ====Notes==== ====Notes==== Line 100: Line 120: </font> </font> ====Output==== ====Output==== -* poky/build/tmp/deploy/images/<machine>/'''devicetree.dtb'''+* '''devicetree.dtb''' ==<font color="blue">Build kernel</font>== ==<font color="blue">Build kernel</font>== Line 109: Line 129: </font> </font> ====Output==== ====Output==== -* poky/build/tmp/deploy/images/<machine>/'''uImage''' (kernel)+* '''uImage''' ====Notes==== ====Notes==== Line 121: Line 141: </font> </font> ====Output==== ====Output==== -* poky/build/tmp/deploy/images/<machine>/'''uramdisk.image.gz''' (the file has *.u-boot extension after it's built)+* '''uramdisk.image.gz''' (the file has *.u-boot extension after it's built) - +* '''rootfs.ubi''' - +* '''rootfs.ubifs''' ==<font color="blue">Notes</font>== ==<font color="blue">Notes</font>== Oleg01/04/17 [imagej-elphel][dct] by AndreyFilippov: before removing old code
AndreyFilippov committed changes to the Elphel git project :
before removing old code
before removing old code
01/04/17 [imagej-elphel][master] by AndreyFilippov: before removing old code
AndreyFilippov committed changes to the Elphel git project :
before removing old code
before removing old code
01/04/17 [imagej-elphel][dct] by AndreyFilippov: adding compactness for sym_kernel, separate dc difference
AndreyFilippov committed changes to the Elphel git project :
adding compactness for sym_kernel, separate dc difference
adding compactness for sym_kernel, separate dc difference
01/04/17 [imagej-elphel][master] by AndreyFilippov: adding compactness for sym_kernel, separate dc difference
AndreyFilippov committed changes to the Elphel git project :
adding compactness for sym_kernel, separate dc difference
adding compactness for sym_kernel, separate dc difference
01/04/17 [eyesis4pi-393-gui][master] by Oleg Dzhimiev: normal & fast recording buttons
Oleg Dzhimiev committed changes to the Elphel git project :
normal & fast recording buttons
normal & fast recording buttons
01/04/17 [eyesis4pi-393-gui][master] by Oleg Dzhimiev: +2 buttons
Oleg Dzhimiev committed changes to the Elphel git project :
+2 buttons
+2 buttons
01/04/17 [elphel-web-393][master] by Oleg Dzhimiev: set camogm raw recording back to lba_start
Oleg Dzhimiev committed changes to the Elphel git project :
set camogm raw recording back to lba_start
set camogm raw recording back to lba_start
01/04/17 [elphel-web-393][] by Oleg Dzhimiev: set camogm raw recording back to lba_start
Oleg Dzhimiev committed changes to the Elphel git project :
set camogm raw recording back to lba_start
set camogm raw recording back to lba_start
Main Page
← Older revision
Revision as of 20:25, 4 January 2017
Line 8:
Line 8:
! colspan="4" | <h2 id="mp-itn-h2" colspan="4" style="margin:0; background:#cedff2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;">Hardware (electronics)</h2> ! colspan="4" | <h2 id="mp-itn-h2" colspan="4" style="margin:0; background:#cedff2; font-size:120%; font-weight:bold; border:1px solid #a3b0bf; text-align:left; color:#000; padding:0.2em 0.4em;">Hardware (electronics)</h2>
|- |-
-| '''[[10393|Latest Model: 393 Cameras]]'''<br>Released Spring 2016<br/>• [[Tmp_manual|Temporary manual]]<br/>• [[Poky_2.0_manual|SDK]]<br/>• [[Elphel_camera_assemblies|Assemblies]] & [[Elphel_camera_parts_0393|parts]]+| '''[[10393|Latest Model: 393 Cameras]]'''<br>Released Spring 2016<br/>• [[Tmp_manual|User manual]]<br/>• [[Poky_2.0_manual|SDK]]<br/>• [[Elphel_camera_assemblies|Assemblies]] & [[Elphel_camera_parts_0393|parts]]
| '''[[Previous Models]]'''<br> old products | '''[[Previous Models]]'''<br> old products
|<!--| '''[[Camera Timeline]]'''<br>overview of all camera models and release dates --> |<!--| '''[[Camera Timeline]]'''<br>overview of all camera models and release dates -->
Oleg
Pages
