Difference between revisions of "AXIOM Beta/AXIOM Beta Software"

From apertus wiki
Jump to: navigation, search
m
m (→‎Operating System: Add "Pattern noise correction" section)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Misc Scripts==
==Misc Scripts==


Line 6: Line 4:
  ./pac1720_info.sh
  ./pac1720_info.sh
Output:
Output:
  <nowiki>ZED_5V        5.0781 V [2080] +29.0625 mV [2e8]  +968.75 mA
  ZED_5V        5.0781 V [2080] +29.0625 mV [2e8]  +968.75 mA<br />
BETA_5V      5.1172 V [20c0] +26.6016 mV [2a9]  +886.72 mA
BETA_5V      5.1172 V [20c0] +26.6016 mV [2a9]  +886.72 mA<br />
HDN          3.2422 V [14c0] -0.0391 mV [fff]    -1.30 mA
HDN          3.2422 V [14c0] -0.0391 mV [fff]    -1.30 mA<br />
PCIE_N_V      3.2422 V [14c0] -0.0391 mV [fff]    -1.30 mA
PCIE_N_V      3.2422 V [14c0] -0.0391 mV [fff]    -1.30 mA<br />
HDS          3.2422 V [14c0] +0.0000 mV [000]    +0.00 mA
HDS          3.2422 V [14c0] +0.0000 mV [000]    +0.00 mA<br />
PCIE_S_V      3.2422 V [14c0] -0.0391 mV [fff]    -1.30 mA
PCIE_S_V      3.2422 V [14c0] -0.0391 mV [fff]    -1.30 mA<br />
RFW_V        3.2812 V [1500] +0.2734 mV [007]    +9.11 mA
RFW_V        3.2812 V [1500] +0.2734 mV [007]    +9.11 mA<br />
IOW_V        3.2422 V [14c0] +0.0000 mV [000]    +0.00 mA
IOW_V        3.2422 V [14c0] +0.0000 mV [000]    +0.00 mA<br />
RFE_V        3.2812 V [1500] +0.2344 mV [006]    +7.81 mA
RFE_V        3.2812 V [1500] +0.2344 mV [006]    +7.81 mA<br />
IOE_V        3.2812 V [1500] +0.0781 mV [002]    +2.60 mA
IOE_V        3.2812 V [1500] +0.0781 mV [002]    +2.60 mA<br />
VCCO_35      2.5000 V [1000] +0.6641 mV [011]    +22.14 mA
VCCO_35      2.5000 V [1000] +0.6641 mV [011]    +22.14 mA<br />
VCCO_13      2.4609 V [ fc0] +1.2500 mV [020]    +41.67 mA
VCCO_13      2.4609 V [ fc0] +1.2500 mV [020]    +41.67 mA<br />
PCIE_IO      2.4609 V [ fc0] -0.0391 mV [fff]    -1.30 mA
PCIE_IO      2.4609 V [ fc0] -0.0391 mV [fff]    -1.30 mA<br />
VCCO_34      2.4609 V [ fc0] +0.8203 mV [015]    +27.34 mA
VCCO_34      2.4609 V [ fc0] +0.8203 mV [015]    +27.34 mA<br />
W_VW          1.9922 V [ cc0] -0.0781 mV [ffe]    -2.60 mA
W_VW          1.9922 V [ cc0] -0.0781 mV [ffe]    -2.60 mA<br />
N_VW          3.1641 V [1440] +0.0000 mV [000]    +0.00 mA
N_VW          3.1641 V [1440] +0.0000 mV [000]    +0.00 mA<br />
N_VN          1.8750 V [ c00] +15.4297 mV [18b]  +514.32 mA
N_VN          1.8750 V [ c00] +15.4297 mV [18b]  +514.32 mA<br />
N_VE          3.1641 V [1440] +0.0000 mV [000]    +0.00 mA
N_VE          3.1641 V [1440] +0.0000 mV [000]    +0.00 mA<br />
E_VE          1.9922 V [ cc0] -0.0391 mV [fff]    -1.30 mA
E_VE          1.9922 V [ cc0] -0.0391 mV [fff]    -1.30 mA<br />
S_VE          1.9531 V [ c80] +0.0000 mV [000]    +0.00 mA
S_VE          1.9531 V [ c80] +0.0000 mV [000]    +0.00 mA<br />
S_VS          2.9297 V [12c0] +0.3906 mV [00a]    +13.02 mA
S_VS          2.9297 V [12c0] +0.3906 mV [00a]    +13.02 mA<br />
S_VW          1.9922 V [ cc0] -0.1562 mV [ffc]    -5.21 mA
S_VW          1.9922 V [ cc0] -0.1562 mV [ffc]    -5.21 mA
</nowiki>


