tile_images_offset
— Zusammenfügen von mehreren Bildobjekten zu einem großen Bild mit
expliziter Positionsangabe.
tile_images_offset(Images : TiledImage : OffsetRow, OffsetCol, Row1, Col1, Row2, Col2, Width, Height : )
tile_images_offset
fügt mehrere Bildobjekte, die die
gleiche Anzahl von Kanälen besitzen müssen, durch Kachelung zu
einem großen Bild zusammen. Das Eingabeobjekt Images
besteht aus Num Bildern, die unterschiedlich groß sein
können. Das Ausgabebild TiledImage
besteht aus einem
Bildobjekt, das genauso viele Kanäle besitzt, wie die
Eingabebilder. Die Größe des Ausgabebildes wird durch die
Parameter Width
und Height
bestimmt. Die Position
der oberen linken Ecke der Eingabebilder im Ausgabebild wird durch
die Parameter OffsetRow
und OffsetCol
bestimmt.
Die beiden Parameter müssen genau Num Werte enthalten.
Optional kann jedes Eingabebild auf ein beliebiges Rechteck, das
kleiner als das Eingabebild ist, zugeschnitten werden. Hierzu sind
die Parameter Row1
, Col1
, Row2
und
Col2
entsprechend zu setzen. Wird irgendeiner dieser vier
Parameter auf -1 gesetzt, wird das entsprechende
Eingabebild nicht beschnitten. In jedem Fall müssen alle vier
Parameter Num Werte enthalten. Falls die Eingabebilder
beschnitten werden, beziehen sich die Positionsparameter
OffsetRow
und OffsetCol
auf die obere linke Ecke
des beschnittenen Bildes. Falls sich die Eingabebilder im
Ausgabebild überlappen (unter der Beachtung des jeweiligen
Definitionsbereiches), so überschreibt ein Bild mit höherem Index
in Images
die Bilddaten eines vorhergehenden Bildes. Der
Definitionsbereich (die Region) des Ausgabebildes
TiledImage
wird berechnet, indem die Regionen des
Eingabebildes Images
an die entsprechenden Stellen im
Ausgabebild kopiert werden.
Falls die Bilder alle gleich groß sind und sich genau
aneinanderfügen, ist der Operator tile_images
normalerweise
etwas schneller.
Images
(input_object) (multichannel-)image(-array) →
object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / int8 / real)
Eingabebilder.
TiledImage
(output_object) (multichannel-)image →
object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / int8 / real)
Gekacheltes Ausgabegild.
OffsetRow
(input_control) point.y(-array) →
(integer)
Zeilenkoordinate der linken oberen Ecke der Eingabebilder im Ausgabebild.
Defaultwert: 0
Wertevorschläge: 0, 50, 100, 150, 200, 250
OffsetCol
(input_control) point.x(-array) →
(integer)
Spaltenkoordinate der linken oberen Ecke der Eingabebilder im Ausgabebild.
Defaultwert: 0
Wertevorschläge: 0, 50, 100, 150, 200, 250
Row1
(input_control) rectangle.origin.y(-array) →
(integer)
Zeilenkoordinate der oberen linken Ecke des zu kopierenden Teils des jeweiligen Bildes.
Defaultwert: -1
Wertevorschläge: -1, 0, 10, 20, 50, 100, 200, 300, 500
Col1
(input_control) rectangle.origin.x(-array) →
(integer)
Spaltenkoordinate der oberen linken Ecke des zu kopierenden Teils des jeweiligen Bildes.
Defaultwert: -1
Wertevorschläge: -1, 0, 10, 20, 50, 100, 200, 300, 500
Row2
(input_control) rectangle.corner.y(-array) →
(integer)
Zeilenkoordinate der rechten unteren Ecke des zu kopierenden Teils des jeweiligen Bildes.
Defaultwert: -1
Wertevorschläge: -1, 0, 10, 20, 50, 100, 200, 300, 500
Col2
(input_control) rectangle.corner.x(-array) →
(integer)
Spaltenkoordinate der rechten unteren Ecke des zu kopierenden Teils des jeweiligen Bildes.
Defaultwert: -1
Wertevorschläge: -1, 0, 10, 20, 50, 100, 200, 300, 500
Width
(input_control) extent.x →
(integer)
Breite des Ausgabeildes.
Defaultwert: 512
Wertevorschläge: 32, 64, 128, 256, 512, 768, 1024, 2048, 4096
Height
(input_control) extent.y →
(integer)
Höhe des Ausgabeildes.
Defaultwert: 512
Wertevorschläge: 32, 64, 128, 256, 512, 525, 1024, 2048, 4096
* Example 1 * Grab 2 (multi-channel) NTSC images, crop the bottom 5 lines off * of each image, the right 5 columns off of the first image, and * the left five lines off of the second image, and put the cropped * images side-by-side. gen_empty_obj (Images) for I := 1 to 2 by 1 grab_image_async (ImageGrabbed, AcqHandle, -1) concat_obj (Images, ImageGrabbed, Images) endfor tile_images_offset (Images, TiledImage, [0,635], [0,0], [0,0], \ [0,5], [474,474], [634,639], 635, 950) * Example 2 * Enlarge image by 15 rows and columns on all sides EnlargeColsBy := 15 EnlargeRowsBy := 15 get_image_pointer1 (Image, Pointer, Type, WidthImage, HeightImage) tile_images_offset (Image, EnlargedImage, EnlargeRowsBy, EnlargeColsBy, \ -1, -1, -1, -1, WidthImage + EnlargeColsBy*2, \ HeightImage + EnlargeRowsBy*2)
Sind die Parameterwerte korrekt und tritt kein Fehler während der
Berechnung auf, liefert tile_images_offset
den Wert 2 (H_MSG_TRUE).
Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden)
lässt sich mittels
set_system(::'no_object_result',<Result>:)
festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
change_format
,
crop_part
,
crop_rectangle1
Foundation