3.9. DispWindow#
Summary: |
|
Type: |
|
License: |
|
Platforms: |
Windows, Linux |
Devices: |
OpenGL based widget to show cosine and graycode sequences |
Author: |
3.9.1. Overview#
3.9.2. Initialization#
The following parameters are mandatory or optional for initializing an instance of this plugin:
3.9.3. Parameters#
Every instance of this plugin has the following parameters:
- color: int
0: Red, 1: Green, 2: Blue, 3: White
Value range: [0, 3], Default: 3
- dObj: dataObject
DataObject with pixel values to display.
- gamma: int
0: disable gamma correction, 1: enable gamma correction; default disable (see also ‘lut’)
Value range: [0, 1], Default: 0
- lut: Sequence[int] (char)
Lookup table for a gamma correction with 256 values. The gamma correction itself is en-/disabled via parameter ‘gamma’. If enabled, the value to display is modified by lut[value]. Per default the lut is a 1:1 relation.
- name: str, read-only
name of the plugin
- numgraybits: int, read-only
Number of different images: Phaseshift + GrayCode + 2
Value range: [0, 80], Default: 5
- numimg: int
Number of current image (phase images, dark image, bright image, graycode images)
Value range: [-1, 10], Default: 0
- orientation: int
0: vertical, 1: horizontal; default: vertical
Value range: [0, 1], Default: 0
- period: int
Cosine period in pixel. This must be a multiple of 2 and the number of ‘phaseshift’.
Value range: [4:2:4096], Default: 12
- phaseshift: int
Count of phase shifts. If this value is changed and the ‘period’ does not fit to the new value, the ‘period’ is adapted to the next possible value.
Value range: [3, 8], Default: 4
- x0: int
x0 position of display window [px]
Value range: [0, 1920], Default: 1820
- xsize: int
width of window [px]
Value range: [3, 1920], Default: 100
- y0: int
y0 position of display window [px]
Value range: [0, 1080], Default: 0
- ysize: int
height of window [px]
Value range: [3, 1080], Default: 100
3.9.4. Gamma correction#
If the parameter gamma is set to 0, no further gamma correction is enabled. This means, that the gray values of the cosine fringes are directly displayed as they are using a 8bit resolution:
screen_pixel = round(255 * [2*cos(alpha) + 1])
However, if your camera and projector has a non-linear behaviour between displayed and detected gray value, a gamma correction can and should be enabled. Then, the displayed gray value is:
screen_pixel = lut[round(255 * [2*cos(alpha) + 1])]
The lookup table (lut) consists of 256 values. In order to register the lookup table, you can project a uniform background with uniformly distributed gray-values (at least 64 different values) between 0 and full resolution (e.g. 255). The values should be sorted beginning with the darkest one until ‘white’:
for i in range(0,256,4):
projector.exec("projectGrayValue", i)
Note
displaying any other image (graycode or cosine fringe) will clear the gray valued image
Then, record every uniform projection with the camera and determine the mean gray value. You then get a list of gray values, like the following one:
g = [25, 28, 32, 38, 50, 90, 92, 96, ... 198]
Call the exec function calcLut and pass g in order to let the plugin calculate the lut (based on a linear interpolation if g contains less values than 256):
projector.exec("calcLut", g)
Then, you need to enable the gamma correction:
projector.setParam("gamma", 1)
Finally, the lut (parameter lut) contains values, such that the recorded gray values applying the same uniformly distributed background images are linearly distributed.
3.9.5. Save current view to image file#
Use the exec function grabFramebuffer to save the currently displayed view in the same size to an image file (the file type is determined by the file’s ending (file type must be supported by Qt’s QImage):
projector.exec("grabFramebuffer", "D:/test.pgm") #or
projector.exec("grabFramebuffer", "D:/test.jpg")
3.9.6. Changelog#
itom setup 1.2.0: Release