Read Temperature on Zynq:
Read Temperature on Zynq:
Line 35: Line 32:
  ZYNQ Temp    49.9545 °C
  ZYNQ Temp    49.9545 °C


==Image Processing Nodes==


==Image Processing Nodes==
===Debayering===
===Debayering===


A planned feature is to generate this FPGA code block with "dynamic reconfiguration" meaning that the actual debayering algorithm can be replaced at any time by loading a new FPGA binary block at run-time.
A planned feature is to generate this FPGA code block with "dynamic reconfiguration" meaning that the actual debayering algorithm can be replaced at any time by loading a new FPGA binary block at run-time.
This tries to simplify creating custom debayering algorithms with a script like programming language that can be translated to FPGA code and loaded into the FPGA dynamically for testing.
This tries to simplify creating custom debayering algorithms with a script like programming language that can be translated to FPGA code and loaded into the FPGA dynamically for testing.


Line 55: Line 50:


'''Potential Problems:'''
'''Potential Problems:'''
* there are sharper and softer lenses so the threshold depends on the glass currently used. For a sharp lens the peaking could show areas as "in-focus" if they actually aren't and for softer lenses the peaking might never show up at all because the threshold is never reached
* there are sharper and softer lenses so the threshold depends on the glass currently used. For a sharp lens the peaking could show areas as "in-focus" if they actually aren't and for softer lenses the peaking might never show up at all because the threshold is never reached


===Image Blow Up / Zoom Proposal===
===Image Blow Up / Zoom Proposal===
Digital zoom into the center area of the image to check focus.  
Digital zoom into the center area of the image to check focus.  


Line 63: Line 60:


[[File:20140909152450-look-around.jpg | 300px]]
[[File:20140909152450-look-around.jpg | 300px]]


This feature is also related to the "Look Around" where the viewfinder sees a larger image area than is being output to the clean-feed.
This feature is also related to the "Look Around" where the viewfinder sees a larger image area than is being output to the clean-feed.


This re-sampling method to scale up/down an image in real-time can be of rather low quality (nearest neighbor/bilinear/etc.) as it is only for preview purposes.
This re-sampling method to scale up/down an image in real-time can be of rather low quality (nearest neighbor/bilinear/etc.) as it is only for preview purposes.


== Clipping ==
== Clipping ==


  scn_reg 28 0x00 # deactivate clipping
  scn_reg 28 0x00 # deactivate clipping<br />
  scn_reg 28 0x10 # activate low clipping
  scn_reg 28 0x10 # activate low clipping<br />
  scn_reg 28 0x20 # activate high clipping
  scn_reg 28 0x20 # activate high clipping<br />
  scn_reg 28 0x30 # activate high+low clipping
  scn_reg 28 0x30 # activate high+low clipping


==Operating System==
==Operating System==
Line 95: Line 79:
I would suggest running Arch Linux on the AXIOM Beta for development purposes. If we need to shrink it down that will be quite trivial. Obviously we can take the embedded approach from there, as long as we don't fall in the trap of libc implementations with broken threading.
I would suggest running Arch Linux on the AXIOM Beta for development purposes. If we need to shrink it down that will be quite trivial. Obviously we can take the embedded approach from there, as long as we don't fall in the trap of libc implementations with broken threading.


