The ImageMerger tool is a tool for combining images taken by a robot
controlled camera:
- 4 calibration images to determine world/robot coordinates (4pt-calib)
- Logic to determine robot positioning for each subimage
- 100% driven by ExecuteCmd interface
- The tool does nothing during an inspection
Instructions for use
- Prerequisites
- The connected camera should have camera calibration active. The
calibrated images must be rotated so that pixel rows/columns are
parallel to the "world" coordinate y and x axes,
respectively.
- Calibration
- Four distinct marks with known "world" positions must exist on a
calibration object
- Position the camera over each calibration mark, note the robot
coordinates, and execute SET/CALIBIMAGE for each
- Setup
- Specify the "world" coordinates to cover and required
subimage overlap
- Running
- Command GET/GRIDSIZE returns number of subimages in X and Y
position
- Loop over required subimages, execute SET/GRIDINDEX for each, then
GET/ROBOT to get required robot position. Position the robot and
execute SNAPSHOT
- To create/display a partial output image, execute MERGEPARTIAL
- When the required images are taken, execute MERGE to create the
output image
Setup
[Reference - Reference system selection; not currently used]
Output image - name of image to present result
Grid calculation - parameters to determine "world" grid
- Image start - "world" coordinates for upper left
corner of resulting image
- Image end - "world" coordinates for lower right
corner of resulting image
- Overlap (%) - subimage overlap - may be used to fine tune image
positions
- Grid size - (R/O) - number of subimages needed in X and Y
position to cover "world"
Calibration
Input image details
Should be read from camera calibration. Pitch is not currently available.
- Size - (R/O) - pixels
- Pitch - (to be R/O) - pixel size in object coordinates
Calibration positions
- Position (1-4) - world position of calibration mark
- Robot (1-4) - robot position when image was taken
- Set (1-4) - acquire image, store and calibrate if possible
- Input - name of input image for calibration images when Set
buttons are pressed
- Calibrated - shows green check when calibration is completed
Blob analysis
Currently, the largest blob found in the calibration images is used as the
calibration mark.
- Threshold min/max - blob threshold
- Morphology - erode/dilate
- Smooth factor (count) - blob smoothing
Calibration images
The four images are stored, visualising the result of the blob analysis.
- Delete this - delete shown calibration image
- Delete all - remove all calibration images
Visualisation
(None)
Results
(None)
ExecuteCmd support (see also executeCmd)
Command
|
Parameters
|
Return values
|
Comments
|
Get |
Object=Calibrated |
ok,True|False |
True if calibration is completed, False otherwise |
Get |
Object=ImageStart
Object=ImageEnd |
ok,(x;y) |
"World" corners for complete image |
Get
|
Object=Overlap
|
ok,(x;y) |
Overlap percent in X and Y directions
|
Get
|
Object=GridSize
|
ok,(x;y) |
Number of subimages needed to cover "world", in X and Y
directions
|
Get
|
Object=GridIndex
|
ok,(x;y) |
Zero-based index of current subimage
|
Get
|
Object=Robot
|
ok,(x;y) |
Required robot position for current subimage
|
Set |
Object=ImageStart;Value=(x;y)
Object=ImageEnd;Value=(x;y) |
ok,None |
"World" corners for complete image |
Set
|
Object=Overlap;Value=(x;y)
|
ok,None |
Overlap percent in X and Y directions
|
Set
|
Object=CalibImage;Number=<n>;
ImageName=<name>;
Position=(x;y);Robot=(x;y)
|
ok,None |
Set calibration image with all corresponding information
|
Set
|
Object=GridIndex;Value=(x;y)
|
ok,None |
Zero-based index of current subimage
|
Delete
|
Object=CalibImage;Number=<n>
|
ok,None |
Delete calibration image
|
Snapshot
|
-
|
ok,None |
Acquire subimage
|
Merge
|
-
|
ok,None |
Compile output image from taken subimages
|
MergePartial
|
-
|
ok,None |
Compile intermediate output image from taken subimages
|
Reset
|
-
|
ok,None |
Remove all taken subimages and reset GridIndex
|
|