read_image
— Einlesen eines Bildes mit unterschiedlichen Dateiformaten.
Der Operator read_image
liest die angegebenen Bilddateien vom
Hintergrundspeicher und erzeugt daraus ein Bild. Es können ein
oder mehrere Dateinamen in FileName
angegeben werden. In
letzterem Fall wird ein Bildobjekttupel mit entsprechend vielen
Elementen zurückgegeben.
Bei Dateien im HALCON-Iconic-Object-Format (HOBJ) werden
Multi-Bild-Dateien als Bildobjekttupel zurückgegeben. Falls die
HOBJ-Datei zusätzlich noch andere Objekt-Typen (Regionen oder
XLDs) enthält, wird ein Fehler erzeugt. Die Beschreibung des Operators
write_object
enthält weitere Informationen über das
HOBJ-Format.
Alle Bilddateien, die mit write_image
(Format 'ima')
geschrieben werden, haben die Extension '.ima' . Zu jedem
Bild im IMA-Format kann eine Beschreibungsdatei vorhanden sein
(gleicher Dateiname mit Extension '.exp' ). Der Typ der
Pixeldaten ('byte' , 'int4' , 'real' ) wird
ebenfalls der Beschreibungsdatei entnommen. Ist diese
Beschreibungsdatei nicht vorhanden, so wird der Typ 'byte'
als Voreinstellung verwendet, genau wie die Standardwerte für
die Datengröße ('width' x 'height' ) die mit
get_system
abgefragt werden können. Wenn die Datengröße der
'.ima' -Datei nicht mit der Standardgröße übereinstimmt,
wird eine Fehlerbehandlung durchgeführt.
Neben dem HALCON-Format können auch TIFF, GIF, BMP, JPEG, JPEG-XR JPEG-2000, PNG, PCX, SUN-Raster, PGM, PPM, PBM und XWD Dateien eingelesen werden. Die Grauwerte bei PBM-Bildern werden auf Werte 0 und 255 gesetzt. Die Dateiformate werden entweder an der Extension (soweit angegeben) oder aufgrund der inneren Struktur der Dateien erkannt. Bei Angabe der Extension wird das Bild schneller gefunden. Wird keine Extension angegeben, werden Dateien mit Extension (sofern vorhanden) Dateien ohne Extension vorgezogen. Bei PGM, PPM und PBM kann die jeweilige Extension (z.B. 'pgm' ) oder auch allgemein 'pnm' verwendet werden. Bei TIFF ist 'tiff' und 'tif' zulässig. Bei JPEG-XR Dateien sind die Endungen 'jxr' , 'wdp' , 'wmp' und 'hdp' erlaubt. Bei JPEG-2000 Dateien ist nur die Endung 'jp2' zulässig. Bei Farbbildern wird ein Bild mit drei Farbkanälen erzeugt, wobei der Rotkanal in der ersten, der Grünkanal in der zweiten und der Blaukanal in der dritten Komponente (Kanalnummer) abgelegt wird.
Im Falle der Bildformate TIFF, PNG und JPEG-2000 werden binäre Alphakanäle als Domänen interpretiert. Bei TIFF-Dateien werden zusätzlich binäre SubIFDs mit PhotometricInterpretation = TransparencyMask als Domänen interpretiert. Ansonsten wird die Domäne des erzeugten Bildobjektes maximal (= alle Bildpunkte der Matrix) gewählt.
Bei TIFF-Dateien werden Multi-Page-Dateien als Bildobjekttupel zurückgegeben.
Bilder des Typs 'int8' können nur auf 64-Bit-Systemen gelesen werden. Außerdem unterstützen nur die Formate IMA und TIFF diesen Bildtyp.
Bilddateien werden im aktuellen Verzeichnis und im Bilderverzeichnis von
HALCON (vorgegeben durch die Umgebungsvariablen) gesucht.
Das Bilderverzeichnis von HALCON ist in einer
unixartigen Umgebung auf '.' und
'/usr/local/halcon/images' voreingestellt und kann mit dem
Befehl set_system
gesetzt werden. Es kann mehr als ein
Bilderverzeichnis angegeben werden. Dies geschieht, indem man die
einzelnen Verzeichnisse durch einen Doppelpunkt trennt.
Weiterhin kann der Suchpfad mit der Environment-Variablen HALCONIMAGES gesetzt werden (gleicher Aufbau wie bei 'image_dir' ). Beispiel:
setenv HALCONIMAGES "/usr/images:/usr/local/halcon/images"
Ebenso sucht HALCON die Bilder in dem Unterverzeichnis 'images' (Bilder für die Programmbeispiele). Für das HALCON-Verzeichnis wird die Environment-Variable HALCONROOT verwendet.
Falls CMYK oder YCCK JPEG/JPEG-XR-Dateien gelesen werden, nimmt HALCON an,
dass diese Dateien der Konvention von Adobe Photoshop folgen,
gemäß der die CMYK-Kanäle invertiert gespeichert sind, d.h. 0
repräsentiert 100% Druckfarbe und nicht 0%, wie man es eigentlich
erwarten würde. Die Bilder werden gemäß dieser Konvention in
RGB-Bilder umgewandelt. Falls die JPEG-Dateien nicht dieser
Konvention folgen und die CMYK-Kanäle in der üblichen Weise
abgespeichert sind, muss invert_image
nach dem Einlesen des
Bildes aufgerufen werden.
Beim Lesen von PNG-Dateien mit Alphakanal wird der Alphakanal als zweiter bzw. vierter Kanal des Ausgabebildes zurückgegeben, außer der Alpha-Kanal enthält genau zwei verschiedene Grauwerte. In diesem Fall wird ein ein- oder dreikanaliges Bild mit eingeschränktem Definitionsbereich zurückgegeben, in dem die Punkte des Definitionsbereiches den Pixeln des Alpha-Kanals mit dem höheren der zwei Grauwerte entspricht.
Image
(output_object) image(-array) →
object (byte / direction / cyclic / int1 / complex / int2 / uint2 / vector_field / int4 / int8 / real)
Eingelesenes Bild.
FileName
(input_control) filename.read(-array) →
(string)
Name des einzulesenden Bildes.
Defaultwert: 'printer_chip/printer_chip_01'
Wertevorschläge: 'fabrik' , 'fuse' , 'mreut' , 'multiple_dies_01' , 'particle' , 'patras' , 'printer_chip/printer_chip_01' , 'rings_and_nuts' , 'tooth_rim'
Dateiendung: .hobj
, .ima
, .tif
, .tiff
, .gif
, .bmp
, .jpg
, .jpeg
, .jp2
, .jxr
, .png
, .pcx
, .ras
, .xwd
, .pbm
, .pnm
, .pgm
, .ppm
* Reading an image: read_image(Image,'mreut') * Reading 3 images into an image array: read_image(Images,['ic0','ic1','ic2']) * Setting of search path for images on '/mnt/images' and '/home/images': set_system('image_dir','/mnt/images:/home/images')
Sind die Parameter korrekt, dann liefert read_image
den Wert
2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.
disp_image
,
threshold
,
regiongrowing
,
count_channels
,
decompose3
,
class_ndim_norm
,
gauss_filter
,
fill_interlace
,
zoom_image_size
,
zoom_image_factor
,
crop_part
,
write_image
,
rgb1_to_gray
Foundation