==Pattern noise correction==


--rnfilter=1        : FIR filter for row noise correction from black columns<br />
--rnfilter=2        : FIR filter for row noise correction from black columns and per-row median differences in green channels<br />
--fixrn            : Fix row noise by image filtering (slow, guesswork)<br />
--fixpn            : Fix row and column noise (SLOW, guesswork)<br />
--fixrnt            : Temporal row noise fix (use with static backgrounds; recommended)<br />
--fixpnt            : Temporal row/column noise fix (use with static backgrounds)<br />
--no-blackcol-rn    : Disable row noise correction from black columns (they are still used to correct static offsets)<br />
--no-blackcol-ff    : Disable fixed frequency correction in black columns


Flat field correction:


 
--dchp              : Measure hot pixels to scale dark current frame<br />
 
--no-darkframe      : Disable dark frame (if darkframe-xN.pgm is present)<br />
Pattern noise correction:
--no-dcnuframe      : Disable dark current frame (if dcnuframe-xN.pgm is present)<br />
--rnfilter=1        : FIR filter for row noise correction from black columns
--no-gainframe      : Disable gain frame (if gainframe-xN.pgm is present)<br />
--rnfilter=2        : FIR filter for row noise correction from black columns
--no-clipframe      : Disable clip frame (if clipframe-xN.pgm is present)<br />
                      and per-row median differences in green channels
--no-blackcol      : Disable black reference column subtraction: - enabled by default if a dark frame is used. - reduces row noise and black level variations<br />
--fixrn            : Fix row noise by image filtering (slow, guesswork)
--calc-darkframe    : Average a dark frame from all input files<br />
--fixpn            : Fix row and column noise (SLOW, guesswork)
--calc-dcnuframe    : Fit a dark frame (constant offset) and a dark current frame (exposure-dependent offset) from files with different exposures (starting point: 256 frames with exposures from 1 to 50 ms)<br />
--fixrnt            : Temporal row noise fix (use with static backgrounds; recommended)
--calc-gainframe    : Average a gain frame (aka flat field frame)<br />
--fixpnt            : Temporal row/column noise fix (use with static backgrounds)
--calc-clipframe    : Average a clip (overexposed) frame<br />
--no-blackcol-rn    : Disable row noise correction from black columns
--check-darkframe  : Check image quality indicators on a dark frame
                      (they are still used to correct static offsets)
--no-blackcol-ff    : Disable fixed frequency correction in black columns
 
Flat field correction:
--dchp              : Measure hot pixels to scale dark current frame
--no-darkframe      : Disable dark frame (if darkframe-xN.pgm is present)
--no-dcnuframe      : Disable dark current frame (if dcnuframe-xN.pgm is present)
--no-gainframe      : Disable gain frame (if gainframe-xN.pgm is present)
--no-clipframe      : Disable clip frame (if clipframe-xN.pgm is present)
--no-blackcol      : Disable black reference column subtraction
                      - enabled by default if a dark frame is used
                      - reduces row noise and black level variations
--calc-darkframe    : Average a dark frame from all input files
--calc-dcnuframe    : Fit a dark frame (constant offset) and a dark current frame
                      (exposure-dependent offset) from files with different exposures
                      (starting point: 256 frames with exposures from 1 to 50 ms)
--calc-gainframe    : Average a gain frame (aka flat field frame)
--calc-clipframe    : Average a clip (overexposed) frame
--check-darkframe  : Check image quality indicators on a dark frame


Debug options:
Debug options:
--dump-regs        : Dump sensor registers from metadata block (no output DNG)
--fixpn-dbg-denoised: Pattern noise: show denoised image
--fixpn-dbg-noise  : Pattern noise: show noise image (original - denoised)
--fixpn-dbg-mask    : Pattern noise: show masked areas (edges and highlights)
--fixpn-dbg-col    : Pattern noise: debug columns (default: rows)
--export-rownoise  : Export row noise data to octave (rownoise_data.m)
--get-pixel:%d,%d  : Extract one pixel from all input files, at given coordinates,
                      and save it to pixel.csv, including metadata. Skips DNG output.


</nowiki>
--dump-regs        : Dump sensor registers from metadata block (no output DNG)<br />
--fixpn-dbg-denoised: Pattern noise: show denoised image<br />
--fixpn-dbg-noise  : Pattern noise: show noise image (original - denoised)<br />
--fixpn-dbg-mask    : Pattern noise: show masked areas (edges and highlights)<br />
--fixpn-dbg-col    : Pattern noise: debug columns (default: rows)<br />
--export-rownoise  : Export row noise data to octave (rownoise_data.m)<br />
--get-pixel:%d,%d  : Extract one pixel from all input files, at given coordinates, and save it to pixel.csv, including metadata. Skips DNG output.


Example:
Example:
  ./raw2dng --fixrnt --pgm --black=120 frame%05d.dng
  ./raw2dng --fixrnt --pgm --black=120 frame%05d.dng
=Tutorials / Guides / Research / Topics=
[[Installing a webserver on AXIOM Beta]] - Done
[[AXIOM Beta as photography camera]] - Done
[[Factory Calibration]] - Done
[[Sensor Cleaning]] - Done

Latest revision as of 12:09, 14 October 2018

1 Misc Scripts

Display voltages and current flow:

./pac1720_info.sh

Output:

ZED_5V        	5.0781 V [2080] 	+29.0625 mV [2e8]   +968.75 mA
BETA_5V 5.1172 V [20c0] +26.6016 mV [2a9] +886.72 mA
HDN 3.2422 V [14c0] -0.0391 mV [fff] -1.30 mA
PCIE_N_V 3.2422 V [14c0] -0.0391 mV [fff] -1.30 mA
HDS 3.2422 V [14c0] +0.0000 mV [000] +0.00 mA
PCIE_S_V 3.2422 V [14c0] -0.0391 mV [fff] -1.30 mA
RFW_V 3.2812 V [1500] +0.2734 mV [007] +9.11 mA
IOW_V 3.2422 V [14c0] +0.0000 mV [000] +0.00 mA
RFE_V 3.2812 V [1500] +0.2344 mV [006] +7.81 mA
IOE_V 3.2812 V [1500] +0.0781 mV [002] +2.60 mA
VCCO_35 2.5000 V [1000] +0.6641 mV [011] +22.14 mA
VCCO_13 2.4609 V [ fc0] +1.2500 mV [020] +41.67 mA
PCIE_IO 2.4609 V [ fc0] -0.0391 mV [fff] -1.30 mA
VCCO_34 2.4609 V [ fc0] +0.8203 mV [015] +27.34 mA
W_VW 1.9922 V [ cc0] -0.0781 mV [ffe] -2.60 mA
N_VW 3.1641 V [1440] +0.0000 mV [000] +0.00 mA
N_VN 1.8750 V [ c00] +15.4297 mV [18b] +514.32 mA
N_VE 3.1641 V [1440] +0.0000 mV [000] +0.00 mA
E_VE 1.9922 V [ cc0] -0.0391 mV [fff] -1.30 mA
S_VE 1.9531 V [ c80] +0.0000 mV [000] +0.00 mA
S_VS 2.9297 V [12c0] +0.3906 mV [00a] +13.02 mA
S_VW 1.9922 V [ cc0] -0.1562 mV [ffc] -5.21 mA

Read Temperature on Zynq:

./zynq_info.sh 

Output:

ZYNQ Temp     	49.9545 °C

2 Image Processing Nodes

2.1 Debayering

A planned feature is to generate this FPGA code block with "dynamic reconfiguration" meaning that the actual debayering algorithm can be replaced at any time by loading a new FPGA binary block at run-time.

This tries to simplify creating custom debayering algorithms with a script like programming language that can be translated to FPGA code and loaded into the FPGA dynamically for testing.

2.2 Peaking Proposal

Peaking marks high image frequency areas with colored dot overlays. These marked areas are typically the ones "in-focus" currently so this is a handy tool to see where the focus lies with screens that have lower resolution than the camera is capturing.

Handy Custom Parameters:

  • color
  • frequency threshold

Potential Problems:

  • there are sharper and softer lenses so the threshold depends on the glass currently used. For a sharp lens the peaking could show areas as "in-focus" if they actually aren't and for softer lenses the peaking might never show up at all because the threshold is never reached

2.3 Image Blow Up / Zoom Proposal

Digital zoom into the center area of the image to check focus.

As extra feature this zoomed area could be moved around the full sensor area.

20140909152450-look-around.jpg

This feature is also related to the "Look Around" where the viewfinder sees a larger image area than is being output to the clean-feed.

This re-sampling method to scale up/down an image in real-time can be of rather low quality (nearest neighbor/bilinear/etc.) as it is only for preview purposes.

3 Clipping

scn_reg 28 0x00 # deactivate clipping
scn_reg 28 0x10 # activate low clipping
scn_reg 28 0x20 # activate high clipping
scn_reg 28 0x30 # activate high+low clipping

4 Operating System

At this moment we were able to reuse an Arch Linux image for the Zedboard on the Microzed. To do so, some software such as the FSBL and uboot were added. More information can be found here: http://stefan.konink.de/contrib/apertus/ I will commit myself on the production of a screencast of the entire bootstrap proces from the Xilinx software to booting the MicroZed.

I would suggest running Arch Linux on the AXIOM Beta for development purposes. If we need to shrink it down that will be quite trivial. Obviously we can take the embedded approach from there, as long as we don't fall in the trap of libc implementations with broken threading.

5 Pattern noise correction

--rnfilter=1        : FIR filter for row noise correction from black columns
--rnfilter=2  : FIR filter for row noise correction from black columns and per-row median differences in green channels
--fixrn  : Fix row noise by image filtering (slow, guesswork)
--fixpn  : Fix row and column noise (SLOW, guesswork)
--fixrnt  : Temporal row noise fix (use with static backgrounds; recommended)
--fixpnt  : Temporal row/column noise fix (use with static backgrounds)
--no-blackcol-rn  : Disable row noise correction from black columns (they are still used to correct static offsets)
--no-blackcol-ff  : Disable fixed frequency correction in black columns

Flat field correction:

--dchp              : Measure hot pixels to scale dark current frame
--no-darkframe  : Disable dark frame (if darkframe-xN.pgm is present)
--no-dcnuframe  : Disable dark current frame (if dcnuframe-xN.pgm is present)
--no-gainframe  : Disable gain frame (if gainframe-xN.pgm is present)
--no-clipframe  : Disable clip frame (if clipframe-xN.pgm is present)
--no-blackcol  : Disable black reference column subtraction: - enabled by default if a dark frame is used. - reduces row noise and black level variations
--calc-darkframe  : Average a dark frame from all input files
--calc-dcnuframe  : Fit a dark frame (constant offset) and a dark current frame (exposure-dependent offset) from files with different exposures (starting point: 256 frames with exposures from 1 to 50 ms)
--calc-gainframe  : Average a gain frame (aka flat field frame)
--calc-clipframe  : Average a clip (overexposed) frame
--check-darkframe  : Check image quality indicators on a dark frame

Debug options:

--dump-regs         : Dump sensor registers from metadata block (no output DNG)
--fixpn-dbg-denoised: Pattern noise: show denoised image
--fixpn-dbg-noise  : Pattern noise: show noise image (original - denoised)
--fixpn-dbg-mask  : Pattern noise: show masked areas (edges and highlights)
--fixpn-dbg-col  : Pattern noise: debug columns (default: rows)
--export-rownoise  : Export row noise data to octave (rownoise_data.m)
--get-pixel:%d,%d  : Extract one pixel from all input files, at given coordinates, and save it to pixel.csv, including metadata. Skips DNG output.

Example:

./raw2dng --fixrnt --pgm --black=120 frame%05d.dng