picCOLOR Inhalt

picCOLOR

Wissenschaftliche und industrielle Bildverarbeitung

(Handbuch Version: Mai 2009)

Hinweise zur picCOLOR Software

Inhaltsverzeichnis

1. Einleitung

2. Installation
2.1. Lieferumfang und Systemvoraussetzungen
2.2. Hardware Installation
2.3. Software Installation
2.4. Starten des picCOLOR Programmes
2.5. Entfernen (Deinstallieren) des picCOLOR Programmes

3. Benutzeroberfläche
3.1. Bildspeicher / Image Buffer
3.2. Menü-System
3.3. Bild-Modus
3.4. Dialog-Fenster
3.5. Hot-Key-Funktion
3.6. MACRO-Programm
3.7. Library-Version zum Einbinden in eigene Programme

4. Funktionsübersicht
4.1. Liste der Funktionen
4.2. Übersichtsdiagramme

5. System Menu

6. File/Image Menu
6.0. New

6.1. Clear Image
6.2. Image Directory
6.3. Load Image
6.4. Save Image
6.5. Acquire Image
6.6 FireWire Acquire
6.7. Twain Scanner Acquire
6.8. Swiss Ranger 3D-Kamera

6.9. Test Images
6.10. Print Image
6.11. Show All Buffers
6.12. 3D/Sequence Player (3D/Sequence-Zusatzmodul)
6.13. Control Panel
6.14. Spezielle Funktionen von anderen Programmen (Acquire Text/OCR)
6.15. Exit picCOLOR

7. Processing Menu
7.1. Geometry
7.2. Histogram Modify
7.3. Arithmetic
7.4. Filters
7.5. True Color
7.6. Frequency
7.7. Texture
7.8. Pyramid Conversion
7.9. Binary
7.10. Morphology
7.11. 3D-Processing (Im 3D/Sequence-Zusatzmodul)
7.12. Sequence Processing (3D/Sequence-Zusatzmodul)

8. Measurement Menu
8.1. Geometrical Measure
8.2. Statistical Measure
8.3. Vectorization (2D/3D)
8.4. Hough Edge Detection
8.5. Object Classification
8.6. Pattern Recognition
8.7. Stereometry (Zusatzmodul)
8.8. 2D/3D Position Tracking (Zusatzmodul)
8.9. Particle Image Velocimetry / Tracking Velocimetry (Zusatzmodul)
8.10 Interferometry (Zusatzmodul)
8.11 Fringe Correlation Method (FCM) (Zusatzmodul)
8.12. Real Time Image Processing (Zusatzmodul)
8.13. Optical Character Reading (OCR) and Verification (OCV)
8.14. Bar Code
8.15. Calibration
8.16. Measurement Control
8.17. Data Recorder

9. User Menu
9.1. Macro Function
9.2. User Modul

10. Presentation Menu
10.1. ImagePaint

10.1.1. ImagePaint Toolbox
10.1.2. Set Point Marker
10.1.3. Draw Line

10.1.4. Draw Circle

10.1.5. Draw Ellipse
10.1.6. Flood Fill Area
10.1.7. Stamp Tool
10.1.8. Retouch Pen
10.1.9. Draw Text
10.1.10. Load Font
10.2. Overlay Functions
10.3. 3D-Surface Plot
10.4. Stereo Display

10.5. Stereo Control

11. Window Menu
11.1. Arrange Actual Window

11.2. Fit Window Position
11.3. Toggle Zoom Out Mode
11.4. Maximize/Cascade/Tile/Arrange Icons
11.5. List of MDI Child Windows

12. Help Menu
12.1. About picCOLOR
12.2. Debug Messages
12.3. Basic Help
12.4. Online Manual (HTML)

12.5. Toolbox

13. Toolbox
13.1. Information
13.2. Output LUT (Color Look-Up-Table)
13.3. Undo
13.4. ROI Definition
13.5. Copy Image Buffer
13.6. Copy/Move Functions
13.7. Clear Functions
13.8. Load Image
13.9. Save Image
13.10. Show All Images
13.11. Set Second Source
13.12. Pyramid Level
13.13. Measurement Control
13.14. Notebook (mit Text-Editor)

13.15. Image File Info

13.16. Macro Load and Start

14. Zusatzmodule

14.1. 3D / Sequenz Modul

14.2. Stereometry/StereoDisplay

14.3. 2D/3D Position Tracking (siehe auch in Real Time)

14.4. Particle Image Velocimetry / Particle Tracking Velocimetry

14.5. Interferometry

14.6. Fringe Correlation Method (PGM / FCM)

14.7. Real Time Processing (siehe auch 2D/3D Position Tracking)

14.8. Optical Character Recognition

14.9. Bar-Code Lesen

14.10. Extended True Color Function

14.11. Erweiterter Grauwertbereich (16 Bit) - Extended Gray Level Module

15. Fehlerbehandlung
15.1. Fehler bei Installation oder Programmstart
15.2. Fehlermeldungen
15.3. Datensicherung und -rekonstruktion

16. Literaturverzeichnis


Hinweise / CopyRight

Hinweise zur picCOLOR Software

Diese Software-Beschreibung zum picCOLOR Bildverarbeitungssystem ist mit großer Sorgfalt geschrieben und hergestellt worden. Trotzdem kann natürlich keine Garantie für Fehlerfreiheit gegeben werden. Technische Änderungen und Verbesserungen der Software sind ohne Ankündigung vorbehalten. Änderungen der Software, die noch nicht in diese Version des Handbuches aufgenommen werden konnten, oder Abweichungen der Software vom Handbuch sind im aktuellen README-File auf den Installationsdisketten aufgeführt. Bitte lesen Sie die dort gegebene Information sorgfältig. Über Anregungen und Verbesserungswünsche, die sowohl die Software als auch die Software-Beschreibung betreffen, ist der Autor jederzeit dankbar. Anregungen werden, soweit technisch und mit vertretbarem Aufwand möglich, in die nachfolgenden Versionen einfließen.

Einzelbenutzer Lizenzabkommen
Die im Software-Paket eingeschlossene Lizenzvereinbarung regelt die zulässige Benutzung von Software und dem vorliegendem Handbuch. Jede unauthorisierte Vervielfältigung der Software oder des Handbuches - auch in Auszügen - ist verboten und verletzt das Lizenzabkommen.

Copyright
Diese Dokumentation ist urheberrechtlich geschützt. Alle Rechte, auch der Übersetzung, des Nachdrucks oder der Vervielfältigung des Handbuches, oder Teilen daraus, vorbehalten. Kein Teil des Handbuches darf ohne schriftliche Genehmigung vom Author - Dr. Reinert H. G. Müller - in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren), auch nicht für Zwecke der Unterrichtsgestaltung, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.
Copyright @ 1992-2009 Dr. Reinert H. G. Müller.

Garantie- und Haftungsausschluß
Das picCOLOR Programm und die hier vorliegende Programmbeschreibung sind nach bestem Wissen erstellt und mit Sorgfalt getestet worden. Dennoch sind Fehler nicht völlig auszuschließen. Insbesondere kann nicht garantiert werden, daß die Funktion des picCOLOR Programmes in allen Punkten exakt mit der Beschreibung in diesem Handbuch übereinstimmt. Im Handbuch sind einige Funktionen beschrieben, die im Programm nicht oder noch nicht aufgenommen sind. Die Anwendung des Programmes und der daraus erhaltenen Ergebnisse und Daten unterliegt allein der Verantwortung des Benutzers. Autor und Vertriebspartner können keine Garantie, keine juristische Verantwortung und keine Haftung für Folgen übernehmen, die auf fehlerhafte Angaben im Programm picCOLOR oder im Handbuch zurückzuführen sind.
THE PICCOLOR PROGRAM IS NOT FAULT TOLERANT AND IS NOT DESIGNED, MANUFACTURED, OR INTENDED FOR USE OR RESALE AS ONLINE CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE.

Geschützte Bezeichnungen
Alle im Handbuch benutzten Bezeichnungen, die als Warenzeichen oder eingetragene Warenzeichen bekannt sind, sind im folgenden aufgelistet. Die Vollständigkeit dieser Liste kann jedoch nicht garantiert werden. Die Benutzung eines hier nicht erfaßten Warenzeichens darf nicht als Mißachtung der Gültigkeit dieses Warenzeichens angesehen werden.
Texas Instruments ist eingetragenes Warenzeichen der Texas Instruments Corporation. IBM, Personal Computer-AT, PC/AT sind eingetragene Warenzeichen und PC-DOS, VGA sind Warenzeichen von International Business Machines Corporation. Microsoft ist eingetragenes Warenzeichen und Windows, WINDOWS NT, Internet Explorer und MS-DOS sind Warenzeichen der Microsoft Corporation. Adobe ist Warenzeichen der Adobe Corporation. Netscape ist eingetragenes Warenzeichen der Netscape Corporation. HP und PCL sind eingetragene Warenzeichen der Hewlett Packard Company. OmniPage Pro ist ein Warenzeichen der Caere Corporation.


1. Einleitung

Vielen Dank für Ihre Wahl des picCOLOR Bildverarbeitungssystemes! picCOLOR ist ein leistungsfähiges modulares System, mit dem komplexe Aufgaben in der wissenschaftlichen und industriellen Bildverarbeitung erfolgreich bearbeitet werden können. Das picCOLOR-System ist als interaktives Programm mit optionalem Batch-Prozessor (mit Script- oder MACRO-Programmen) und auch als Library zum Einbinden in andere Programme verfügbar und kann daher sowohl für den Test und die Entwicklung von Bildverarbeitungsprozeduren als auch für den routinemäßigen Einsatz im industriellen Bereich verwendet werden.

Die digitale Bildverarbeitung oder Bildanalyse ist ein sehr komplexes Hilfsmittel, das höchste Ansprüche an die verwendete Hardware, an die Software und nicht zuletzt auch an den Benutzer stellt. Der Funktionsumfang des picCOLOR Programmes reicht von der einfachsten Bildverbesserung mit Grauwertveränderungen und Kontrastverstärkungen über geometrische Entzerrungen, Kantenerkennungsalgorithmen und digitale Filter bis hin zu geometrischen oder statistischen Vermessungen, aufwendigen Mustererkennungen und Objektklassifizierungen. Viele spezielle und weiterführende Funktionen sind als Option in Zusatzmodulen erhältlich. Die bereits verfügbaren Module sind in Kapitel 8.6 bis 8.11 und in Kapitel 13 kurz angesprochen. Genauere und eingehendere Informationen erhält man über die einzelnen Handbücher der Zusatzmodule, die auch über das Internet heruntergeladen werden können. Neue spezielle Funktionen werden auf Wunsch umgehend in das Programmsystem integriert. Auf speziellen Wunsch ist es jedoch auch möglich, mit dem Zusatzmodul "User-Programming" eigene Funktionen zu definieren, in der Hochsprache "C" zu erstellen und in das picCOLOR Programm einzubinden. Für besondere Fragestellungen in der Bildverarbeitung steht Ihnen das picCOLOR Software-Entwicklungsteam jederzeit zur Verfügung, so daß auch sehr komplexe kundenspezifische Funktionen innerhalb kürzester Frist erstellt werden können.

Die Bildverarbeitung ist ein Gebiet der digitalen Datenverarbeitung mit einer immensen Anzahl von Bearbeitungs- und Analysemöglichkeiten. Auch wenn bestimmte mathematische Vorkenntnisse bei der Auswahl der einzelnen Schritte einer Bearbeitung von großem Nutzen sind, kann nicht darauf verzichtet werden, mit den vorhandenen Funktionen zu experimentieren. Aus der Vielfalt und der Komplexizität der Funktionen und ihrer Parameter kann geschlossen werden, daß es in den meisten Fällen kaum möglich ist, das Ergebnis mehrerer Bearbeitungsschritte im voraus zu erkennen oder exakt abzuschätzen. Oft werden erst die richtige Wahl der Funktionsreihenfolge und der Funktionsparameter zum gewünschten Ergebnis führen. Es sei daher dem Benutzer geraten, einfach einmal mit den gegebenen Funktionen zu experimentieren. Zur flexiblen Bedienung des Programmes und zur schnellen Test-Bearbeitung der Bilder wurden neue Konzepte in die graphische Windows-Oberfläche eingeführt, die in manchen Fällen von der üblichen Bedienung normaler Windows-Programme abweichen. Lesen Sie hierzu das Kapitel 3 über die Bedienungsoberfläche. Es sei hier auch auf die umfangreich verfügbare Anwendungs-Literatur verwiesen, in der durch eine Fülle von Beispielen die Funktionsweise der einzelnen Bildverarbeitungsprozeduren beschrieben ist und ihr mathematischer Hintergrund hergeleitet wird. Besonders herausragend ist hier das "Image Processing Handbook" von Russ.

Das Einlesen von Bildern geschieht in der Regel über eine zusätzlich in den Rechner eingesteckte Bildeinlesekarte. Mit diesem "Frame Grabber" ist es unter der Kontrolle des picCOLOR Programmes möglich, Bilder von beliebigen Videoquellen einzulesen (Kamera, Videorekorder, usw.). Es stehen verschiedene Bildeinlesekarten zur Verfügung, die entweder für analoge oder für digitale Videoquellen optimiert sind. Die Palette der unterstützten Karten wird laufend erweitert. Z. Zt. werden Karten der Firmen DALSA/CORECO, Euresys, National Instruments, SiliconSoftware, IDS und andere unterstützt. Über die Fähigkeit der meisten modernen Frame Grabber, die Bilder über einen Bus-Master-DMA in den Hauptspeicher zu schieben, kann praktisch die gesamte Bandbreite des jeweiligen Busses (PCI-Bus mit beinahe 132 MByte/s, PCI-X bis etwa 430MB/s, und PCIexpress bis zu 700MB/s) ausgenutzt werden. Dies reicht z. B. aus, um Stereobildsequenzen zweier Hochgeschwindigkeitskameras mit 85MHz Pixeltakt zu übertragen.

Weiterführende Arbeiten, die im Anschluß an eine Bildverarbeitung folgen, z. B. das Drucken von bearbeiteten Bildern oder Graphiken auf Spezialausgabegeräten oder das Einbinden von Bildern in Dokumentationen, Berichte oder Präsentationen, sowie eine nicht mehr bildpunktorientierte Weiterverarbeitung von Daten aus der Bildverarbeitung, z. B. die Bearbeitung von Daten in "Spread-Sheet"-Programmen wird durch die Ausgabe in Standardformaten unterstützt. Für Bilder ist dies z. B. das TIFF (Tagged Image File Format) der Firmen Adobe und Microsoft, das die Übertragung auf professionelle Drucksysteme und auf die verschiedensten Computersysteme erlaubt. Bei ausgewerteten Daten - z. B. Punkt- oder Vektorkoordinaten oder Histogramme - wird vorzugsweise das einfache ASCII-Format mit Leerzeichen (Blanks) als Trennungszeichen verwendet, das völlig computerunabhängig ist. Nur bei bestimmten Daten, die im ASCII-Format jeden vernünftigen Rahmen sprengen würden, wird auf das kompaktere Binär-Format ausgewichen (z. B. 2D-Histogramme). Auf Wunsch können weitere spezielle Datenformate implementiert werden, die das Einlesen in bestimmte Programme zur Weiterverarbeitung erleichtern, wie z. B. das VDA-Format für bestimmte CAD-Systeme.

Ursprünglich wurde picCOLOR für ein proprietäres Betriebssystem auf dem TMS34020 Mikroprozessor von Texas Instruments entwickelt. Der 32-Bit TMS34020-Prozessor, der zusammen mit einem mathematischen Koprozessor (TMS34082) einen Durchsatz von 10 MIPS und 40 MFLOPS erreichte, eignete sich bei Entwicklungsbeginn des Programmes im Jahr 1988 durch den komplexen, graphik- und bildpunktorientierten Befehlssatz, durch den linear adressierbaren Speicherbereich und durch die zur Verfügung stehenden Software-Entwicklungs-Pakete ideal für die digitale Bildverarbeitung mit deutlich höherem Durchsatz als alle damals zur Verfügung stehenden anderen Microprozessoren. Zusammen mit zusätzlicher spezieller Hardware der jeweils eingesetzten Prozessorkarte ist das System sogar heute noch in bestimmten Echtzeitanwendungen konkurrenzfähig. Bei der älteren F64P-Bildverarbeitungskarte der kanadischen Firma DALSA/CORECO sind dies z. B. der bekannte digitale Signalprozessor TMS320C40, der bis zu 250 MOPS leistet, und außerdem noch Echtzeit-Histogramm-Prozessoren sowie Arithmetik- und Logikbausteine.

Mit der vorliegenden Version wurde picCOLOR auf die weit verbreiteten Betriebssysteme von Microsoft portiert und kann dadurch auf Prozessoren neuester Generation betrieben werden. Geschwindigkeitssteigerungen von bis zu zwei Größenordnungen sind ohne weitere Programmoptimierung auf einem schnellen x86-Prozessor-System möglich. Durch diese Portierung auf WINDOWS wird auch der Einsatz beliebiger Bildeinlesekarten (Frame Grabber) möglich, sofern der jeweilige Hersteller sinnvolle Treiber zur Verfügung stellt. Mit der Version V4.0 von picCOLOR liegt nun eine beinahe vollständig implementierte Programmversion vor, bei der versucht wurde, die bewährte Benutzeroberfläche der Originalversion möglichst genau einzuhalten, um auch unter Windows die spezielle Funktionalität des ursprünglichen Programmes beizubehalten. Dies ist in den meisten Punkten trotz der stark unterschiedlichen Struktur von WINDOWS gut gelungen. Anregungen zur Optimierung der Benutzeroberfläche werden jedoch gerne berücksichtigt. Ebenso werden fehlende Funktionen sobald wie möglich implementiert. Dabei werden Präferenzen der Benutzer selbstverständlich berücksichtigt. picCOLOR ist zusätzlich auch in einer Library-Version für das Linux-Betriebssystem erhältlich.

Alle Texte im picCOLOR-Programm sind in englischer Sprache gehalten. Viele Begriffe der Computertechnik und der digitalen Bildverarbeitung sind in der englischen Sprache definiert. Oft sind sinnvolle Übersetzungen kaum möglich. Damit gewährleistet ist, daß die englischen Menütexte des Programmes leicht zugeordnet werden können, sind die meisten Kapitelüberschriften dieses Handbuches ebenfalls in Englisch gehalten.

Mit Asterisk (*) gekennzeichnete Funktionen sind in picCOLOR-Zusatzmodulen enthalten und können auf Wunsch nachgerüstet werden.

picCOLOR im World Wide Web: Neue Informationen über das picCOLOR Programm finden Sie im WWW unter folgender URL-Adresse: http://www. fibus.org. Hier können Sie auch Handbücher aller Zusatzmodule finden.


2. Installation

Die Installation des picCOLOR-Systemes ist denkbar einfach. Daher wird z. Zt. keine spezielle Installationssoftware benutzt. Das picCOLOR-Hauptprogramm ist nicht so aufgebläht wie manche andere Programme und paßt daher sogar auf eine 3 1/2" Diskette. Mit allen Support-Files empfiehlt sich allerdings dann doch eine CD... Nach Einbau der Bildverarbeitungskarte je nach Spezifikation des jeweiligen Herstellers muß die Software einfach nur von der CD auf die Festplatte kopiert und eventuell entpackt werden und es muß dem System über eine einfache Konfigurationsdatei mitgeteilt werden, in welchem Verzeichnis sich die picCOLOR-Software befindet. Zum einfacheren Aufrufen des Programmes empfiehlt es sich, manuell Links auf den Desktop oder in das Start-Menü von WINDOWS zu legen.

2.1. Lieferumfang und Systemvoraussetzungen
Im Lieferumfang der picCOLOR Software befindet sich

  • eine CD-ROM mit den weiter unten aufgeführten Dateien,

  • das vorliegende Referenz-Handbuch im Helpfile (.chm)-Format mit der grundlegenden Beschreibung der Bildverarbeitungssoftware,

  • das MACRO-Handbuch im .PDF-Format mit der Beschreibung des Macro-Interpreters für benutzerdefinierte (Script)-Programme,

  • weitere Handbücher im .PDF-Format für eventuelle spezielle Zusatzmodule.

Dabei werden die Handbücher in der Regel in elektronischer Form geliefert, entweder als HTML- oder Windows-Helpfile-Dokument oder als PDF- oder PostScript-Dokument.

Systemvoraussetzungen:

picCOLOR ist auf den Betriebssystemen WINDOWS 98, WINDOWS NT ab Version 4.0, WINDOWS 2000 Professional, Windows XP oder Windows Vista lauffähig. Mit Einschränkungen kann es auch unter WINDOWS 95 oder WINDOWS ME verwendet werden. picCOLOR ist in einer 32Bit und einer 64Bit-Version verfügbar. Es wird ein x86-kompatibler Prozessor mit mindestens 400MHz empfohlen. Bei bestimmten FrameGrabber-Karten kann es weitere Einschränkungen geben, wenn z. B. keine Treiber-Programme für ein bestimmtes Betriebssystem vorliegen.
Die verwendete Graphikkarte sollte 24 Bit oder 32 Bit Farben unterstützen (16 Bit sind das absolute Minimum und werden z. Zt. noch nicht vollständig unterstützt). Erst mit 24 Bit, d. h. 8 Bit pro Farbe (Rot, Grün, Blau) können die notwendigen 256 Grauwerte und damit für das Auge stufenlose Grauwertübergänge dargestellt werden, ohne daß WINDOWS angenäherte Look-Up-Table-Berechnungen durchführen muß. Es wird empfohlen, eine Auflösung von 800*600 Pixeln nicht zu unterschreiten. In der digitalen Bildverarbeitung kommt es recht häufig vor, daß man die Auswirkung bestimmter Filter auf das Bild beurteilen muß. Hierzu empfiehlt es sich, einen möglichst großen Bildschirm (mindestens 19" mit augenschonend hoher Bildwiederholfrequenz) bei nicht übertrieben hoher Bildauflösung zu verwenden. Optimale Bedingungen wären eine ähnliche Auflösung wie die eingesetzen Kameras, z. B. 1024*768 oder 1280*1024 Pixel. Bei einer Stereoanwendung empfiehlt es sich, eine Auflösung zu benutzen, bei der die beiden Stereo-Bilder nebeneinander auf dem Bildschirm liegen können. Dies kann dann natürlich schon eine recht hohe Anforderung an die Auflösung des Monitors sein. Zur Bedienung des Programmes wird eine 2-Tasten-Maus vorausgesetzt.
Der minimale benötigte Festplattenspeicherbedarf ist gering: das picCOLOR Programm ohne Zusatzmodule benötigt nur knapp 2 MByte an Speicher auf der Festplatte, die mitgelieferten Hilfedateien nocheinmal etwa 4 MByte und alle weiteren Datensätze weniger als 100 KByte. Das sind zusammen gerade einmal 6 MByte. Auch mit allen verfügbaren Zusatzmodulen kommt man kaum über diese Grenze von 6 MByte hinaus. Dies ist insgesamt, an der Leistungsfähigkeit des picCOLOR Programmes gemessen, ein sicherlich recht geringer Speicherbedarf. Dies gilt jedoch nur für das picCOLOR-Programmsystem, nicht für die bearbeiteten Bilder. Bilddatensätze können, besonders wenn sie als 24 Bit Echtfarbbilder abgespeichert werden, erheblichen Speicherplatz benötigen. Einen kleinen Eindruck dazu gibt die folgende Abschätzung: bei einer geringen Auflösung üblicher Videokameras von 768 * 512 Bildpunkten (Pixel) mit 8 Bit (1 Byte) pro Pixel erhält man eine Bildgröße von 384 Kbyte. Bei 24 Bit Farbe werden dies bei gleicher Auflösung schon mehr als 1 MByte pro Bild. Moderne hochauflösende Megapixel-Kameras mit 1280*1024 Bildpunkten erreichen diese Größe schon bei einfachen Grauwertbildern mit 8 Bit Pixeltiefe. Bei Farbe würde sich dieser Wert auf beinahe 4 Mbyte für ein einziges Bild erhöhen. Bei noch größeren Bildern - 16MPixel-Kameras sind durchaus üblich, und sogar 50Mpixel-Kameras sind verfügbar - oder bei längeren Bildsequenzen kann man sehr leicht auch Hunderte von Mbytes überschreiten. Dies sollte beim Abspeichern von Bilddaten immer berücksichtigt werden. So kann es oft ausreichend und sehr viel speicherschonender sein, nur einen bestimmten Ausschnitt (Region of Interest = ROI) des Bildes abzuspeichern oder mit dem zwar verlustbehafteten aber stark komprimierenden JPEG-Verfahren zu arbeiten. Für ein sinnvolles Arbeiten mit größeren Bilddatensätzen wird eine schnelle Festplatte mit mindestens 10 GByte freiem Speicher empfohlen. Weiterhin ist es sicherlich sinnvoll, ein leistungsfähiges Backup-Medium (Externes USB- oder FireWire-Laufwerk, Bandlaufwerk oder Wechselplatte) mit einzuplanen.
Wenn Bildmaterial direkt von einer Kamera oder einem Videorekorder eingelesen werden soll, wird in der Regel eine Bildeinlesekarte (Frame Grabber) benötigt. Es werden verschiedene FrameGrabber-Karten vom picCOLOR-System unterstützt, so daß direkt vom Programm aus Bilder oder Bildsequenzen eingelesen werden können. Bitte erkundigen Sie sich nach der Palette der bereits implementierten Frame Grabber. Weitere Frame Grabber werden auf Wunsch angepaßt. Natürlich können die meisten Frame Grabber auch als "Stand-Alone"-Systeme genutzt werden, d. h. man liest die gewünschten Bilder mit der vom Frame Grabber Hersteller mitgelieferten Software ein und speichert sie in einem vom picCOLOR-Programm lesbaren Format ab. Verschiedene moderne Kamera-Schnittstellen, wie z. B. USB, FireWire oder Gigabit-Ethernet, benötigen in der Regel keinen speziellen Frame Grabber, da diese Schnittstellen von fast jedem Motherboard zur Verfügung gestellt werden. Bitte erkundigen Sie sich, welche dieser Schnittstellen bereits im picCOLOR-Programm implementiert sind.
Das vorliegende Handbuch liegt als Online-Hilfesystem im HTML- oder Windows-Helpfile-Format vor. Beim HTML-Format wird zur Darstellung ein Internet-Browser (Netscape, Mozilla, FireFox, oder Internet Explorer o. ä.) benötigt. Da zur Darstellung des Inhaltsverzeichnisses und des Indexes Java verwendet wird, sollte der Browser Java-fähig sein. Die Schriftgröße ist in der Regel relativ klein gehalten, z. B. 10 Punkte. Falls diese Schriftgröße auf Ihrem Browser zu klein wirkt und kaum lesbar ist, sollten Sie die minimal angezeigte Schriftgröße im Browser erhöhen, z. B. auf 12 Punkte. Für das Windows-Helpfile-Format wird keine weitere Software benötigt.

2.2. Hardware Installation
Sie haben das Bildverarbeitungsprogramm picCOLOR entweder ohne Frame Grabber Unterstützung oder für eine spezielle Hardware (Frame Grabber/Bildeinlesekarte) erhalten. In der vorliegenden Version kann das Programm ausschließlich mit dieser zuvor spezifizierten Hardware eingesetzt werden. Wenn Sie einen anderen Frame Grabber mit direkter picCOLOR-Unterstützung einsetzen wollen, sollten Sie sich mit dem Hersteller der picCOLOR-Software in Verbindung setzen.
Vor der Installation des picCOLOR Programmes sollte die Bildeinlesekarte nach Angaben des jeweiligen Kartenherstellers einwandfrei im Rechner installiert sein und die vom Kartenhersteller mitgelieferten Tests absolviert haben. Der Ablauf einer solchen Karteninstallation könnte beispielsweise folgendermaßen aussehen (Achtung: Bitte beachten Sie dabei immer das Handbuch der Bildeinlesekarte; das nachfolgende Beispiel muß nicht in dieser Form für alle Karten gelten!):

  • Wahl der Karten-Hardware-Adresse im I/O-Bereich über Schalter oder Jumper (nur bei ISA-Karten)

  • Eventuelle Erweiterung des Arbeits- oder Bildspeichers auf der Frame Grabber Karte

  • Einbau der Karte in den PC auf einen freien PCI-, PCI-X-, oder PCIexpress-Steckplatz, je nach Art der Karte

  • Einbau eventueller I/O-Schnittstellen- oder Trigger-Erweiterungen zum Frame Grabber

  • Zusammenbau des Rechners und Test

  • Kopieren der Installations- oder Treiber-Software der Bildeinlesekarte auf die Festplatte (über INSTALL- oder SETUP-Befehl nach Angaben des Kartenherstellers), oder direktes Installieren von CD-ROM.

  • Installation der Treiber-Software: Softwaremäßige Auswahl bestimmter Parameter, z. B. Art der angeschlossenen Kamera und eventuell auch die gewählte Hardware-I/O-Adresse der Karte. Dies geschieht üblicherweise mit einem INSTALL- oder SETUP-Programm nach Angaben des Kartenherstellers.

Die folgenden Bildeinlesekarten verschiedener Hersteller sind bereits für das picCOLOR Programm zugelassen, d. h. Sie können für diese Frame Grabber eine angepaßte Version des picCOLOR Programmes erhalten. Weitere Frame Grabber werden auf Wunsch implementiert. Weiter unten folgen zusätzliche Hinweise für die Installation der bereits angepaßten Karten:

2.2.1. Fast alle auf der SAPERA-Bibliothek basierende Karten derFirma DALSA/CORECO: VIPER CL/DIGITAL/Quad/RGB, X64CL, Xcelera
2.2.2. F/64PCI-Karte von DALSA/CORECO
2.2.3. MicroEnable Frame Grabber von Silicon Software
2.2.4. Frame Grabber der Firma Euresys (GrabLink-Serie)
2.2.5. Falcon/Eagle von IDS
2.2.6. NI1429 und NI1430 von National Instruments

2.2.7. Installation eines noch nicht unterstützten Frame Grabbers
2.2.8. Installation einer speziellen Kamera

2.2.1. Installation der Xcelera und X64CL Kartenserie oder der VIPER DIGITAL/Quad/RGB Serie (DALSA/CORECO):
Bei einigen Karten kann vor dem Einbau deren Arbeitsspeicher aufgerüstet werden. Bei der VIPER-Bildeinlesekarte werden übliche PS2-SIMM's verwendet. Für das Einlesen längerer Bildsequenzen mit mehreren tausend Bildern werden recht lange DMA-Adresstabellen aufgebaut: hier sollte man mindestens 32 oder 64Mbyte einsetzen. Bei der X64CL-Kartenserie gibt es zwei unterschiedliche Versionen bzgl. des Bildspeichers: die normale Karte hat nicht die Möglichkeit einer Speichererweiterung, die EM-Version der Karte kann mit größeren DDR2-RAM-Speichern aufgerüstet werden. Dies ist jedoch in der Regel nicht notwendig, da die DMA-Tabellen intern anders verwaltet werden. Installieren Sie dann die Software von der mitgelieferten Treiber-CD. Zunächst sollte die "low-level"-VIPER-(oder X64CL oder Xcelera)-Treibersoftware installiert werden. Danach wird die SAPERA-Library installiert, die die Funktionen zur direkten Bildübernahme von picCOLOR aus zur Verfügung stellt. Diese SAPERA-Library sollte nur in der Run-Time-Version installiert werden. In der Regel muss nach der Installation ein Firmware-Update erfolgen, bei dem dann auch die Konfiguration der Karte ausgewählt werden kann. All dies läuft jedoch problemlos halbautomatisch ab. Danach müssen eventuell spezielle Kamera-Konfigurationsfiles erstellt werden, die dem System das Kamera-Timing für Spezialkameras mitteilen. In der Regel werden eine ganze Reihe solcher Konfigurationsfiles für viele bekannte Kameras bereitgestellt. Mit dem "CameraExpert.Exe"-Programm können auch für neue, noch nicht aufgeführte Kameras solche Konfigurationsdateien erstellt werden.

2.2.2. Installation der F/64PCI-Karte von DALSA/CORECO:
Zunächst sollte der Programmspeicher für den TMS34020-Prozessor aufgerüstet werden (GSP-Speicher), z. B. von den defaultmäßigen 1Mbyte auf 4 oder 16 MBytes, je nach Anforderungen an spezielle implementierte Zusatzfunktionen, die auf der F64P-Karte ablaufen können. Hierzu muß der Jumper B3 wie im Handbuch beschrieben umgesteckt werden. Weiterhin muß die gewünschte Menge an Zusatzspeicher für den TMS320C40 DSP-Prozessor eingesetzt werden (4Mbyte ist standard, ausbaufähig bis 32Mbyte). Schließlich kann auch noch der Video-Speicher erweitert werden. Dies ist allerdings nur notwendig, wenn sehr hochauflösende Kameras eingesetzt werden. Wenn die Karte, wie für bestimmte Anwendungen im picCOLOR-Programm empfohlen, in einer Zwei-Monitor-Lösung eingesetzt wird, so darf kein VGA-Feature-Connector eingesetzt werden. Danach wird die Karte mit der von CORECO gelieferten Installationssoftware in das System eingebunden. Die aktuelle Treiber-Version von CORECO ist die Nummer 1.60. Es gibt sie in Versionen für Windows 98 und Windows NT 4.0. Auf Windows 2000 ist der Treiber nicht lauffähig! Es zeigen sich Inkompatibilitäten bei der gleichzeitigen Bildakquisition und der Live-Bildschirmdarstellung. Während der Installation wird ein Verzeichnis mit dem Namen ODF64NT (unter WINDOWS NT) erstellt, in dem eine Reihe von Treibern und Konfigurationsfiles gespeichert werden. Hier befinden sich auch vier Versionen des kartenspezifischen Programmes F64PGSP.OUT für die GSP-Speicherausbauvarianten mit 1, 4, 16, und 32 MByte. Diese Programme heißen GSP4.OUT, GSP16.OUT und GSP32.OUT. Je nach Speicherausbau der Karte muß das zugehörige Programm in F64PGSP.OUT umbenannt werden. Nennen Sie hierzu erst das Originalprogramm F64PGSP.OUT in GSP1.OUT um, damit es nicht überschrieben wird. Anschließend muß eine genau angepaßte Konfigurationsdatei erstellt werden. Diese wird mit dem Programm WCONFIG.EXE erzeugt. Dieses Programm wird automatisch in das Start-Menü gelegt, wo es unter dem Namen F64P-Configuration o.ä. gefunden werden kann. Hier sollten Sie zunächst testen, ob die Karte richtig erkannt wurde und der zusätzlich eingesteckte GSP-Speicher gelesen werden konnte. Dann muß als erstes die Bildschirm- und Speichergröße so eingestellt werden, daß sie mit der Auflösung des picCOLOR-Programmes übereinstimmt, z. B. 768*512 Pixel. Danach sollten die folgenden Einstellungen getätigt werden:

Acq. Filter: | Off (kann einen Farbträger bei 4.43MHz PAL-Signal wegfiltern)
Acq. Sync Source: | Camera Master (Sync on composite Video)
Acq. Type: | Generic PAL (CCIR) (je nach eingesetzter Kamera)
Camera Connector: | Camera #2 (der erste Kameraeingang wird von picCOLOR defaultmäßig nicht genutzt)
Display Video Format: | z. B. 800*600 Pixel (Frequenz je nach Fähigkeit eines eventuell angeschlossenen Kontroll-Monitors)
Memory Format: | z. B. 768*512 Pixel (Arbeitseinstellung des picCOLOR-Programmes im PICC_NT.CFG-Konfig.-file)
Output Sync Enable: | None
Pixel Size: | 8 Bit/Pixel, je nach Hardware und geliefertem picCOLOR-Programm eventuell auch 16 Bit/Pixel
Custom Camera: | None
Custom Display: | None
VGA PassThrough: | None
Host Buffers: | Anzahl gewünschter Buffer, in die Bilder direkt eingelesen werden können (auch für Sequenzen)

Die Host-Buffer müssen natürlich auch die gleiche Größe wie alle anderen Bildspeicher aufweisen. Wenn die Anzahl der Host-Buffer vergrößert wird, so muß in der Regel neu ge"boot"et werden, da der Speicher für Host-Buffer nicht mehr von WINDOWS verwaltet werden darf. Die F64P-Karte kann dann Bilder per Bus-Master-DMA direkt in diesen Host-Buffer übertragen. Der maximale Speicher, der hierfür reserviert werden kann, beträgt nach unseren Erfahrungen etwa 20..30% des im PC eingebauten Hauptspeichers. Diese Konfigurationseinstellung sollte dann mit dem Befehl "Save Current Configuration and Quit" abgespeichert werden. Das Konfigurationsprogramm erzeugt dann die notwendigen Einträge in der WINDOWS Registry mit allen geänderten Parametern. Wenn die F64P-Karte mit den von CORECO mitgelieferten Beispielprogrammen (z. B. F64PPRO.EXE) einwandfrei läuft, kann die spezielle picCOLOR-Initialisierung durchgeführt werden. Hierzu müssen die mitgelieferten erweiterten Treiber-Programme F64PGSP.OUT und F64PDSP.OUT in das Verzeichnis kopiert oder verschoben werden, in dem die F64PCI-Driver installiert und initialisiert wurden (z. B. im Verzeichnis C:\ODF64PNT). Dort stehen bereits die Standard-Original-.OUT-Files. Löschen Sie diese Original-Files nicht, da Sie diese für Testzwecke noch brauchen können, sondern geben Sie ihnen einen anderen Namen, z. B. F64PGSP.ORG und F64PDSP.ORG. Diese Files können bei einer eventuellen Fehlersuche sehr nützlich sein! Die neuinstallierten .OUT-Files werden automatisch beim Einschalten des Rechners oder beim ersten Aufruf des picCOLOR-Programmes auf die F64P-Karte hochgeladen und kontrollieren dort die hardwarenahen Funktionen. In der Regel muß der Rechner neu hochgefahren werden, damit die neu kopierten Versionen der .OUT-Files benutzt werden. Achten Sie darauf, daß die gelieferten Treiber-Programme dem GSP-Speicherausbau der F64P-Karte entsprechen. Wie die Originale-Files können sie in den Versionen für 1, 4, 16, und 32 MByte geliefert werden. Beim Aufstarten des picCOLOR-Programmes wird immer die Anzahl der Videospeicher (VRAM) und die Anzahl der Host-Buffer angezeigt.

2.2.3. MicroEnable Frame Grabber von Silicon Software
Der MicroEnable Frame Grabber wird nach Angaben des Herstellers in den PC eingesetzt. Es können entweder ein oder zwei Kamera-Module angeschlossen werden, die in freie Slotblechpositionen eingesetzt werden müssen. Zusätzlich muß noch das beigefügte 3.3V-Powerkabel in die Stromversorgung des Motherboards eingefügt werden.
Die Softwareinstallation ist einfach und wird mit den vom Hersteller mitgelieferten Installationsprogrammen durchgeführt. Es liegen Testprogramme bei, mit denen der Bildtransfer und die PCI-Busgeschwindigkeit beim Transfer getestet werden kann.
Die MicroEnable-Hardware mit dem Xilinx FPGA-Prozessor ist eine interessante neue Entwicklung, die eine hohe Flexibilität verspricht. Beliebige Kamera-Interfaces oder Zusatzfunktionen können theoretisch implementiert werden, ohne an der Hardware irgendetwas ändern zu müssen. Leider werden diese Möglichkeiten von der Firma Silicon Software noch nicht allgemein unterstützt, d. h. eine Neuprogrammierung des Xilinx-Bausteins kann vom Benutzer kaum durchgeführt werden. Wir werden versuchen, eine intensivere Zusammenarbeit mit Silicon Software zu erreichen, so daß spezielle Kundenwünsche berücksichtigt werden können.

2.2.4. Frame Grabber der Firma Euresys
Die MultiCam Treiber für die Frame Grabber der Firma Euresys (Belgien, info@euresys.com) sind implementiert, die z. B. für die Kartenserien Domino Alpha und Gamma und die CameraLink-Karten GrabLink Value und GrabLink Expert (und Expert 2) optimiert sind. Speziell getestet sind bisher die GrabLink Value und Expert, die eine preisgünstige Möglichkeit bieten, moderne Digitalkameras nach dem CameraLink-Standard anzuschließen.
Die GrabLink Value oder Expert wird nach Herstellerangaben im PC installiert. Mit dem von Euresys beigefügten Demoprogramm EasyGrab.exe kann das Interface getestet werden. Euresys bietet für eine große Anzahl von Kameras bereits spezielle *.cam-Definitionsfiles an, die vom picCOLOR-Programm aus geladen werden müssen und mit denen sich der Frame Grabber auf die Kamerageometrie (Auflösung, Bittiefe, usw.) einstellt. Mit dem GrabLink Expert-Karte können Bilder von zwei asynchron laufenden Kameras gleichzeitig eingelesen werden. Diese Möglichkeit ist zwar getestet worden, wird jedoch softwaremäßig nicht komplett unterstützt. Unterstützt werden jedoch zwei synchronisiert arbeitende Kameras, die dann im Stereobetrieb gleichzeitig eingelesen werden können.

2.2.5. Falcon/Eagle von IDS
Die Falcon/Eagle-Karten der Firma IDS sind preisgünstige Frame Grabber für Standard-Videoquellen mit CCIR oder RS-170 Signalen. Besonders hervorzuheben ist die Tatsache, daß es die Karten mit 2 oder 4 A/D-Wandlern gibt, so daß Stereobilder zweier aufeinander synchronisierter Kameras synchron eingelesen werden können. Die Installation der Karten ist sehr einfach und problemlos nach Angaben des Herstellers vorzunehmen. Wenn längere Bildsequenzen (z. B. mehr als 100 Bilder) eingelesen werden sollen, so muß ein zusätzlicher Eintrag in die Windows-Registry angelegt werden (Windows NT4.0 oder Windows 2000). Hierzu starten Sie den Registry-Editor regedit.exe und suchen dort den Eintrag: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Falcon\Parameters. Darunter finden Sie fur jedes Device einen weiteren Key (Device0 ...Device15). Für jedes Device, das einen größeren RISC-Speicher bekommen soll, erstellen Sie nun unterhalb des Keys Devicex einen DWORD-Wert namens "RiscMemSize", dem Sie einen Wert größer als 0x80000 (entspricht 512kB) zuweisen. Danach starten Sie das System neu.

2.2.6. NI1429 und NI1430 von National Instruments

Die NI1429 und NI1430-Karten der Firma National Instruments wurden implementiert, um eine "Second Source" für das heute übliche CameraLink-Interface bei höchsten Leistungen und Übertragungsraten anbieten zu können. Nach Einbau der Karte wird die mitgelieferte Software von National Instruments installiert. Dies ist der NI-IMAQ Treiber sowie das ausführbare Programm MAX. Mit diesem Programm kann die Karte ausgetestet werden und es werden Kamera-Definitionfiles erstellt und geladen. Es ist nicht möglich, von picCOLOR aus dann die Kamera zu ändern. Wenn dies geschehen soll, so muss man picCOLOR beenden und im MAx eine neue Kamera definieren. Dies stellt in der Regel keine Einschränkung dar, da man ja sowieso bei laufendem System die CameraLink-Stecker nicht lösen darf, d. h. auch keine andere Kamera anschließen kann.

2.2.7. Installation eines noch nicht unterstützten Frame Grabbers
Wenn eine oder mehrere zusätzliche Frame Grabber-Karten eingesetzt werden sollen, die noch nicht von der picCOLOR-Software unterstützt werden, so müssen diese wie üblich nach den Angaben des jeweiligen Herstellers eingebaut und installiert werden. Normalerweise werden vom Hersteller Demonstrationsprogramme oder einfache Anwendungsprogramme mitgeliefert, die nicht nur zum Test der Karte dienen, sondern die auch zur einfachen und flexiblen Bildübernahme benutzt werden können. In der Regel stehen auch verschiedene Formate zur Abspeicherung der eingelesenen Bilder auf Festplatte zur Verfügung. Wenn ein zu picCOLOR kompatibles Format gewählt wird (z. B. TIFF oder JPG), so können die Bilder dann später von picCOLOR eingelesen und verarbeitet werden. Auf Wunsch können neue Bildeinlesekarten auch direkt in die picCOLOR-Software eingebunden werden, sofern der Kartenhersteller eine vernünftige Treibersoftware zur Verfügung stellt. Bitte wenden Sie sich in diesem Fall an das picCOLOR-Entwicklungsteam.

2.2.8. Installation einer speziellen Kamera
Je nach Art der verwendeten Kamera kann es möglich sein, über bestimmte vom Kamerahersteller gelieferte Control-Software auch direkt die Kamera zu programmieren. Hiermit werden z. B. bestimmte Bildübernahmefrequenzen oder Auflösungen eingestellt oder es wird die Art der Triggerung oder die Aufnahmezeit (Shutter) festgelegt. Diese Software muß nach Angaben des jeweiligen Kameraherstellers geladen und installiert werden.

Nun ist Ihr System bereit für die Installation der picCOLOR Software.

2.3. Software Installation
Die picCOLOR-Installation ist so einfach, daß bisher keine Notwendigkeit gesehen wurde, ein komplexes Installationsprogramm zu entwickeln. Auf der CD findet man entweder das komplette PICCOLOR-Verzeichnis oder die archivierte und komprimierte Datei PICCOLOR.EXE. Dies ist ein Archiv, daß sich beim Aufruf automatisch entpackt und dabei genau an der Stelle im Verzeichnisbaum, an der es sich beim Aufruf befindet, eine sinnvolle Verzeichnisstruktur aufbaut. Daher muß das PICCOLOR.EXE-Archiv von der CD auf die Festplatte an die gewünschte Stelle kopiert werden. Dies kann im einfachsten Falle das "Root"-Directory sein, z. B. C:\ oder D:\, oder aber auch jedes beliebige Unterverzeichnis, z. B. das C:\Programme\-Verzeichnis, in dem WINDOWS in der Regel alle Anwendungen installiert. Nach Aufruf und automatischem Entpacken befinden sich hier dann eine Auswahl der im folgenden aufgelisteten Verzeichnisse und Dateien:

PICCOLOR<DIR>
|
|___PICCHELP<DIR>
| |______picchelp.chm
|
|___PICMACRO<DIR>
| |______EXAMPLE.MCR
| |______.....
|
|___PICCFONT<DIR>
| |______SYS24
| |______......
|
|______PICC_NT.EXE
|______PICC_NT.CFG
|______STARTUP.INI
|______STARTUP.MCR
|______PICCHELP.HLP
|______README.TXT
|______README.DOC
|______DITHTAB.SYS
|______.....

Hier ist

  • PICC_NT.EXE das picCOLOR-Hauptprogramm,

  • STARTUP.INI eine Initialisierungsdatei mit Angaben über die Benutzeroberfläche und benutzerspezifische Bildspeicherkonfigurationen sowie weitere Parameter,

  • STARTUP.MCR ein Script-Programm, mit dem eine komplette automatische Initialisierung ablaufen kann oder sogar eine vollautomatische Bildübernahme und Bildauswertung gestartet werden kann,

  • PICCHELP.HLP ein kurzer Hilfetext, der als Minimalhilfe zur grundsätzlichen Programmbedienung gedacht ist,

  • README.TXT eine kurze Anleitung zur Installation des picCOLOR-Programmes,

  • README.DOC eine Datei mit "Last Minute" Änderungen und Erweiterungen der Software, die nicht mehr im Handbuch aufgenommen werden konnten (WORD97-Format),

  • DITHTAB.SYS ist eine Hilfsdatei, mit der 24Bit-Echtfarbbilder auch bei niedriger Farbauflösung durch die Dithertechnik naturgetreu dargestellt werden können

  • PICCHELP <DIR> ein Verzeichnis mit allen Hilfedateien,

  • PICMACRO <DIR> ein Verzeichnis mit Beispiel-Script-Programmen (solche Script-Programme werden als MACRO-Programme bezeichnet. Alle MACRO-Programme haben die Extension .MCR, z. B.: TEST.MCR

  • PICCFONT<DIR> ein Verzeichnis mit allen implementierten Text-Fonts, die von der Draw-Text-Funktion benutzt werden können

Basiskonfiguration: Eine weitere Datei, die Konfigurationsdatei PICC_NT.CFG, wird zum normalen Programmablauf benötigt und kann entweder manuell oder automatisch vom picCOLOR-Programm erstellt werden.

  • PICC_NT.CFG ist eine Konfigurationsdatei, mit der dem System die zur Verfügung stehende Hardware, d. h. etwa bestimmte Frame Grabber, und verschiedene Basisparameter mitgeteilt werden. Außerdem wird hier eingetragen, wo sich das PICCOLOR-Verzeichnis befindet. Diese Datei muß im WINDOWS-Systemverzeichnis, d. h. unter WINDOWS NT im WINNT-Verzeichnis liegen, z. B. C:\WINNT und wird von picCOLOR automatisch erstellt.

Der Aufbau der PICC_NT.CFG-Datei ist sehr einfach. Es handelt sich dabei nur um eine ASCII Textzeile mit den folgenden Parametern:

0x1234 768 576 0x0 2 1 0 0 C:\Programme\PICCOLOR

Dabei haben die einzelnen Variablen die folgende Bedeutung:

  • 0x1234 Erkennungszeichen, daß es sich um eine picCOLOR-Konfigurationsdatei handelt

  • 768 die Bildbreite in Pixeln. Wenn hier 0 eingetragen ist, wird wie unten beschrieben geschaltet

  • 576 die Bildhöhe in Pixeln. Wenn hier 0 eingetragen ist, wird wie unten beschrieben geschaltet

  • 0x0 hexadezimaler Wert, frei für zukünftige Einstellungen

  • 2 Display-Type (wird in dieser Version nicht benutzt)

  • 1 Art des primären Frame Grabbers (1 = directly supported frame grabber, >1 = additional grabbers)

  • 0 Art eventueller sekundärer Frame Grabber

  • 0 Größe der Bildspeicher beim Aufstarten (1: 512*512, 2: 768*512, 3: 1024*512, 4: 1024*768, 5: 1024*1024, 6: 1280*1024, 7: 2048*1024, 8: 2048*2048, 9: 4096*4096, ...). Bei 0 müssen die obigen Breiten- und Höhenwerte sinnvoll besetzt sein

  • C:\Programme\PICCOLOR ist die komplette Pfadangabe für das PICCOLOR-Verzeichnis.

Wenn die PICC_NT.CFG-Datei beim ersten Aufstarten des picCOLOR-Programmes nicht im WINNT-Verzeichnis (oder im WINDOWS-Verzeichnis bei WINDOWS XP) gefunden wird, so nimmt picCOLOR bestimmte Defaultwerte an und fragt, ob es diese Datei erstellen soll. Wenn dies abgelehnt wird, ist die Funktionalität von picCOLOR eingeschränkt, das Programm ist jedoch trotzdem lauffähig. Ein eventuell vorhandener Frame Grabber wird jedoch nicht erkannt und die im PICCOLOR-Verzeichnis liegenden Dateien, z. B. das Hilfesystem und die STARTUP-Files können nicht gefunden werden. Wenn die PICC_NT.CFG-Datei automatisch erstellt wird, muß lediglich manuell die gewünschte Anfangsbildspeichergröße und der komplette Pfad des PICCOLOR-Verzeichnisses eingegeben werden (ohne abschließendes "\"). Alle anderen Parameter werden z. Zt. noch automatisch gesetzt. In zukünftigen Versionen wird man hier zusätzlich den Frame Grabber und andere Parameter auswählen können.

Es wird empfohlen, einen Link zum picCOLOR-Programm auf den Desktop und ins START-Verzeichnis zu legen. Die Vorgehensweise hierzu ist sehr einfach und ist im WINDOWS-Handbuch dargestellt. Außerdem wird empfohlen, ein Unterverzeichnis für Bilddaten anzulegen, z. B. "D:\BILDER".

2.4. Starten des picCOLOR Programmes
Das picCOLOR-Programm wird durch Aufruf des PICC_NT.EXE Programmes gestartet. Zunächst versucht picCOLOR, den PICC_NT.CFG-File aus dem WINDOWS-Systemverzeichnis (z. B. C:\WINNT) einzulesen, in dem Information über die verwendete und unterstützte Hardware sowie die Pfadangabe für das PICCOLOR-Verzeichnis enthalten ist. Wird diese Datei nicht gefunden, so kann diese Datei auf Wunsch automatisch durch picCOLOR erstellt werden (siehe voriges Kapitel). Nach Initialisierung der internen Variablen und des Multiple-Document-Interfaces (MDI) versucht picCOLOR dann, einen STARTUP.INI-Datenfile einzulesen, in dem die Daten der Bildschirmauflösung (falls abweichend von der Einstellung im PICC_NT.CFG-File), die Anzahl der definierten Bildspeicher, Größe der Bearbeitungsregionen (ROI) und andere Einstellungen stehen. Wird dieser File nicht im PICCOLOR-Verzeichnis gefunden oder ist er fehlerhaft oder für eine nicht vorhandene Hardware- oder Softwareversion erzeugt worden, gibt das Programm eine Fehlermeldung aus und nimmt defaultmäßige Werte an. Dies ist jedoch kein Problem, da Sie über das Konfigurations-Menü im Control Panel jederzeit einen neuen STARTUP.INI-File erzeugen können, in dem Sie viele wichtige Systemeinstellungen für Ihre nächste picCOLOR-Sitzung abspeichern können.
Wenn es beim Aufstarten des picCOLOR-Programmes zu Problemen kommt, sollte man versuchen, das komplette PICCOLOR-Verzeichnis auf dem Laufwerk C:\ zu installieren, nämlich als C:\PICCOLOR. Dies ist das Default-Verzeichnis, falls die PICC_NT.CFG Datei nicht gefunden werden konnte.
Wenn Sie das picCOLOR Programm über den Befehl "Quit Program" des "File"-Menü's (oder durch Anklicken der Exit-Icons im Titelbalken des Hauptfensters) verlassen, so muß dies in einer Sicherheitsmeldung quittiert werden, da alle Bilder und Bildspeicher bei Programmende gelöscht werden.

2.5. Entfernen (Deinstallieren) des picCOLOR Programmes
Das picCOLOR-Programm kann sehr einfach wieder deinstalliert werden. Hierzu wird lediglich das komplette PICCOLOR-Verzeichnis gelöscht sowie der Konfigurationsfile PICC_NT.CFG im Windows-Systemverzeichnis (z. B. C:\WINNT\PICC_NT.CFG oder C:\WINDOWS\PICC_NT.CFG). Dieser winzige Picc_nt.cfg-File stört jedoch nicht und muß daher wirklich nicht gelöscht werden. Das picCOLOR-Programm ändert die Windows-Registry nicht; es benutzt zur Konfiguration nur die beiden Files PICC_NT.CFG und STARTUP.INI. Weiterhin sollten Sie dann auch eingerichtete Links auf dem DeskTop oder im Start-Verzeichnis entfernen. Eventuell zusätzlich eingebaute Frame Grabber müssen nach Angaben der jeweiligen Hersteller deinstalliert werden.


3. Benutzeroberfläche

Zur Lösung von Aufgaben der Bildverarbeitung gehört üblicherweise die Anwendung einer Vielzahl von Einzelfunktionen, die jeweils spezielle Verarbeitungsschritte bewirken. Der erste und sicherlich wichtigste Schritt zur Lösung ist die Entwicklung und der Test eines bestimmten Funktionsablaufes von mehreren Einzelfunktionen. Zum schnellen Test solcher Funktionsabläufe ist ein flexibles interaktives Interface notwendig. Daher wurde bei der Entwicklung des ursprünglichen picCOLOR-Programmes und des dazugehörenden Betriebssystemes auf dem Texas Instruments Prozessor besonderes Augenmerk auf die interaktive Benutzerschnittstelle gelegt, die ein einfaches und übersichtliches Arbeiten ermöglichen soll. Leider ist es nicht in allen Fällen möglich gewesen, diese Bedienungsoberfläche in allen Punkten exakt unter Windows zu emulieren. So ist z. B. besonders das wiederholte Öffnen von Menüs und ihren Untermenüs unter Windows ein lästiger Vorgang, der in dieser Form im Originalprogramm kein Problem darstellte, da dort Untermenüs geöffnet blieben, bis sie explizit vom Benutzer geschlossen wurden. Eine verschachtelte Struktur von mehreren Untermenüs macht unter Windows überhaupt keinen Sinn, während dies im Originalprogramm eine sehr komfortabel benutzbare Oberfläche darstellte. Als Abhilfe werden ständig geöffnete Tool-Box-Winows gesehen, die für spezielle Funktionsgruppen implementiert sind, z. B. für die Zusatzmodule PIV, PTV und FCM (siehe Kap. 13). In jedem Fall ist das Entwicklungsteam ständig an Anregungen zur Verbesserung der Benutzeroberfläche interessiert.

Die Bedienung der Bildverarbeitungssoftware geschieht hauptsächlich mit einer 2-Tasten-Maus und mit verschiedenen Hot-Key's, d. h. einfachen Tastenbefehlen über die Tastatur. Bestimmte Namen (Filenamen) oder Zahlenkonstanten werden über die Tastatur eingegeben. Der Kursorblock (Pfeiltasten) der Tastatur ist in vielen Funktionen wirksam und kann z. B. für eine bildpunktgenaue Eingabe statt der ungenaueren Verschiebung der Maus verwendet werden. Eine Besonderheit ist, daß die Kursortasten in der Regel auch bei gedrückter Maustaste wirksam sind. Die linke Maustaste wirkt üblicherweise als Bestätigung einer Eingabe, zur Anwahl von Funktionen oder zur Bedienung von Schaltern in den Dialog-Fenstern. Die rechte Maustaste dagegen wirkt in bestimmten Fällen als Beendigung einer Funktion, z. B. der Beendigung einer Bildaufnahme. In vielen Fällen wirkt die Eingabetaste (Return- oder Enter-Taste) wie die linke Maustaste und die ESC-Taste wie die rechte Maustaste. Dies ist z. B. sehr wichtig, wenn eine mit Hilfe der Kursortasten getätigte pixelgenaue Mauszeigerverschiebung anschließend bestätigt werden soll: Ein Anklicken der linken Maustaste könnte die Mauszeigerposition ja schließlich wieder ändern. Von dieser Regel gibt es jedoch Ausnahmen.

Der Mauszeiger erscheint in einer der jeweiligen Funktion angepaßten Form. Im Menü-System ist das normalerweise der übliche kleine Pfeil, der genau auf die jeweils angewählte Postion zeigt. Im Bild ist dies jedoch ein kleines Fadenkreuz, das eine pixelgenaue Positionierung ermöglicht. Viele weitere Funktionen besitzen eigene, spezielle Kursor-Formen, die die Anwendung der jeweiligen Funktion erleichtern sollen.

Die Software ist ausgelegt, mit mehreren Bildern zu arbeiten. Diese sind in verschiedenen Bereichen des Arbeitsspeichers - sogenannten Bildspeichern - abgelegt und können nach ihrer Definition z. B. durch Eingabe der jeweiligen Bildnummer aktiviert und angezeigt werden (nur für die einstelligen Bildspeicher von Nr.1 bis Nr.9). Der Bildspeicher mit der Nr.0 ist als "Undo"-Speicher reserviert: nach jeder bildverändernden Funktion kann durch Aufrufen der Undo-Funktion (Hot-Key-Taste "U") der alte Zustand des Bildes wiederhergestellt werden. Es gibt lediglich eine "Undo"-Ebene. Ein erneutes "Undo" restauriert das vorherige Bild. Welcher der definierten Bildspeicher gerade auf dem Bildschirm dargestellt und damit der aktuelle Bildspeicher ist, wird über die aktivierte Titelleiste der Bildfenster angezeigt. Das angezeigte Bild entspricht - bis auf wenige Ausnahmen - immer dem aktuellen internen Bildspeicher. Bildverarbeitungsfunktionen werden im aktuellen Bildspeicher ausgeführt und anschließend auf den Bildschirm übertragen. Mit einer "Show All"-Funktion hat man die Möglichkeit, den Inhalt aller Bildspeicher, in Übersichtsform verkleinert, gleichzeitig darzustellen.

In vielen Fällen ist das angezeigte Bild nur ein Ausschnitt eines gesamten Bildes. Wenn die Monitorauflösung geringer als die Bildspeicherauflösung ist, kann der darstellbare Bildausschnitt über den Bildschirm verschoben werden (Scrolling und Panning). Dies geschieht entweder über die Verschiebebalken am rechten und unteren Bildrand oder auch automatisch, indem man versucht, bei Darstellung des Fadenkreuz-Mauszeigers mit gedrückter linker Maustaste in den nicht dargestellten Bildteil hineinzugelangen. Der dargestellte Bildteil verschiebt sich dann sofort, so daß der Fadenkreuz-Mauszeiger immer sichtbar bleibt. In verschiedenen Meßfunktionen, in denen eine gedrückte Maustaste eine Auswahl oder Beendigung der Funktion bedeutet, wird die Pan- und Scrollfunktion auch automatisch bei Mausverschiebung, d. h. ohne gedrückte Maustaste aktiviert.

Die picCOLOR Software kann prinzipiell beliebig große Bilder verarbeiten. Man ist praktisch nur durch den verfügbaren System-Arbeitsspeicher begrenzt. In der vorliegenden Version werden jedoch bzgl. direkt anwählbarer Auflösungen nur Bilder bis zu einer Größe von 4096*4096 Bildpunkten unterstützt (auf Wunsch können spezielle, auch höhere Auflösungen fest implementiert werden). Andere, höhere Auflösungen müssen manuell eingegeben werden. Bei der interenen und externen Darstellung der Bilder unterscheidet sich das picCOLOR-Programm von anderen WINDOWS-Programmen: so werden bei üblichen Graphikprogrammen z. B. von der Harddisk geladene Bilder nicht in den Arbeitsspeicher übertragen, sondern der Bild-File bleibt als sogenannter "Mapping-File" geöffnet. Zur Bilddarstellung wird dann eine sogenannte kompatible Bitmap erzeugt, die lediglich der angezeigten Größe entspricht. Der geöffnete File ist jederzeit zugreifbar und es wird nur der dargestellte Bereich auf den Bildschirm kopiert. Dieses Verfahren ist sehr speicherschonend, sehr flexibel, aber in der Regel zu langsam. Im picCOLOR-Programm dagegen wird für jedes Bild ein kompletter interner Arbeitsspeicher reserviert sowie ein kompletter Display-Speicher angelegt, in den WINDOWS das Bild zur Darstellung überträgt. So ist sowohl die Bilddarstellung und ein Verschieben des Bildes auf dem Bildschirm extrem schnell als auch die interne Bildverarbeitung. Nachteil ist natürlich der große Speicherbedarf speziell bei sehr großen Bildern. So benötigt bei 32 Bit Display-Tiefe der Graphikkarte und 8 Bit interner Graustufentiefe ein 4096*4096-Pixel-Bild einen Arbeitsspeicher von 16 MByte und einen Display-Speicher von 64 MByte, zusammen also 80 MByte!

Es gibt grundsätzlich drei verschiedene Betriebsarten der Software, aus denen Sie unterschiedliche Befehle geben können. Im Menü-Modus, d. h. wenn eines der Pull-Down-Menüs geöffnet ist, wählen Sie die gewünschte Funktion aus. Die unter dem Kursor liegende Funktion wird jeweils invertiert dargestellt, d. h. mit heller Schrift auf schwarzem Grund. Bei einfachen Funktionen wird diese dann nach einer Aktivierung mit der linken Maustaste direkt ausgeführt - eventuell nach der Einfrage eines oder mehrerer bestimmter Parameter. Bei Funktionen, die die Auswahl oder Einstellung verschiedener Parameter erfordern und die außerdem verschiedene Optionen zur Ausführung besitzen, wird automatisch ein Dialogfenster geöffnet. In diesem Dialog-Fenster-Modus können Sie durch Auswahl und direkte Eingabe die Parameter zur gewählten Funktion festlegen sowie durch Anklicken der Aktivierungsschaltfläche (üblicherweise ein Taster mit dem Schriftzug "Start Function" o. ä.) die Ausführung der Funktion starten. Es sind spezielle Dialogfenster geplant, die auch einen schnellen Preview der gewählten Funktion erlauben. Wenn kein Untermenü dargestellt und ebenfalls kein Dialogfenster geöffnet ist, befindet man sich im dritten Modus, den Bild-Modus. In dieser Betriebsart kann das Bild beurteilt und mit einfachen Methoden untersucht werden. Im Bild-Modus ist es außerdem möglich, mehrere Bearbeitungsregionen (Region of Interest = ROI) festzulegen und auch zu editieren. Die Umrandung der aktiven ROI ist im aktiven Bildspeicher in der Regel immer sichbar, außer während der Ausführung einer Funktion.

Die Bedienungsoberfläche des picCOLOR Programmes ist in englischer Sprache gehalten, da viele der Bezeichnungen im englischen Sprachgebrauch standardisiert wurden. Diese Bezeichnungen werden zum größten Teil im vorliegenden Handbuch übernommen. Hierdurch, und auch durch die Tatsache, daß viele Bezeichnungen der digitalen Bildverarbeitung im englischen Sprachgebrauch definiert wurden und eine deutsche Übersetzung oft irreführend erscheint, kann es hier zu einem englisch/deutschen Mischmasch kommen, den wir hiermit entschuldigen.


3.1. Bildspeicher

3.1. Bildspeicher / Image Buffer

Das picCOLOR Programm kann mit mehreren Bildern gleichzeitig arbeiten. Diese Bilder werden in verschiedenen Bildspeichern im normalen Arbeitsspeicher des Rechners definiert. Im Unterschied zu anderen Windows-Graphikprogrammen wird bei picCOLOR nicht ein Bildspeicher durch Öffnen eines Bildes definiert, sondern es werden leere Bildspeicher definiert, in die dann Bilder hineingeladen werden können. Dies entspricht in etwa der Import-Funktion anderer Windows-Programme. Alle Bildspeicher haben die gleiche Größe. Hierdurch sind Verknüpfungen der Bilder untereinander in jeder beliebigen Form möglich. Ein Nachteil dieser Handhabung ist natürlich die Tatsache, daß man bei der Definition der Bildspeicher schon wissen muß, wie groß die zu bearbeitenden Bilder sein werden. Die Bildspeicher werden durch interne Windows-Funktionen ins Video-Memory kopiert und damit auf dem Bildschirm dargestellt. Jeweils einer dieser Bildspeicher, der normalerweise sichtbar über allen anderen liegt und durch eine farbige Titelleiste hervorgehoben ist, ist der "Aktive" oder "Aktuelle" und damit derjenige, der bei Bildverarbeitungsfunktionen benutzt und geändert wird. Die Nummer des aktiven Bildspeichers wird in der Titelleiste angezeigt. Dabei wird zwischen normalen Bildspeichern (picCOLOR Image #), Echtfarbbildern (True-Color) (picCOLOR RGB-Image #) und Sequenz- (oder 3D)-Bildern (picCOLOR 3D/Seq.-Image #) unterschieden. Außerdem ist der aktive Bildspeicher im "Windows"-Menü durch eine Markierung hervorgehoben. Alle Bildspeicher besitzen eine eigene Farbtabellenbelegung zur Falschfarbendarstellung, die automatisch beim Anzeigen des Bildes in die Look-up-Table geladen wird. Damit kann schnell zwischen Bildern mit unterschiedlicher Farbtabelle geschaltet werden. Alle Bildspeicher haben auch eine eigene Grauwertkalibrierung, die bei Aktivierung des Bildspeichers ebenfalls aktiviert wird. Die geometrische Kalibrierung in x- und y-Richtung ist jedoch für alle Bildspeicher gleich.

In der Titelzeile jedes Bildfensters sind die üblichen Windows-Kontrollfunktionen zur Verkleinerung und Vergrößerung der Bildfenster sowie zum Beenden, d. h. Freigeben und Löschen der Bildspeicher aufgeführt. Beim Programmstart wird normalerweise automatisch ein einziger Bildspeicher definiert. Die Größe dieses Bildspeicher richtet sich nach der Defaulteinstellung, die im Konfigurationsdatenfile PICC_NT.CFG abgelegt ist. Diese Größe kann entweder manuell oder über den STARTUP.INI-File geändert werden.

Über das "Windows"-Menü oder über die Hot-Keys "1" bis "9" kann einer der Bildspeicher aktiviert und damit auf dem Bildschirm angezeigt werden. Wenn mehr als neun Bildspeicher definiert sind, so können diese nur über das Menü erreicht werden. Die maximal definierbare Anzahl von Bildspeichern ist z. Zt. auf 256 begrenzt. Dies sollte für alle denkbaren Bildoperationen ausreichen. Ein weiterer Bildspeicher ist der "Undo"-Buffer. Er liegt im internen Bildspeicher "0", kann aber nicht in der gleichen Weise benutzt werden wie die anderen Bildspeicher. Er sollte nur über die Funktion "U" = "Undo" indirekt benutzt werden. Er gewährleistet, daß der Bildspeicherzustand vor der letzten Änderung wiederhergestellt werden kann. Es ist lediglich ein einziger Undo-Speicher für alle definierten Bildspeicher vorgesehen. Er ist für den Bildspeicher wirksam, in dem die letzte Änderung stattfand. Ein mehrstufiges Undo ist nicht vorgesehen. Stattdessen ist eine einfache Kopierfunktion vorhanden, mit der Zwischenergebnisse zur späteren Verwendung schnell in freie Bildspeicher transferiert werden können.

Zusätzlich gibt es noch die Möglichkeit, daß spezielle Bilddaten, die keinem internen Bildspeicher entsprechen, auf temporären Bildfenstern dargestellt werden. Bei der Anzeige solcher "uneigentlicher" Bilder (der Begriff wird im Kasten unten genauer erklärt) wird eine spezielle Bildüberschrift angezeigt. Solche "uneigentlichen" Bilder können nicht mit den üblichen Bildverarbeitungsfunktionen bearbeitet werden.

Hinweis: "Uneigentliche" Bilder sind Bilder, die nicht in dieser Form, d. h. in der dargestellten Form in einem Bildspeicher vorliegen, sondern die durch eine spezielle Darstellungsmethode erstellt oder berechnet wurden. Ein wichtiges Beispiel hierzu ist etwa die Darstellung aller Bildspeicher gleichzeitig in verkleinerter Form durch die Funktion "Show All Buffers". Dies ergibt ein "uneigentliches" Bild, das in einem neuen Fenster auf dem Bildschirm dargestellt wird. Diese Bilder werden also nicht in einen Bildspeicher geschrieben. Dabei wird in der Regel ein spezieller Bildtitel angezeigt, um die Besonderheit solcher Bilder hervorzuheben. Weiterhin gehören dazu auch z. B. in der 8 Bit-Dithertechnik oder in HiColor oder TrueColor dargestellte 24 Bit-Echtfarbbilder, die im picCOLOR-Programm üblicherweise in ihren R-, G-, B-Auszügen in drei getrennten Bildspeicherebenen vorliegen. Beim Aktivieren und Bearbeiten eines Farbanteiles wird also lediglich dieser einzelne Farbanteil dargestellt, was für die Bildverarbeitung unschätzbare Vorteile hat. Die komplette Echtfarbdarstellung der Farbanteile des Bildes wird normalerweise nur dann durchgeführt, wenn das Farbbild tatsächlich betrachtet werden soll. Weitere "uneigentliche" Bilder sind z. B. zweidimensionale perspektivische Darstellungen eines 3D-Bildes oder auch pseudo-3D-Darstellungen (Reliefdarstellungen) von 2D-Datenfeldern. Einige dieser "uneigentlichen" Bilder werden in den neueren Versionen von picCOLOR allerdings auch in normalen Bildspeichern erzeugt und sind damit für eine weitere Verarbeitung verfügbar.

Zusätzlich zur Nummer des aktuellen Bildspeichers wird in der Titelleiste und im "Windows"-Menü auch die interne Verwendung des jeweiligen Speichers angezeigt. Dabei bedeuten die Abkürzungen (R), (G), (B), (H), (S), (I), (H), (L), (S) oder (Y), (I), (Q) die jeweiligen Auszüge im intern definierten, aktuellen Farbraum. Diese Bildspeicher können statt mit den Bildspeichernummern auch über die gleichnamigen Hot-Keys (Achtung: "V" statt "Y", das bereits für die ROI-Auswahl genutzt wird) dargestellt und aktiviert werden. Im Unterschied zu der Auswahl mit Ziffertasten wird dabei jedoch zusätzlich eine sinnvolle Farbtabellen- (Color-Look-Up-Table-) Belegung vorgenommen: mit der Taste "R" wird z. B. der Rot-Bildspeicher angezeigt und gleichzeitig ein Rot-Verlauf in die Farbpalette programmiert, d. h. der Pixelwert "0" ist schwarz, der Wert "127" erhält ein mittelhelles Rot und der Wert "255" wird hellrot dargestellt. Dieses automatische Belegen der Farbtabelle kann in der "LUT"-Funktion in der Toolbox abgeschaltet werden.


3.2. Menü-System

Das picCOLOR Hauptmenü ist unter der Titelzeile des Hauptfensters sichtbar. Für die unterschiedlichen Bildarten (normales 2D-Bild, 3D- oder Sequenzbild) gibt es prinzipiell unterschiedliche Hauptmenüs. Im grundsätzlichen Aufbau sind diese Menüs jedoch gleich - sie unterscheiden sich lediglich in der Art und Menge der in den Untermenüs aufgeführten Funktionen. Es gibt die folgenden Menüpunkte:

  • "File", "Processing", "Measurement", "User", "Graphics", "Window", "Help"

Bei einem aktiven 3D- oder Sequenzbild lautet der erste Hauptmenüpunkt zur Unterscheidung vom normalen Bildhauptmenü: "3D/Sequence". Alle 3D/Sequenz-Funktionen sind im 3D/Sequenz-Zusatzmodulhandbuch beschrieben. Alle 3D/Sequenz-Kontrollfunktionen sind jedoch bereits hier im normalen Handbuch eingetragen und teilweise auch in knapper Form erläutert. Hierdurch vereinfacht sich die Handhabung der Handbücher und man muß nicht wegen jeder Kleinigkeit in beiden Handbüchern nachlesen. Bei einem aktiven RGB-TrueColor-Farbbild lautet der erste Hauptmenüpunkt zur Unterscheidung vom normalen Bildhauptmenü: "TrueColor". Da sich externe Programme beim Einbinden bestimmter Funktionen in picCOLOR nach der Bezeichnung der Menues richten und den Begriff "File" suchen, kann im TrueColor- und im 3D/Sequence-Menue keine neue zusätzliche Funktion erscheinen. Dies ist auch sinnvoll, da TrueColor- und 3D/Sequence-Bilder anders als im üblichen Windows-Verfahren definiert sind und daher nicht von externen Programmen genutzt werden sollten.

Die Bildbearbeitungsfunktionen, die Ihnen das picCOLOR Programm zur Verfügung stellt, sind in den oben genannten Bereichen eingeordnet, die Sie als "pull-down"-Menüs öffnen können. Die Zuordnung der Bildbearbeitungsfunktionen zu diesen Menüs wurde mit großer Sorgfalt gewählt, so daß Sie die gewünschten Funktionen im Menü-System leicht auffinden können. Trotzdem ist nicht auszuschließen, daß Sie die eine oder andere Funktion in einem anderen als dem im picCOLOR Programm festgelegten Menü suchen. Dies liegt daran, daß einige der Bildbearbeitungsfunktionen sozusagen "menü-übergreifend" sind. Einige Beispiele sollen diesen Sachverhalt dokumentieren:

Mit ImagePaint im "Graphics"-Menü wird ein umfangreiches Graphikprogramm gestartet, mit dem Sie Ihre Bilder für Präsentationen mit erklärenden Texten versehen können oder mit dem Sie mittels graphischer Elemente bestimmte Sachverhalte hervorheben können. So wird z. B. ein durch Rechteck oder Kreis eingerahmter Bildausschnitt direkt ins Auge springen. Mit den vorhandenen Funktionen können Sie jedoch auch z. B. Maskenbilder erzeugen, die direkt oder indirekt zur Bildvorverarbeitung dienen und daher auch im Processing-Menü untergebracht sein könnten.

Ein anderes Beispiel ist die Aufteilung der Funktionen in den beiden sehr mächtigen Menüs "Processing" und "Measurement": Es wurde versucht, hiermit eine Einteilung einerseits in Funktionen zur qualitativen Bearbeitung und Segmentierung von Bildern und andererseits in Funktionen zur quantitativen Vermessung von Bildinhalten zu erreichen. Auch hier sind die Übergänge wiederum fließend: Ein Histogrammausgleich basiert natürlich auf einer quantitativen Vermessung des Bildhistogrammes. Diese Funktion bewirkt allerdings im Endeffekt eine qualitative Verbesserung des Bildes und ist daher im "Processing"-Menü angesiedelt. Ähnlich ist es mit den Funktionen zur geometrischen Entzerrung. Pauschal kann man feststellen, daß die Funktionen des Processing-Menüs normalerweise eine Änderung des Bildes bewirken, die mit der Undo-Funktion zurückgenommen werden kann. Die Funktionen des Measurement-Menüs bewirken dagegen in der Regel keine Bildveränderung, sondern lediglich eine bestimmte quantitative Analyse des Bildes. Hierbei gibt es jedoch Ausnahmen, z. B. bei der graphischen Darstellung von Meßergebnissen, die den Bildinhalt verändern. Es folgt nun eine sehr kurze Beschreibung aller Hauptmenüs:

  • Das "File"-Menü (oder "TrueColor" oder "3D/Sequence") vereint alle Funktionen zur Ein- und Ausgabe von Bildern - sei es das Einlesen von Kamera oder von der Festplatte, oder das Ausgeben auf einen Printer, auf einen Videorekorder oder auf die Festplatte. Außerdem finden Sie hier das "Control Panel", in dem Programmparameter eingestellt und Bildspeicher definiert werden können.

  • Im "Processing"-Menü finden Sie Funktionen zur qualitativen Bearbeitung von Bildern, zur Filterung und zur Segmentierung von Bildinhalten. Üblicherweise wird mit diesen Funktionen eine quantitative Bildanalyse vorbereitet.

  • Das "Measurement"-Menü beinhaltet alle Funktionen zur quantitativen geometrischen und statistischen Vermessung von Bildinhalten sowie zur Kalibrierung des Systemes.

  • Im "User"-Menü finden Sie die Möglichkeit, benutzerdefinierte MACRO-Programme zu erzeugen und ablaufen zu lassen, d. h. immer wiederkehrende Befehlsfolgen als automatisch ablaufende Routinen zusammenzufassen. Als zukünftige Erweiterung ist geplant, daß erst mit Anschluß des speziellen User-Zusatzmodules dieses Menü zum vollen Leben erwacht: der Benutzer wird sich dann eine komplette eigene Untermenü-Struktur erzeugen und mit eigenen Funktionen füllen können. Hierzu müssen allerdings Kenntnisse der Programmiersprache "C" vorhanden sein.

  • Im "Graphics"-Menü finden Sie außer dem schon erwähnten ImagePaint-Graphikprogramm weitere Werkzeuge zur graphischen Bearbeitung eines Bildes. Außerdem sind hier einige Funktionen zur 3-dimensionalen Darstellung von Bildern oder Meßergebnissen aufgeführt.

  • Im "Windows"-Menü kann die Lage und Anordnung der definierten Bildspeicher auf dem Bildschirm im Hauptfenster geändert werden: Wie in anderen Windows-Programmen sind dabei eine kaskadierte Darstellung (Cascade) der Bildfenster oder eine gekachelte Darstellung (Tile) möglich. Besonders die maximierte Darstellung ist bei der Bearbeitung mehrerer Bilder sinnvoll, da hierbei alle Bildfenster exakt übereinanderliegen und mit der Umschaltung über die Fensteranwahlfunktion oder über die Hot-Key-Tasten 1..9 auch kleinste Änderungen oder Unterschiede in den einzelnen Bildern festgestellt und inspiziert werden können. Diese maximierte Darstellung erreicht man auch über einen Doppelklick auf die Titelleiste des Fensters. Hierbei werden dann alle definierten Bildfenster maximiert. Es wurde ein "ZoomOut"-Modus eingeführt, mit dem nach Umschaltung Bildinhalte in beliebiger verkleinerter Größe dargestellt werden können. Dies ist notwendig, um sehr große Bildspeicher noch komplett darstellen zu können. Solche großen Bildspeicher werden z. B. für die modernen hochauflösenden Kameras oder für hochauflösende Scannerbilder benötigt. Da es auch sehr mühsam sein kann, sehr große Bilder auf dem Bildschirm, d. h. im picCOLOR-Hauptfenster zu arrangieren, wurde die "Arrange Actual Window"-Funktion zur Verfügung gestellt. Hier kann in einer Dialogbox die genaue Lage und Größe des aktuellen Bildfensters und auch des picCOLOR-Hauptfensters eingestellt werden. Weiter unten im "Window"-Menü werden alle definierten Bildspeicher aufgeführt. In einer Zusatzinformation wird hier auch der Status der Bildspeicher angezeigt. Das kann beim True Color Bild der aktuell angezeigte Farbanteil sein, oder es kann angezeigt werden, ob sich das Bild im Zoomout-Modus befindet.

  • Im "Help"-Menü befinden sich einige kurze Erklärungen zur grundsätzlichen Bedienung des picCOLOR-Programmes und das komplette vorliegende Handbuch in einer Windows-Helpfile- oder HTML-Version, die automatisch den aktuellen Internet-Browser zur Anzeige startet. Außerdem befindet sich hier die sogenannte "Toolbox" mit nützlichen Routinen, die man im Verlauf einer Bildverarbeitungssitzung oft benötigt. Die Palette der Funktionen reicht von einem Notebook für die "Zwischenspeicherung" aktueller Ideen und Anmerkungen über Kopier- und Verschiebefunktionen für Bildausschnitte und die Auswahl eines zweiten Bildes bei dualen Funktionen bis hin zu Lade- und Abspeicherfunktionen. Hier befinden sich auch die gesamten Löschfunktionen und die Steuerung der Farbtabelle (Color-Look-Up-Table). Die Toolbox kann auch noch einfacher im Bild-Modus jederzeit mit der rechten Maustaste angewählt werden.

Durch Anfahren mit dem Mauszeiger (der angewählte Menüpunkt wird dann hervorgehoben dargestellt) und Aktivieren durch einen Tastendruck auf die linke Maustaste wird das angewählte Menü als sogenanntes "Pull-Down"-Menü geöffnet. Hierin können Sie nun wiederum mit dem Mauszeiger eine Funktion oder ein weiteres Menü anwählen und aktivieren. Eine angewählte Funktion wird wieder durch Invertieren ihres Namens deutlich hervorgehoben. Aktiviert wird die angewählte Funktion wiederum mit der linken Maustaste. Untermenüs werden durch ein zur Seite zeigendes Dreieck angedeutet. Wenn Sie ein Untermenü angewählt haben, erscheint dieses ebenfalls als "Pull-Down"-Menü. Bei Anwahl einer Funktion verschwindet das gesamte Untermenüsystem und die Funktion wird aktiviert, d.h. entweder direkt ausgeführt oder über ein Dialogfenster gesteuert. Selbstverständlich können alle Funktionen auf Windows-typische Art auch über Tastenkombinationen erreicht werden.

Während der Ausführung einer Funktion ist der Mauszeiger aktiv und in der Regel als "Warte"-Icon dargestellt. Einige in der Ausführung sehr langsame Funktionen können mit der "ESC"-Taste abgebrochen werden. Aus Zeitgründen wurde diese interne Tastaturabfrage bei schnellen Funktionen weggelassen. Üblicherweise wird nach einem Abbruch mit "ESC" der alte Zustand des Bildspeichers wieder hergestellt. In manchen Fällen wird jedoch auf dem Bildschirm das neu berechnete Ergebnis zur Inspektion beibehalten.

Eventuell vorliegende Funktionen, die nicht im Handbuch beschrieben sind, sind nicht für die allgemeine Benutzung vorgesehen und sollten nicht aufgerufen werden. Es können sonst unvorhersehbare Ergebnisse produziert werden. Auch Datenverlust kann hierdurch auftreten.

Funktionen, die eine Art Schalterfunktion darstellen, sind nach Aktivierung durch eine "Check"-Markierung vor dem Funktionsnamen gekennzeichnet. Bei Deaktivierung verschwindet die Markierung wieder. Funktionen, die durch eine hellgraue Phantomschrift gekennzeichnet sind, können nicht aktiviert werden: Entweder müssen sie durch Aufruf einer anderen Funktion erst zugelassen werden oder es sind Funktionen, die erst bei Installation von picCOLOR Zusatzmodulen benutzbar sind oder es sind geplante Funktionen, die jedoch noch nicht implementiert werden konnten.


3.3. Bild-Modus

Sobald sich der Mauszeiger über dem angezeigten Bildausschnitt befindet, können die Funktionen des Bild-Modus verwendet werden. Hier ist die Definition und das Editieren von Bildausschnitten möglich und außerdem sind einfache Bildinspektionsfunktionen verfügbar.

Die Bildfenster sind im picCOLOR-Programm als Multiple-Document-Interface (MDI) ausgelegt. Das bedeutet, daß im picCOLOR-Hauptfenster mehrere Bildspeicher mit eigenen Bildfenstern definiert und geöffnet werden können (siehe oben). Wie in anderen Windows-Programmen sind dabei eine kaskadierte Darstellung der Bildfenster, eine gekachelte Darstellung oder eine maximierte Darstellung möglich. Besonders die maximierte Darstellung ist bei der Bearbeitung mehrerer Bilder sinnvoll, da hierbei alle Bildfenster exakt übereinanderliegen und mit der Umschaltung über die Fensteranwahlfunktion im "Windows"-Menü oder über die Hot-Key-Tasten 1..9 auch kleinste Änderungen oder Unterschiede in den einzelnen Bildern festgestellt und inspiziert werden können.

In vielen Fällen der digitalen Bildverarbeitung wird man mit einem bestimmten Ausschnitt eines Bildes arbeiten wollen - einer sogenannten "Region of Interest" (ROI). Dabei wurde es als sinnvoll erachtet, die Behandlung dieser Bearbeitungsregionen an die Erfordernisse der Bildverarbeitung anzupassen. In erster Linie wird dies an der Art der Definition und Behandlung einer ROI auffallen: In einem üblichen Graphikprogramm wird eine ROI durch Anklicken mit einer Maustaste geöffnet und dann mit gedrückt gehaltener Maustaste "aufgezogen". Nach dem darauffolgenden Bearbeitungsschritt ist die ROI in der Regel nicht mehr wirksam. In der Bildverarbeitung dagegen wird eine ROI einmal definiert und bleibt bis zu einer Neudefinition oder Änderung bestehen. Es können dann beliebige Bearbeitungsfunktionen auf den Bildausschnitt, der durch diese ROI definiert ist, angewandt werden. Zur einfachen Definition solcher ROI's gibt es spezielle Funktionen, die - mit oder ohne Koordinatenanzeige in der Statusanzeige am unteren Bildrand - eine bildpunktgenaue Definition ermöglichen. Es sind immer drei verschiedene ROI's definiert, von denen eine immer aktiv ist und in der Regel auch angezeigt wird. Die Auswahl einer der drei verschiedenen ROI's geschieht mit den Tasten "X", "Y", "Z" oder über Mauskontrolle im "Define ROI"-Menü der Toolbox mit der "Select ROI"-Funktion (hier entspricht die ROI-Nummer (0|1|2) der Bezeichnung (x|y|z).

Beim Herumfahren mit dem Mauszeiger im Bild wird man feststellen, daß er in der Nähe einer ROI-Umrandung seine Form und Ausrichtung ändert: In der Nähe einer Ecke der ROI sieht man einen um 45 Grad schräg gestellten Zeiger mit dem kleinen Schriftzug "ROI x", "ROI y" oder "ROI z", der hiermit die aktuell aktive ROI anzeigt und nun die Verschiebung der jeweiligen Ecke durch Anklicken und Ziehen mit gedrückter linker Maustaste ermöglicht. In der Nähe der Seitenmitten der ROI erhält man einen senkrecht respektive waagerecht stehenden Zeiger, mit dem man die angewählte Kante verschieben kann. In der Umgebung der Mitte der ROI verändert sich der Zeiger in ein Zeigerkreuz, mit dem man die gesamte ROI verschieben kann. Beim Programmaufstart sind üblicherweise alle drei ROI's auf Maximalgröße gesetzt. Es ist wichtig anzumerken, daß die ROI-Darstellung für alle Bildspeicher (2D- und TrueColor) individuell ein- und ausgeschaltet werden kann. Wenn also die ROI einmal nicht sichtbar ist, sollte man mit dem Hot-Key "W" ein Umschalten der ROI-Anzeige hervorrufen, um sie auf dem Bild zu finden.3D/Sequenz-Bilder haben z. Zt. in der Regel noch keine einstellbare ROI - es wird hier immer mit dem gesamten Bild gearbeitet. Eine Ausnahme ist hier das Real-Time-Tracking, bei dem auch in der aktuellen Version schon mit ROIs gearbeitet wird.

Beim Editieren einer Ecke einer ROI kann üblicherweise jedes beliebige Seiten-Verhältnis der ROI eingestellt werden. In vielen Fällen ist es jedoch sinnvoll, ein einmal gewähltes Seiten-Verhältnis beizubehalten oder z. B. eine quadratische ROI zu erhalten. Hierzu dienen die "Shift"- und "Control"-(oder "Strg")-Tasten der Tastatur in Verbindung mit der linken Maustaste:

  • 'ohne Vortaste': ROI-Ecken können völlig frei verschoben werden.

  • Shift: Das einmal gewählte Seiten-Verhältnis bleibt erhalten.

  • Control: Die ROI wird quadratisch: Breite = Höhe

  • Shift" und "Control": Die ROI wird quadratisch und kann nur die Größe 2**N, d. h. [..., 16, 32, 64, 128, 256, 512, 1024, ...] annehmen.

Beim Editieren der Kanten einer ROI, d. h. beim Verschieben über die Seitenmitten, gibt es zur Zeit keine Sonderfunktion: Sie können die Seiten immer beliebig verschieben.

Wie bereits erwähnt, hat die Taste "W" eine Sonderfunktion: hiermit kann die ROI unsichtbar gemacht werden, z. B. um das Bild ungestört betrachten zu können oder auch um ein Bildschirmphoto oder einen Bildschirm-Videoausdruck vornehmen zu können, ohne daß die ROI-Umrandung das Bild stört. Erneutes Drücken der Taste "W" beendet diesen Modus und die ROI-Umrandung erscheint wieder. Dieses Ein- und Ausschalten der ROI-Darstellung kann auch sinnvoll zum Auffinden der aktuellen ROI sein, wenn die ROI-Umrandung bei bestimmten stark verrauschten Bildern kaum sichtbar ist. Diese Einstellung der Anzeige der ROI-Umrandung wird individuell für jeden Bildspeicher eingestellt.

In allen übrigen Bildbereichen erscheint der Mauszeiger als kleines Fadenkreuz. Damit kann ein Bildpunkt pixelgenau angefahren werden. Bei Betätigung der linken Maustaste wird das Fadenkreuz über den kompletten dargestellten Bildbereich vergrößert und es erscheint eine Informationszeile in der Statuszeile am unteren Bildfensterrand mit den Koordinaten und dem Zahlenwert (Pixelwert) des angewählten Bildpunktes, der im Normalfall dem Grauwert des Bildpunktes entspricht. Außerdem wird der aktuelle Stand der Look-Up-Table mit seinen RGB-Werten angezeigt. Bei Bearbeitung von 24-Bit-Farbbildern oder deren Farbauszügen werden statt dessen die tatsächlichen jeweiligen RGB-Werte des Bildpunktes angezeigt, wenn dies im Measurement Control-Menü so angegeben ist. Die Anzeige von geometrisch skalierten oder grauwertkalibrierten Größen ist ebenfalls möglich (siehe Gray-Calibration und Measurement Control-Menü). Zu beachten ist hier, daß in der Statuszeile ausserdem noch angezeigt wird, ob irgendwelche automatische Bildentzerrungsfunktionen eingeschaltet sind. Es gibt z. Zt. 3 verschiedene Funktionen, die die Pixelkoordinaten in x- und y-Richtung umrechnen können. Das sind die bereits erwähnte Kalibrierung in metrischer oder anderer Einheit, dann eine Linsenentzerrung (Camera Calibration) und eine Polynomfunktionsentzerrung (Polynomial Warping). Wenn der Mauszeiger bei gedrückter linker Maustaste verschoben wird, so werden aktuell die Koordinaten und Grauwert (oder Pixelwert) des jeweils neuen gewählten Bildpunktes angezeigt. Auf diese Weise können auch Bildpunkte vermessen werden, die in der Nähe einer Umrandung einer ROI liegen, bei denen normalerweise bei Anklicken eine Veränderung oder Verschiebung der ROI erfolgen würde.

Wenn beim Anklicken des Fadenkreuzes die "Shift"-Taste der Tastatur gedrückt wird, ändert sich das Fadenkreuz in ein kleines Vergrößerungsglas, das einen 32 * 32 Bildpunkte großen Bildbereich in 4-facher Vergrößerung, d. h. als 128 * 128er Blöckchen-Bild darstellt. Bei Verschieben dieses Lupen-Cursors wird immer der aktuelle, unter der Lupe liegende Bereich vergrößert. Die "Shift"-Taste kann bei gedrückt gehaltener Maustaste losgelassen werden. Die Funktion wird durch Loslassen der Maustaste beendet. Zusammenfassend gibt es damit folgende Funktionen zur Bildinspektion mit der linken Maustaste:

  • 'ohne Vortaste': Es werden die Pixel-Koordinaten und der Pixelwert angezeigt. Je nach Einstellung im "Measurement Control"-Menü kann dies in 8 Bit Graustufen, in 24 Bit RGB-Farbe oder als beliebig kalibrierter 8 Bit-Wert dargestellt werden (siehe auch Kapitel 8.1.1. Punktvermessung).

  • "Shift": Lupenfunktion mit einer 4-fachen Vergrößerung eines 32*32 Pixelbereiches. Achtung: wenn sich das Bild im Zoom-Out-Modus befindet, wird trotzdem der interne tatsächliche 32*32 Pixel große Bildspeicher um den Faktor 4 vergrößert dargestellt. Je nach Verkleinerung des tatsächlich angezeigten Bildes ist damit natürlich der Zoomfaktor der Lupe variabel.


3.4. Dialog-Fenster

Bei Funktionen, die die Eingabe oder Auswahl verschiedener Parameter erfordern, wird die Ausführung der Funktion nicht direkt durch die Aktivierung aus dem Menü gestartet. Ein Beispiel ist etwa das Laden von Bilddateien, da hier ja erst der Filename angegeben werden muß. Hier erscheint dann eine Dialog-Box mit verschiedenen Eingabe- und Schaltelementen. Durch Aktivieren von graphisch dargestellten Schaltern, Knöpfen oder Rollbalken mit dem Mauszeiger und der linken Maustaste können die gewünschten Parameter eingestellt werden. Alphanumerische Werte werden nach Aktivierung eines "Alphanumerik"-Feldes mittels der linken Maustaste direkt über die Tastatur eingegeben. Im aktiven Eingabefeld befindet sich dann der alphanumerische Kursor, in der Regel ein feststehender senkrechter Strich.

Eine Dialog-Box kann durch Aktivieren der Titelzeile verschoben werden. Dies erlaubt die Verschiebung der Dialog-Box bei gedrückt gehaltener Maustaste. Durch Aktivieren der "Exit"-Fläche, einer kleinen quadratischen Fläche in der rechten oberen Ecke mit x-Markierung, wird die Dialog-Box geschlossen ohne die Funktion auszuführen und - in der Regel - ohne die getätigten Einstellungen zu übernehmen. Die zur Dialog-Box gehörende Funktion wird üblicherweise gestartet, indem die Schaltfläche mit der Bezeichnung "Start Function" o.ä. aktiviert wird. Hierbei wird in der Regel ebenfalls die Dialog-Box geschlossen. Mit der "Ok/Exit"-Schaltfläche wird die Dialogbox geschlossen und alle bisher getätigten Einstellungen bleiben erhalten. Wenn dies nicht erwünscht ist, so kann mit der Beendigung einer Dialog-Box über die Aktivierung der "Cancel"-Schaltfläche der Zustand aller Einstellungen vor Eintritt in die Dialog-Box wiederhergestellt werden. Achtung: Die "Cancel"-Funktion wirkt in manchen Fällen anders als die Beendigung der Funktion über die "Exit"-Fläche in der rechten oberen Ecke.

In einigen Fällen befindet sich in der rechten oberen Ecke der Dialog-Box eine Vergrößerungs-Schaltfläche, mit der durch Anklicken mit der Maus die gesamte Box vergrößert werden kann. Dies ist z. B. in Funktionen mit Textfenstern vorgesehen (Show Configuration, Notebook). Erneutes Anklicken der Schaltfläche verkleinert die Dialog-Box wieder auf das ursprüngliche Maß.

Oft ist es wünschenswert, für Präsentationen Ergebnisse, die z. B. in Dialogfenstern dargestellt werden, als Bilder abzuspeichern oder auszudrucken. Da jedoch bei offenem Dialogfenster keine Möglichkeit besteht, gleichzeitig noch die Toolbox zu öffnen, um z. B. an die "Save Image As"-Funktion heranzukommen, wurde die Möglichkeit geschaffen, über die Hot-Key-Funktion "Alt"-"Druck" oder "Alt"-"Print" ein Übertragen des aktuellen Dialogfensterinhaltes in die Zwischenablage durchzuführen. Nach Schließen der Dialog-Box kann das zwischengespeicherte Bild mit der "Paste"-Funktion im "Processing"-Menü auf den Bildschirm (und damit in den aktuellen Bildspeicher) in die aktuelle ROI gebracht und von dort wie jedes normale Bild bearbeitet, abgespeichert oder ausgedruckt werden. Mit der Funktion "Define ROI"->"Fit Last Loaded Image" in der Toolbox kann auch die ROI automatisch angepaßt werden. Ein "Undo" setzt den Bildspeicher danach wieder in den alten Zustand zurück. Da die meisten graphischen Elemente, wie auch die Dialog-Boxen, unter Windows farbig sind, muß beim Übertragen eines solchen Elementes in einen normalen 8-Bit-Bildspeicher eine Umrechnung nach Grauwerten durchgeführt werden. Dies ist in der Regel eine einfache Intensity-Berechnung nach der Formel: I = (R+G+B)/3. In Echtfarbspeichern wird natürlich das komplette farbige Bild aus der Zwischenablage übertragen.


3.5. Hot-Key-Funktion

Im Bild-Modus, wenn also kein Pull-Down-Menü angezeigt wird, und in einigen Dialog-Fenstern werden vom System verschiedene "Hot-Key's" erkannt und ausgeführt. Dies sind vordefinierte Befehle, die durch Tastendruck aktiviert werden. Kleinbuchstaben werden intern automatisch auf Großbuchstaben umgesetzt.

Hilfe

  • "?" - Hilfe-Funktion: Es ist geplant, daß hiermit das vorliegende Handbuch angezeigt wird. Kontextsensitive Hilfe ist in Dialog-Fenstern auch durch Anwahl der "?"-Schaltfläche mit der Maus erreichbar.

Bedienung der Bearbeitungsfenster (region of interest - ROI)

  • "X", "Y", "Z" - Wahl des Bearbeitungsgebietes (Region of Interest: ROI).

  • "W" - Ein- und Ausschalten der ROI-Anzeige (ROI-Border). Auch bei ausgeschalteter ROI-Umrandung wird diese im ROI-Edit-Modus, d. h. bei gedrückter Maustaste auf der ROI-Umrandung, wieder eingeschaltet - sonst wäre ein Editieren der ROI nicht möglich. Das Anfahren der unsichtbaren ROI mit dem Mauszeiger ist natürlich nur möglich, wenn die ROI-Lage ungefähr bekannt ist. Sobald der ROI-Edit-Modus verlassen wird, ist die ursprüngliche Einstellung von "W" wieder wirksam. Diese Funktion ist zum Betrachten oder Photographieren des ungestörten Bildes eingerichtet worden. Außerdem kann sie hilfreich sein, durch wiederholtes Ein- und Ausschalten eine ROI in einem Bild mit starkem Grauwertrauschen zu finden. Schließlich wird die ROI durch eine Art Invertieren eines Rechteckrahmens dargestellt, was bei starken Rauschen nicht immer optimal ist. In der "Cosine Distortion"-Funktion ist der Hot-Key "W" im "ROI-Edit"-Modus und im "Design"-Modus wirksam: dort wird ebenfalls das ungestörte Bild sichtbar, die ROI-Umrandung und das Fadenkreuz verschwinden zur besseren Beurteilung des Bildes.

Anzeige und Wahl der Bildspeicher

  • "1", "2", "3" ... "9" - Umschalten des aktiven, angezeigten Bildes: Wenn mehrere Bilder (in unterschiedlichen Bildspeichern) definiert sind, können diese mit den Ziffertasten sehr schnell und einfach umgeschaltet werden. Bildverarbeitungsfunktionen wirken üblicherweise immer auf das aktive Bild. Die Bildnummer des aktuellen, d. h. aktiven Bildes ist in der aktivierten Bildfensterkopfzeile angezeigt. Bilder, die eine Bildnummer größer "9" haben, müssen über das "Windows"-Menü aktiviert und angezeigt werden. Diese Funktion gilt für normale 2D-Bildspeicher genauso wie für RGB-True-Color-Bilder oder Sequenz- oder 3D-Bilder. Mit diesen Ziffertasten bleibt man jedoch immer innerhalb der gewählten Bildkategorie, d. h. wenn man einen normalen 2D-Bildspeicher aktiviert hat, kann man mit den Ziffertasten nur zwischen diesem und anderen 2D-Bildspeichern umschalten. Wenn man dann ein 3D-Bild oder ein True-Color-Bild aktivieren möchte, muß man dies über das "Window"-Menü tun.

  • "R", "G", "B" - Darstellen und Aktivieren der Rot-, Grün- und Blauanteile eines 24 Bit Echtfarbbildes. In der Bildfensterkopfzeile wird die Bildnummer des zugehörigen Bildspeichers angezeigt.

  • "H", "S", "I", "V" - Darstellen und Aktivieren der Hue-, Saturation- und Intensity-Anteile eines in den HSI- oder HSV-Farbraum umgewandelten Echtfarbbildes. In der Hauptmenüleiste wird die Bildnummer des zugehörigen Bildspeichers angezeigt.

  • "H", "L", "S" - Darstellen und Aktivieren der Hue-, Lightness- und Saturation-Anteile eines in den HLS-Farbraum umgewandelten Echtfarbbildes. In der Hauptmenüleiste wird die Bildnummer des zugehörigen Bildspeichers angezeigt.

  • "V", "I", "Q" - Darstellen und Aktivieren der Farbraumanteile eines in den YIQ- oder YUV-Farbraum umgewandelten Echtfarbbildes. In der Hauptmenüleiste wird die Bildnummer des zugehörigen Bildspeichers angezeigt. (In der Cosine-Distortion-Funktion kann "Q" zum Abbruch der Funktion benutzt werden)

  • "D" - Darstellung eines 24 Bit Echtfarbbildes als Zusammenstellung seiner RGB-Farbanteile. Nur in der Monochrome-Version des picCOLOR Programmes ausführbar, in der Echtfarbversion wird natürlich immer die Farbdarstellung benutzt. Nach Ausführen dieser Funktion, die ja drei Bilder, nämlich den Rot-, Grün- und Blauanteil eines Farbbildes gleichzeitig darstellt, ist der "Dither"-Farbkanal des TrueColor-Bildes aktiv. Es wird nicht empfohlen, dieses Bild weiterzuverarbeiten - es ist nur zur Ansicht gedacht.

  • "U" - Undo-Funktion: nach einem Bildbearbeitungsschritt, der das Bild und den aktiven Bildspeicher geändert hat, kann das ursprüngliche Bild wieder restauriert werden. Ein zweites Drücken der Undo-Taste bewirkt ein "Undo" der "Undo"-Funtion. Somit kann durch fortlaufendes Betätigen der Undo-Funktion zwischen dem ursprünglichen Bild und dem bearbeiteten Bild hin- und hergeschaltet werden, so daß auch sehr geringe Änderungen oder Unterschiede erkannt werden. Es gibt nur einen einzigen Undo-Bildspeicher. Er ist jeweils für den Bildspeicher definiert, in dem die letzte Bildänderung stattfand. Z. Zt. gibt es diesen Undo-Speicher nur für normale 2D-Grauwertbilder, nicht für TrueColor-Bilder oder gar Sequenzen.

Look-Up-Tabellen-Darstellung

  • "P" - Grauverlaufanzeige mit der Farb-Palette: Einstellen eines Grauverlaufes in der Hardware-Farbpalette (Color-Look-up-Table). Die zum aktuellen Bild gehörende Software-Farbpalette wird nicht geändert. Sie kann mit der Hot-Key-Funktion "C" wieder restauriert werden. Letzteres ist z. Zt. nicht implementiert.

  • "C" - Color Palette: Anzeige der wahren internen Software-Farbpalette (nicht implementiert).

Verschiedenes

  • "M" - Macro-Funktion: Es wird der Macro-Interpreter aufgerufen. Nach Eingabe eines Macro-Filenamens wird das Macro von Festplatte eingelesen und abgearbeitet.

  • "Q" - Abbruch der Cosine-Distortion-Funktion, wirkt im ROI-Edit-Modus, im Verzerr-Modus und im Check-Modus.

  • "<", ">" - Geplant: Die Hot-Key's "<" und ">" vergrößern und verkleinern das angezeigte Bild um den Faktor 2, 4 oder 8. Dieser Zoom-Modus ist im Bild-Modus und in während verschiedener Meßfunktionen ausführbar. Hiermit können bei einer Fadenkreuz-Vermessung viel einfacher genaue Bildpunkte angefahren werden. Wenn man versucht, den Mauszeiger aus dem angezeigten Teilbereich des Bildes herauszufahren, wird das angezeigte Bild derart verschoben, daß der Mauszeiger immer sichtbar bleibt. Diese Zoom-Funktionen sind sehr hardwareabhängig und nicht für jede Graphikkarte verfügbar. In der aktuellen picCOLOR-Version ist die Zoom-Funktion nur über externe Programme implementiert. Bei Einsatz von Matrox G400 oder G450 Graphikkarten kann hierfür das von Matrox installierte Programm "Matrox DeskNav" benutzt werden.

  • Rechte Maustaste: Aktivieren der Toolbox - wirksam im Bild-Modus.

  • "Shift" und "Control"-Taste - Einstellung der ROI mit festem oder quadratischen Seitenverhältnis. Im Bild-Modus wirksam.

  • "ALT" und "Druck"-Tasten: Übernehmen des gerade aktiven Windows-Dialog-Fensters in die Zwischenablage


3.6. MACRO-Programm

Ein weiterer Modus zur Bildverarbeitung ist das MACRO-Programm. Hierbei wird das picCOLOR Programm nicht mehr interaktiv bedient, sondern automatisch durch einen Programmfile gesteuert. Ein MACRO-Programm besteht aus ausführbaren Bildverarbeitungsbefehlen und aus Kontrollfunktionen, z. B. Loops oder Entscheidungen. Es können praktisch alle Funktionen des picCOLOR Programmes benutzt werden, wobei natürlich zu beachten ist, daß einige Funktionen nur interaktiv sinnvoll ausgeführt werden können und damit eine Bedienung durch den Benutzer zwingend notwendig ist. Die MACRO-Sprache ist sehr mächtig, so daß z. B. auch externe Geräte wie Kameras oder Videorekorder oder verfahrbare Mikroskoptische automatisch angesteuert werden können. Die Erstellung von MACRO Programmen ist ausführlich im MACRO-Handbuch erklärt. Einiges an Informationen erhält man jedoch auch in Kapitel 9.

3.7. Library-Version zum Einbinden in eigene Programme

Das picCOLOR System ist auch als getrennte Library und als DLL verfügbar, die es erlaubt, alle nichtinteraktiven Funktionen des picCOLOR Programmes von externen Programmen anzusprechen. Auf diese Weise können Bildverarbeitungsfunktionen in größere Programmsysteme eingebunden werden. Eine Library-Version für das Linux-Betriebssystem ist ebenfalls verfügbar.


4. Funktionsübersicht

4.1. Liste der Funktionen
Das modulare picCOLOR Bildverarbeitungssystem bietet eine kaum abschätzbare Fülle von Prozeduren und Funktionen zur Be- und Verarbeitung von Bildern. In der folgenden Auflistung soll daher nur eine kurze Übersicht über die vorhandenen und erhältlichen Funktionen gegeben werden. Neue Funktionen werden laufend implementiert und Sonderfunktionen können auf Wunsch sehr kurzfristig erstellt werden.

Bildübernahme:
Einlesen von Bildern oder Bildsequenzen verschiedener Videoquellen (Analog- und Digitalkamera, Videorekorder usw.)
Adaption verschiedener Bildeinlesekarten: DALSA/CORECO F64P, VIPERSeries, Xcelera und X64CL Series, National Instruments, Silicon Software MicroEnable, Euresys GrabLink Value/Expert und Domino Alpha/Gamma, IDS Falcon und Eagle, usw.
Einlesen von Bildern über die TWAIN-Schnittstelle (Scanner oder bestimmte Kameras, DALSA/CORECO, IDS)

Einlesen von 3D-Tiefenbildern der MESA SwissRanger SR-3000 Kamera (USB-Anschluß, Einzelbilder und Sequenzen)
Einlesen über die FireWire (IEEE 1394a) Schnittstelle für Grauwert, Bayer, Farbbilder sowie Sequenzen
Kontinuierliche Bildübernahme und Einzelbildübernahme, Split-Screen- oder Stereo-Bildübernahme für 2 oder mehr Kameras
Bildintegration, Bildmittelung von Bildsequenzen
Grauwert-, True-Color-Farbbildübernahme oder Übernahme mit speziellen Farbfiltern (z.B.Infrarot-Falschfarbenbilder)
Input-Look-Up-Table und Einstellung von Gain und Offset (Kontrast und Helligkeit) (auch automatische Optimierung)
Wahl der Synchronisation der Videoquelle (extern/intern)
Wahl der Bildauflösung für die Aufnahme, Einstellung des übernommenen Bereiches des Videosignales
Einstellung exakt quadratischer oder beliebig verzerrter Bildpunkte bei der Bildübernahme (Analog-Kameras)
Wahl des Kameraanschlusses und des Synchronsignal-Anschlusses

Funktionen zum Abspeichern und Einlesen von Bildern von Disk:
Abspeichern und Einlesen im TIFF-Format (Tagged Image File Format, 1,2,4,8,16 Bit Grau, 24 Bit Farbe), abspeichern als TIFF-Bilder mit 8 Bit oder 24 Bit Pixeltiefe
Abspeichern von Zusatztexten und einer Farbpalette mit dem TIFF-Bild (bei anderen Formaten getrennt abspeichern)
Abspeichern und Einlesen im JPEG-Kompressionsverfahren mit einstellbarer Kompressionsrate (8,24 Bit)
Einlesen von BMP und GIF 87A/89A-Format Bildern
Abspeichern und Einlesen von PPM (portable pixmap) Format

Einlesen von Bildern im B16-Format der Firma PCO

Abspeichern und Einlesen von 3D-Tiefenbildern der MESA SwissRanger SR-3000 Kamera
Einlesen von formatfreien Bildern oder unbekannten Formaten, abspeichern von formatfreien Farb- oder Binärbildern
Abspeichern im Postscript-Format (.EPS) 8 oder 24 Bit

Funktionen zur Farb- (Falschfarb-) Darstellung:
Programmierung der Farbtabelle (Color-Look-up-Table)
Vordefinierte Farbtabellenbelegungen für Falschfarbendarstellung
Echtfarbdarstellung von 24 Bit-True Color Farbbildern mit Ditheralgorithmus auch auf 8 Bit-Graphikkarten

Geometrische Bildvorverarbeitung:
Zoomen von Bildausschnitten
Rotieren um beliebige Winkel (linear oder mit kubischen Splines interpoliert)
Spiegeln horizontal und vertikal

Abrollen von kreisförmig angeordneter Bildinformation
Geometrische Polynom-Verzerrung und Entzerrung (linear oder mit kubischen Splines interpoliert)

Trapez-Entzerrung
Lokale Cosinus-Verzerrungen
Kamerakalibrierung: Entzerren von Linsenfehlern (Pin-Cushion, Kissenverzerrung)

Histogramm-Modifikation:
Histogrammausgleich
Lineare Histogrammveränderungen

Adaptive Histogrammequalisation

Arithmetische Funktionen:
Invertieren von Bildinhalten
Addition, Subtraktion, Multiplikation von Konstanten, Skalieren, Quantifizieren
Power-Funktion zur Gamma-Einstellung
Square Root Funktion für Leistungsspektrum
AND, OR, XOR, NAND mit einer Konstanten oder mit anderen Bildern
Addition, Subtraktion, Multiplikation und Division von Bildern
Absolutwertbildung, Shift-Left, Shift-Right Bitwise
Abschneiden maximaler oder minimaler Grauwerte
Logische Funktionen mit zwei Bildern oder Bildausschnitten: MAX, MIN, usw. (arithmetische Funktionen)

Cyclic Subtraction

Funktionen zur Filterung von Bildern mit wählbarer Matrixgröße:
Average 3*3 bis 19*19
Gauss 3*3 bis 15*15
Sobel (x, y, Betrag, Winkel)
Laplace (verschiedene Kernel der Größe 3*3 und 5*5 und größer)
Sharpen Image (3*3 und 5*5)
Relaxationsfilter verschiedener Größe
Benutzerdefinierte Konvolution (3*3)
Median (horizontal, vertikal, flächig, verschiedene Kernelgrößen bis 5*5), Rank-Filter bis 5*5
Infinite Impulse Response Filter 1. und 2.Ordnung (Bessel, Butterworth, Tschebyscheff)
Video-Filter: Odd/Even-Halbbild, 4.43 MHz-Farbfilter
Background-Filter zur Glättung ungleichmäßiger Beleuchtung

Flat-Field Correction, Flat-Line-Correction

Remove Slope Error
Canny-Edge, Marrhill-Edge und Zero-Crossing-Filter, Interactives Edge-Tracing

Funktionen zur Bearbeitung im Frequenzbereich:
Fast Fourier Transform (FFT) und inverse FFT (z. B. mit Hamming Window bei der Ausführung der FFT)

Umwandlung von Bildern der Größe 2**n x 2**m oder auch von beliebiger Größe (Mixed Radix)
Amplituden und Phasen Spektrum, Realteil und Imaginärer Teil
Tiefpass, Hochpass, Bandpass (auch lokal asymmetrisch verschiebbar)
Gauss-Filter , Gauss-Bandfilter
Gabor-Filter
Spot-Filter, einfach oder symmetrisch, rechteck oder (1-cos)-förmig
Inverse Filterung, Wiener Filterung

Editieren des Frequenz-Raumes
Frequenz-Polar-Histogramm,
Suchen von Maxima im Spektrum
Arithmetik im Frequenzraum: Add, Sub, Mul, Div, Konj.-Komplex, Auto- und Kreuzkorrelation
Hartley Transformation, Umwandlung FFT nach Hartley und zurück (auf Anfrage)

Funktionen zur Bearbeitung von 24 Bit Echtfarbbildern:
Darstellung von 24 Bit Echtfarbbildern auf 8 Bit-Systemen
Arbeiten in den Farbräumen RGB, HSI, HLS, YUV (YIQ), UVW, U*V*W*, LAB, XYZ, CMY
Rotation des Hue-Anteils im Farbenkreis
Zyklisches Subtrahieren im Hue-Raum
Berücksichtigen eines Rauschens in den RGB-Anteilen für die HSI-Umrechnung

Bayer-Filter Umrechnung

Palettenbilder in RGB umwandeln

Morphologische Funktionen für Grauwert- oder Schwarz/Weiß-Bilder:

Unterschiedliche Größe und Form des Structuring Elements, Arbeiten am Schwarz/Weiß- oder Grauwertbild
Erosion, Dilatation, Öffnen, Schließen
Rank-Filter
Top Hat, Well
Outline, Skelett
Pruning
Euklidian Distance Map
Watershed

Labeling

Lokale Maxima-Suche

Region Growing, Region Extrapolation

Funktionen zur Erkennung von Texturmerkmalen:
Textursynthese zum Test von Algorithmen
Max-Min, Varianz, Standardabweichung als Texturfilter
Lokale Orientierung mit Gradienten- oder mit Trägheitstensorverfahren
Coocurrence-Matrix
Frequenzanalyse mit der diskreten Cosinustransformation (DCT) (Bestimmung von Vorzugsrichtungen und Frequenzen)

Pyramidenfunktionen:
Laplace- und Gauss-Pyramide (mit 3*3 oder 5*5 Gauss-Filter zur Verkleinerung)
Rückskalierung mit linearer oder Spline-Interpolation

Funktionen zur Binärisierung von Bildern:
Schwarz/Weiß-Grenzwert (eingabe- oder LUT-gesteuert)
Band-Grenzwert (eingabe- oder LUT-gesteuert)
Random und Schwellwert-Matrix
Binärisierung mit Histogramm
Binärisierung mit Entropie-Maximierung
Binärisierung mit Bimodalitätsprüfung
Binärisierung mit Schwelle bei prozentualem Anteil vom oberen/unteren Maximum
Dynamischer Schwellwert (lokal veränderbar) mit Entropie-Maximierung
Dynamischer Schwellwert mit lokaler Bimodalitätsprüfung des Nachbarschaftshistogrammes
Weitere spezielle globale Binärisierungsoperationen: Abutaleb, Kittler, Otsu, Kapur, Mardia

Weitere spezielle lokale Binärisierungsoperationen: Parker, Eikvil, Yanowitz, Niblack, Nakagawa, Taxt, WhiteRohrer

Remove Ghost Image, Mark Ghost Image

Use Threshold Surface

Funktionen zur geometrischen Vermessung von Bildern:
Punktvermessung, Längenvermessung, Winkelvermessung, subpixelgenaue Kanten- und Abstandsvermessung
Flächenvermessung über Vektorzug oder Grauwert- oder Farbverteilung
Objektvermessung (Parameter z. B.: Boundary, Area, surrounding Rectangle, Parameters of surrounding Ellipse usw.)
Klassifizierung über Objektparameter, Training der Parameter für automatische Auswertungen
Histogramm über die Objektparameter
Subpixelvermessung bei verschiedenen Objektparametern (z. B. Fläche, Flächenschwerpunkt)
Dreh- und verschiebbarer skalierbarer Maßstab
Kalibrierung in verschiedenen Einheiten.
Unterschiedliche Kalibrierung in x- und y-Richtung bei nichtquadratischen Pixeln, rotiertes Koordinatensystem
Grauwertkalibrierung
Anzeige eines kalibrierten Farb- oder Grauwertmeßbalkens oder Längenmeßbalkens

Vektorisierung 2D/3D
Vektorisierung 2D
Vektorisierung 3D mit Stereobildern
Anzeige von Vektordaten im 2D- oder 3D-Raum

Kantenerkennung und Kantenextraktion:
Hough-Transformation, Auswertung des r/phi-Raumes
Hough-Transformation für Linien, Kreise und Ellipsen
Kantenverfolgung

Statistische Funktionen:
Punktstatistik
Linien-Histogramm mit Luminanz- und Frequenzanalyse (Real, Imaginaer, Amplituden und Phasen, Hamming-Fenster)
Flächen-Histogramm
2D-Histogramm über 2 Bilder
Coocurrence-Matrix
Regressionsanalyse

Objektklassifikation
Auswertungen im mehrkanaligen Merkmalsraum, auch mit zyklisch definierten Merkmalen
Automatische Minimal-Distance-Classification
Rechteck- und Parallelepiped-Klassifikation
Graphische Darstellung des 2- oder 3-dimensionalen Merkmalsraumes
Trainieren der Cluster für die trainierte Klassifikation bei Euklidischer Minimum-Distance und bei Parallelepiped

Funktionen zur Bilderkennung und Mustererkennung
Mustererkennung über Kreuz-Korrelation
Mustererkennung über Regression

Drehungs- und Skalierungsinvariante Erkennung

Graphische Nachbearbeitung und Präsentation:
ImagePaint Graphikprogramm mit vielen graphischen Elementen
Verschiedene zusätzliche Filter- und Retouchier-Werkzeuge (Spezial-Radiergummi, Stempel)
Beschriftung von Bildern mit verschiedenen Schriften oder Sonderzeichensätzen
Testbilder: Sinus/Cosinus-Wellen, Gauss-Noise, Geometrietestbild, Graukeil

3-Dimensionale Grauwertgebirge-Darstellung

Benutzereigene Funktionen:
Definition von Makros mit PASCAL- oder C-ähnlicher Sprachstruktur (mit eingebautem oder beliebigem anderen Text-Editor)
Testhilfen zur Fehlersuche in Macro-Programmen (Single-Step, Trace)

Verschiedenes (u.a. in Toolbox) und Systemfunktionen (Einstellung von Soft- und Hardwareparametern):
Definition von Bildbearbeitungsausschnitten: "Region of Interest" (ROI)
Definition von Bildspeichern für die gleichzeitige Arbeit mit mehreren Bildern
Definition der Bildgröße
Wahl verschiedener Bildübernahmekarten (frame grabber)
Printer- und Videoprinter-Ansteuerung
Bildlöschfunktionen, Bildkopierfunktionen, Maskenfunktionen
Undo-Funktion
Vergrößerungsglas
Notizbuch, Text-Editor
DOS-Kommandos
DDE- und TCP/IP-Schnittstelle zur schnellen Übertragung von Daten an andere Programme oder andere Rechner

Ausgabe über rechnereigene Schnittstellen (LPT, COM)
Timer Funktionen, High Resolution Timer, Externe Hardware-Timer
Initialisierung durch Startup-File und Startup-Macro
Hilfesystem

Steuerung von Steppermotoren, z. B. für die Ansteuerung von Mikroskoptischen

picCOLOR - Zusatzmodule

3D / Sequenz-Zusatzmodul
Definition von 3D-Bildern oder Sequenz-Bildern
Einlesen von Echtzeit-Sequenzen oder 3D-Bildern über Frame Grabber
Einlesen und Abspeichern von 3D- oder Sequenz-Bildern (Festplatte)
Darstellung von 3D- und Sequenz-Bildern (z. B. perspektivische Darstellung in 2D-Schnittbildern, Animation)
Bildvorverarbeitung von 3D-Bildern im Ortsbereich (Arithmetik, Logik, Convolutionen, Binärisierung, Morphologie usw.)
3D-Frequenzbearbeitung (3D-FFT, 3D-Hartley, Berechnung von Spektrum, Filterungen im Frequenzbereich, Korrelationen)
Erstellung einer Optischen Transfer Funktion: OTF

Volumenberechnung im 3D-Bild
Pixelvermessung im 3D-Bild
Mittelwertbildung einer Sequenz
Abspeichern von Sequenzen im unkomprimierten AVI-Format
Anwendung beliebiger 2D-Funktionen auf die Einzelbilder einer Bildsequenz
Bewegungsanalyse der Sequenz (Verfolgung von Objekten in der Sequenz) (nur mit PIV/PTV-Modul oder 2D/3D-Tracking-Modul)
3D-Surface-Plot (Grauwert als Höhengebirge darstellen oder als Beleuchtungsszene)

Stereometrie-Zusatzmodul
3-D Vektorisierung
Stereo-Pattern-Recognition (SPR) zur 3D-Rekonstruktion von Objektlageänderungen
Stereometrische Bilddarstellung mit 3D-LCD-Shutterbrille oder Rot/Grün-Brille von Einzelbildern oder Bildsequenzen, auch mit Audio

Echtfarb-Erweiterungsfunktionen
Arbeiten in weiteren Farbräumen (z. B. CIELUV, CMYK, YUV, YIQ)
Farbseparationen als Druckvorbereitung
Kalibrieren von Farbbildern (Farbtemperatur)

Echtzeitbildverarbeitung
Vermessen bestimmter Objekte im Echtzeit-Videosignal bis 500 Hz mit spezieller Kamera
Echtzeitobjektverfolgungen im 3D-Raum mit stereometrischer Kameraanordnung (siehe Tracking-Modul)

Particle Image Velocimetry und Bewegungsanalyse
Particle/Object-Tracking
Particle Korrelation (Autokorrelation für Doppelbelichtungen oder Kreuzkorrelation für Sequenzen), subpixelgenau, 2-Pass-Routinen
Interpolation von Vektorfeldern (2D, 3D)
Vektor- oder Vorticity-Plot für Strömungsfelder

Interferometrie
3D-Oberflächenvermessung mit 2-dimensionalen Interferometriebildern mit verschiedenen Verfahren:
Phasen-Shift-Verfahren,
Pseudo-Phasen-Shift-Verfahren,
Fourier-Frequenzverfahren,
Gray Code Technique,
Phase Unwrapping

Fringe-Correlation-Method
Fringe Correlation Method (auch Projected Grid Method PGM genannt), zur subpixelgenauen Vermessung von einfachen 3-dimensionalen Oberflächen

in rauhen Umgebungen oder bei extrem schnell bewegten Oberflächen (z. B. Hubschrauberrotorblätter).

2D/3D-Tracking, Position-Measurement
Realtime 2D- und 3D-Positionsvermessung mit 6 Freiheitsgraden und verschiedenen Rotationssystemen
Automatische Bestimmung der Transformationsmatrizen bei beliebigen unbekannten Standorten von zwei Kameras

Optical Character Recognition (OCR) und Verification
Einfaches Training von Zeichensätzen
Darstellung, Abspeichern und Hereinladen der Trainingsdatensätze
Erkennung und Korrektur der Winkellage eines Textes zur Vorbereitung für externe OCR-Programme

BarCode Erkennung
Such- und Erkennungsfunktionen für beliebige Winkellagen der Codes
Implementierte 1D-Codes sind: EAN8, EAN13, UPC-A, UPC-E, CODE39, 2aus5 interleaved
Implementierte 2D-Codes sind: PDF417

User Modul
Erstellung von Benutzerfunktionen mit C-Compiler

MACRO (Script)-Programme

4.2. Übersichtsdiagramme

Für die aktuelle Version des picCOLOR-Programmes sind keine Übersichtsdiagramme verfügbar.


5. System-Menu

Das "System"-Menü erreichen Sie durch Anklicken der kleinen mit Icon versehenen Schaltfläche auf der linken Seite der Hauptmenüleiste. Z. Zt. sind hier keine speziellen Funktionen enthalten. Wie in allen Standard-Systemmenüs von Windows-Programmen kann hiermit die Fenstergröße angepaßt werden oder das Programm verlassen oder beendet werden. Es ist jedoch geplant, hier in späteren Versionen bestimmte Spezialfunktionen zur Verfügung zu stellen, z. B. eine Auswahl der im Programm benutzten Schrifttypen oder anderer fensterbezogener Parameter.

Wenn über diesen Menüpunkt das picCOLOR Programm verlassen werden soll, so wird aus Sicherheitsgründen ein "Message"-Fenster geöffnet, in dem Sie durch Anklicken der "Ok"-Schaltfläche Ihre Einwilligung zur Beendigung des Programmablaufes geben können. Sie sollten vorher alle wichtigen Bilder abspeichern und auch eventuell wichtige ROI- oder Bildspeicher-Einstellungen in einem ".INI"- oder ".ROI"-File abspeichern. Wenn der Inhalt des Textspeichers des "Notebook" nicht leer ist, wird dies bei Verlassen des Programmes angemahnt. Wenn noch Datenfiles geöffnet sind, so werden diese bei Programmende automatisch geschlossen. Ebenso wird bestimmte, initialisierte Hardware geschlossen, z. B. ein geöffneter Counter/Timer.


6. File / Image Menu

6. File-Menu (Image-Menu)

New

Clear Image
Load Image
Save Image As
*Image Directory
Acquisition ->

FireWire ->
Twain ->
SwissRanger 3D ->

Test Images ->
Print Image ->

Show All Buffers
(3D/Sequence Player)

-----------------------
Control Panel ->
-----------------------
Special Functions
-----------------------
Exit picCOLOR

Das "File"- oder "Image"-Menü vereint alle Funktionen zur Ein- und Ausgabe von Bildern, sei es das Einlesen von Kamera oder von der Festplatte oder das Ausgeben auf einen Printer, auf einen Videorekorder oder wiederum auf die Festplatte. Außerdem finden Sie hier eine Reihe von nützlichen Testbildern, mit denen Bildverarbeitungsfunktionen getestet werden können und schließlich das "Control Panel", in dem Programmparameter eingestellt und Bildspeicher definiert werden können. Im File-Menü können auch andere externe Programme zusätzliche Menüpunkte einfügen, durch die dann weitere spezielle Funktionen aufrufbar sind. Beispiel hierzu ist die OCR-Texterkennung durch das Programm OmniPage Pro der Caere Corporation.

6.0. New

Löschen aller Bildspeicher und Auswahl der neuen Bildspeichergröße. Hierbei wird ebenfalls ein Reset der Bildeinlesekarte durchgeführt. Diese Funktion sollte nur ausgeführt werden, wenn ein komplett neues Projekt in picCOLOR bearbeitet werden soll. Es gibt leider einige Frame Grabber, die sich hiermit nicht zurücksetzen lassen. In diesem Fall, d. h. wenn hierbei Probleme auftreten, sollte man besser das picCOLOR-Programm verlassen und neu starten.

6.1. Clear Image

Löschen des gesamten aktuellen Bildspeichers und des Bildschirmes. Über die "Undo"-Funktion kann dieses Löschen rückgängig gemacht werden. Eine Sicherheitsabfrage verhindert unbeabsichtigtes Ausführen dieser Funktion. Diese Löschfunktion unterscheidet sich von anderen picCOLOR-Funktionen dadurch, daß sie immer auf dem kompletten Bildspeicher ausgeführt wird, nicht nur in der aktuellen ROI. In späteren Versionen wird es hier auch möglich sein, alle Bildspeicher gleichzeitig zu löschen und das System auf einen definierten Ausgangszustand zu setzen.

*6.2. Image Directory

Mit der Funktion "Image Directory" erhalten sie ein graphisch orientiertes Abbild oder Bildverzeichnis aller Bilder des angegebenen Verzeichnisses der Festplatte oder Diskette. Dabei werden alle Bilder stark verkleinert gleichzeitig auf dem Bildschirm dargestellt. Diese Funktion dient dazu, einen Überblick über alle gespeicherten Bilder zu gewinnen und eventuell ein Bild zu finden, dessen Name nicht bekannt ist. Dadurch, daß diese Funktion alle vorhandenen Bilder eines Verzeichnisses einlesen muß, kann es jedoch zu erheblichen Wartezeiten kommen. Die Funktion ist noch nicht implementiert.

6.3. Load Image

6.4. Save Image

6.5. Acquire Image

6.6. FireWire

6.7. Twain

6.8. SwissRanger 3D-Camera

6.9. Test Images

6.10. Print Image

6.11. Show All Buffer

*6.12. 3D/Sequence Player (3D/Sequence-Zusatzmodul)

Dieser Menue-Punkt erscheint nur bei aktiviertem 3D- oder Sequenzbild.

6.13. Control Panel

6.14. Special Functions (z. B.: Acquire Text)

6.15. Exit picCOLOR

Dieser Menüpunkt ist der Hauptausstiegspunkt, das picCOLOR Programm zu beenden. Aus Sicherheitsgründen wird ein "Message"-Fenster geöffnet, in dem Sie durch Anklicken der "Ok"-Schaltfläche Ihre Einwilligung zur Beendigung des Programmablaufes geben können. Sie sollten vorher alle wichtigen Bilder abspeichern und auch eventuell ROI-Einstellungen, Bildspeicherkonfigurationen oder Kalibrierungen oder sonstigen Einstellungen in einem ".INI"- oder ".ROI"-File abspeichern. Wenn der Inhalt des Textspeichers des "Notebook" nicht leer ist, wird dies bei Verlassen des Programmes ebenfalls angemahnt. Eventuell offene Datenfiles werden automatisch geschlossen.


6.3. Load Image

Das picCOLOR Programm kann Bilder in folgenden Bild-Formaten einlesen:

  • TIF (Tagged Image File Format, Adobe/Microsoft)

  • BMP (Windows Bitmap-Format)

  • JPG (JFIF, Independent Jpeg Group)

  • GIF (GIF87A und 89A Format)

  • PPM (Unix Portable Pixmap: P2, P5, P3, P6)

  • B16 (PCO 16 Bit Format)

  • SR3 (Proprietary 3D Image Format for MESA SwissRanger SR-3000-Camera)

  • RAW (unbekanntes Format oder ohne Format)

Nach Aktivieren der "Load Image"-Funktion öffnet sich ein Dialogfeld, in dem das Verzeichnis und der Bildname mit dem Mauszeiger eingestellt oder über die Tastatur eingegeben werden kann. Das Einlesen wird durch die "CR"-Taste nach Eingabe des Filenamens, mit Betätigung des "Open"-Feldes bei eingegebenem Filenamen oder mit Doppelklick der linken Maustaste auf einen Filenamen im Bildverzeichnis (File-Directory) aktiviert. Wenn das Grundbildformat einmal eingestellt worden ist, so erkennt das System selbst, um welche Art von Bild (Grauwertbild, Farbbild mit Palette, Echtfarbbild, unterschiedliche Pixeltiefe usw.) es sich handelt und liest es in die entsprechenden Bildspeicher ein. 8-Bit-Bilder werden immer in den aktuellen Bildspeicher eingelesen. Wenn kein Bildspeicher aktiviert ist - z. B. nach Anzeige aller Speicher gleichzeitig mit der Funktion "Show All Images" oder nach Anzeige eines geditherten Farbbildes - fragt das System nach der Bildspeichernummer, in das das Bild abgelegt werden soll. Echtfarbbilder mit 24 Bit Pixeltiefe werden beim Monochrome-System in die drei Bildspeicher für Rot- Grün- und Blauanteil abgelegt und dann automatisch gedithert angezeigt. Dieser 24 Bit Bildspeicher muß vorher mit "Define RGB-Buffer" im Control-Panel angelegt werden. Beim 32 Bit True Color System dagegen wird ein 24 Bit Bild normal in den dann 32 Bit breiten Bildspeicher übertragen. Bevor jedoch ein Bild geladen wird, wird je nach Bildformat eine weitere Dialogbox ausgegeben, in der weitere Parameter eingestellt werden können. Diese sind vom Bildformat abhängig und sind im folgenden erläutert:

- TIF (Tagged Image File Format, Adobe/Microsoft)

Bei Einstellung auf TIF-Format-Files erscheinen im File-Verzeichnis nur Files mit der Extension ".TIF". Das Einlesen von MacIntosh-TIFF-Bildern ist möglich. Folgende Formate oder Pixeltiefen können eingelesen werden: 1,2,4,8,16,24 Bit/Pixel; keine Kompression oder PackBit-Kompression. Die häufig benutzte LZW-Kompression wird noch nicht unterstützt. Eine JPG-Komprimierung wird teilweise unterstützt, indem man eine Umrechnung in ein normales JPG-Bild vornehmen kann. Der TIFF-Header kann zur Überprüfung angezeigt werden, indem die Funktion "Show Header" in der Dialogbox oder im "Image File Info-Menü" eingeschaltet wird. Der Header erscheint dann nach dem Einlesen des Bildfiles. Er gibt Auskunft über Bildgröße, Format, Kompressionsverfahren usw. Der Header kann auch später mit der Funktion "Show TIFF-Header" in Control-Panel inspiziert werden. Falls das Bild zusammen mit einem erklärenden Text aus dem Notebook abgespeichert wurde, wird der eingelesene Text an den aktuellen Inhalt des Notebook-Textspeichers angehängt und es wird eine entsprechende Meldung ausgegeben. Sie können den Text mit der Notebook-Funktion (in der Toolbox) ansehen. Mit dem Schalter "Load Calibration" können sie bestimmen, ob eine eventuell mit abgespeicherte Kalibrierung des Bildes in Metern oder Inch vom System übernommen werden soll. Vorsicht: diese überschreibt dann natürlich eine eventuell schon vorhandene Kalibrierung des Systemes. Daher ist der Schalter defaultmäßig deaktiviert. EXIF-Informationen können teilweise dekodiert werden. Sie können in der Show-EXIF-Header-Infobox (Control-Panel) eingesehen werden.

Mit dem "Option"-Schalter kann eine neue Dialogbox hervorgerufen werden, in der für 16-Bit-Bilder die gewünschte Bitbreite zum Einlesen eingestellt werden kann. Bei einem Bild einer 12-Bit-Kamera sollte man z. B. den Shift-Wert auf 4 einstellen, damit die Bits 4 bis 12 in den Bildspeicher übernommen werden.

Es folgen noch ein paar Hinweise zum Bilddatenformat "TIFF" (Tagged Image File Format), das von den Firmen Adobe und Microsoft konzipiert wurde und inzwischen zum weltweit anerkannten Standard für pixelorientierte Bilder und Graphiken geworden ist. TIFF ist ein sehr mächtiges Format - es können Bilder beliebiger Größe und beinahe beliebiger Pixeltiefe abgespeichert werden und es ist möglich, eine Reihe von Zusatzinformationen in einem Bild-Kopf (Image-Header) mit abzuspeichern. Diese Informationen können z. B. die Bildauflösung und Kalibrierung in x- und y-Richtung sein, die Art einer eventuellen Kompression, eine zusätzliche Farbpalette, ein erklärender Begleittext (der Inhalt des Notebooks) und vieles andere mehr.

Beim Einlesen eines Bildes wird zuerst dieser Header eingelesen. Hieraus erkennt das System, ob das Bild in den Speicher paßt, ob es ein Echtfarbbild ist, für das Sie einen 24 Bit-RGB-Color-Buffer einrichten müssen und ob unbekannte TIFF-Befehle vorliegen. Die Möglichkeit unbekannter Befehle resultiert daher, daß das TIFF-Format ein sehr komplexes Format ist und ständig in Weiterentwicklung begriffen ist. Es kann also sein, daß bestimmte Befehle entweder als nicht notwendig erachtet wurden und daher nicht implementiert sind oder daß ein neuer Befehl (z. B. eine neue Kompressionsvariante) aufgetreten ist, der noch nicht implementiert worden ist. In solch einem Fall gibt das System eine Fehlermeldung aus. Wir, als Hersteller der Software, bitten Sie, uns den speziellen TIFF-Bild-File in einem solchen Fall zuzusenden. Wir werden uns bemühen, Ihnen so schnell wie möglich ein Update des Programmes zu liefern, mit dem Sie Ihr Bild einlesen können. Trotz unbekannter TIFF-Befehle wird der TIFF-Treiber es jedoch versuchen, das Bild richtig einzulesen. Dies ist bei einigen weniger wichtigen TIFF-Befehlen möglich, natürlich aber nicht bei einem nicht implementierten Kompressionsverfahren. Die Implementierung des LZW-Kompressionsverfahrens ist z. Zt. nicht geplant.

Mit dem "Load into ROI"-Schalter haben Sie die Wahl, ein TIF-Bild in die aktive ROI einzulesen und dabei zurechtzustutzen, falls die ROI kleiner als das Bild ist, oder das Bild ohne Beachtung der aktuellen ROI, beginnend mit der linken oberen Ecke des Bildschirmes zu laden. In diesem Fall wird es nicht abgeschnitten (außer, es ist größer als der definierte Bildspeicher).

In manchen Fällen kann es notwendig sein, mit größeren Bildern oder Ausschnitten daraus zu arbeiten, als es das picCOLOR-Programm mit seinen Bildspeichern erlaubt. Um den richtigen Ausschnitt solch großer Bilder auf den Bildschirm zu laden, wird der Bildursprung (Origin_x und Origin_y) auf einen sinnvollen negativen Wert gesetzt. Der "Load into ROI"-Schalter muß hierzu abgeschaltet werden. Das Bild wird dann, beginnend vom - nicht sichtbaren Ursprung - auf den Bildschirm geladen. Diese Funktion ist z. Zt. jedoch nur für unkomprimierte 1,2,4,8-Bit-TIFF-Bilder verfügbar.

16-Bit-Tiffbilder können eingelesen werden. Hierzu sollten zuvor unter "16Bit Parameters" die Werte für den Bit-Shift und die Saturation eingestellt werden. Diese Parameter sind bei der Behandlung des RAW-Formates genauer erklärt.

- BMP (Windows Bitmap-Format)

Unter Windows ist das BMP-Format sehr verbreitet und wurde daher ins picCOLOR-Programm implementiert. Es können Bilder mit einer Pixeltiefe von 4, 8, 24 und 32-Bit eingelesen werden. Z. Zt werden 24 und 32 Bit-Bilder, von einem normalen 2D-Grauwertbildspeicher geladen, in Grauwertbilder umgewandelt, indem die Intensität bestimmt wird. Es gibt hierzu keine weiteren Optionen.

- JPG (JFIF, Independent Jpeg Group)

Hiermit werden im Jpeg-Verfahren komprimierte Bilder eingelesen. Es werden normale Grauwert-JPGs und RGB-JPGs sowie RGBK-JPGs aus Adobe Photoshop gelesen. Jpeg ist ein sehr stark komprimierendes Format, das allerding nicht mehr 100% verlustfrei arbeitet. Beim Abspeichern (siehe unten) kann man zwischen besserer Rekonstruktionsgüte und geringerem Speicherbedarf wählen. Mit dem Schalter "Load Calibration" können sie bestimmen, ob eine eventuell mit abgespeicherte Kalibrierung des Bildes in Metern oder Inch vom System übernommen werden soll. Vorsicht: diese überschreibt dann natürlich eine eventuell schon vorhandene Kalibrierung des Systemes. Daher ist der Schalter defaultmäßig deaktiviert. EXIF-Informationen können teilweise dekodiert werden. Sie können in der Show-EXIF-Header-Infobox (Control-Panel) eingesehen werden.

- GIF (GIF87A oder GIF89A Format)

Auf Internetseiten wird sehr häufig das GIF-Format benutzt, da es Bilder mit geringer Bit-Tiefe recht gut komprimiert. Es sind noch nicht alle Optionen des GIF89A-Formates implementiert, die meisten GIF89-Bilder lassen sich jedoch fehlerfrei einlesen. Animated GIF-Bilder werden mit dem Mausklick durchgescannt, bei Abbruch bleibt dann das letzte ausgewählte Bild bestehen, so daß man auf diese Weise alle Einzelbilder von Animated-GIF-Sequenzen gezielt laden kann. Wenn aus einem Sequenz-Bildspeicher geladen wird, so werden die Einzelbilder der Sequenz in ihrer Reihenfolge in die Sequenzbildspeicher geladen. Nicht implementierte Merkmale des GIF89A-Standards sind z. B.: Graphic Extensions, Plain Text.

- PPM (Unix Portable Pixmap: B/W: P1, P4; Gray: P2, P5; Color: P3, P6)

Das portable Pixmap Format ist ein recht ineffizientes, allerdings auch recht verbreitetes Format zur Abspeicherung von Bildern. Es gibt eine Reihe von Unterformaten, z. B. Abspeicherung als RGB-Farbbild (PPM, hier P3 und P6), als Grauwertbild (PGM, hier P2 und P5), und als Schwarz/Weiß-Bild (PBM, hier P1 und P4). Außerdem ist es möglich, die Bilder entweder im sehr ineffizienten ASCII-Format oder im etwas besseren Binärformat zu speichern.

- B16 (PCO 16 Bit Format)

Dieses Format wurde von der Firma PCO für die 16-Bit-Bilder ihrer Spezialkameras definiert. Die PCO-Kameras werden z. B. für die Strömungsvermessung mit der Particle Image Velocimetry (PIV) benutzt, bei der zwei Bilder in sehr kurzem Zeitabstand (z. B. nur einige Mikrosekunden) aufgenommen werden. Diese Bilder sind dann direkt untereinander, mit einem kleinen Header versehen, im B16-Format gespeichert. Da die PCO-Kameras in der Regel eine Bittiefe von 12 Bit aufweisen, kann hier der gewünschte Bereich angegeben werden. In der Regel, bei gut belichteten Bildern, wird man den Shift auf 4 einstellen, um die höherwertigen 8 Bit des 12-Bit Pixels einzulesen. Wenn jedoch untere Bits eingelesen werden sollen, dann ist es sinnvoll, das "Saturate"-Flag zu setzen, damit Pixel mit einem helleren Gauwert dann auf den maximalen Grauwert von 255 gesetzt werden.

- SR3 (Proprietary Format für 3D-Bilder der MESA SwissRanger SR-3000 Kamera)

Dieses Format wurde vom Entwicklungsteam für das Abspeichern der 3D-Tiefenbilder der SwissRanger SR-3000-Kamera der Firma MESA entwickelt. Es sind hier jeweils zwei Bilder hintereinander gespeichert, nämlich das 3D-Tiefenbild und das Grauwertbild mit der Pixelauflösung 176*144 Pixel. Dies ist das direkte Abbild des Speichers des SwissRanger-Kameratreibers, ohne irgendwelche Header. Dies ist die beste und flexibelste Möglichkeit der Abspeicherung, da so ein erneutes hereinladen in den Speicherbereich des Kameratreibers möglich ist und das Bild mit den Originaltreiberfunktionen neu bearbeitet und/oder kalibriert werden kann. Die oben dargestellte Dialogbox zur Parametereinstellung wird hier übrigens nicht automatisch aufgerufen, sondern kann über die File->SwissRanger3D->ConfigureLiveParams-Funktion erreicht werden. Alle diese Funktionen stehen auch während der Live-Bildübernahme zur Verfügung. Hier, für das Hereinladen, sind nur die Werte für Min.Color und Max.Color für Depth und Gray relevant. Alle anderen Parameter betreffen lediglich die Acquisition der Bilder.

- RAW (unbekanntes Format oder ohne Format)

Hiermit wird das Einlesen von Bildern ohne Formatierung oder mit unbekanntem Header ermöglicht. Sie müssen dazu nur einige grundlegende Informationen über das Bildformat besitzen. Dies sind Informationen über die Bildbreite und Bildhöhe, über die Pixeltiefe (z. Zt. 8, 16, 24, oder 32 Bit Graubild erlaubt) und über die Länge eines eventuellen Bildkopfes (Image Header) haben. Ein sehr wichtiger Parameter ist der "Shift"-Wert bei Bildern mit mehr als 8 Bit Pixeltiefe: Da das übliche picCOLOR-System im 8 Bit Modus arbeitet und damit auch nur 8 Bit Werte in die Bildspeicher laden kann, muß bei Bildern mit größerer Pixeltiefe angegeben werden, welcher Teil des Pixels im Bildspeicher gespeichert und angezeigt werden soll. Jeder Bildpunkt wird dabei um den "Shift"-Wert nach rechts geschoben und in den Speicher geschrieben. Wenn also bei einem 16-Bit-Bild ein "Shift"-Wert von 8 angegeben wird, so wird das jeweils höherwertige Byte eines 16 Bit-Bildpunktes in den Bildspeicher übernommen. Eine wichtige Anwendung ist z. B. das Einlesen von medizinischen CT- oder NMR-Bildern. Diese haben üblicherweise eine Pixeltiefe von 12 Bit und sind als 16 Bit-Pixel auf File abgelegt. Beim Einlesen würde man den "Shift"-Wert auf 4 setzen, um die 8 höchstwertigen Bits des 12 Bit-Wortes auswerten zu können. Die 4 niederwertigsten Bits gehen dabei natürlich verloren. Interessantes Beispiel ist auch das Einlesen eines Farbkanales eines RGB-Farbbildes, das im RGBRGBRGB...-Format abgespeichert ist: hier kann man z. B. den Grünkanal als Grauwertbild laden, indem man die Bittiefe auf 24 setzt und um 8 Bit nach rechts schiebt. Wenn die "Saturate"-Funktion eingeschaltet ist, so werden Werte, die den zulässigen Bereich überschreiten, auf den höchsten Grauwert (255) gesetzt. Wenn keine Information über die Bildstruktur vorliegt, kann man sich durch Versuche and das tatsächliche Format herantasten.

Anpassen der aktuellen ROI auf die Bildgröße

Mit der Funktion "ROI Fit Image" in der ToolBox (13.4.2.) oder im "Image File Info"-Menü (6.10.12.) kann die aktuelle ROI auf die Größe und Lage des zuletzt eingelesenen Bildes gesetzt werden. Hierbei sollte beachtet werden, daß die ROI vor dem Hereinladen des Bildes sinnvollerweise größer als das einzulesende Bild sein muß, da sonst natürlich schon Bildbereiche abgeschnitten wurden.


6.4. Save Image As

Bilder können in verschiedenen Formaten abgespeichert werden. Z. Zt. werden von picCOLOR folgende Formate unterstützt:

  • TIF (Tagged Image File Format, Adobe/Microsoft)

  • BMP (Windows Bitmap)

  • JPG (Independent Jpeg Group, JFIF)

  • EPS (Encapsulated Postscript)

  • PPM (Unix Portable Pix Map)

  • SR3 (Proprietary 3D Image Format for MESA SwissRanger SR-3000-Camera)

  • RAW (No Format)

Das Abspeichern geschieht durch Anwählen der "Save"-Schaltfläche bei gültigem Filenamen oder durch Return im Filenamenfeld nach Tastatureingabe. Wenn vor dem Abspeichern noch bestimmte Parameter eingestellt werden können, z. B. eine bestimmte Kompressionsart, so wird nach Wahl des Filenamens und Bestätigung eine weitere Dialogbox geöffnet, in der diese Parameter eingestellt werden können.

Beim Abspeichern eines 8 Bit-Bildes wird immer das aktivierte Bild abgespeichert. Ein Bild, bei dem die zugehörige Farbpalette zur Darstellung unbedingt notwendig ist, sollte immer zusammen mit dieser Farbtabelle gespeichert werden. Dies ist allerdings nur bei TIFF und BMP möglich. Bei der Wahl des 24 Bit Bildes wird immer der aktive RGB-Bildspeicher gespeichert, unabhängig davon, welche speziellen Bildspeicherebenen dieser gerade belegt.

picCOLOR ist so ausgelegt, daß Files nicht versehentlich überschrieben werden können. Wenn ein Filename bereits existiert, so wird einmal durch die Windows-Automatik nach Betätigung der "Save"-Taste nachgefragt, ob der File überschrieben werden soll. Zusätzlich fragt picCOLOR selbst auch nochmal nach. Dies ist wichtig, da ja Files auch ohne die Windows-Dialogbox abgespeichert werden können, z. B. über den Aufruf eines MACRO-Kommandos.

- TIF (Tagged Image File Format, Adobe/Microsoft)

Im TIF-Format können Grauwertbilder und Bilder mit Farbpalette mit 8 Bit/Pixel und Echtfarbbilder mit 24 Bit/Pixel gespeichert werden. Eine Kompression ist beim Abspeichern möglich. Z. Zt. ist nur das PackBit-Kompressionsverfahren implementiert. Es bringt bei unbearbeiteten Kamerabildern normalerweise keine hohe Kompressionsrate. Bearbeitete, z. B. binärisierte Bilder, können jedoch auf einen sehr geringen Speicherbedarf komprimiert werden. Durch Aktivieren des "Save Notebook"-Buttons wird der aktuelle Inhalt des Notebooks (siehe Toolbox) zusammen mit dem Header des Bildes abgespeichert. Hier können Kommentare und Erklärungen zum Bild mitgespeichert werden. Wenn eine Maßeinheits-Kalibrierung vorgenommen wurde, so wird diese bei Abspeicherung als TIFF-Bild immer mit abgespeichert, wenn das System sie in Meter oder Inch umrechnen kann. Z. Zt. kennt das System folgende Maßeinheiten: km, m, dm, cm, mm, um, nm, und die nicht-metrischen Einheiten: mi, ft, in. Im TIF-Format sind drei mögliche Arten der Abspeicherung implementiert, nämlich:

  • Abspeichern als 8 Bit-Grauwertbild mit 256 Graustufen

  • Abspeichern als 8 Bit-Paletten-Bild mit 256 aus 16.8 Millionen Farben

  • Abspeichern als 24 Bit RGB-Echtfarbbild mit 16.8 Millionen Farbabstufungen

Exif-Daten, die eventuell mit einem TIFF-Bild hereingeladen wurden, werden z. Zt. beim Abspeichern noch nicht mitgespeichert. Dies kann allerdings auf Wunsch implementiert werden.

- BMP (Windows Bitmap)

Es können 8-Bit und 24-Bit-BMP-Bilder abspeichert werden. Bei 8-Bit BMP-Bildern wird immer die Farbpalette mitgespeichert.

- JPG (Independent Jpeg Group, JFIF)

8-Bit und 24-Bit-Bilder Bilder können im Jpeg-Verfahren nach dem JFIF File Format abgespeichert werden. Hierbei muß zwischen starker Kompression mit schlechterer Rekonstruktionsgüte und geringerer Kompression und besserer Rekonstruktionsgüte gewählt werden. Ein Wert zwischen 75 und 85 zeigt recht gute Kompromisse. Unter 50 werden die Rekonstruktionsfehler zumindest bei starken Bildkontrasten mit scharfen Kanten sehr deutlich. Anmerkung: Die picCOLOR-Software benutzt die Software der Independent JPEG Group für die JPEG-Komprimierung.

- EPS (Encapsulated Postscript)

8-Bit und 24-Bit-Bilder Bilder können auch im Postscript-Verfahren abgespeichert werden.

- PPM (Unix Portable Pix Map)

Bilder können auch im "PPM" (Portable Pix Map"-Format abgespeichert werden. Dies ist ein im Unix-Bereich geläufiges Format. Es dient unter anderem zur Portierung auf UNIX-Systeme und zur Konvertierung von Bildsequenzen in das MPEG-Video-Format (siehe Box weiter unten). Auch Grauwertbilder werden dabei als RGB-Bilder gespeichert, d. h. mit gleichen Anteilen für Rot, Grün und Blau.

- RAW (Formatfreies Abspeichern von Bildern)

Es besteht auch die Möglichkeit, Bilder formatfrei, d. h. ohne Bild-Header abzuspeichern. Diese Funktionen sind jedoch noch nicht fertig implementiert. So kann z. Zt. noch kein Header mitgespeichert werden. Man muß sich also genau merken, welche geometrische Größe die gespeicherten Bilder haben, um sie mit Load-RAW wieder hereinladen zu können. Es wird nur im 8-Bit Grauwertformat gespeichert.

Einschub: AVI/MPEG-Video: Bildabspeicherung im PPM-Format (Portable Pix Map)

Die Abspeicherung von Sequenzbildern erfolgt normalerweise im Einzelbildverfahren. Dies hat den Vorteil, daß jedes einzelne Bild zugreifbar und bearbeitbar ist. Im picCOLOR-System erfolgt die Darstellung einer Bewegungssequenz direkt aus dem Sequenzspeicher, sodaß hier auch bei großen Bildausschnitten hohe Darstellungsgeschwindigkeiten erzielt werden können. Außerdem ist die Möglichkeit implementiert, Bildsequenzen direkt im allerdings unkomprimierten AVI-Format abspeichern zu können. Da hierbei im RGB-Format gespeichert wird, wird eine Bildsequenz allerdings auf das dreifache aufgebläht. Die hier erzeugten AVI-Files dürfen nicht länger als 2GByte sein, da in der Software intern z. T. noch 32-Bit Integer-Werte benutzt werden.

Über das PPM-Format (Portable Pix Map), das in der Unix-Welt häufig benutzt wird, wird auch die Umsetzung in einen AVI-Video-File im MPEG-Format ermöglicht. Dieses Format ist auf allen Rechnern darstellbar, MPEG-Viewer gibt es für praktisch jedes Betriebssystem. Zusätzlich ist das MPEG-Verfahren extrem stark komprimierend (bei Farbbildern bis zu einem Faktor von etwa 150), so daß man sehr kleine Video-Dateien erhält. Bei den üblicherweise im picCOLOR-Programm verwendeten Grauwert-Sequenzen sind die Kompressionsraten nicht ganz so hoch, da das MPEG-Verfahren für Farbbilder optimiert ist. Es muß beachtet werden, daß die Qualität der kodierten Sequenzen durch die starke Kompression stark degradiert wird.

Die Vorgehensweise ist wie folgt: zunächst werden alle Bilder der Sequenz im PPM-Format auf der Festplatte abgespeichert. Sie benötigen etwa 3-mal soviel Speicherplatz wie im Grauwert-TIFF-Verfahren, da das PPM-Verfahren immer im RGB-Format abspeichert (Die RGB-Anteile sind dann gleich). Dann erstellt man einen MPEG-Scriptfile anhand der in der MPEG-Software mitgelieferten Beispiele. Am besten kopiert man eines der Beispiele und ändert nur den MPEG-Filenamen, die Anzahl und Größe der Input-Bilder sowie deren Namen und Pfad. Anschließend wird der MPEG-Encoder mit dem Befehl "mpeg_enc.exe" gestartet. Hierzu muß das MPEG-System auf der Festplatte installiert sein, z. B. in einem "C:\MPEG" Directory, und unter Umständen (bei älteren Systemen) im AUTOEXEC.BAT File die Zeile "set GO32=emu c:\MPEG\emu387" eingefügt werden.

Die MPEG-Encodersoftware kann über das Internet bezogen werden, und zwar als komplette Source oder als DOS-Executable .EXE-Version. Die komplette Version ist die DOS-Portierung des MPEG-Encoders "mpeg_encode" der Berkeley Research Group und hat den Namen ENC11DOS.ZIP (c) 1993 by PHADE Software (phade@cs.tu-berlin.de oder phade@contrib.de). Selbstverständlich gibt es noch eine Reihe weiterer MPEG-Kodierprogramme, die vom Internet heruntergeladen werden können und mit einem der zur Verfügung stehenden Bildformate arbeiten können.


6.5. Acquire Image

In diesem Menü finden Sie Funktionen, die zum Einlesen von Bildern von beliebigen Videoquellen dienen. Dabei können Bilder über verschiedene Bildeinlesekarten (Frame Grabber) oder über andere spezielle Schnittstellen (z. B. das FireWire-Interface, das auf allen modernen Mainboards vorhanden ist, oder die TWAIN-Schnittstelle für Flachbett-Scanner oder andere bildgebende Geräte) übernommen werden. Es kann zwischen einem primären Frame Grabber und weiteren im Rechner eingesetzten sekundären Frame Grabbern unterschieden werden. Primärer Frame Grabber ist in der Regel ein sehr vielseitige und leistungsfähige Karte, auf die das picCOLOR-Programm speziell angepaßt wurde. Ein sekundärer Frame Grabber ist dagegen eine zusätzlich in den PC eingesteckte Karte, die in der Regel weniger leistungsfähig ist und bei der nur wenige Standardfunktionen unterstützt werden. Die Art der benutzten Bildeinlesekarte muß zuvor über die "Primär"- und "Sekundär"-Schalter der im "Control Panel" angeordneten "Configuration"-Dialogbox eingestellt werden. Hierbei wird eine sinnvolle Voreinstellung automatisch beim Aufstarten des Systemes mit dem PICC_NT.CFG-Konfigurationsfile durchgeführt. Die zugelassenen Bildeinlesekarten oder - allgemeiner - Bildeinleseschnittstellen müssen dem picCOLOR Programm in der derzeitigen Version jedoch während der Kompilation mitgeteilt werden. Folgende Frame Grabber oder Schnittstellen werden z. Zt. unterstützt:

- DALSA/CORECO F64P

- DALSA/CORECO VIPER Series

- DALSA/CORECO X64CL Series

- DALSA/CORECO Xcelera Series (incl. 64bit driver)

- Euresys Grablink Value/Expert/ExpertII (und eventuell andere Karten)

- National Instruments NI1429 and NI1430 Frame Grabber (incl. 64bit driver - emulation on WOW64 only)

- Silicon Software MicroEnable (rudimentary only, please ask for full support of MicroEnable IV)

- IDS Falcon/Eagle

- 1394 FireWire

- Mesa SwissRanger 3D camera SR-3000, USB-Schnittstelle

- TWAIN

Geplant ist die Implementierung folgender Frame Grabber oder Schnittstellen:

- Gigabit Ethernet Interface

- BitFlow Karbon Frame Grabber für double Full CameraLink Interface

- Matrox MIL Frame Grabber driver library

Die einzelnen Funktionen zum Einlesen von Bildern von Kameras, Videorekordern, Scannern oder anderen Quellen sind sehr stark abhängig von der jeweiligen Bild- oder Videoquelle. Nach der Beschreibung der allgemeinen immer vorhandenen und notwendigen Funktionen wird daher in speziellen Abschnitten oder Hinweisblöcken auf jeden der an das picCOLOR-Programm angepaßten Frame Grabber besonders eingegangen. In der Regel enthält das Acquisition-Menü die folgenden Einträge:

Frame Grabber
Acq. Configuration
Camera Selection
(Square Pixel)
Input - LUT
Split Screen Acq.
Stereo Acquisition

-------------------

Check Acq. Errors

Reset Acquisition

6.5.1. Frame Grabber

Die Hauptfunktion des "Acquire"-Menüs ist die "Frame Grabber" Dialogbox. Je nach Art des eingesetzten Frame Grabbers kann diese Dialogbox sehr einfach oder sehr komplex aufgebaut sein. Mit den hier enthaltenen Funktion können Sie Bilder und Sequenzen von verschiedenen Videoquellen einlesen. Je nach Fähigkeiten der Bildeinlesekarte können dabei die Art der Bildübernahme, Helligkeit und Kontrast, die Art der Videoquelle und die Art der Synchronisation eingestellt werden. Außerdem kann hier eventuell auch eine Bildmittelung oder Bildintegration zur Verminderung des Bildrauschens vorgenommen werden und Sie können einzelne Farbanteile eines RGB-Farbbildes bei Einsatz einer RGB-Kamera anzeigen lassen. Die Bilder werden in der Regel immer in die aktuelle ROI des aktiven Bildspeichers übernommen, wobei die horizontalen Werte jedoch in bestimmten Fällen auf größere Schrittweiten eingestellt werden, z. B. Modulo 4 oder 8. Die folgenden Funktionen können für alle Bildeinlesekarten gewählt werden:

  • Kontinuierliche Bildübernahme (continuous, "C")

  • Einzelbildübernahme (snapshot, "S")

  • Stoppen der Bildübernahme (freeze, "Esc")

  • Beenden der Bildübernahme mit Annahme des eingelesenen Bildes (ok)

  • Beenden der Übernahme und Wiederherstellen des ursprünglichen Bildes (cancel)

Die Bilddarstellung während der Bildübernahme geschieht in der Regel über das komplette Bild mit der Auflösung, die durch die angeschlossene Kamera bestimmt wird. Eine eingestellt ROI wird also nicht beachtet. Wenn die Dialogbox mit "OK" verlassen wird, so wird das letzte eingelesene Bild in die aktuelle ROI des aktuellen Bildspeichers übertragen. Mit "Cancel" kann jedoch auch der vorherige Bildspeicherzustand wiederhergestellt werden. Weitere Funktionen, die von bestimmten Bildeinlesekarten zur Verfügung gestellt werden, sind folgende:

  • Mittelung oder Integration eines Bildes über einen bestimmten Zeitraum (mean, average,"M")

  • Auswahlschalter für Mittelung oder Integration eines Bildes

  • Kontrolle der Helligkeit (Offset) des eingelesenen Bildes

  • Kontrolle des Kontrastes (Gain) des eingelesenen Bildes

  • Feinabgleich des horizontal übernommenen Anteiles des Videosignales

  • Feinabgleich des vertikal übernommenen Anteiles des Videosignales

  • Auswahl von Kamera-Eingängen ("0","1","2","3" oder "R","G","B")

  • Auswahl der Synchronisationseingänge

  • Ein- und Ausschalten der externen Synchronisation (Gen Lock)

  • Aufnahme einer Video-Sequenz (nur mit 3D/Sequenz-Zusatzmodul)

6.5.1.1. Steuerung der Bildübernahme

Da die unterschiedlichen an picCOLOR angepaßten Frame Grabber sehr unterschiedliche Eigenschaften und Fähigkeiten besitzen, und da die Dialogbox zum Bildeinlesen gleichzeitig sehr klein sein sollte, um auch bei großen bildschirmfüllenden Bildern alle Bereiche beurteilen zu können, wurde für jeden Frame Grabber eine eigene Dialogboxen entwickelt.

Acquisition dialogbox für DALSA/CORECO XCelera oder X64CL, sowie für DALSA/CORECO VIPER Digital

Acquisition dialogbox für DALSA/CORECO F64P

Acquisition Dialogbox für Falcon/Eagle von IDS sowie die Options-Dialogbox

Acquisition Dialogbox für die Euresys GrabLink Karten mit MultiCam Treibersoftware, oder ähnlich auch für MicroEnable Karten, inlc. der Options Dialogbox

Normale Funktionen:

Snapshot: Übernahme eines einzelnen Bildes (Beide Halbbilder bei Interlaced-Kamera) (auch mit Hot-Key: "S"). Wenn eine Grauwertkamera eingestellt ist, so wird das Einzelbild direkt in den aktiven Bildspeicher geschrieben. Für RGB-Kamera oder Split-Screen oder Stereo-Einstellung gelten folgende Besonderheiten:

  • Wenn eine RGB-Farbkamera eingestellt ist und der gewählte Frame-Grabber farbfähig ist, so wird das Bild als Farbbild in den Frame Grabber übernommen und erst nach Beendigung der Dialogbox mit der "ok"-Schaltfläche in die drei RGB-Speicher übertragen. Wenn jedoch die Bildeinlesekarte nicht direkt farbfähig ist (z. B. bei der F64P von CORECO) so werden die RGB-Bildanteile von den drei Kameraeingängen 1,2,3 nacheinander so schnell wie möglich eingelesen und sofort in die RGB-Speicher des picCOLOR-Programmes übertragen.

  • Wenn das Two-Screen-Stereo-Flag gesetzt ist, so wird versucht, ein Stereo-Bildpaar von zwei Kameras einzulesen. Je nach eingesetztem Frame Grabber werden dazu gleichzeitig oder nacheinander zwei Kameraeingänge benutzt oder bei zwei eingesetzten externen Frame Grabbern auch zwei Bilder gleichzeitig eingelesen und bei Beendigung der Dialogbox mit der "ok"-Schaltfläche in die Stereo-Bildspeicher übertragen.

  • Bei gesetztem "Split-Screen"-Flag werden die Teilbilder der in der Split-Screen Dialogbox eingestellten Kameras sofort in den aktuellen Bildspeicher übertragen.

Continuous: Kontinuierliche Bildübernahme (auch mit Hot-Key: "C" für "Continuous"). Bei standardmäßiger Grauwertkamera wird das Live-Bild dargestellt und kontinuierlich in den aktuellen Bildspeicher übertragen. Bei spezieller Einstellung auf RGB-Kamera oder Two-Screen-Stereo wird jeweils ein Farbanteil oder Kameraeingang kontinuierlich dargestellt. Bei Split-Screen-Einstellung kann das Live-Bild direkt dargestellt werden. Der gewünschte Farbanteil oder Kameraeingang kann über die Eingangsschalter gewählt werden.

Freeze: Das Beenden der kontinuierlichen Bildübernahme (auch mit der "ESC"-Taste steuerbar).

Ok: Mit dieser Schaltfläche wird das eingelesene Bild akzeptiert und in die aktuelle ROI des aktuellen Bildspeichers übertragen. Wenn sich das Bild als bildfüllendes Gesamtbild bereits im aktuellen Bildspeicher befindet, so wird statt dessen lediglich der Bildteil innerhalb der ROI-Umrandung behalten, außerhalb der ROI wird das ursprüngliche Bild wiederhergestellt.

Cancel: Mit dieser Schaltfläche wird die Dialogbox geschlossen, wobei versucht wird, den ursprünglichen Zustand des Systemes wiederherzustellen. Bei Benutzung der Schwarz/Weiß-Kamera wird das eingelesene Bild nicht in den Bildspeicher übernommen - es wird der Zustand vor der Bildübernahme restauriert. Da bei Benutzung einer RGB-Kamera oder bei einer Farbfilter-Übernahme die drei RGB-Bildspeicher oder bei Benutzung des Two-Screen-Stereo-Modes die Stereo-Bildspeicher überschrieben werden, was mit dem einfachen Undo-Speicher nicht rückgängig gemacht werden kann, verhält sich hier der "Cancel"-Ausgang genau wie der Ausgang über die Ok-Fläche. Diese Einschränkung gilt nicht für die True-Color-Version des picCOLOR Programmes.

Spezielle Funktionen:

Options: Bestimmte Frame Grabber haben weiter e Einstellungsoptionen, z. B. die Einstellung von Kontrast und Helligkeit. Über einen "Option"-Schalter gelangt man in eine weitere Dialogbox, in der diese Parameter gewählt werden können.

Mean: Mittelung mehrerer nacheinander übernommener Bilder innerhalb der aktuellen ROI zur Verringerung des Kamerarauschens oder Aufintegration bei sehr dunklen Bildern (Hot-Key "M"). Die Mittelung kann für S/W oder RGB-Farbbilder vorgenommen werden. Die gewünschte Anzahl der zu mittelnden Einzelbilder muß eingestellt werden. Mit dem Schalter "Integrate Only" können Sie wählen, ob die Funktion bei Anwahl des "Mean"-Schalters eine Aufintegration mit oder ohne nachfolgender Division durch die Anzahl der addierten Bilder durchgeführt wird. Die reine Aufintegration ist bei sehr dunklen Bildern bei extrem schlechten Lichtverhältnissen sinnvoll. Diese Funktion ist nur bei geeignetem Frame Grabber verfügbar, z. Zt. nur bei der F64P-Karte.

Hinweis zum Bildmitteln oder Aufintegrieren: Alle Videoquellen besitzen irgendeine Art von Signalrauschen - kleine statistisch verteilte Störungen auf dem Videosignal, die die Information der niederwertigsten Bits des Signales, d. h. der geringsten Grauwertunterschiede, überdecken können. Das kann bei älteren Röhrenkameras so weit führen, das nur noch etwa 6 Bit des normalerweise 8 Bit breiten digitalisierten Signales sinnvoll sind - man erhält nur Information für 64 Graustufen, alle weiteren Zwischenwerte sind durch starkes Rauschen überdeckt. Aber auch bei hochwertigen modernen 8-Bit-CCD-Kameras erhält man normalerweise nicht mehr als 7 bis 7.5 Bit an Grauwertauflösung. Der Analog-Digital-Wandler selbst prägt dabei dem Signal zusätzlich auch noch ein Rauschen auf - schließlich muß auch er sich an einer Referenzspannung orientieren, die auch nur eine begrenzte Genauigkeit hat. Dies gilt auch für Digitalkameras, in denen der Analog/Digital-Wandler in der Kamera eingebaut ist. Wenn es darum geht, stationäre Bilder mit höchster Genauigkeit zu digitalisieren, z. B. für eine anschließende starke Kontrastverstärkung oder Kantenerkennung, ist jedes Rauschen von großem Nachteil. Hier kann ein einfacher Trick jedoch zu sehr guten Ergebnissen führen: durch Bildmittelung über einen längeren Zeitraum kann das Rauschen auf ein Mindestmaß reduziert werden. Hierzu werden einfach z. B. bis zu 256 Bilder direkt nach der Digitalisierung aufaddiert und das Ergebnis hinterher durch die Anzahl dividiert - es wird also der Mittelwert über z. B. 256 Bilder gebildet. Je nach Typ der eingesetzten Bildeinlesekarte kann diese Funktion in Echtzeit ausgeführt werden. Trotzdem funktioniert dieses Verfahren natürlich nur für statische Bildinhalte.

Wenn Sie aufgrund sehr schlechter, lichtschwacher Beleuchtung oder sehr undurchlässiger Filter nur einen sehr kleinen Spannungshub im Videosignal haben, können Sie die Integration mehrerer Bilder ohne nachfolgende Division durch die Bildanzahl ausführen und hiermit die Helligkeit des Ergebnisbildes stark anheben.

Sequence: Mit dem 3D/Sequence-Zusatzmodul kann zusätzlich auch eine Bildsequenz aufgenommen werden (Hot-Key "V"). Wenn die Frame Grabber Dialogbox bei aktivierter Bildsequenz geöffnet wird, so erscheint eine Sequenz-Recorder/Player-Dialogbox, in der man neben den üblichen einfachen "Continue", "SnapShot" und "Freeze"-Schaltern zusätzlich die Möglichkeit hat, Bildsequenzen aufzunehmen und auf verschiedene Art wieder abzuspielen. Weiterhin ist hier auch die Einstellung aller Parameter für die Sequenz-Bildaufnahme möglich, z. B. Aufnahmegeschwindigkeit, Ringspeicher, Split-Screen-Einstellung usw. Eine genauere Beschreibung dieser Funktionen finden Sie im 3D/Sequenz-Handbuch.

6.5.1.2. Kontrast und Helligkeit

Bei analogen Frame Grabbern (F64P) kann der Kontrast und die Helligkeit des Bildes beim Einlesen angepaßt werden. Mit Hilfe der graphischen Anzeige auf der linken Seite der Dialogbox und den darunter befindlichen Eingabefeldern können Kontrast und Helligkeit gesteuert werden (Kontrast = Gain und Helligkeit = Brightness = Offset). Hierzu mehr Informationen im Hinweiskasten:

Ein analoges Videosignal ist aus mehreren Komponenten zusammengesetzt. Dies sind horizontale und vertikale Synchronimpulse, Farbsignale (sogenannter Farb-Burst), Blanking-Signale (Austastlücken, Schwarzschulter) und das eigentliche Videosignal mit der Grauwert- oder Farbinformation des Bildes. Das Videosignal hat normalerweise einen Hub von etwa 1 Volt Spannung. Davon besitzt das Synchronsignal einen Anteil von 0.3 Volt nach unten und das Videosignal einen Anteil von 0.7 Volt nach oben. Der analoge Frame Grabber definiert nun nach jedem Synchronsignal mittels einer Referenzspannung die sogenannte Schwarzschulter, die normalerweise mit dem Blanking übereinstimmt, als Nullpunkt, bei dem das Bild völlig dunkel ist. Bei vollständiger Ausnutzung des Videosignalpegels würden dann schwarze Bildteile den Spannungswert Null Volt haben und weiße Bildteile den Spannungswert 0.7 Volt: der Spannungsbereich [0..0.7] Volt würde auf den Grauwertebereich (Pixelwertebereich) [0..255] abgebildet. Mit der Kontrast- und Helligkeitsverstellung kann nun jedoch ein bestimmtes Band dieses Spannungsbereiches auf den vollen Grauwertebereich gespreizt werden. Dabei kann z. B. ein zu niedriger Kontrast des Bildes über die Verringerung des Umfanges des ausgewählten Spannungsbereiches verbessert werden. Der aktuell ausgewählte Bereich des Videosignales, der bei der Bildübernahme digitalisiert und auf den Grauwertebereich gespreizt wird, wird in der kleinen Graphik oben links in der Dialogbox als dunkler Streifen angezeigt. Eine optimale Einstellung von Verstärkung und Helligkeit bei gegebenen Videosignal ist erreicht, wenn der gesamte, im jeweiligen Bild vorkommende Umfang des Videosignales auf den vollen Grauwertebereich gespreizt wird.

Die Einstellung von Kontrast und Helligkeit wird durch eine vor der Bildübernahme gewählte spezielle Belegung der Farb- oder Grauwert-Tabelle vereinfacht (Frame Grabbing Look-Up-Table, siehe Kapitel LUT). Hierbei wird der Pixelwert "0" von Schwarz zu Blau gesetzt und der Pixelwert "255" von Weiß zu Grün. Man sieht damit auch aus größeren Entfernungen sehr deutlich am Monitorbild, ob bestimmte Bereiche des eingelesenen Bildes untersteuert (blau) oder übersteuert (grün) sind und kann mit Verstellung der Kamerablende oder der Beleuchtung darauf reagieren.

Kontrast und Helligkeit können Werte im Bereich [0..255] annehmen. Mittlere Grundeinstellung ist: Kontrast = 0, d. h. ein niedriger Kontrast ohne Verstärkung, und Helligkeit = 128, d. h. eine mittlere Helligkeit. Niedrigere Werte verschieben den digitalisierten Bereich aus dem Videosignal zu höheren Spannungen: das Bild wird dunkler. Mit diesen voreingestellten Werten wird in etwa das gesamte Videosignal von 0..0.7 Volt auf den Grauwertebereich 0..255 abgebildet.

Bei den digitalen Frame Grabbern, die an das picCOLOR-System angepaßt wurden (VIPER, MicroEnable) ist eine Kontrast und Helligkeitseinstellung in der Regel nicht möglich. Bei den meisten modernen digitalen Kameras kann jedoch eine solche Einstellung direkt in der Kamera durchgeführt werden. Hierzu werden normalerweise spezielle Kamerasteuerungsprogramme angeboten.

Die Einstellung von Helligkeit und Kontrast sollte nur verwendet werden, wenn eine Einstellung am Objektiv der Kamera nicht möglich ist. Beste Bildqualität erreicht man mit den Default-Werten, also durch geringe Kontrastverstärkung und mittlere Helligkeit und optimale Kameraeinstellung. Mit schlechten, extrem verstärkten und daher verrauschten Bildern kann man kaum gute Ergebnisse durch noch so aufwendige Nachbearbeitung erzielen. Erst die richtige Einstellung der Kameraobjektive während der Bildübernahme ermöglicht eine sinnvolle Bildverarbeitung und Bildauswertung. Die Einstellung von Kontrast und Helligkeit ist nur bei geeigneten Bildeinlesekarten wirksam.

6.5.1.3. Externe/Interne Synchronisation (Camera Master / Slave)

Analoge Frame Grabber (DALSA/CORECO F64P, VIPER Quad/RGB):

Viele Videoquellen, wie z. B. ein Videorecorder oder das Fernsehen, aber auch einige Videokameras, lassen sich nicht in der Frequenz ändern. Ihr Videosignal ist festgelegt durch die Videonorm oder - beim Recorder - durch die Videonorm des Gerätes, von dem das Signal aufgenommen wurde. Die üblichen Bildübernahmekarten sind intern digital aufgebaut und können daher ihre Frequenz bestenfalls nur in - wenn auch sehr kleinen - Stufen ändern. Dies reicht normalerweise nicht aus, ein stehendes ruhiges Bild zu erhalten. Daher muß sich die Bildübernahmekarte mittels einer speziellen "Gen-Lock"-Schaltung auf die Videoquelle einstellen. Das Videogerät oder die Kamera ist dann "Master" und synchronisiert die Bildeinlesekarte. Das Synchronsignal der Videoquelle ist dabei üblicherweise dem Videosignal aufgeprägt und wird von der Bildübernahmekarte aus diesem extrahiert. Es kann jedoch bei einigen Bildeinlesekarten sein, daß hierzu außer dem Videokabel ein zweites, das Synchronsignalkabel, angeschlossen werden muß. Bei RGB-Farbkameras ist das Synchronsignal oft auf das Grünsignal aufgemischt. Daher stellt sich das System bei RGB-Kamerawahl automatisch darauf ein, das Synchronisationssignal von dort einzulesen. Mit den "Sync. Select"-Schaltern kann jedoch auch jeder andere Eingang eingestellt werden. Bei der F/64P-Karte kann ein Synchronisationssignal auch über den Composite Sync Input (CSI) eingegeben werden, der dann zusätzlich in der Dialogbox erscheint.

Die meisten Videokameras besitzen allerdings auch die Möglichkeit, von einer speziellen Quelle synchronisiert zu werden. Wenn dies möglich ist, sollte diese Betriebsart vorgezogen werden, da es in vielen Fällen zu besseren Ergebnissen bei der Bildübernahme führt. Wichtiger Einsatz ist auch die Anwendung mehrerer Kameras gleichzeitig: wenn zwischen diesen schnell umgeschaltet werden soll, müssen sie vom System alle exakt gleich synchronisiert werden. Bei Synchronisation der Kamera vom System muß zusätzlich das Synchronsignal vom Synchronisationsausgang der Bildeinlesekarte (Sync.-Out) zur Kamera geleitet werden.

"Slave": Mit Einschalten dieses Schalters wird die Videoquelle als Master gesetzt und synchronisiert die dann als "Slave" geschaltete Bildeinlesekarte. Bei den meisten Frame Grabbern ist dies die Default-Einstellung. Bei fehlendem Eingangssignal wird dabei unter Umständen kein Bild angezeigt - der Bildschirm bleibt schwarz. Die Funktion " Slave" kann in diesem Fall mit der Hot-Key-Taste "E" (für "Extern master/slave") aus- und wieder eingeschaltet werden. Bei bestimmter Hardware ist es möglich, daß das System jedoch erst nach Anlegen eines Synchronsignales wieder reagiert und verfügbar ist.

"Master": Mit Einschalten dieses Schalters wird die Videoquelle als Slave gesetzt und wird durch die dann als "Master" geschaltete Bildeinlesekarte synchronisiert. In diesem Fall müssen das Composite Sync.-Signal oder die beiden Horizontal- und Vrtikalsignale an die Kamerasynchronisationseingänge angeschlossen werden.

Sehr schlechte oder schwache Synchronsignale eines Videorekorders, besonders im Standbild-Modus, können, abhängig von der Synchronsignalerkennungs- und abtrennungslogik des eingesetzten Frame Grabbers, oft nur unzuverlässig erkannt werden.

Hinweis: Das Abschalten der Funktion " Slave" ist nur bei geeigneter Bildeinlesekarte wirksam. Bei den meisten einfachen Frame Grabber-Karten, die als sekundäre Frame Grabber an picCOLOR angeschlossen werden, wird automatisch immer durch die Videoquelle synchronisiert.

Digitale Frame Grabber (DALSA/CORECO VIPER Digital, oder SiliconSoftware MicroEnable)

Bei digitalen Frame Grabbern wird in der Regel immer der Pixelclock der Kamera an die Karte geliefert, sodaß hier eine einwandfreie und feste Synchronisation besteht. Dies ist natürlich ein Problem, wenn mehr als eine Kamera angeschlossen werden soll und diese Kameras aufeinander synchronisiert werden sollen, sodaß ein Umschalten exakt während der Austastlücken geschehen kann. Hier wird empfohlen, die Kameras durch externe Synchronisationsgeräte aufeinandereinzustellen. Die MicroEnable-Karte von Silicon Software ist jedoch auch in der Lage, zwei Kameras asynchron einzulesen.

6.5.1.4. Auswahl des Kameraeinganges

Wenn der Frame Grabber mehrere Kameraeingänge besitzt, kann der gewünschte Eingang in der Frame Grabber Dialogbox eingestellt werden. Das gleiche gilt auch für eventuelle Synchronisationseingänge. Diese sind wirksam, wenn die Bildeinlesekarte diese Auswahl erlaubt:

Camera Selection: "0, 1, 2, 3" oder "0, R, G, B": Üblicherweise haben die verwendeten Analog-Digitalwandler vier Eingänge: 0 bis 3, an die verschiedene Kameras angeschlossen werden können. Bei Auswahl der "RGB Camera" in der "Camera Selection" Dialogbox erscheinen statt der Eingänge 1, 2 und 3 die Bezeichnungen R, G und B. Dies deutet an, wie die externen Kameraeingänge mit den Rot-, Grün- und Blaukanälen der Farbkamera beschaltet werden müssen, damit ein RGB-Echtfarbbild in die richtigen Farbspeicher übernommen wird.

Sync. Selection: "0, 1, 2, 3" (oder bei der F/64P-Karte: "0, 1, 2, 3, CSI"): Mit diesen Schaltern kann ausgewählt werden, von welchem Kameraeingang das System das Synchronsignal abgreifen soll. Bei üblichen analogen Videosignalen (BAS, FBAS oder SVHS (Y/C)) ist das Videosignal mit dem Synchronsignal gekoppelt (überlagert): Hier muß der gleiche Eingang als Kameraeingang und als Sync.-Eingang gewählt werden. Dies geschieht bei der F/64P-Karte automatisch. Bei RGB-Kameras kann z. B. das Synchronsignal auf dem Grünkanal aufgemischt sein. In diesem Fall würde man das Synchronsignal vom Grünkanal, d. h. vom Kameraeingang 2 abgreifen. Genausogut kann man jedoch auch externe Synchronsignale einspeisen. Bei der F/64P-Karte kann ein Synchronisationssignal über den CSI-Input (Composite Sync. Input) eingegeben werden. Vorsicht: je nach verwendetem Kamerakabel werden bei der F/64P-Karte die Kameraeingänge mit 1..4 bezeichnet, im picCOLOR-Programm jedoch immer mit 0..3.

6.5.1.5. Shift / Scroll Video

Zwei zusätzliche Eingabefelder dienen zum Feinabgleich des übernommenen Anteiles des Videosignales. Diese sind jedoch nur bei der F64P-Karte und bei der MicroEnable Karte verfügbar:

  • Shift Video: Jede Zeile des Videosignales besteht aus Synchronimpuls, einer Schwarzschulter (Horizontal Blanking) dem eigentlichen Videosignal und wieder einer Schwarzschulter. Die Länge und die Lage des Videosignales relativ zu Schwarzschulter und Synchronimpuls ist nicht bei allen Kameras gleich. Mit dem "Shift Video"-Eingabefeld kann der Beginn der Übernahme nach hinten verschoben werden, falls z. B. bei einer sehr langen Schwarzschulter (Blanking) ein schwarzer Balken am linken Bildrand erscheint.

  • Scroll Video: Jedes Videobild besteht aus Synchronimpuls, einigen Leerzeilen (Vertical Blanking) und den eigentlichen Videozeilen. Die vertikale Länge und Lage des übernommenen Videobildes relativ zum Synchronimpuls kann mit dem "Roll Video"-Eingabefeld verschoben werden.

6.5.1.6. Hot-Key-Funktion

Viele Funktionen des Frame Grabber Dialogfensters können auch mit Hot-Keys aktiviert werden. Achtung: die Hot-Keys sind in der jetzigen Version von picCOLOR noch nicht implementiert!

  • "S" bewirkt die Übernahme eines Einzelbildes (Vollbild bei Interlaced-Kamera), d. h. es wird die Funktion "Snapshot" ausgeführt.

  • "C" startet die kontinuierliche Bildübernahme (Continuous Frame Grabbing).

  • "ESC" wirkt wie "Freeze", d. h. die kontinuierliche Bildübernahme stoppt.

  • "M" startet die Bildmittelung oder Aufintegration (Average/Integrate), je nach Einstellung.

  • "V" startet eine Sequenz-Bildaufnahme (Video).

  • "0", "1", "2", "3" schalten einen der zugelassenen Kameraeingänge.

  • Bei aktivierter RGB-Kamera wirken zusätzlich auch die Tasten "R", "G", "B" wie "1", "2", "3".

  • Kontrast (Contrast=Gain) und Helligkeit (Brightness=Offset) können mit einer Mausbewegung bei gleichzeitigem Drücken der "Shift"-Taste (oder der mittleren Maustaste) und der linken oder rechten Maustaste verstellt werden. "Shift" und linke Maustaste verändert den Kontrast: dabei bewirkt eine Mausbewegung nach oben eine Verstärkung, eine Bewegung nach unten eine Verringerung des Kontrastes. "Shift" und die rechte Maustaste verändert die Helligkeit: Eine Mausbewegung nach rechts erhellt das Bild, eine Bewegung nach links verdunkelt das Bild. Die Auswirkung sieht man an der kleinen Graphik, die den Bereich des Videosignales als dunkles Band hervorhebt, der bei der Digitalisierung vom Rechner eingelesen wird und im Helligkeitsbereich [0..255] gespreizt wird, und bei eingeschalteter kontinuierlicher Bildübernahme auch direkt im Bild, dessen Helligkeit und Kontrast sich in Echtzeit ändert.

  • "E" schaltet die externe Synchronisation ein und aus. Ein: Kamera ist Master, Aus: Kamera ist Slave.

Achtung: nicht alle dieser Funktionen sind bei allen Bildeinlesekarten verfügbar.

6.5.1.7. Besonderheiten bei Benutzung zusätzlicher Frame Grabber:

Bei Benutzung bestimmter Frame Grabber oder zusätzlicher sogenannter "secondary" Video Frame Grabber sind aufgrund der eingeschränkten Hardwaremöglichkeiten einige Funktionen des "Acquire"-Menü nicht wirksam. Die betrifft in der Regel die Funktion "Video-Shift/Scrol", die Einstellung des Synchronisationseinganges, die Bildmittelung oder Bildintegration, die automatische Signalanpassung, die RGB-Bildübernahme mit S/W-Kamera und Farbfiltern sowie die Abschaltung der externen Synchronisation.

Im Falle einer FireWire-Kamera werden intern völlig andere Funktionen verwendet - daher findet man hierzu ein eigenes Menü im File-Menü. Hier, im FireWire-Menü, können alle Einstellungen und auch die Bildübernahme von FireWire-Kameras vorgenommen werden.

6.5.2. Split-Screen Bildübernahme

Mit einigen der programmierbaren Bildeinlesekarten (z. B. F/64P) können Bildausschnitte mehrerer Kameras gemeinsam auf dem Bildschirm kontinuierlich und live dargestellt werden. Je nach benutzter Hardware gibt es verschiedene Möglichkeiten und auch bestimmte Einschränkungen. Mit der F/64P-Karte können hardwarebedingt nur horizontale Bildstreifen übereinander eingelesen werden. Das Split-Screen-Flag muß vor der Aufnahme eingeschaltet sein. Es ist auch in der "Acquire"-Dialogbox schaltbar, wo dann ein "Snap-Shot" ein komplettes Split-Screen-Bild einliest. Auch Bildsequenzen können in Form von Teilbildern mehrerer Kameras eingelesen werden. Diese Funktionen sind im Sequenz-Zusatzmodul beschrieben. Die Split-Screen Bildübernahme ist sehr stark hardwareabhängig und muß daher für jeden Frame Grabber und für jede Kamera speziell eingestellt und optimiert werden. Bitte erkundigen Sie sich hierzu beim picCOLOR-Entwicklungsteam über die Möglichkeiten und den aktuellen Entwicklungsstand.

Natürlich ist es auch möglich, eine Split-Screen-Bildübernahme mit einer einzigen Kamera und einer speziellen Spiegelanordnung aufzubauen. Dies wird dann selbstverständlich mit der normalen einfachen Bildübernahme-Dialogbox gesteuert. Es kann jedoch trotzdem sehr sinnvoll sein, hier in der Split-Screen-Dialogbox die zugehörenden Werte einzutragen, damit andere Funktionen, die auf Split-Screen-Bildern basieren, die notwendigen Informationen bekommen. Dies ist z. B. die 3D-Stereo-Marker-Tracking-Funktion, die dann anhand der "Switch Line" oder "Switch Column" entscheiden kann, ob bestimmte Marker aus den erlaubten Bildbereichen herauswandern.

Vertikale Trennungslinie (Horizontal-Split)

Split-Screen Bildübernahme mit zwei Kameras. Die Bilder liegen horizontal nebeneinander und es kann mit "column" die vertikale Trennungslinie im Bereich [0..n] eingegeben werden. Die Dauer der kontinuierlichen Aufnahme muß in Vollbildern (z. B. 25Hz) eingegeben werden, d. h. die "Frames"-Anzahl von 25 ergibt eine Sekunde. Eine Eingabe von -1 bewirkt eine kontinuierliche Übernahme, die durch den "Freeze"-Befehl gestoppt werden muß. "cam1" und "cam2" sind die Kameraeingänge [0..3] für das linke und rechte Bild.

Horizontale Trennungslinie (Vertical-Split)

Split-Screen Bildübernahme mit zwei Kameras. Die Bilder liegen vertikal übereinander und es kann mit "line" die horizontale Trennungslinie im Bereich [0..n] eingegeben werden. "Frames" ist die Anzahl der kontinuierlich zu übernehmenden Bilder, -1 für unendlich lange Aufnahme. "cam1" und "cam2" sind die Kameraeingänge [0..3] für oberen und unteren Bildstreifen. Die Übernahme zweier oder sogar mehrer Teilbilder übereinander ist nicht so zeitkritisch und kann daher in bestimmten Fällen sogar auch flexibel durch eine MACRO-Funktion gesteuert werden. Hier werden dann einfach bei bestimmten "Video-Scan-Lines" die Kameraeingänge umgeschaltet.

*6.5.3. Stereo-Bildübernahme: (Stereo-Zusatzmodul)

Hier ist die automatisch gesteuerte Aufnahme von Stereobildern möglich. Die beiden Kameraeingänge "cam1" und "cam2" entsprechen den Einstellungen im "Split-Screen"-Menü. "Frames" steuert die Anzahl der live übernommenen Stereobilder. Da je nach Fähigkeiten der Bildeinlesekarte (z. B. bei der F/64P-Karte) die Stereobilder nacheinander aufgenommen werden, erhält man hier unter Umständen die doppelte Aufnahmedauer. Das Stereo-Flag muß vor der Aufnahme eingeschaltet sein. Es ist auch in der "Acquire"-Dialogbox schaltbar, wo dann ein "Snap-Shot" ein komplettes Stereobild einliest. Weitere Informationen findet man im Stereo-Control Menü des Control-Panel: Kapitel 6.10.4.

6.5.4. Acquisition Configuration

Acquisition Configuration für DALSA/CORECO X64CL oder Xcelera Frame Grabber, hier beim Einsatz von zwei Frame Grabbern für Stereo Acquisition

(Die Einheit für den Time Stamp ist noch ein "??" bis zum ersten Aufruf der Acquisition-Funktion und wird dann in der REgel auf "us" gesetzt)

Acquisition Configuration für DALSA/CORECO F64P und Acquisition Configuration für DALSA/CORECO VIPER Digital

Acquisition Configuration für IDS Falcon/Eagle, und schließlich die Acquisition Configuration für die Euresys GrabLink Value und Expert

Mit der "Acquisition Configuration"-Dialogbox hat man die Möglichkeit, bestimmte Funktionen des Frame Grabbers zu konfigurieren. In der derzeitigen Version kann die Art der Echtzeitbilddarstellung bei kontinuierlicher Bildübernahme eingestellt werden, es kann eine spezielle Callback-Funktion zugelassen werden, die jeweils nach einer Übertragung eines Einzelbildes bestimmte Funktionen ausführt, und es können den Einzelbildern einer Sequenz bestimmte Zeitstempel aufgeprägt werden, damit z. B. diese bestimmten Vorgängen oder Zeiten in Echtzeitauswertungen zugeordnet werden können. Das Ein- oder Ausschalten des primären Frame Grabbers oder eines oder mehrerer eventuell zusätzlich eingesetzter sekundärer Grabber kann nur in der allgemeinen Konfigurationsdialogbox im Control Panel durchgeführt werden. (siehe auch Kapitel 6.10.3 Configuration). Die Art der Bilddarstellung während der Bildübernahme kann für normale Bilder und für Bildsequenzen getrennt voneinander eingestellt werden, da hier in der Regel unterschiedliche Anforderungen existieren.

Der Wert für "Acquisition Time Out" wird für viele Bildeinlesefunktionen intern verwendet. Wenn z. B. keine Kamera angeschlossen ist und trotzdem versucht wird, ein Bild einzulesen, so kann hiermit verhindert werden, daß das System ewig auf die Bildübernahme wartet. Bei der Sapera-Library von CORECO, die z. B. für die VIPER und X64-Kartenserie verwendet wird, kann noch ein zweiter TimeOut-Wert gesetzt werden, der Communication-Timeout. Dieser Timeout Wert wird intern benutzt, um der Treibersoftware genügend Zeit zu geben, z. B. sehr lange Bildsequenzen zu definieren und als Acquisitionsfähigen Bildsequenzspeicher zusammenzufügen. Dies kann eine Weile dauern (bei 10.000 Bildern auch schon mal im Minutenbereich...) und wird bei zu niedrigem Wert durch einen Timeout-Fehler belohnt. Eigentlich sollte man als Benutzer diesen Wert nicht ändern. Er wurde jedoch trotzdem hier zur Verfügung gestellt, da es möglich ist (nicht getestet), daß man hiermit auch den Timeout einstellen kann, wie lange der Frame Grabber auf ein Bild wartet, wenn die Kamera auf "Frame on Demand"-Modus geschaltet ist und lange kein Triggersignal kommt. Natürlich darf der Frame Grabber in einem solchen Fall nicht unendlich lang warten. Es kann jedoch sein, daß hier mehrere Sekunden ein sinnvoller Wert ist.

Live Bilddarstellung:

Die Live-Bilddarstellung kann hier unterschiedlich für normale 2D- und Echtfarb-Bildspeicher eingestellt werden und für Bildsequenzen.

  • Show each image: Bei dieser Einstellung wird jedes von der Kamera kommende Bild von der Graphikkarte dargestellt. Bei normalen Fernsehnormkameras mit 25 oder 30Hz ist dies sicherlich sinnvoll, bei High Speed Kameras kann dies jedoch problematisch werden. So macht diese Einstellung kaum Sinn bei der Pulnix TM6710-Kamera im 350Hz Modus. Speziell bei langsameren Rechnern und/oder nicht so leistungsfähigen Graphikkarten kann hierbei derart viel Rechenzeit von der CPU abverlangt werden, daß die Reaktionszeiten deutlich langsamer werden. Im Extremfall kann es unmöglich werden, die Bildübernahme noch mit der Maus abzubrechen!

  • Use Display Timer for Display: Hier wird intern ein Zeitgeber mit z. B. 50 Hz zur Bilddarstellung benutzt. In der Regel ist dies eine vernünftige Bilddarstellungsgeschwindigkeit. Dies ist daher die Defaulteinstellung. Für Hochgeschwindigkeitskameras sollte geprüft werden, ob der Bildschirmaufbau nicht zuviel Zeit kostet.

  • Abschalten der Bilddarstellung. Diese Einstellung ist eigentlich nur bei Echtzeitauswertungen sinnvoll, wenn die Auswertegeschwindigkeit optimiert werden soll und kein Interesse besteht, das Live-Bild darzustellen.

Callback-Funktion:

Eine Callback-Funktion ist eine kurze Programmfunktion, die am Ende eines jeden eingelesenen Bildes ausgeführt werden kann. Innerhalb dieser Funktion können z. B. Timer ausgelesen werden, deren Zeitwerte dann den Einzelbildern einer Bildsequenz aufgeprägt werden, oder es können bestimmte Events gesetzt werden, die für Echtzeitauswertungen benötigt werden. Nicht jede der eingesetzten Bildeinlesekarten hat die Möglichkeit, eine solche Callback-Funktion aufzurufen. In diesem Fall ist dann der Auswahlpunkt "Use Callback Funktion" in Grau dargestellt und nicht anwählbar. Trotzdem kann in der Regel auch hier ein Zeitstempel auf die Bilder einer Sequenz oder einer Echtzeitauswertung aufgeprägt werden. Dies geschieht dann intern über eine Abfragefunktion, die das Bildende feststellen kann und dann ebenfalls Timerzustände auslesen kann oder Events setzen kann. Hier hat man jedoch etwas weniger Flexibilität und vielleicht auch etwas weniger an zeitlicher Genauigkeit, wobei diese Unsicherheit jedoch in der Regel nur wenige Microsekunden beträgt und daher nicht ins Gewicht fällt.

Zwischenspeicherung im Frame Grabber (Try using internal buffers):

Eine Zwischenspeicherung der Bilder im Frame Grabber ist sinnvoll, wenn bei Hochgeschwindigkeitskameras die Transferrate über den Bus so hoch ist, daß es hier ab- und zu zu Verzögerungen kommen kann. Diese Funktion wird von DALSA/CORECO in der Sapera-Bibliothek zur Verfügung gestellt. Hierbei wird dann bei Start der Acquisitionsfunktion versucht, die angegebene Anzahl von Bildspeichern auf dem Frame Grabber zu initialisieren.

Art der Zeit-Stempels zur Bildidentifikation:

Der PC-interne Hochgeschwindigkeitszähler oder eine eventuell eingebaute Timer/Counter-Karte kann zur Erzeugung von Zeitstempeln für jedes eingelesene Bild einer Sequenz oder zur Bildidentifikation bei einer Echtzeitauswertung benutzt werden.

  • Die einfachste Art eines Zeitstempels zur Bildidentifikation ist die laufende Bildnummer bei der Aufnahme einer Sequenz oder bei einer Echtzeitauswertung. Wenn z. B. bei einer Echtzeitauswertung aus Zeitgründen ein Bild übersprungen wurde, so kann dies an der Bildnummer erkannt werden und bei einer Auswertung der Ergebnisdatensätze berücksichtigt werden, z. B. durch Interpolation der fehlenden Werte. Achtung: bei der F64P-Karte kann die richtige Funktion der kontinuierlichen Bildnummer noch nicht garantiert werden.

  • Der High Resolution Timer wird dabei mit einer Genauigkeit von 0.1ms abgespeichert. Seine Frequenz kann in der Configuration Dialogbox im Control-Panel abgelesen werden. Der Zeitstempel kann in der Sequenz-Player-Dialogbox abgelesen werden oder über ein MACRO-Programm ausgegeben werden. Da intern ein 32Bit-Unsigned-Integer-Zahl benutzt wird, wird nach etwa 60 Stunden ein Überlauf eintreten. Da der Timer erst beim Aufruf der Callback-Funktion ausgelesen wird, kann es sich hierbei um leicht verzögerte Werte handeln, wenn WINDOWS die Callback-Funktion nicht rechtzeitig durchläßt. Beim Bildaufbau der Graphikkarte kann dies z. B. auch Verzögerungen im Bereich von Millisekunden bewirken.

  • Von einigen Frame Grabber Herstellern, z. B. von DALSA/CORECO bei der Sapera-Bibliothek oder Euresys bei der MultiCam-Bibliothek, wird ein Zeitstempel zur Verfügung gestellt, der die eingelesenen Bilder sofort markiert, nicht erst nach Aufruf der Callback-Funktion. Damit sind diese Zeitstempel sehr exakt. Da dieser Zeitstempel in der Regel im Mikrosekundentakt läuft, gibt es jedoch schon nach etwa 45 Minuten einen Überlauf, d. h. es wird wieder von Null an gezählt.

  • Die Timer/Counter-Karte muß vor der Benutzung initialisiert und programmiert werden. Je nach Fähigkeiten der Karte sind hier verschiedene Zähl- und Timingfunktionen einstellbar. Z. Zt. ist die DriverLinx-Software der Firma Keithley sowie die PCI8255/8254-Karte der Firma Decision-Computer-International implementiert. Hier ist z. B. die CTM05-Karte als Timer/Zähler gut geeignet, jedoch über den ISA-Bus nicht mit sehr hoher Geschwindigkeit auslesbar. Hierzu empfielt es sich, Hochgeschwindigkeits-PCI-Karten zu benutzen. Sprechen Sie bei Bedarf mit dem Entwicklungsteam.

Calculate Frame Rate:

mit Hilfe des eingestellten Zeitstempels (nur für HighRes-Timer und DALSA/CORECO-TimeStamp oder Euresys-TimeStamp) kann die tatsächliche Frame Rate beim Bildeinlesen als Mittelwert berechnet werden. Da dies ein wenig Zeit kostet, kann man dieses Feature abschalten.

Poll I/O-Line in Callback:

Während der Callback-Funktion, d. h. für jedes eingelesene Bild, kann eine I/O-Line der digitalen I/O-Karte eingelesen werden. Der Zustand dieser Leitung (0 oder 1) kann dann z. B. beim Echtzeit-2D/3D-Tracking auf den Datenfile geschrieben werden, um etwa zeitliche Zuordnungen durchführen zu können. Häufigste Nutzung ist z. B. die Einspeisung eies "Enable"-Signales. Wenn eine ständige Bildübernahme gestartet wird, kann dann über das Enable-Signal definiert werden, wann eine bestimmte Messung tatsächlich gültig ist.

General I/O:
Die meisten Bildeinlesekarten besitzen einen oder mehrere Input/Output-Signalleitungen zum Triggern des Bildbeginns durch externe Events oder zum Auslösen von Blitzgeräten. Diese I/O-Kanäle werden über bestimmte Optionen definiert, initialisiert und eingeschaltet. So kann eine Triggerung z. B. über die Trigger-Dialogbox eingeschaltet werden. Hier in der "Acquisition Configuration"-Dialogbox wird lediglich dargestellt, ob und welche I/O-Kanäle zur Verfügung stehen.

Wait Timeout:
Bei nicht angeschlossener Kamera oder sonstigen Problemen, bei denen aus bestimmten Gründen kein Bild eingezogen werden kann, muß ein Timeout definiert sein, damit die Treiber-Software des Frame Grabbers nicht unendlich lang auf das folgende Bild wartet. Je nach Art des eingesetzten Frame Grabbers wird dieser Wert unterschiedlich benutzt. In jedem Fall soll dieser Wert deutlich länger als die Einlesezeit für ein einziges Bild sein (in Millisekunden).

6.5.5. Select Camera: Einstellung des Kameratyps

Eine weitere Dialogbox dient zur Einstellung des Kameratyps. Je nach Fähigkeiten des Frame Grabbers können hier analoge oder digitale Kameras gewählt werden. Die Wahl kann dann entweder direkt über das Einschalten bestimmter Wahlschalter geschehen oder aber über das Laden bestimmter Kamera-Definitionsfiles, die vom Kartenhersteller zur Verfügung gestellt werden oder die in bestimmten Fällen auch vom Benutzer selbst erstellt werden können.

Je nach eingesetztem Frame Grabber kann die Bildübernahme bei verschiedenen wählbaren oder bei beliebigen einstellbaren Auflösungen und Bildwiederholfrequenzen geschehen. Dies setzt natürlich die Eignung der eingesetzten Bildeinlesekarte voraus. Bei der X64CL oder Xcelera-Kartenserie von DALSA/CORECO wird dies dem System über spezielle Kamera-Konfigurationsdateien während des Programmlaufes mitgeteilt. Prinzipiell wäre auch eine direkte Einstellung aus dem picCOLOR-Programm heraus möglich. Dies ist jedoch nicht implementiert, da die Konfigurierung über Kamera-Files viel einfacher ist. Für die F/64P-Karte kann dies entweder vor dem picCOLOR-Programmstart mit dem von DALSA/CORECO mitgelieferten Kartentreiberprogramm durchgeführt werden, oder es kann auch über ladbare Kameratreiberdateien oder in bestimmten Fällen auch über eine direkte Konfigurierung im picCOLOR-Programm geschehen. Bei der MicroEnable-Karte von Silicon Software muß die angeschlossene Kamera z. Zt. noch während der Programmkompilation mitgeteilt werden. Dies galt jedoch für die ältere MicroEnable I Karte: hier sollte man SiliconSoftware kontaktieren, um den Stand der Dinge für die neue MicroEnable IV Karte zu erfahren. Bei den Karten der Firma National Instruments (NI1429 und 1430) muß die Art der Kamera über ein spezielles Programm eingestellt werden. Bei den Karten von IDS können nur Standard-Videokameras mit NTSC oder Pal Norm angeschlossen werden. Je nachdem, welche Bildeinlesekarte Sie verwenden und welcher Modus auf dieser Karte eingestellt ist, sehen Sie das eingelesene Bild direkt im aktuellen Bildfenster auf Ihrem Graphik- und Bildverarbeitungsmonitor oder auf dem an der Bildeinlesekarte zusätzlich angeschlossenen VGA- oder Kontroll-Monitor.

Achtung: Denken Sie daran, daß bei einer Kamera mit mehreren Auflösungs- oder Frequenzeinstellungen nicht nur picCOLOR bzw. der Frame Grabber auf den gewünschten Modus umgestellt werden muß, sondern daß in der Regel auch die Kamera programmiert werden muß. Dies funktioniert entweder hardwaremäßig über Schalter an der Kamera oder in den meisten Fällen (z. B. bei der Pulnix TM6710, den Kameras der Firma SVS-Vistek, den Hochgeschwindigkeitskameras der Firma Mikrotron usw.) auch über spezielle vom Kamerahersteller gelieferte Software.

Xcelera und X64CL Frame Grabber (DALSA/CORECO Sapera Software):

Camera Selection dialogbox für DALSA/CORECO Xcelera und X64CL

Mit den Xcelera- und X64CL-Karten der Firma DALSA/CORECO können unterschiedliche nach dem CameraLink-Standard arbeitende Kameras oder auch nach anderen Standards arbeitende Kameras angeschlossen werden. Hier werden nur die CameraLink-Karten beschrieben. Die Xcelera und X64CL gibt es in der Version Dual für zwei Base-Kameras oder eine Medium Kamera, oder in der Full Version für eine Base, Medium, Full- oder 10Tap-Kamera. Außerdem gibt es die älteren X64CL-Karten in einer einfacheren Version mit nur einem Memory-Channel oder in einer aufwendigeren und schnelleren Version mit zwei Memory-Channels, bei der auch der Speicher bis auf 2GB pro Karte ausgebaut werden kann. Die X64CL-EM Full Karte wurde bis zu einer Übertragungsgeschwindigkeit von 430MB/s getestet. Hierzu muß sie in einem PCI-Bus mit mindestens 64Bit und 66MHz Bandbreite stecken. Die erreichbare Bandbreite hängt allerdings sehr vom Mainboard-Chipset ab. Die Xcelera-Karten wurden im PCIexpress-x4-Bus bis zu einer Übertragungsgeschwindigkeit von 685MB/s getestet. Die Xcelera- und X64CL-Karten stellen eine Reihe von Zusatzoptionen zur Verfügung, die größtenteils vom picCOLOR-Programm unterstützt werden. Dies sind z. B. spezielle Zeitstempel für jedes Bild, bestimmte Stereo-Synchronisationsmechanismen, unterschiedliche Spezialanpassungen für Hochgeschwindigkeitskameras wie der MC1310 von Mikrotron oder der A504 von Basler oder der CMC-1300 von Vosskühler usw. Die Xcelera- und X64CL-Karten sind relativ gut kompatibel miteinander - Stereo-Acquisitionen mit je einer Xcelera und einer X64CL-Karte funktionieren einwandfrei. Hierbei muss allerdings die unterschiedliche maximale Bandbreite der Karten berücksichtigt werden.

Neben einigen fest installierten Kameras (linke Seite oben) kann man über sogenannte Camera Configuration Files (Extensions .CVI und .CCA, die neuerdings zu einem .CCF-File zusammengefaßt wurden) beliebige weitere Kamerakonfigurationen selektieren. Nach der Selektion müssen die Files explizit mit dem "Load..."-Schalter geladen werden. Mehr zu diesen Kamera-Konfigurationsfiles finden Sie weiter unten bei der Beschreibung der Viper Digital Karte.

Im Stereo-Betrieb gibt es entweder zwei getrennte Frame Grabber oder einen Grabber mit zwei Kameraeingängen. Der aktive Eingang für die Konfiguration wird über die Radio-Buttons "Activate Acquisition Device 0/1" eingestellt. In diesem Stereo-Teil der Dialogbox kann außerdem der Stereo-Modus (Split-Screen mit einer Kamera oder Two Screen mit zwei Kameras) und über "Stereo Options" die zugehörigen Parameter eingestellt werden. Die Einstellung einer Sync.-Line für die Stereo-Synchronisation ist eine veraltete Methode zur Synchronisation. Hierbei wird das Kamera-Triggersignal zusätzlich an eine digitale I/O-Line angeschlossen, die von der Software gepollt wird. Hiermit wird sichergestellt, daß nicht zufällig genau während einer Triggersignalflanke die Bildacquisition eingeschaltet wird. Dies könnte nämlich zur Folge haben, daß aufgrund von minimalen Verzögerungen der Funktionsausführung, z. B. durch Windows-Task-Switching, ein Frame Grabber diese erste Flanke noch sieht während der andere Grabber dieselbe Flanke nicht mehr erkennt und erst mit dem nächsten Triggersignal beginnt. Dieses Verfahren funktioniert recht gut bei Bildfrequenzen bis zu 1000fps. Neuerdings wurde allerdings von DALSA/CORECO eine sogenannte Master/Slave-Steuerung von zwei oder mehr Karten implementiert, die noch sicherer und noch schneller reagiert. Hierbei werden zunächst alle Slave-Grabber gestartet und als letztes der Master-Grabber. Sobald dann der Master-Grabber ein Triggersignal empfängt, sendet er innerhalb von Nanosekunden dieses Triggersignal an alle Slave-Grabber weiter. Zur Einstellung dieses Modus werden spezielle Kamera-Konfigurationsfiles geladen.

Wenn, wie bei der Dual-Base-Karte oder bei Einsatz von zwei Frame Grabbern, zwei Kameraanschlüsse vorhanden sind, so können diese nach Umschaltung mit der "Activate Acquisition Device 0" oder "1" völlig unterschiedlich konfiguriert werden, d. h. man kann zwei völlig unterschiedliche Kameras anschließen. Zur Steuerung durch die picCOLOR-Stereo-Software wird allerdings empfohlen, für Stereoaufnahmen immer zwei aufeinander synchronisierte Kameras anzuschließen. Wenn nicht im Stereo-Modus eingelesen wird, so wird immer vom aktivierten Kameraanschluß eingelesen. Im Stereo-Modus kann hier die Bildreihenfolge (links/rechts) umgeschaltet werden.

VIPER Digital (DALSA/CORECO Sapera Software):

Camera Selection dialogbox für DALSA/CORECO VIPER Digital

An die VIPER Digital werden ausschließlich Digitalkameras angeschlossen. Für jeden Kameratyp muß ein Satz hierfür angepaßter Definitionsfiles geladen und initialisiert werden. Dies sind jeweils ein Kamera-Definitionsfile (Extension .CCA) und ein Video-Definitionsfile (Extension .CVI). Diese Files haben in der Regel denselben Namen (z. B. den Kameranamen) und unterscheiden sich nur durch die Extension. In der Dialogbox können diese Files über die Buttons "Set Camera File" und "Set Video File" ausgewählt werden. Mit dem Button "Load Selected Cam/Vic Files" werden diese Files dann geladen und das System wird damit initialisiert. Eine kurze Erfolgsmeldung quittiert korrektes Laden und Initialisieren der Kameradefinition. Diese Files werden im picCOLOR-Systemverzeichnis erwartet, können jedoch auch an anderen Stellen auf der Festplatte gespeichert sein. In bestimmten Fällen, wenn eine spezielle Kamera mehrere Video-Modi besitzt, kann es sein, daß mehrere solcher Sätze von .CCA und .CVI-Files zur Verfügung stehen. Dies ist z. B. bei der Hochgeschwindigkeitskamera Pulnix TM6710 der Fall, bei der unterschiedliche Videofrequenzen und Auflösungen einstellbar sind (hier z. B. 120Hz, 240Hz, 350Hz). Für diese und für bestimmte andere, häufig in Zusammenhang mit picCOLOR eingesetzte Kameras, wurden bereits spezielle Wählschalter in der Dialogbox vorgesehen, die die Auswahl erleichtern.

Wenn eine nicht vom Hersteller durch .CCA und .CVI-Files unterstützte Kamera angeschlossen werden soll, so kann der Konfigurationsdatensatz mit dem von CORECO mitgelieferten CameraExpert.EXE-Programm interaktiv erstellt werden. Hierbei kann ein Live-Bild angezeigt werden, so daß man die Einstellung direkt überprüfen kann. Zur Erstellung gültiger .CCA und .CVI-Files mit diesem Programm muß jedoch genaue Information über alle Kameraparameter vorhanden sein, speziell die Art der Kanäle (Channels und Taps), die Frequenzen und Auflösungen in horizontaler und vertikaler Richtung und Art und Polarität der Synchronsignale. Neuerdings wird statt der .CVI und .CCA-Files nur noch ein einziger, zusammengefaßter .CCF-File verwendet. Dieser muß dann zweimal selektiert werden, jeweils als Camera- und als Video-Konfigurationsfile.

Die VIPER Digital-Karte hat nur einen einzigen Kameraanschluß. Dieser kann allerdings Spezialkameras mit bis zu zwei Kanälen und bis zu 8 Taps (Parallelausgängen) bedienen. Dieses Feature könnte man sich bei exakt pixelsynchron aufeinander eingestellten Kameras zunutze machen, um mehrere Kameras anzuschließen und deren Bilder gleichzeitig einzulesen. Hiermit werden Stereoauswertungen möglich. Da es inzwischen genügend neuere Frame Grabber mit Stereo-Eingängen auf dem Markt gibt, wird diese Möglichkeit aber wohl kaum noch interssant sein.

VIPER Quad / VIPER RGB (DALSA/CORECO):

Die analogen Geschwisterkarten der VIPER Digital werden softwaremäßig genauso behandelt wie die digitale Karte und sollten daher ohne Änderung der picCOLOR-Software funktionieren. Ein Test wurde allerdings bisher noch nicht durchgeführt. Fragen Sie bei Bedarf das Entwicklungsteam!

F64P Frame Grabber (DALSA/CORECO Oculus Software):

Camera Selection dialogbox für DALSA/CORECO F64P

Die F64P-Karte der Firma DALSA/CORECO wird in der Regel als analoger Frame Grabber verwendet. Daher wird hier im picCOLOR-Program auch nur eine Unterstützung der Analogfunktionen geboten. Es gibt jedoch für die F64P auch digitale Zusatzkarten, deren Funktionalität auf Wunsch implementiert werden kann. Die F64P hat 4 analoge Eingänge, die direkt in der Acquisition-Dialogbox ausgewählt werden können. Für spezielle Kameratypen wird die F64P-Software ähnlich wie bei der VIPER-Kartenserie mit Definitionsfiles konfiguriert. Hier wird jedoch lediglich ein File pro Kamera benötigt, nämlich ein File mit der Extension .VID. Für sehr viele Spezialkameras werden solche .VID-Files bereits von DALSA/CORECO geliefert. Diese können z. B. über das F64P-Konfigurationsprogramm festgelegt werden, das bei der Installation der F64P-Karte auf dem PC automatisch installiert wurde (siehe START/Programme/Oculus-F64P-Driver/F64P-Configuration). Theoretisch lassen sich diese Konfigurationsfiles jedoch auch bei laufendem picCOLOR-Programm laden, allerdings wird diese Möglichkeit hier nicht unterstützt. Statt dessen werden vom picCOLOR-Programm durch direkte interne Programmierung verschiedene Kameras unterstützt. Z. Zt. sind dies alle normalen Kameras mit Fernsehnorm nach europäischem und amerikanischem Standard, also CCIR oder RS170 (oder EIA), jeweils mit 50 oder 60 Hz Interlaced-Signal. Allerdings wird auch der Non-Interlaced-Modus unterstützt. Neben diesen genormten CCIR oder EIA-Kameras können auch andere, nicht die Normsignale erzeugende Kameras angeschlossen werden. Die Implementation kann nach Absprache individuell vorgenommen werden. Z. Zt. sind hier die Full-Frame Kamera KP-F1e/k (Hitachi) und die JAI-CV-M30 mit bis zu 360 Hz Bildfrequenz aufrufbar. Mit der Funktion "Inspect Vidin" wird bei der F64P das eingestellte Timing überprüft.

  • CCIR: Normale europäische Fernsehnorm, jedoch nur in Schwarz/Weiß. 50Hz, Interlaced, mit einer Auflösung von 768*576 Pixeln.

  • RS170 (EIA): Normale amerikanische Fernsehnorm, jedoch nur in Schwarz/Weiß. 60Hz, Interlaced, mit einer Auflösung von etwa 648*484 Pixeln.

  • Non-Interlaced: Der von der Norm vorgesehene Interlace-Modus kann unter bestimmten Bedingungen abgeschaltet werden. Die Kamera liefert dann statt der zwei Halbbilder das gleiche Halbbild immer wieder, mit doppelter Frequenz. Man verliert also vertikale Auflösung, gewinnt jedoch Zeitauflösung. Die Kamera muß hierfür geeignet sein und - normalerweise - von der Bildverarbeitungskarte synchronisiert werden, d. h. die F64P-Karte muß auf den "Master"-Modus eingestellt werden.

  • KP-F1: Progressive Scan Kamera von Hitachi mit einem an die CCIR-Norm angelehnten Signal. 25Hz Vollbilder mit 768*576 Pixeln.

  • CV-M30: Interlaced High Speed Kamera von JAI. Es sind Interlaced und Non-Interlaced Modi einstellbar bei Bildfrequenzen von 30 Hz bis 360 Hz und Bildauflösungen von 752*484 Pixeln bis herunter zu 752*67 Pixeln bei maximaler Bildfrequenz.

Neben der Wahl des speziellen Kameratyps, die in der Regel eine Wahl der Kamerafrequenzen und -timings ist, kann auch innerhalb einer bestimmten Frequenzwahl eine Auswahl des Kamerasignales getroffen werden. So kann z. B. bei CCIR-Videosignal ein Schwarz/Weiß-Kamera oder eine RGB-Farbkamera angeschlossen werden. Da die F64P nur einen Analog/Digital-Wandler zur Bildaufnahme besitzt, gibt es hier bestimmte Einschränkungen:

  • B/W Camera: Bildübernahme mit einer normalen Schwarz/Weiß-Kamera: Dies ist der normale und einfachste Fall einer Bildübernahme: Die Kamera kann an einen der Kameraeingänge des Frame Grabbers angeschlossen sein. Sie müssen dann diesen Eingang in der Acquisition-Dialogbox mit dem entsprechenden Schaltknopf einstellen. Sie haben die Möglichkeit, ein Einzelbild (Snapshot) zu übernehmen oder eine kontinuierliche Bildübernahme zu starten.

  • RGB Camera: Bildübernahme mit Farbkamera (RGB-Farbkamera): Diese Funktion ist anzuwählen, wenn mit einer Farb-Kamera (z. B. RGB-Kamera) ein Farbbild mit 24-Bit Farbtiefe aufgenommen werden soll. Die Kamera muß dazu entsprechend angeschlossen sein. Es gibt zwei Arten von Farbkameras: RGB-Kameras besitzen getrennte Rot-, Grün und Blau-Ausgänge, bei FBAS- oder Y/C-Farbkameras sind die Farbanteile im Videosignal gemischt. Die F64P ist nur für RGB-Kameras geeignet. Hierzu muß dann "Rot" an "Kamera-Input 1", "Grün" an "Kamera-Input 2" und "Blau" an "Kamera-Input 3" angeschlossen werden. "Kamera-Input 0" bleibt unbeschaltet. (Achtung: am Original-Kamerakabel von CORECO werden die Eingänge mit 1..4 bezeichnet). Die Kontrast- und Helligkeitseinstellung (Gain und Offset) wirkt auf alle Farbanteile gleich. Es kann also nicht eine unterschiedliche Einstellung für die einzelnen Farbauszüge eingestellt werden. Falls dies aus bestimmten Gründen - etwa zum Weißabgleich mit Spezialkameras oder für andere Zwecke - notwendig erscheint, kann diese Funktion nach Rücksprache ermöglicht werden. Bei Benutzung der F64P-Karte mit einer RGB-Kamera besteht die Möglichkeit einer direkten Ansicht der einzelnen Farbauszüge (RGB), indem die Kameraeingänge mit den "Camera Input"-Schaltern oder den zugehörigen Hot-Key-Tasten (0..3,R,G,B) umgeschaltet werden. Nach Inspektion dieser Anteile kann mit der Snapshot-Funktion ein vollständiges RGB-Bild übernommen werden. Das RGB-Bild wird im 24-Bit-RGB-Speicher abgelegt. Die Weiterverarbeitung von 24-Bit RGB-Bildern geschieht dann standardmäßig in den einzelnen Rot-, Grün- oder Blauanteilen oder nach Umwandlung in einen anderen Farbraum in der dort spezifischen Notation (z. B. HSI oder YIQ: siehe unter Echtfarbverarbeitung). Die Darstellung von 24-Bit Echtfarbbildern hängt von der Einstellung der System-Graphikkarte ab, die normalerweise auf 24-Bit oder auf 32 Bit gestellt ist. Bei Einstellung auf 8 Bit ist die Farbdarstellung nur indirekt möglich. Automatisch wird dann die Methode der Dither-Rasterung benutzt, die eine recht ordentliche Darstellung von 16.8 Millionen Farbabstufungen erlaubt. Die Aufnahme der RGB-Anteile geschieht direkt nacheinender, also mit 1/3 der Kamerafrequenz, da der Grabber wie schon beschrieben nur einen A/D-Wandler besitzt.
  • Eine weitere Möglichkeit ist die Aufnahme von Falschfarbenbildern, d. h. von mehreren getrennten Spektralkanälen über die verschiedenen Kameraeingänge. Da diese Möglichkeit auch für andere Systeme und Frame Grabber interessant sein kann, wird sie unten im Hinweiskasten "Color Filter" beschrieben und damit etwas hervorgehoben:
Acquisition with Color Filters

Einsatz einer S/W-Kamera zur Aufnahme von mehrkanaligen Bildern durch aufeinanderfolgende Anwendung spezieller Farbfilter: Auch mit einer einfachen Schwarz/Weiß-Kamera ist es möglich, hochauflösende 24-Bit RGB-Farbbilder zu erhalten. Mittels verschiedener Farbfilter werden die einzelnen Farbanteile Rot, Grün und Blau herausgefiltert. Die Software unterstützt den Benutzer bei der Übernahme eines solchen Bildes. Da die Aufnahme nach dieser Methode relativ komplex und langwierig ist - es müssen schließlich drei Farbauszüge nacheinander aufgenommen werden und jedesmal müssen die Farbfilter ausgewechselt werden - wird zu diesem Verfahren im Normalfall nicht geraten. Interessant wird diese Aufnahmetechnik jedoch bei Spezialanwendungen. Wenn z. B. nicht mit den normalen Rot-, Grün- und Blauanteilen gearbeitet werden soll sondern mit Falschfarben-Auszügen oder mit verschiedenen Spektralbereichen im Infrarotbereich, dann kann dieses Verfahren die einzig mögliche Lösung sein. Interessant ist dies besonders durch die hohe Empfindlichkeit normaler CCD-Kameras im nahen Infrarotbereich bis ca 1200nm. Unterschiedliche Farbfilter gibt es von den führenden Filterherstellern (z. B. Wratten-Filter von KODAK).

Die Software fragt nacheinander die Farbanteile Rot, Grün und Blau (oder bei Falschfarben die Farbanteile a, b, c) ein und speichert die Farbauszüge automatisch in den zugehörigen Speicherbereichen. Wichtig ist natürlich ein genauer Weißabgleich, der hier vom System vorgenommen werden muß. Hierzu muß der Benutzer allerdings Hilfestellung geben: Vor der endgültigen Bildübernahme gibt das System dem Benutzer die Möglichkeit, das Bild grob einzustellen und Ausschnitt und Tiefenschärfe zu wählen sowie Kontrast und Beleuchtung angenähert vorzuwählen. Danach fragt das System mit zwei Fadenkreuzen jeweils eine schwarze und eine weiße Bildfläche ein. Mit dem durchgezogenen Fadenkreuz (1) wird eine schwarze (dunkle) Fläche angewählt, mit dem gestrichelten Fadenkreuz (2) eine weiße (helle) Fläche. Die Flächen sollten nicht kleiner als etwa 5 Pixel im Durchmesser sein. Es ist geplant, das Programm dahingehend zu erweitern, daß mit einem speziellen Testbild unter einer dann nicht mehr zu verändernden Beleuchtung ein Weißabgleich vorgenommen wird, der dann abgespeichert wird und für alle nachfolgenden Farbbildübernahmen konstant gehalten wird, bis z. B. nach einer Änderung der Beleuchtung eine neuer Testabgleich notwendig wird. Dieses Verfahren sollte bei relativ ähnlichen Bildern, z. B. bei Mikroskopbildern mit gleicher Vergrößerung und Beleuchtung zu relativ guten Ergebnissen führen. Zur Programmierung bitten wir um Rücksprache.

Nach diesem Weißabgleich, d. h. der Eingabe der dunklen und hellen Flecken, beginnt dann die eigentliche Bildübernahme: Das System fragt nacheinander die drei Farbfilter an, übernimmt den jeweiligen Farbauszug mit der für einen Weißabgleich automatisch richtigen Verstärkungseinstellung und gibt dem Benutzer noch die Möglichkeit, die einzelnen Farbauszüge zu mitteln, um eventuelles Bildrauschen zu vermindern. Dies wird üblicherweise besonders in hochfrequenten Kanälen (z. B. Blaukanal) notwendig sein, da CCD-Kameras im Blaubereich (ca 400 nm) unempfindlicher sind (wie übrigens auch das menschliche Auge) und daher erheblich verstärkt werden müssen. Wenn das System sich einmal nicht zwischen zwei Verstärkungsstufen entscheiden kann und mehrfach hin- und herschaltet, dann kann diese Entscheidungsfindung durch Drücken der ESC-Taste abgebrochen werden. Manchmal ist es auch ausreichend, die Beleuchtung ein wenig zu ändern, z. B. bei Kameraübernahme bei Tageslicht durch leichtes Abschatten mit einer Hand aus größerer Entfernung. Eine eventuelle Mittelung geschieht wie üblich im vorher gewählten Benutzerfenster.

Bei speziellen Falschfarben- oder Infrarotbildern muß natürlich auf die jeweiligen Abfragen, ob die richtigen Farbfilter eingesetzt sind, der dann speziell notwendige Filtertyp eingesetzt werden: beim ersten Filter wird das eingelesene Bild in den Rot-Speicher geschrieben, beim zweiten in den Grün-Speicher und beim dritten in den Blau-Speicher. Software für die Bearbeitung im nahen Infrarotbereich befindet sich in der Entwicklung. Dieser Bereich ist z. B. gut geeignet, das Wachstum von Pflanzen zu beurteilen.

Diese Filter-Übernahmefunktion kann nur bei geeigneten Frame Grabbern verwendet werden. Sie kann jedoch so interessant werden, daß die Implemntierung auch für andere Frame Grabber sinnvoll werden kann und mit dem Entwicklungsteam abgesprochen werden sollte.

Euresys GrabLink Value/Expert/Expert II (MultiCam Software):

Mit den GrabLink-Karten der Firma Euresys können unterschiedliche Kameras nach dem CameraLink-Standard angeschlossen werden. Hierbei kann die einfachere GrabLink Value-Karte lediglich eine Kamera in der Base-Konfiguration bedienen, die Expert-Karte entweder zwei Kameras in der Base-Konfiguration oder eine Kamera in der Medium-Konfiguration. Hierbei sind alle möglichem Konfigurationen einstellbar, bis hin zu 48 Bit an Bildinformation, die beinahe beliebig in Taps (Kameraausgänge) und Bitbreiten aufgeteilt werden können, z. B. 1 Tap mit 8 Bit, oder bis zu 4 Taps mit je 12 Bit und sogar Farbkameras mit 8 bis 12 Bit Farbtiefe je Farbkanal.

Von Euresys werden für beinahe alle erhältlichen Kameras Kameradefinitionsfiles (Endung .CAM) zur Verfügung gestellt, die dem Frame Grabber die genaue Spezifikation der Kamera mitteilen. Dieser File wird mit der "Select/Load Camera File" Taste eingegeben. Einige häufig gebrauchte Kameras sind in der Dialogbox bereits explizit angegeben, so z. B. die Pulnix TM6710 Hochgeschwindigkeitskamera.

Wenn, wie bei der GrabLink Expert Karte, zwei Kameraanschlüsse vorhanden sind, so können diese nach Umschaltung mit der "Activate Acquisition Device 0" oder "1" völlig unterschiedlich konfiguriert werden, d. h. man kann zwei völlig unterschiedliche Kameras anschließen. Zur Steuerung durch die picCOLOR-Stereo-Software wird allerdings empfohlen, für Stereoaufnahmen immer zwei aufeinander synchronisierte Kameras anzuschließen. Wenn nicht im Stereo-Modus eingelesen wird, so wird immer vom aktivierten Kameraanschluß eingelesen. Im Stereo-Modus kann hier die Bildreihenfolge (links/rechts) umgeschaltet werden.

MicroEnable (SiliconSoftware mit FGrab Software):

Der MicroEnable Frame Grabber ist eine sehr flexible Karte, die über ein FPGA für beliebige Timings und Spezialkameras vorprogrammiert werden kann. Ähnlich wie bei den anderen Karten geschieht dies über ladbare Konfigurationsdateien und außerdem über bestimmte Kameraspezifische DLL's. Leider kann diese Variabilität z. Zt. noch nicht vom Benutzer programmiert werden. Man ist daher auf die Hilfe von SiliconSoftware angewiesen. Z. Zt. werden Kameras von Basler und Pulnix unterstützt. Mit der MicroEnable IV hat SiliconSoftware neuerdings eine interessante Karte auf den Markt gebracht, die mit einen Full-CameraLink-Interface ausgerüstet ist und eine sehr hohe Transferleistung bringen soll. Bei Interesse kann diese Karte mit ihren Besonderheiten in picCOLOR implementiert werden.

Falcon/Eagle (IDS):

Die Falcon/Eagle-Karten sind für das Einlesen von Standard-Videosignalen nach der CCIR- oder RS-170-Norm ausgelegt. Wenn zwei Kameras angeschlossen sind, kann eine "Split-Screen"-Einstellung gewählt werden. Hierbei werden nur Halbbilder der beiden Kameras eingelesen - nämlich das erste Halbbild der ersten Kameras und das zweite Halbbild der zweiten Kamera. Das bedeutet, daß die beiden Bildhälften nicht gleichzeitig entstanden sind. Bei der CCIR-Norm liegt z. B. ein Zeitschritt von 1/50 Sekunde zwischen den beiden Halbbildern. Die beiden Halbbilder werden übereinander angeordnet in den Bildspeicher übertragen. Sie sind dabei vertikal um den Faktor 2 gestaucht. Wenn zwei Karten oder die speziell mit mehreren A/D-Wandlern ausgelegten Falcon DUO/Quattro oder Eagle Quattro Karte eingebaut ist, können auch Bildsequenzen von 2 (oder mehr) Kameras gleichzeitig synchron eingelesen werden. Hiermit ist das Einlesen von längeren Stereosequenzen möglich. Dazu müssen natürlich die notwendigen Bildspeicher, d. h. zwei normale Bildspeicher oder zwei Sequenzspeicher definiert werden. Achtung: für längere Bildsequenzen müssen eventuell Anpassungen in der Registry vorgenommen werden.

6.5.6. Square Pixel

Achtung: Diese Funktion steht nur für analoge Kameras zur Verfügung.

Hitachi-KPM1
Hitachi-KP503
Hitachi KPF1
JAI CV-M30
Manual Input Input
Reset Frequency

Für eine genaue Vermessung von Bildinhalten ist es wichtig zu wissen, ob die Auflösung in horizontale und vertikale Richtung gleich ist und damit die Pixel quadratisch sind. Natürlich kann man im picCOLOR Programm eine unterschiedliche Auflösung in x- und y-Richtung bei einer Kalibrierung berücksichtigen, es kann jedoch sinnvoll sein, durch genaues Anpassen der Pixelfrequenz beim Bildeinlesen genau quadratische Pixel einzustellen. Besonders wichtig ist dies bei der 3D-Stereoauswertung, wo keine unterschiedliche Kalibrierung in x- und y-Richtung zugelassen ist. Diese Anpassung ist jedoch nur bei analogen Kameras möglich, bei denen dann das Analog-Videosignal mit einer angepaßten Abtastfrequenz eingelesen wird. Bei digitalen Kameras ist dies prinzipiell nicht möglich, da hier die Bildpunkte der CCD- oder CMOS-Matrix pixelsynchron eingelesen werden. Hier ist man also darauf angewiesen, daß der Chiphersteller quadratische Pixel bereitstellt. Achten Sie darauf bei der Auswahl der Kamera!

Bei analogen Kameras und geeignetem Frame Grabber ist eine genaue Kalibrierung jedoch möglich. Für übliche Video-Kameras liegt die optimale Einstellung bei genau 14.750000 MHz Pixelfrequenz, bei speziellen industriellen Kameras für Meßzwecke kann es jedoch sein, daß andere Werte eingestellt werden müssen. Bei Eignung des Frame Grabbers werden Einstellungen für verschiedene Kameras (z. B. Hitachi KPM1ek mit 14.187 MHz, KP503G mit 14.75 MHz, u.a.) angeboten. Wenn man eine nicht aufgeführte Kamera einsetzen will, deren genaue Pixelfrequenz nicht bekannt ist, kann man sich manuell an die optimale Frequenz im Bereich [10..16] MHz herantasten. Dazu übernimmt man ein Testbild, in dem Maßstäbe in x- und y-Richtung zu sehen sind und führt eine Längenkalibrierung durch (siehe Kapitel 8.15. Calibration). Wenn die Kalibrierfaktoren in x- und y-Richtung unterschiedlich sind, stellt man eine neue Pixelfrequenz ein und wiederholt den Kalibriervorgang iterativ, bis die Kalibrierung in beide Richtungen genau gleich ist. Wenn der ermittelte Kalibrierfaktor in x-Richtung größer ist als in y-Richtung, dann sollte eine geringere Frequenz eingestellt werden. Wenn Sie den gefundenen Wert für die Pixelfrequenz dem Entwicklungsteam mitteilen, wird dieser gerne unter der speziellen Kamerabezeichnung als Auswahlpunkt fest einprogrammiert. Achtung: wenn bei der F64P-Karte Pixelfrequenzen eingestellt werden, die im Rahmen der gewählten Auflösung technisch nicht darstellbar sind, so fällt die Synchronisation aus. In diesem Fall sollte die ROI in horizontaler Richtung etwas verkleinert werden. Die Einstellung ist nicht unbedingt stufenlos möglich. Es kann daher sein, daß Sie bei einer zu geringen Frequenzänderung keine Auswirkungen messen können. Die Frequenzeinstellung ist z. Zt. nur bei der F64P-Karte verfügbar.

6.5.7. Input-Look-up-Table - Eingangs-Grauwerttabelle

Viele Bildeinlesekarten (Frame Grabber) besitzen eine Input-Look-up-Table, die es ermöglicht, bestimmte einfache Bildverarbeitungsschritte schon während der Bilddigitalisierung in Echtzeit vorzunehmen. Beispiele dafür sind Bildinvertierungen, Kontrastverstärkungen, Einstellung bestimmter Gamma-Werte sowie spezielle Verfremdungen. Dabei wird jeder eingelesene Bildpunkt zuerst durch eine Look-Up-Tabelle geschoben und dort auf bestimmte Art kodiert, bevor er in den Bildspeicher geschrieben wird. In der aktuellen Version der picCOLOR Software können hier bei geeigneten Bildeinlesekarten (z. Zt. F64P und Xcelera) einige vordefinierte Einstellungen gewählt werden. Wichtig ist hier z. B. die invertierte Input-Look-up-Table, mit der Negative direkt als Positive übernommen werden können.

Bei der F64P-Karte kann die Input-Look-Up-Table auch mit einer Bit-Maske gesetzt werden. Die Maske ist eine 8 oder 16-Bit Maske, mit der bestimmte Bits der eingelesenen Pixel ausgeblendet werden können. Die Maske wird binär eingegeben, Null-Bits sperren die Übernahme einzelner Bits während der Aufnahme. So wird z. B. bei einer 8 Bit-Maske (11111110) das unterste Bit jedes Pixels bei der Bildübernahme zu Null gesetzt. Auf Wunsch werden beliebige andere Einstellungen zur Verfügung gestellt.


6.6. FireWire

Der im folgenden beschriebene FireWire Kameratreiber wurde in das picCOLOR-Programm implementiert. Dabei wurde die auf dem Internet verfügbare Version 6.3 (File 1394camera63.zip) berücksichtigt. Neuere Versionen werden automatisch oder auf Kundenwunsch implementiert. Die Benutzerführung wurde im Vergleich zum Originalprogramm durch Einführung einiger Dialogboxen verbessert. Bilder können als Grauwert- oder Bayer-Pattern in normale 2D-Bildspeicher eingelesen werden, als 24-Bit Farbbilder in einen TrueColor-Speicher oder als Grauwert- oder Bayer-Pattern-Sequenz in einen picCOLOR-Sequenz-Speicher.

6.6.1. Installation

Hier folgt die Originalbeschreibung:

IEEE-1394 Digital Camera Windows Driver

Iwan Ulrich,Christopher Baker,Bart Nabbe,Illah Nourbakhsh
Carnegie Mellon University - Robotics Institute
Mobile Robot Programming Laboratory

Update 8/31/03: Version 6.2 has been released courtesy of Christopher Baker cbaker+iwan1394@cs.cmu.edu

Summary

We provide a free driver as well as a C++ software library for cameras that comply with the 1394 Digital Camera Specification as published by the 1394 Trade Association www.1394ta.org. It is a fast, easy way to gain direct access to camera imagery and direct control of camera features.

Introduction

The advent of IEEE-1394 based digital cameras seemed to be the ideal solution for acquiring high quality images with a regular laptop or PC. These cameras allow for both high quality images and fast image acquisition at up to 400 mbps. When this project started in 1999, 1394 digital cameras were just becoming commercially available. The problem at the time was a near complete lack of software support. We chose to fill this void by writing a software driver ourselves and making it available to the general public at no charge. The result of our efforts is a C/C++ software library (DLL) that works with any compliant camera running on Windows 98 SE or later.

In its current incarnation, the software provides two different modes for acquiring images, the ability to manipulate any available camera feature, and a tight, clean API. The software has been thoroughly tested on only a few cameras (Sony DFW-V500,VL500, Pyro Webcam), but there is nothing wired specifically for these cameras and the driver should work with any other compliant camera. The distribution zip also includes complete source for a demo application (MFC) that demonstrates the functionality of the library.

A Note About DV Cameras

There are many consumer (and professional) digital camcorders available that use the 1394 bus to transfer data to a computer but are not in and of themselves compliant with the 1394 Digital Camera Specification. These cameras, widely classified as DV cameras, will not work with this driver set. They comprise a completely different class of 1394 peripheral under a different specification. The class should warn you on the call to InitCamera if it believes you are trying to control one of there cameras.

Hardware Requirements

This driver set should work with all versions of MS Windows from 98 SE through XP. Beyond that, there are no hard minimums other than a 1394 host controller (preferably OHCI-compliant) and a camera. However, the things that you can do with the data from these cameras will be limited by how much RAM you have and how fast your processer is, so more of both will be better. Don't expect useful results on anything less than a Pentium II 233 with 64 MB of RAM.

Distribution

Download: 1394camera62.zip (282 KB)

When unzipping the file, you should use the "Use Folder Names" option to extract the files into the correct folders. Winzip should then extract the following files into the corresponding directories relative to the target directory.
1394camera.dll \ The Compiled Library
1394camera.inf \ Driver Installation Script
1394cmdr.sys \ Driver Binary
1394CameraDemo.exe \ Demo Application
1394camera.chm \ Help File
1394Camera.h | \include\
1394CameraControl.h | \include\
1394CameraControlSize.h | \include\
1394CameraControlTrigger.h | \include\
1394camapi.h | \include\
1394Camera.lib | \lib\
1394camera.exp | \symbols\
1394camera.pdb | \symbols\
1394cmdr.map | \symbols\
1394cmdr.sym | \symbols\
The zip file also includes a folder, 1394CameraDemo, that contains a Visual Studio workspace and source code for the 1394CameraDemo application.

Notes for Previous Users

  • The storage size of the C1394Camera class has changed, so you must recompile your projects in order to avoid memory referencing errors.
  • The prototypes of many of the exported functions have changed, so chances are your apps won't work right away anyway.
  • As far as I can tell, nothing has changed enough to make it necessary to do anything other than recompile your old code.
  • You no longer need to put your 1394 host controller into diagnostic mode. If it is in diagnostic mode (as per the instructions for the installation of version 4.1), I recommend you turn diagnostic mode back off.
  • Most of the functions now return error codes rather than popping up message boxes. Make use of them.

Installation

To install the driver on Windows 2000 or XP, I recommend you use something like the following procedure:
  1. Make sure your camera is plugged in.
  2. Open the Device Manager through the Computer Management Console. It may be found in the Control Panel under Administrative Tools
  3. From the list of available device types, select Imaging devices. If you are installing this driver over top of a previous version, your digital camera will be listed as "CMU 1394 Digital Camera Device". If not, it will typically be listed as "Sony 1394 CCM-DS250 Desktop Camera". or as "Generic 1394 Digital Camera #n" under winXP. Right-click it and select Properties
  4. In the properties panel, select the Driver tab, and then click Update Driver.
  5. Follow the on screen instructions, do NOT use the search option. Use the "Display a list of..." option instead
  6. Click on the "Have Disk..." button, point the directory to where 1394Camera.inf is stored (the folder where you extracted the zip file).
  7. Ignore the warnings about the driver not being digitally signed or that windows can't be sure the driver will work.
  8. When installation is finished, verify in the driver tab that the provider is "Carnegie Mellon University" and that the version is "6.0.0.0". Also verify that your camera is now listed in the device manager as "CMU 1394 Digital Camera Device". The name doesn't seem to change properly under winXP... go figure.
  9. Restart Your Computer. Windows doesn't seem to think it necessary, but it has been my experience that without restarting the machine, the camera is prone to continue using the old driver. It shouldn't be harmful except that applications linked against the new version of the driver library won't work at all.
The procedure for 98 or ME is nearly the same, except the device manager is on a tab in the "System" Control Panel applet and some of the buttons have different names.
For some reason, 98 and ME have trouble finding 1394camera.dll. If you encounter this, just click "skip file" and put 1394camera.dll into c:\windows\system\ yourself

Library and Headers

  • You should copy the contents of the \include\ subdirectory to somewhere on your include path, typically "C:\Program Files\Microsoft Visual Studio\VC98\Include" Be sure to overwrite any previous versions of those files
  • You should copy the contents of the \lib\ subdirectory to somewhere on your link path, typically "C:\Program Files\Microsoft Visual Studio\VC98\Lib" Be sure to overwrite any previous versions of those files.
  • The contents of the \symbols\ directory are provided to assist in debugging and should be placed wherever your preferred debugger can find them.
The demo application will not compile until the library and headers are on the VC link and include paths.

Support

Our software is distributed at no charge for the benefit of vision researchers. The software is supported on a completely volunteer basis, and that volunteer, currently Christopher Baker, does not always have time to provide extensive support. Short questions or bug reports may be sent to cbaker+iwan1394@cs.cmu.edu. If you want to change or understand the source code of the actual DLL and/or driver (sys) file, send email to cbaker+iwan1394@cs.cmu.edu with "IEEE-1394 DLL Source Code Request" in the subject line. The source code will then be emailed to you under the conditions of the GNU General Public License. In order to compile the driver (sys) file, you need to acquire the driver development kit on CD from Microsoft. As with the driver set, unless there are extreme reasons, the source code will be supported at most on a short-question, short-answer basis.

6.2. Initialisierung der FireWire-Schnittstelle

Prinzipiell ist die Benutzung der FireWire-Funktionen selbsterklärend. Zu beachten ist allerdings, das vor einer Bildübernahme zunächst eine Initialisierung vorgenommen wird. Dies wird in der FireWire-Initialisierungs-Dialogbox durchgeführt:

Dazu muß (mit der "Check Link" Taste) als erstes überprüft werden, ob mindestens eine FireWire-Kamera angeschlossen ist. Erst in diesem Falle werden alle anderen Felder der Dialogbox überhaupt erst anwählbar. Danach wird eine der angeschlossenen Kameras ausgewählt und mit "Init Camera" initialisiert, dann muß über das FireWire-Menü eine Bildauflösung, ein Farb-Mode und eine Frame-Rate ausgewählt werden. Dann erst kann eine Bildübernahme gestartet werden. Nocheinmal: die Auswahl der Bildauflösung (und damit auch des Farbmodus) sowie der Frame-Rate erfolgt nicht in der Dialogbox, sondern im FireWire-Menü. Hierbei gibt es eine ganze Reihe von vordefinierten Modi für unterschiedliche FireWire-Kameras. Zusätzlich gibt es auch noch den sogenannten "Partial Scan"-Modus, mit dem auch die Spezial-Modi bestimmter Kameras ausgewählt werden können. Hier können dann auch Kameras mit unterschiedlicher, in der Regel viel höherer Auflösung eingestellt werden. Hierbei ist zu beachten, daß mit der Eingabe der Blockgrößen für den Transfer auch die Frame-Rate dieser speziellen Modi beeinflußt wird, d. h. die Menü-Eingabe der Frame-Rate ist im Partial-Scan-Mode außer Kraft gesetzt.

Für die Bildaufnahme stehen dann 2 Methoden zur Verfügung, Method #1 und Method #2. Die erste ist in der Regel die schnellere Methode. Die erzielbare Frame-Rate mit den unterschiedlichen Methoden kann in der Initialisierungs-Dialog-Box über die Taster "Meas. FPS" geprüft werden.

Die FireWire-Schnittstelle ist auch für eine Stereo-Bildaufnahme implementiert. Wenn mehr als eine Kamera angeschlossen ist und auch erkannt wird, so wird die Möglichkeit geboten, zwei Stereo-Kameras auszuwählen. Hierbei sind dann im FireWire-Menü auch zwei Auswahlmenüs für die gewünschte Bildauflösung erreichbar. Dabei können auch unterschiedliche Auflösungen für beide Kameras eingestellt werden. Die Frame-Rate wird jedoch für beide Kameras gleichgesetzt und kann daher auch nur in einem Menü gewählt werden. Wenn ein Zeitstempel auf die Bilder einer Bildsequenz aufgeprägt werden soll, so muß die "Xfer CallBack Function" eingeschaltet werden und eine Art des Zeitgebers ausgewählt werden. Hierzu gibt es bei der Beschreibung der normalen Frame Grabber mehr an Informationen.

6.3. FireWire Acquisition

In dieser ersten recht einfach gehaltenen Acquire-Dialogbox werden bei einem Bildeinlesen in den TrueColor-Bildspeicher oder in einen Sequenz-Bildspeicher die jeweiligen Optionen anwählbar. Im Farbbildspeicher kann das Live-Bild getrennt im Rot-, Grün- oder Blau-Anteil betrachtet werden. Eine kontinuierliche Ansicht des tatsächlichen Farbbildes ist wie üblich über eine Ditherung möglich, da ja im picCOLOR-Programm die Farbanteile in getrennten Bildspeichern liegen. Dies erfordert allerdings einiges an Rechenleisung, so daß die FrameRate unter Umständen reduziert werden kann. Bei einem Sequenzspeicher kann gewählt werden, ob der Sequenzspeicher als Ringspeicher angesehen wird und immer wieder von neuem überschrieben wird, bis man die Bildübernahme anhält, oder ob die Acquisition nach Einlesen der kompletten Anzahl von Bildern automatisch beended wird. Man kann allerdings auch während der Sequenzbildübernahme jederzeit stoppen und auch wieder an der gleichen Stelle im Sequenzspeicher weitereinlesen. Der aktuelle Sequenzspeicherstand wird angezeigt, er kann mit "Start0" auf 0 zurückgesetzt werden.

6.4. Spezielle FireWire Einstellungen

Mit dem "Settings"-Schalter kann eine weitere, modale Dialogbox aufgerufen werden, in der beim Live-Bild eine ganze Reihe von Einstellungen vorgenommen werden können. Welche Einstellungen anwählbar sind, hängt von der angeschlossenen Kamera ab.

6.5. FireWire als Standard Bildeinleseschnittstelle

In der Configuration Dialogbox (Siehe Control Panel) kann FireWire als Standard-FrameGrabber eingetragen werden. Hierdurch ändert sich für die interaktive Benutzung der FireWire-Kamera jedoch nichts. Wenn die FireWire-Schnittstelle als Standard eingetragen ist, werden jedoch alle Funktionen, die automatisch den FrameGrabber aufrufen, die zuvor initialisierte FireWire-Kamera benutzen. Dies sind z. B. Real Time Meßfunktionen, Tracking-Funktionen, Videosequenzspeicherungen.


6.7. Twain

Die Twain-Schnittstelle ist eine standardisierte Schnittstelle zur Ansteuerung von Scannern (z. B. Flachbettscannern oder Dia-Scannern), aber auch von anderen bildgebenden Geräten und von normalen Kameras. Sie wurde unter anderem durch die Firmen Aldus, Caere, Eastman-Kodak, Hewlett-Packard and Logitech Corporations definiert. Z. Zt. wird das Copyright durch folgende Firmen gehalten: Copyright © 1998 TWAIN Working Group: Adobe Systems Incorporated, Canon Information Systems, Eastman Kodak Company, Fujitsu Computer Products of America, Genoa Technology, Hewlett-Packard Company, Intel Corporation, Kofax Image Products, JFL Peripheral Solutions Inc., Ricoh Corporation, and Xerox Corporation. All rights reserved.

Im picCOLOR-Programm wurde ein Interface des Twain-Toolkits der TWAIN Working Group implementiert, das dem des Twacker-Programmes entspricht. Hiermit werden nicht nur die üblichen Funktionen zum Bildeinlesen zur Verfügung gestellt, sondern auch eine Live-Acquisitionsfunktion sowie eine Reihe von Optionen und Spezialfunktionen, mit denen der TWAIN-Experte die Schnittstelle testen und einstellen kann. Wenn das Twain-Pull-Down-Menü geöffnet wird, so erscheinen die normalen Funktionen:

Acquire Live

-----------------------

Acquire...
Setup...
Select Source...

-----------------------

Native

File

Memory

-----------------------

Message Level ->

-----------------------

Automatic Feeding

-----------------------

ShowUI

Disable After Acquire

-----------------------

...

...

Weiter unten im Menü erscheinen einige zusätzliche Schalter, über die z. B. die Ausführlichkeit von Meldungen (speziell Fehlermeldungen) eingestellt werden kann sowie die Spezialfunktionen, mit denen die Twain-Schnittstelle explizit geöffnet, bedient und geschlossen werden kann. Für den normalen Benutzer sind lediglich die oben angezeigten ersten vier Funktionen wichtig:

6.7.1. Acquire Live

Es öffnet sich eine Dialogbox, die Elemente für normale Bildspeicher, Farbbildspeicher und Sequenzen zeigt. Die jeweils nicht sinnvollen Funktionen sind ausgegraut und nicht anwählbar. Mit dem Continuous-Schalter wird eine kontinuierliche Bildübernahme gestartet, entweder als normales Live-Bild im 2D-Bildspeicher oder im True-Color-Bildspeicher, oder als Sequenzaufnahme im Sequenzbildspeicher. Gestoppt wird mit der rechten Maustaste oder der ESC-Taste. Die Freeze-Funktion ist noch nicht wirksam.

Im Sequenzbildspeicher beginnt die Aufnahme immer bei Bild 0. Wenn der Sequenzbildspeicher nicht als Ringspeicher definiert ist, so stoppt die Bildübernahme, wenn der Sequenzspeicher gefüllt ist.

Bei der Aufnahme in einen True-Color-Bildspeicher können die einzelnen Farbanteile (Rot, Grün, Blau) oder das geditherte Farbbild live betrachtet werden.

Die Bildübernahme mit dieser Dialogbox ist ähnlich wie bei der weiter unten aufgeführten "Acquire..."-Funktion, wenn dort das "ShowUI"-Flag abgeschaltet wird.

6.7.2. Acquire...

Es öffnet sich eine komplexe Dialogbox, in der eine ganze Reihe von Parametern des angeschlossenen und über "Select Source" selektierten Scanners eingestellt werden können und in der auch der Scan-Vorgang gestartet werden kann. Das gescannte Bild wird in der Regel direkt in den Bildspeicher eingelesen. Nach aktivierung des "File"-Schalters im Twain-Menü kann das Bild gleichzeitig als BMP-Bitmap-File auf die Festplatte geschrieben werden. Achten Sie darauf, daß die aktuell eingestellte Bildspeichergröße (und auch Bildspeicherart, d. h. Grauwert- oder Farbspeicher) des picCOLOR-Programmes entsprechend und auch groß genug eingestellt ist, das gescannte Bild komplett aufzunehmen. Dabei ist zu beachten, daß mit hoher Auflösung gescannte Bilder sehr groß werden können. Schon eine mit 300 DPI gescannte DIN-A4-Seite hat dann eine Auflösung von etwa 2400*3600 Pixel. Ein Kleinbild-Dia-Scan mit 2700 DPI erzeugt ein Bild der Größe 3800*2550 Pixel. Hierzu sollten Sie also eine ausreichende picCOLOR-Auflösung einstellen. Die Übertragung des Bildes nach picCOLOR geschieht Windows-intern über die Zwischenablage.

Wenn nicht gewünscht ist, daß bei jedem Scan-Vorgang das komplette User-Interface erscheint, d. h. die Dialogbox mit Einstellungen für den Scanner, dann kann man dies mit dem "ShowUI"-Flag abschalten. Bei richtiger Voreinstellung der Scann-Source liefert dann jeder Klick auf die "Acquire..."-Funktion direkt ein Bild.

6.7.3. Setup...

Die Setup-Funktion dient zur Einstellung bestimmter Parameter der Twain-Schnittstelle...

6.7.4. Select Source...

Es öffnet sich eine Dialogbox, in der verschiedene vom System erkannte Scanner oder andere Bildeinlesegeräte mit TWAIN-Unterstützung ausgewählt werden können. Selektieren Sie mit dem Mauszeiger einen dieser Scanner und Aktivieren Sie ihn entweder durch Doppelklick oder durch den Select-Schalter.

6.7.5. Special Twain Functions

Von den weiteren Funktionen ist eigentlich nur der "ShowUI"-Schalter wichtig: hiermit kann die Anzeige der Einstellparameter-Dialogbox des selektierten Scanners abgeschaltet werden. Die speziellen TWAIN-Funktionen dienen dem Experten zur Fehlersuche. Hier können z. B. einzelne Funktionen des normalerweise komplett automatisch ablaufenden TWAIN-Protokolls durchgeführt werden.

6.7.6. TWAIN als Standard Bildeinleseschnittstelle

In der Configuration Dialogbox (Siehe Control Panel) kann TWAIN als Standard-FrameGrabber eingetragen werden. Hierdurch ändert sich für die interaktive Benutzung der TWAIN-Schnittstelle jedoch nichts. Wenn die TWAIN-Schnittstelle als Standard eingetragen ist, werden jedoch alle Funktionen, die automatisch den FrameGrabber aufrufen, die zuvor initialisierte TWAIN-Kamera benutzen. Dies sind z. B. Real Time Meßfunktionen, Tracking-Funktionen, Videosequenzspeicherungen.


6.8. Swiss Ranger 3D-Kamera

6.8. Swiss Ranger 3D-Camera

Vor kurzem wurde die neuartige Technik der 3D-Kameras auf den Markt gebracht, die über das Prinzip "Time of Flight" ein echtes Tiefenbild erzeugen. Dabei wird mit hochfrequent getakteten Infrarot-LEDs die Bildszene ausgeleuchtet und mit jedem Bildpunkt die Laufzeit des Signales indirekt über einen Phasenvergleich bestimmt. Hierdurch gelingt es, ein direktes Tiefenbild zu erzeugen. In der aktuellen Version ist die Library der Firma CSEM (später MESA, Schweiz) implementiert, die die SwissRanger-Kamera SR-3000 ansteuern kann.

6.8.1. Installation

Hierzu muss das entsprechende Setup-File von der CSEM oder MESA-Webseite heruntergeladen werden und aufgerufen werden. Suchen Sie hierzu nach einem File mit dem Namen "SwissrangerSetup1.0.8.12.exe" oder ähnlich. Eventuell muß zusätzlich die LibUSB-Library installiert werden. Das SwissRanger-Paket installiert einige Demo-Anwendungen, mit denen die Kamera ausgetestet werden kann.

6.8.2. Initialisierung und Parametereinstellung

Im picCOLOR-Programm muss nun zunächst eine Initialisierung vorgenommen werden. Hierbei versucht der SR3D-Treiber, ins Internet zu gehen und einen aktuellen Kalibrier-Datensatz für die angeschlossene Kamera zu laden. Wenn das nicht gelingt, wird der Treiber im Offline-Modus mit einem bereits vorhandenen Kalibrierdatensatz oder mit einem generischen Datensatz initialisiert, so daß man zumindest vorhandene Bilder damit laden und bearbeiten kann. Bei der Initialisierung werden intern Bildspeicher für das Laden und die Umrechnung definiert. Wenn ein normaler 2D-Bildspeicher bei der Initialisierung aktiv ist, so wird auch nur ein einziger SR3-Umrechnungsspeicher definiert. Um jedoch komplette Bildsequenzen laden zu können, muß intern ein SR3-Sequenzspeicher definiert werden. Dies wird erreicht, indem ein Sequenzbildspeicher aktiviert wird und dann erst die Initialisierung vorgenommen wird. Wenn nachträglich die interne SR3-Speicherkonfiguration geändert werden soll, dann kann dies mit der Funktion "Realloc Buffers" bei aktivem 2D-, TrueColor- oder 3D/Sequenz-Bildspeicher geschehen.

Vor dem Laden dieser Bilder, die mit der Extension .SR3 versehen sind, sollte man eventuell in der "Live Parameter Options"-Dialogbox die Min. und Max. Color Parameter für das Tiefenbild (Depth) und das Grauwertbild (Gray) einstellen. Beide Daten sind als 16Bit-Werte im Bildfile enthalten und müssen auf den 8Bit-Wertebereich des picCOLOR-Programmes angepasst, d. h. gespreizt werden.

Praktisch alle dieser Parameter sind live-Parameter, d. h. sie können während einer live-Bildübernahme justiert werden und das Ergebnis kann direkt beobachtet werden.

6.8.3. Acquisition


6.9. Test Images

Geometry Test ImageLinear Slope
Sine Wave
Gauss Noise
Specle Noise

Für den Test verschiedener Bildverarbeitungsschritte ist es oft notwendig, bestimmte Testbilder zu erzeugen. So kann es für die Entwicklung des richtigen Verfahrens zur Rauschunterdrückung sinnvoll sein, definiertes gaussverteiltes Rauschen auf ein Bild aufaddieren zu können. Für den Test von Funktionen im Frequenzbereich werden oft Grauwert-Sinusschwingungen in unterschiedlichen Frequenzen und Richtungen benötigt. Funktionen dieser Art werden hier im Testbilder-Menü zur Verfügung gestellt.

6.9.1. Grid Test Image

Für die Kalibrierung des Systemes oder für die geometrische Justage des Bildschirms ist es manchmal notwendig, ein Testbild zur Verfügung zu haben, an dem dann verschiedene Meßverfahren getestet werden können. Das zur Verfügung gestellte Testbild ermöglicht z. B. die genaue Einstellung der horizontalen und vertikalen Bildschirmgröße und -lage und die Einstellung der Pixeldimensionen auf dem Bildschirm. Die Gridweite ist pixelgenau einstellbar. Wenn Grid Size auf 0 gesetzt wird, so wird automatisch eine Gitterweite bestimmt, die die horizontale Auflösung des Bildspeichers durch 8 geteilt beträgt. Der defaultmäßig eingezeichnete Kreis und die Grau-Rampe können weggelassen werden.

6.9.2. Sine Wave

Zum Test von Funktionen im Frequenzbereich wurde die Möglichkeit implementiert, Bilder mit unterschiedlichen Sinus-Schwingungen zu erzeugen. Hierbei können folgende Parameter eingestellt werden:

  • Frequenz in Grad/Pixelbreite, d. h. bei Eingabe von 90.0 degree erhält man eine Sinusschwingung der Breite 4 Pixel, bei 45 degree 8 Pixel.

  • Orientierung (Winkel von der x-Richtung mit [0..360]),

  • Phase mit [0..360]

  • Kontrast mit [0..255]. Ein Kontrast von 128 erzeugt eine Schwingungsamplitude von 0 bis 255.

6.9.3. Linear Slope

Hiermit kann eine Grauwert-Rampe produziert werden. Es können die folgenden Parameter eingestellt werden:

  • Start-Grauwert [0..255]

  • Kontrast [0..255] ist der Grauwertumfang über die Breite der ROI

  • Orientierung [0..360]

6.9.4. Gauss Noise

Zum Test von Filteralgorithmen ist es oft sinnvoll, ein Bild mit einem Rauschen zu überlagern. Mit dieser Funktion wird ein Gauss-Rauschen mit einem Rauschen der anzugebenen Standardabweichung (in Pixelwerten) dem Bild additiv überlagert.

6.9.5. Specle Noise

Mit dieser Funktion können Zufallsmäßig einzelne Punkte des Bildes invertiert werden. Es kann dabei angegeben werden, wieviel Prozent der Punkte des Bildes dabei invertiert wird.


6.10. Print Image

Diese Druckfunktion ist für den einfachen Ausdruck direkt aus dem picCOLOR Programm vorgesehen. Hierbei werden die von Windows verwalteten Drucker unterstützt. Die Bilder werden in die linke obere Ecke des Ausgabemediums (Papierblatt) gedruckt, je nach Einstellung im Portrait- oder Landscape-Modus. Wenn Bilder jedoch in Dokumentationen oder Publikationen eingebunden und im Text positioniert werden sollen, wird man die Bilder sinnvollerweise im TIF-Format oder einem anderen allgemein üblichen Bildformat abspeichern. In diesem Format lassen sich die Bilder von den meisten Textverarbeitungs- oder Desktop-Publishing-Programmen einlesen, im Text positionieren und auf beliebigen Druckern ausgeben.

Achtung: leere picCOLOR-Bilder sind in der Regel schwarz, d. h. der picCOLOR-Hintergrund ist schwarz. Der Ausdruck solcher Bilder kann infolgedessen eine übermäßige Verschwendung von Tinte/Toner sein. Es kann sinnvoll sein, die Bilder vor dem Ausdruck zu invertieren.

Hinweis: Das Drucken von Farb- oder Grauwertbildern ist eine nicht triviale Angelegenheit - auch ein 1200 DPI Laserdrucker kann ein Grauwertbild nur recht grob gerastert ausdrucken (siehe Literatur: W. Söker, PCL Level V, Vieweg). Verschiedene implementierte Rasteralgorithmen führen zu unterschiedlichen Ergebnissen. Dies muß vor allem auch dann beachtet werden, wenn die Ausdrucke anschließend auf normalen S/W-Kopierern vervielfältigt werden sollen. Für den optimalen Ausdruck von Grauwertbildern kann hier die Umrechnung in einen Postscript-File und der anschließende Druck über eine professionelle Druckerei empfohlen werden.

Hinweis: Wenn für eine Präsentation ein Diapositiv vom Bildschirminhalt hergestellt werden soll, kann der Bildschirm direkt abphotographiert werden. Empfehlenswert ist dabei ein Objektiv mit einer Brennweite von etwa 100mm, einer Blende von 5.6 bis 8 und eine Belichtungszeit von 0.5 bis 1.0 Sekunden bei völlig abgedunkeltem Raum, mittlerer Monitorhelligkeit und einem Film mit der Empfindlichkeit von 100 ASA.

6.10.1. Print...

Es öffnet sich die Winows-typische "Printer-Properties"-Dialogbox, die ähnlich wie die oben aufgeführte Box aussehen kann. Der aktuelle Windows-Printer ist hervorgehoben, es können jedoch auch alle anderen dem System bekannten Printer ausgewählt werden. In dieser Dialogbox können einige Parameter des jeweiligen Druckers eingestellt werden (z. B. Druckausrichtung: Portrait oder Landscape) und der Druck kann mit der "Print"- oder "OK"-Taste gestartet werden. Achtung: hier gibt es noch einige kleine Inkompatibilitäten. So wird die Portrait/Landscape-Einstellung nicht in jedem Fall direkt übernommen. Man sollte dann die Dialogbox einmal extern über "Start/Einstellungen/Drucker/..." aufrufen und die gewünschten Parameter dort richtig einstellen.

6.10.2. Show Properties

Hier kann einer der dem System bekannten Printer mit einem Doppelklick ausgewählt werden. Es erscheint dann eine einfache Properties-Dialogbox des jeweiligen Printers, in der einige Parameter des Printers eingestellt werden können. Weitere Parameter können mit den üblichen Windows-Programmen eingestellt werden.

6.10.3. Available Printers:

Unter diesem Menü-Punkt erscheinen alle vom picCOLOR-System beim Programmstart erkannten Windows-Printer mit ihren System-Namen. Wenn einer dieser Printer aufgerufen wird, wird das aktuelle Bild direkt unter Umgehung der Printer-Properties-Dialogbox gedruckt.

6.11. Show All Buffers

Mit dieser Funktion können alle im picCOLOR-System definierten Bildspeicher eines Typs (d.h. normale 2D-Bildspeicher, True-Color-Speicher oder 3D/Sequenz-Speicher) in verkleinerter Form auf einem zusätzlichen Bildspeicher dargestellt werden. Bei 3D/Sequenzbildern wird dagegen die komplette aktuelle, d. h. aktive Sequenz von Schnittbildern oder Einzelbildern im verkleinerten Modus dargestellt und man kann dann durch Anklicken eines dieser Bilder aktivieren.

*6.12. 3D/Sequence Player/Recorder (3D/Sequence-Zusatzmodul)

Der Video-Player befindet sich hier an dieser Stelle im 3D/Sequence-Image-Menü, wenn ein 3D- oder Sequenz-Bildspeicher aktiviert ist. Die Beschreibung des Video-Players finden Sie im 3D/Sequence-Zusatzmodul.

6.13. Control Panel

Define Image Buffer
Define True Color
Define 3D/Seq.-Buffer
Configuration
Thread Priority
Trigger
DDE Control

TCP/IP Control
I/O Dialog Box
Counter / Timer
System Commands
Stereo Setup
Image File Info

System Time

System Information
Test Functions

Im Control Panel können alle Systemeinstellungen vorgenommen werden. Dies kann z. B. die Art, Anzahl und Größe der Bildspeicher sein (normale 2D-Speicher, TrueColor-Speicher, 3D/Sequenz-Speicher), der Typ oder das Ein/Ausschalten des Frame Grabbers (Video-Bildeinlesekarte) sein, die Ausgabe von Ergebnissen und Resultaten auf die DDE- oder TCP/IP-Schnittstelle zur Weiterverarbeitung von Daten in anderen Programmen, die Bedienung bestimmter Hardwareerweiterungen, z. B. bestimmter Counter/Timer/I/O-Karten, und viele andere Systemeinstellungen und Initialisierungen. Zusätzlich sind hier spezielle Funktionen zur Kontrolle des Bildladens (z. B. TIFF-Parameter oder RAW-File-Parameter) und einige "Low Level"-Systembefehle zur Arbeit mit Files und Verzeichnissen untergebracht. Schließlich gibt es noch ein Unterverzerzeichnis "Test Functions", in dem verschiedene Benchmarks für picCOLOR-Funktionen oder die Schreibgeschwindigkeit auf Festplatten gestartet werden können.

6.14. Special Functions (z. B.: Acquire Text)

Ganz unten im File-Menü können von anderen, externen Programmen weitere Menüpunkte eingesetzt werden.

Ein wichtiges Beispiel ist das OCR-Texterkennungsprogramm OmniPage Pro der Caere Corporation, das bei richtiger Installation hier die beiden Menüpunkte "Acquire Text" und "Acquire Text Setup" einträgt. Hiermit kann ein Bilddokument in ASCII-Text umgewandelt werden und der erkannte Text über die Zwischenablage zurück an picCOLOR gesandt werden. Aus der Zwischenablage kann der Text dann über die Paste-Funktion in die I/O-Dialogbox oder in das Notebook übernommen werden.


6.13. Control Panel

Define Image Buffer
Define True Color
Define 3D/Seq.-Buffer
Configuration
Thread Priority
Trigger
DDE Control

TCP/IP Control
I/O Dialog Box
Counter / Timer / IO
System Commands ->
Stereo Setup
Image File Info ->

System Time

System Information
Test Functions ->

ImControl Panel können alle Systemeinstellungen vorgenommen werden. Dies kann z. B. die Art, Anzahl und Größe der Bildspeicher sein, der Typ oder das Ein/Ausschalten des Frame Grabbers (Video-Bildeinlesekarte), die Ausgabe von Ergebnissen auf die DDE-oder TCP/IP-Schnittstelle zur Weiterverarbeitung von Daten in anderen Programmen, die Bedienung bestimmter Hardwareerweiterungen, z. B. bestimmter Counter/Timer/I/O-Karten, und andere Systemeinstellungen und Initialisierungen. Zusätzlich sind hier spezielle Funktionen zur Kontrolle des Bildladens (z. B. TIFF-Parameter oder RAW-File-Parameter) und einige Systembefehle zur Arbeit mit Files und Verzeichnissen untergebracht. Schließlich gibt es noch ein Unterverzerzeichnis "Test Functions", in dem verschiedene Benchmarks für picCOLOR-Funktionen oder die Schreibgeschwindigkeit auf Festplatten gestartet werden können.

6.13.1. Define Image Buffer

Es können praktisch beliebig viele Grauwert-Bildspeicher definiert werden. Intern ist zwar eine Grenze bei 256 gesetzt, viel eher wird man jedoch (je nach Bildgröße) in der Regel an die Speichergrenze des Systemes stoßen. Dies sollte für alle Arten der digitalen Bildverarbeitung ausreichen. Hierzu gehören nicht die einzelnen Farbkanäle der Echtfarbspeicher oder der 3D/Sequenz-Speicher (siehe unten). Die Bildspeicher werden in aufsteigender Reihenfolge (1..n) definiert und können nur in linear absteigender Reihenfolge wieder freigegeben werden. Das Freigeben eines Bildspeichers geschieht über ein Schließen des Bildfensters über die Exitfläche rechts oben in der Titelzeile des Bildfensters.

In der "Define Image Buffer"-Dialogbox können im Normalfall nur weitere Bilder definiert werden. Die Bildgröße kann nicht eingestellt werden, solange noch Bilder definiert sind. Alle in picCOLOR definierten 2D-Bildspeicher haben die gleiche Größe und Pixeltiefe. Eine Veränderung der Bildspeichergröße ist nur möglich, wenn das System im Initialisierungszustand ist und kein Bildspeicher definiert ist. Schließen Sie dazu alle Bildfenster (auch Echtfarb- und 3D/Sequenzbilder). Das Hauptmenü wird dann abgeschaltet und man erhält ein einfaches Startmenü mit den Punkten: "picCOLOR", "Windows", und "Help". Unter "picCOLOR" findet man nur zwei Menüeinträge: "Start picCOLOR" und "End picCOLOR". Mit "Start picCOLOR" erhält man die obige "Define Image Buffer"-Dialogbox, in der nun die Bildspeichergröße eingestellt werden kann. Es können verschiedene Bildspeichergrößen eingestellt werden. Die minimal einstellbare Speichergröße ist 256*256 Bildpunkte. Die maximale Größe der Bildspeicher hängt sehr vom verfügbaren Speicher des Rechners ab. Mit dem Punkt 'Other' kann die Bildgröße auch pixelgenau eingegeben werden, um speziell mit sehr großen Bildern speicherplatzsparend arbeiten zu können. Hierbei muß beachtet werden, daß bestimmte Frame Grabber eine Bildgröße Modulo 8 oder 16 Pixel verlangen. Dies wird von picCOLOR automatisch berücksichtigt, d. h. Breite und eventuell auch Bildhöhe werden automatisch nach oben zur nächsten Stufe vergrößert. Nach der Bildgrößeneinstellung können dann beliebig viele Bilder gleicher Größe definiert werden. Die Bilder 1..9 können später über die Hot-Keys 1..9 umgeschaltet werden. Höherwertige Bilder erreicht man durch Anklicken oder über das Windows-Menü.

Es gibt weitere 2D-Arbeitsspeicher, die von unterschiedlichen Funktionen automatisch definiert und angelegt werden. Dies sind:

  • 2D-FFT-Speicher: es gibt bis zu 3 dieser FFT-Speicher, die bei einer Fouriertransformation automatisch definiert werden und die mit der Größe der aktuellen ROI (x,y,z) initialisiert und aktiviert werden

  • Contour-Speicher: ein 1- oder 8-Bit-Speicher, der bei der Objektbestimmung benutzt wird, um gefundene Objektkonturen zwischenzuspeichern

Diese besonderen Speicher können vom Benutzer auf Wunsch freigegeben werden, möglicherweise allerdings nur in bestimmter Reihenfolge.

*6.13.2. Define True Color Buffer

Bildspeicher für Echtfarbbilder (True Color) sind im picCOLOR-Programm als mehrkanalige Bilder angelegt, in der Regel mit einem Echtfarbbild nur zur Darstellung auf dem Bildschirm, den getrennten Rot-, Grün- und Blau-Anteilen, und zusätzlich noch mit verschiedenen weiteren Farbraumanteilen. Bei Bearbeitung von Echtfarbbildern belegt jeder Farbanteil, d. h. Rot- Grün- und Blauanteil einen eigenen Bildspeicher. Ebenso belegen im Normalfall die in einen anderen Farbraum (z. B. HSI) umgewandelten Bilder eigene Bildspeicher (z. B. Hue-, Saturation- und Intensity-Anteil). Nur bei geringem Speicherausbau des Systemes werden diese Bildspeicher doppelt genutzt, d. h. die RGB-Bildspeicher entsprechen den HSI-Bildspeichern.

Dies Art der getrennten Speicherung der Farbkanäle hat den großen Vorteil, daß für die Bearbeitung jeder einzelne Farbraumanteil hinzugezogen werden kann und auch einzeln begutachtet werden kann. Man hat die Auswahl, bei geringem Speicherausbau des Computers lediglich 3 Farbanteile (RGB) zu definieren oder zusätzlich Farbkanäle für einen weiteren Farbraum. Außerdem wird immer ein Display-Speicher definiert, in dem das Bild zur Darstellung aufbereitet wird. Da im normalen picCOLOR-Programm alle Bildspeicher 8 Bit tief sind, wird das RGB-Bild zur Darstellung im Dither-Verfahren umgerechnet und mit geeigneter Look-Up-Table mit 8 Bit dargestellt. Man wird staunen, wie gut diese Darstellung trotz sehr allgemeiner Look-Up-Table-Belegung ist. PicCOLOR ist jedoch auch in Echtfarb-Versionen mit mehr als 8 Bit Farbtiefe verfügbar. Fragen Sie hierzu das Entwicklungsteam.

Wenn ein Farbspeicher definiert wurde und dieser aktiviert ist, so ändert sich das Hauptmenü entsprechend: Das erste Menü, das "File"-Menü, wird in "TrueColor"-Menü umbenannt und es erscheinen in allen Menüs neue, an die True-Color-Speicher angepaßte Funktionen. Nur das Control-Panel bleibt exakt gleich. Neben einfachen Funktionen zum Laden, Speichern, Löschen und Kopieren von Echtfarbbildern findet man z. Zt. hauptsächlich die Umwandlungsroutinen für verschiedene Farbräume (HSI, HLS, YIQ, ...). Wenn ein normaler 2D-Bildspeicher aktiviert ist, so findet man im Processing->TrueColor-Menü Funktionen, mit denen man einzelne Farbebenen der verschiedenen Farbräume in den normalen Bildspeicher zur Verarbeitung übertragen kann.

*6.13.3. Define 3D/Sequence-Buffer

Bildspeicher für 3D-Bilder oder Sequenzen sind im picCOLOR-Programm in der gleichen Weise angelegt, nämlich als Sequenz von 2D-Schnittbildern. Bei einer Sequenz ist dann die dritte Dimension die Zeit, bei einem 3D-Bild die Tiefenrichtung. Die genauere Definition von und das Arbeiten mit 3D-Bildspeichern oder Video-Sequenzen ist im 3D/Sequence-Zusatzmodul beschrieben. Auch hier gilt, daß alle 3D/Sequenz-Bildspeicher die gleiche Größe haben müssen. Sie können jedoch auch kleiner als die normalen 2D-Speicher (Grauwert- oder Echtfarbspeicher) sein.

Es gibt weitere 3D-Arbeitsspeicher, die von unterschiedlichen Funktionen automatisch definiert und angelegt werden. Dies sind:

  • 3D-FFT-Speicher: für jedes 3D-Bild kann ein 3D-FFT-Speicher definiert werden

Diese besonderen Speicher können vom Benutzer auf Wunsch freigegeben werden, möglicherweise allerdings nur in bestimmter Reihenfolge. Bei aktivem 3D/Sequenz-Speicher erhält man ein angepaßtes Hauptmenü mit dem "3D/Sequence"-Menü statt des "File"-Menüs und geänderten Funktionen. Es können keine TrueColor-Sequenzen oder 3D-Bilder definiert werden. Mit gewissen Einschränkungen ist dies allerdings doch möglich: so kann eine Sequenz von Bayer-kodierten Farb-Bildern von einer Bayer-Farbkamera eingelesen werden. Zur Ansicht einer Farbvideosequenz kann man alle Einzelbilder der Sequenz mit dem Dither-Verfahren umrechnen und als 8-Bit-Bilder in den Sequenzspeicher laden. Nach sinnvoller Look-Up-Table-Einstellung kann dann die Farbsequenz wiedergegeben werden. Hierzu existieren spezielle MACRO-Programme.

6.13.4. Configuration

Es öffnet sich ein Dialogfenster, in dem die aktuellen "Configuration Parameter", d. h. die Systemeinstellungen, in einen File mit der Extension ".INI" abgespeichert werden oder von einem solchen File eingelesen werden können. Die aktuellen System-Parameter werden in einem Textfenster der Dialogbox angezeigt. Es sind z. B.:

  • Bildspeichergröße

  • Pixelgröße in Bit/Pixel

  • Anzahl der Bildspeicher

  • Art der Bildspeicher (Echtfarbspeicher, 3D-Speicher)

  • Definition der 3 möglichen 2D-FFT-Speicher

  • Koordinaten der drei "Regions of Interest" (ROI)

  • eventuell definierte Spezial-Speicher

Nach Aufstarten des picCOLOR-Systemes kann damit eine gespeicherte Konfiguration wieder geladen und restauriert werden. Ein spezieller ".INI"-File ist der File: "STARTUP.INI", der - wenn im PICCOLOR-System-Verzeichnis vorhanden - immer automatisch beim Aufstarten des picCOLOR Programmes geladen wird. Durch Umbenennen eines vom Benutzer erstellten ".INI"-Files in "STARTUP.INI" kann auch die benutzerdefinierte Konfiguration automatisch beim Aufstarten geladen werden. Wenn z. B. immer mit 24 Bit Echtfarbbildern gearbeitet werden soll, so kann man die manuelle Definition des 24 Bit Farbspeichers nach jedem Neustart des picCOLOR Programmes umgehen, indem diese durch den STARTUP.INI-File durchgeführt wird. Das Laden und Abspeichern eines ".INI"-Files geschieht über die "Load" und "Save"-Schaltflächen. Ein Filename wird interaktiv eingefragt, wobei automatisch die Extension ".INI" an den Namen angehängt wird. Beim Ladevorgang folgt eine Sicherheitsabfrage, da bei unterschiedlicher Bildspeichergröße und -anzahl alte Bilder verloren gehen könnten. Anschließend wird dann die Systemkonfiguration geladen oder abgespeichert. Dabei sind im File zusätzlich zu den oben angegebenen Konfigurationsparametern folgende Einstellungen abgelegt:

  • System Comments (Fun Messages): Mit diesem Schalter können die in unterschiedlichen Zeitabständen erscheinenden mehr oder weniger intelligenten Systemkommentare abgeschaltet werden, falls diese als störend empfunden werden...

  • Enable Undo-Funktion: Üblicherweise arbeitet das picCOLOR-System mit einem schnellen Undo-Speicher. Durch Eingabe der Undo-Taste "U" wird schnell zwischen dem ursprünglichen Bild vor der Bearbeitung und dem Ergebnisbild hin- und hergeschaltet. Die Benutzung dieses Undo-Speichers kann abgeschaltet werden. Nach Abschalten wird der Undo-Speicher nicht mehr überschrieben.

  • Load MACRO at startup: Beim Systemstart kann nach dem STARTUP.INI-File zur Grundeinstellung automatisch ein komplexeres Programm gestartet werden, ein sogenanntes MACRO-Programm. Dieses muß den Namen STARTUP.MCR besitzen und wird im PICCOLOR-System-Verzeichnis erwartet. Die Möglichkeiten eines MACRO-Programmes sind beinahe unbegrenzt - es können völlig automatische Auswertungen durchgeführt werden. Hierzu gibt es ein getrenntes Handbuch, das MACRO-Handbuch.

  • High Resolution Timer: In der PC-Hardware befindet sich ein sehr genauer Zeitgeber, der mit hoher Frequenz (z. B. 1193182 Hz beim Intel BX-Chipsatz oder 3579545 Hz beim Apollo VIA VX7 Chipsatz und anderen modernen Chipsätzen - bei manchen modernen Chipsätzen auch mit Prozessorfrequenz) läuft und von bestimmten Funktionen als Zeitgeber verwendet werden kann. Dies ist z. B. ein Zeitstempel, der eingelesenen Bildern einer Sequenz zugeordnet werden kann oder der bei einer Echtzeitauswertung den Daten mitgegeben werden kann.
  • Multithreading: einige der picCOLOR-Funktionen sind ausgelegt, in mehr als einer Thread abzulaufen, d. h. bei Vorhandensein auf mehreren Prozessoren oder Prozessorkernen gleichzeitig zu laufen und damit die Ausführungsgeschwindigkeit beträchtlich zu erhöhen. Dies ist natürlich besonders einfach bei Funktionen zu implementieren, die das Bild Pixel für Pixel abarbeiten. In diesem Fall wird dann z. B. einfach der eine Prozessor die obere Hälfte des Bildes übernehmen, der andere Prozessor die untere Hälfte des Bildes. In einigen Fällen werden sogar bis zu 8 Threads unterstützt. Bei aufwendigeren oder nicht-linearen Bildverarbeitungsfunktionen ist die Implementation jedoch nicht möglich oder sehr aufwendig. Bitte fragen Sie bei Bedarf nach, ob eine bestimmte gewünschte Funktion auf mehrere Threads verteilt werden kann. Die Einstellung, ob mit mehreren Threads gearbeitet wird, geschieht dann in der Regel automatisch: wenn picCOLOR beim Start mehrere Prozessoren oder Prozessorkerne (Processor Core) feststellt, so wird das Multithreading-Flag entsprechend gesetzt. Man kann dieses Flag jedoch auch manuell setzen oder überschreiben. Wenn es eingeschaltet wird, muß entschieden werden, ob die Defaulteinstellung, die von der Anzahl der Prozessoren oder Cores abhängt, überschrieben wird und die absolut maximal mögliche Anzahl von Threads unterstützt wird.
  • MMX/SSE2 Optimization: einige Funktionen im picCOLOR-Programm sind per Hand-Assemblierung auf den speziellen MMX- oder SSE2-Befehlssatz der x86-Prozessoren hin optimiert worden. Dies kann z. B. bei morphologischen Operatoren wie der Erosion oder Dilatation einen Faktor von 2..4 an Geschwindigkeit bedeuten. Dieses Flag wird automatisch gesetzt, wenn festgestellt wird, daß der benutzte Prozessor den jeweiligen Befehlssatz unterstützt. Hierzu muß jedoch die benutzte Programmversion den gewünschten Befehlssatz implementiert haben. Erhältlich sind picCOLOR-Programmversionen für MMX oder SSE2. Achtung: dieses Flag gilt nur für die speziellen hand-assemblierten Funktionen. Es hängt von der Art der Kompilation des picCOLOR-Programmes ab, ob eventuell andere MMX oder SSE/SSE2 Optimierungen automatisch durch den Compiler benutzt wurden. Dadurch kann es möglich sein, daß eine für SSE2 kompilierte Programmversion auf bestimmten - in der Regel älteren - Prozessoren nicht lauffähig ist. Bitte fragen Sie in einem solchen Fall nach der jeweiligen kompatiblen Version.

Weiterhin hat man die Möglichkeit der Auswahl der eingesetzten Bildeinlesekarte, falls mehr als eine im PC eingesetzt ist. Dies kann sinnvoll sein, wenn die primäre Bildeinlesekarte nur einen Graustufen-Frame Grabber besitzt oder nur für spezielle Digitalkameras geeignet ist und Sie z. B. eine zweite Bildeinlesekarte mit Echtfarbfähigkeit einsetzen oder wenn Sie über zwei getrennte Frame Grabber Stereobilder gleichzeitig einlesen wollen. In diesem Fall kann dann über das Menü die primäre oder die sekundäre Bildeinlese-Hardware aktiviert werden. Wenn zwei sekundäre Bildeinlesekarten eingebaut sind, so kann in diesem Menü auch die jeweils aktive Karte eingestellt werden. Die Auswahl, ob und welche Bildeinlesekarten grundsätzlich erlaubt sind und verwendet werden können, muß bei der Programmkompilation geschehen, da die Ansteuerung der Bildeinlesekarten aufgrund der Struktur der von den Herstellerfirmen gelieferten Software normalerweise fest in das Programm eingebunden ist.

  • Disable Grabber: Abschalten aller Frame Grabber (Bildeinlesekarten)

  • Primary Grabber: Benutzung des primären Frame Grabber, für den picCOLOR speziell angepaßt wurde, wenn dieser erfolgreich initialisiert werden konnte.

  • Secondary Grabber: Benutzung des oder der sekundären Frame Grabber, soweit diese vorhanden und über den PICC_NT.CFG-File dem picCOLOR Programm bekannt gemacht sind. Es können z. Zt. bis zu zwei sekundäre Frame Grabber benutzt werden, die dann z. B. für Stereo-Bilder gleichzeitig zwei Bilder aufnehmen können. Bisher wurde dieses Feature jedoch nur für zwei sehr einfache Videonorm-Grabber benutzt.
  • Set FireWire Main Grabber: hier kann eine vorhandene FireWire (IEEE1394a) Schnittstelle als Haupt-Frame-Grabber angesehen werden. Dies hat hauptsächlich Auswirkung auf die interne Funktion (oder MACRO-Funktion) "acquire", die dann automatisch Bilder von der FireWire-Schnittstelle einliest. Dadurch werden alle Funktionen, die diese Schnittstelle benutzen,auch automatisch den oder die FireWire-Kameras nutzen, z. B. die 2D/3D-Tracking-Funktionen.

6.13.5. Thread Priority

Für verschiedene Funktionen werden von picCOLOR zusätzliche Threads (parallel laufende Prozesse) gestartet, um entweder Multitasking zu ermöglichen oder um die Funktionsausführungsgeschwindigkeit bei Multi-Prozessor-Systemen zu erhöhen. Die Priorität aller zukünftigen Threads im aktiven Bildspeicher kann auf der linken Seite der Dialogbox eingestellt werden. Auf der rechten Seite wird der Prioritätswert für alle zukünftigen zu startenden Threads in neu zu definierenden Bildspeichern eingestellt. Diese Einstellungen dürfen nur mit besonderer Vorsicht geändert werden. Insbesondere sollten die Stellungen "Idle" und "Time Critical" auf keinen Fall verwendet werden, da hiermit das komplette System in der Ausführung derart behindert werden könnte, daß z. B. nicht einmal mehr der Mauszeiger reagiert...

Alle Einstellungen sind relativ zur gesamten Prozess-Priorität, also der Priorität des picCOLOR-Programmes.

*6.13.6. Trigger Functions (Real-Time Zusatzmodul)

Die Triggerfunktionen dienen dazu, Messungen oder Bildaufnahmen auf externe Events zu triggern, d. h. exakt mit Auftreten solcher Events zu starten oder zu beenden. Hierzu gibt es in der aktuellen Version des picCOLOR Programmes prinzipiell vier Möglichkeiten der Triggerung:

  • Triggerung durch interaktiven Input des Benutzers, d. h. durch Tastendruck (Mouse oder Keyboard). In der Regel bewirkt hier die linke Maustaste oder die RETURN-Taste den Beginn einer Messung, die rechte Maustaste oder die ESC-Taste das Ende der Messung oder Bildaufnahme.

  • Software Trigger, d. h. eine Triggerung durch ein im Bild vorkommendes Detail. Dies kann z. B. ein helles Objekt sein, das an einer zuvor definierten Triggerlinie im Bild liegt. Trigger erfolgt dann, wenn z. B. die Grauwertschwelle an dieser Linie überschritten werden.

  • Hardware Trigger, d. h. durch hardwaremäßige Beschaltung eines Eingangskanales, z. B. durch ein TTL-Low oder High Signal. Die Verfügbarkeit eines solchen Eingangskanales hängt natürlich stark von der verwendeten Bildeinlesekarte ab. Bei den meisten Bildeinlesekarten gibt es mehrere I/O-Leitungen, die als Input geschaltet werden können. Zusätzlich ist auch der Einbau einer getrennten Digital-I/O-Karte möglich, die dann mehrere I/O-Leitungen für die Triggerung zur Verfügung stellt.

  • DDE- oder Communication-Trigger, d. h. Steuerung über die DDE-Schnittstelle oder eine Serielle Schnittstelle, z. B. über einen Event, der von einem anderen Programm oder sogar von einem anderen Computer gesteuert wird. Diese Triggerung funktioniert bei Echtzeitanwendungen nur dann zuverlässig, wenn vom Frame Grabber Treiber eine echte CallBack-Funktion zur Verfügung gestellt wird (siehe RealTime-Manual).

Die Triggermöglichkeiten sind in der Regel gleichberechtigt. Es kann mehr als nur eine Triggermöglichkeit gleichzeitig eingeschaltet sein. Die interaktive Eingriffsmöglichkeit ist in der interaktiven Version der picCOLOR-Software immer eingeschaltet, um dem Benutzer einen Abbruch der Funktion im Notfall zu gestatten. Wenn die Triggerfunktionen über ein MACRO-Programm benutzt werden, kann in bestimmten Fällen auch der Benutzerinput komplett abgeschaltet werden.

Zusätzlich zur Triggerart kann eine Meßzeit und eine Start- und Stop-Verzögerung eingestellt werden. Alle Zeitangaben werden in Millisekunden eingegeben. Die maximale Zeitangabe für alle diese Werte beträgt systembedingt 214740 Sekunden. Dies ist der maximale Integer-Wert geteilt durch 100 und entspricht der internen Zeitauflösung von 0.1ms. Das entspricht beinahe 60 Stunden. Die einzelnen Zeiten wirken wie folgt:

  • Measurement Time: Wenn hier eine endliche Zeit eingetragen wird (unendlich == -1), dann wird die aktuelle Messung oder Bildaufnahme nach dieser Zeit automatisch beendet, ohne daß eine Stop-Triggerung auftreten muß.

  • Start Delay: Nach einer Triggerung wartet das System noch die "Start Delay"-Zeit ab, bevor die Bildaufnahme oder Messung beginnt.

  • Stop Delay: Wenn eine Messung durch eine Triggerung beendet wird, so wird noch die "Stop Delay"-Zeit abgewartet, bevor die Messung tatsächlich gestoppt wird.

  • Min Time 1.->2. Trigger: Hier kann die minimale Zeitspanne zwischen dem ersten und dem zweiten Trigger in einer Start/Stop-Triggersequenz eingestellt werden. Dies ist notwendig, wenn bestimmte Triggerarten nicht flankengetriggert sind sondern zustandsgetriggert und dementsprechend die positive Triggerbedingung eine bestimmte Zeit anhält.

Eine genauere Beschreibung dieser Triggerfunktionen mit einigen Beispielen finden Sie im Echtzeit (Real-Time) Handbuch

6.13.7. DDE Control

Die DDE (Dynamic Data Exchange) Schnittstelle ist zwar eine alte Windows-Schnittstelle, hat sich jedoch sehr gut besonders für relativ kleine Datenmengen bewährt und ist daher im picCOLOR-Programm implementiert. Sie ist zur Übertragung von Ergebnissen und Reaktionen zu anderen Programmen auf demselben Rechner oder im Netz laufenden Rechnern geeignet. Alle Daten, die von picCOLOR auf einen File ausgegeben werden können, können wahlweise auch auf die DDE-Schnittstelle gelegt werden. Hier können die Daten dann von anderen Programmen abgeholt werden oder automatisch zu weiteren Programmen geschickt werden.

Außerdem ist es möglich, Daten zum picCOLOR-Programm zu schicken oder das picCOLOR-Programm über die DDE-Schnittstelle fernzusteuern. Für eine genaue Beschreibung des Datenformats und für ein Beispielprogramm zur DDE-Implementierung eines DDE-Client-Programmes wenden Sie sich bitte an das Entwicklungsteam. Bei der eigenen Programmierung von DDE-Client-Programmen ist zu beachten, daß die Programmierung in der Programmiersprache "C" geschehen sollte. Bei Programmierung in "Visual-Basic" ist die Transfergeschwindigkeit deutlich geringer.

Allgemein können über die Einstellung eines bestimmten DDE-Flags oder über ein MACRO-Programm alle Systemausgaben, die normalerweise zu einem File oder auf die Konsole (d. h. den Monitor) gesendet werden, auch zur DDE-Schnittstelle gesendet werden. Ebenso können alle Systemeingaben von der Tastatur, von File oder von der DDE-Schnittstelle geschehen, d. h. man kann das komplette picCOLOR-Programm über die DDE-Schnittstelle fernsteuern. In der derzeitigen Version des picCOLOR-Programmes mit dem 2D/3D-Tracking-Extensionmodul können zusätzlich noch geschwindigkeitsoptimiert für Echtzeitverarbeitung die Ergebnisdaten aus dem 2D/3D-Positionsbestimmungs-Zusatzmodul direkt zur DDE-Schnittstelle gesendet werden. Hierzu gehören die Status/Error-Code-Daten als ASCII-String, die 2D-Markerpositionen, die 3D-Rekonstruktionsdaten und die 3D-Lage- und Drehungsdaten eines Objektes. Außerdem können dem picCOLOR-Programm bestimmte Befehle (speziell für das Tracking-Extensionmodul) über die systembekannten Hot-Keys übermittelt werden. Es sind folgende Namen definiert (Groß/Kleinschreibung muss für die "Items" beachtet werden):

  • Servername (Application): "PicDDE"

  • Topic: "PicPos"

  • Items: "Error", "Pos2d", "Pos3d", "PosAng", "HotKey", "IOString", "MResult", "Timer"

Das Item: "Timer" ist für den Test der Übertragung geeignet, mit dem im 1-Sekundenabstand (per MACRO-Funktion auch andere Intervalle) ein Timerstand übertragen wird, wenn dieser im DDE-Menü mit dem Schalter "Enable Timer Ticks" gestartet wird.

Kommandos können über die DDE-Schnittstelle nur dann zum picCOLOR-Programm übertragen werden, wenn der Schalter "Read Cmd from I/O String" eingeschaltet ist. Die Kommandos müssen dem MACRO-Programm-Standard entsprechen, jedoch darf immer nur eine Zeile für sich gesendet werden.

6.13.7a. TCP/IP Control

Statt der DDE-Schnittstelle kann zur Datenübertragung auch eine Verbindung über das TCP/IP-Protokoll gestartet werden. Hierbei agiert picCOLOR als TCP/IP-Server, der an einen beliebigen TCP/IP-Client Daten schickt. Hierzu werden "Sockets" geöffnet. Dabei muß zuerst eine Zieladresse und ein Port angegeben werden. "127.0.0.1" ist die Adresse des eigenen Rechners. Üblicher Port für solche Übertragungen ist z. B. der Port "27015". Man kann entweder das TCP- oder das UDP-Protokoll auswählen. Beim TCP-Protokoll kann ein fehlerhaft empfangener Datenblock erneut von picCOLOR angefordert werden, während das bei UDP nicht möglich ist. Allerdings kann picCOLOR natürlich nicht alle Daten ewig lange aufheben, besonders nicht bei schnellen Echtzeitmessungen. Sobald die Datenfelder intern überschrieben wurden, können die alten Daten nicht mehr geliefert werden. Mit dem Schalter "Open" wird dann eine sogenannte "non-blocking" TCP/IP-Verbindung (socket) erstellt, über die bidirektional Daten und Befehle verschickt werden können. Wenn mehrere Datenströme eingeschaltet sind (Enable 2D/3D-Output), dann sind diese Datenströme allerdings nicht so schön voneinander getrennt wie bei den "Items" der DDE-Übertragung, sondern werden nacheinander über den gleichen socket übertragen. Wenn 2D- und 3D-Daten übertragen werden, so kommen die 3D-Daten zuerst, dann erst die 2D-Daten. Dies ist sinnvoll, da der 3D-Algorithmus nicht sichtbare 2D-Datenpunkte rekonstruieren kann und daher nach der 3D-Rekonstruktion sinnvoll ausgeben kann. Wie bei der DDE-Übertragung ist auch hier ein 1-Sekunden-Timer eingerichtet, der für Tests benutzt werden kann. Da wie schon gesagt alle Daten über den gleichen socket kommen, gibt es die Möglichkeit, bestimmte Datenströme getrennt voneinander ein- und ausschalten. Dies sind die Test-Timer-Ticks, normale File I/O (d.h. alles, was normalerweise über einen File gespeichert würde), und dann getrennt davon noch 2D- und 3D-Daten aus dem Real-Time-Tracking-Zusatzmodul.

Um das picCOLOR-Programm über die TCP/IP-Schnittstelle fernsteuern zu können, muß ähnlich wie bei der DDE-Steuerung der Schalter "Read Cmd from I/O String" eingeschaltet sein. Sonst werden alle empfangenen Strings lediglich in der I/O-Dialogbox abgelegt. Es gibt zum Thema Fernsteuerung ein eigenes Handbuch, das auf Wunsch geliefert werden kann.

6.13.8. I/O Dialog Box

Die I/O Dialogbox dient zur Aufnahme und Ansicht von Meldungen, die vom picCOLOR-Programm zur Konsole gesendet werden. Dies sind üblicherweise Text-Output-Meldungen oder Fehlermeldungen, die aus irgendeinem Grunde nicht über eine Messagebox ausgegeben werden. Dies wird intern über die File-Handle 1 und 2 getätigt, so daß solche Ausgaben auch von einem MACRO-Programm über ein Schreiben auf File Handle 1 oder 2 durchgeführt werden können. Über bestimmte Wahlschalter im Data-File-Menü (Kap. 8.) kann dieser Output wiederum auf die DDE-Schnittstelle umgeleitet werden, so daß dieses Feature dazu benutzt werden kann, Messages auf die DDE-Schnittstelle auszugeben und dies vorher mit der I/O-Dialogbox zu testen.

Die I/O-Dialogbox dient weiterhin auch zur Eingabe für das picCOLOR-Programm. Über das File-Handle 0 (allgemeiner Konsole Input) kann ein String, der in der I/O-Dialogbox steht, als Eingabe verwendet werden. Strings lassen sich in die I/O Dialogbox manuell oder per DDE-Schnittstelle schreiben.

6.13.9. Counter / Timer / I/O

Für bestimmte Echtzeitmessungen ist es notwendig, Meßereignisse aufeinander zu synchronisieren oder den genauen Zeitpunkt einer Messung abzufragen.

In der Regel ist in jedem PC zusätzlich ein Hardware-Zähler eingebaut, der mit einer bestimmten relativ hohen Frequenz getaktet ist. Dieser Zähler kann für bestimmte Zeitmessungen oder zur Erzeugung von Zeitstempeln für die Bildzuordnung in Sequenzen oder Echtzeitauswertungen benutzt werden (siehe auch "Configuration", Kap. 6.13.4 )

Hierzu können jedoch alternativ auch verschiedene Hardware-Erweiterungskarten mit Timer-Modul in den Rechner eingesetzt werden, die von der Software abgefragt werden können. Bisher wurden z. B. die Counter/Timer und I/O-Karten der Firma Keithley GmbH (CTM05) und der Firma Decision Computer International Ltd. (z. B. der 8255/8254 Lab Adapter sowie die PCI8255-Karte) eingesetzt und an die picCOLOR-Software angepaßt. Neben den Grundfunktionen zum Initialisieren, Starten, Auslesen und Stoppen des Timers können auf Wunsch beliebige weitere Funktionen implementiert werden, wenn sie von der Hardware unterstützt werden. Aufbauend auf der (8255/8254 Lab Adapter)-Karte kann sogar eine aufwendige PLL-Steuerung geliefert werden, die aus einem globalen Synchronisationssignal konditionierte Synchronsignale für die Kamerasteuerung erzeugen kann. Für weitergehende Fragen kontaktieren Sie bitte das Entwicklungsteam. Am Beispiel der 8255/8254-PCI-Karte der Firma Decision Computer International Ltd. soll hier das Öffnen oder Initialisieren des Counters und dessen Einstellung aufgezeigt werden:

Wenn der "Open"-Schalter betätigt wird, erscheint eine Dialogbox, in der eine Hardware-Karte ausgewählt werden muß. Hier im Bild ist z. B. die Karte "8255/8253" als "Device0" verfügbar. Nach der Auswahl kann dann mit dem "Edit"-Taster in einer neuen Dialogbox einer der auf der Karte befindlichen Zähler (Counter) angewählt und programmiert werden.

Hier wurde der Counter 0 mit dem Wert "1000" vorbelegt. Wenn der eingesetzte Quarz oder Trigger-Takt-Eingang z. B. 1MHz besitzt, würde der Counter nun 1kHz-Impulse liefern. Der hier mit dem "Radio"-Button aktivierte Counter kann übrigens danach auch von der Basis-Counter-Dialogbox aus eingestellt oder verstellt werden - man braucht dann nicht jedesmal in die Edit-Dialogbox hineinzugehen. Bei den Counter-Karten der Firma Keithley sieht die Einstellung in Prinzip ähnlich aus, allerdings gibt es da noch weitere Optionen.

Viele dieser Counter-Karten, wie auch die hier beschriebene "8255/8254 Lab Adapter"-Karte und die PCI8255-Karte, besitzen zusätzlich auch einfache I/O-Leitungen. Diese können nach Initialisierung entweder hier über den Schalter I/O-Lines, der eine spezielle Dialogbox öffnet, oder über die Trigger-Dialogbox gesetzt werden.

Hier sind alle schaltbaren I/O-Leitungen mit einem eigenen Schalter versehen. Ein großer Schalter deutet an, daß die jeweilige Leitung noch nicht benutzt wurde und daher möglicherweise auch noch nicht initialisiert oder gesetzt ist und daher möglicherweise noch im tri-state-Zustand ist, d.h. noch nicht als Input oder Output definiert ist. Ein Anklicken setzt in der Regel (hardwareabhängig) den ganzen 8-Bit-Port als Output, dessen einzelne Bits dann über Check-Boxen zu 0 oder 1 gesetzt werden können. Wenn die Check-Boxen grau sind und nicht anwählbar sind, so sind die zugehörigen Leitungen als Input definiert und die Check-Boxen zeigen den jeweiligen Zustand beim Öffnen der Dialogbox an. Der "Set Input"-Schalter öffnet eine weitere Dialogbox, die dazu dient, bestimmte I/O-Leitungen als Input zu definieren. Diese ist auch über die "Trigger"-Dialogbox erreichbar.

Die Einstellung der Input-Lines ist z. Zt. noch etwas spartanisch eingerichtet: man sollte die Nummer der Input-Line oben direkt über die Zifferneingabe eingeben und dann den Test-Schalter drücken.

6.13.10. System Command

List Directory
Get Current Directory
Make Directory
Remove Directory
Change Directory

---------------------------
Get Current Drive
Change Current Drive

---------------------------

Delete File
System Command

Es können verschiedene Systemkommandos aufgerufen werden. Dies ist z. B. sinnvoll, um in ein anderes Unterverzeichnis auf dem PC-System zu wechseln, um ein Listing des aktuellen Verzeichnisses mit beliebigem Suchparameter (incl. "wild char’s") anzuzeigen oder um einen Druckvorgang zu starten. Durch Anklicken des "Interactive Operating System"-Textfensters kann ein einzeiliger Befehl eingegeben werden und an das Betriebssystem des PC abgeschickt werden.

  • "Directory" zeigt nach Eingabe einer Suchinformation das aktuelle File-Verzeichnis an

  • "Show Path" zeigt das aktuelle Unterverzeichnis an

  • "Make New Directory" erzeugt ein neues Unterverzeichnis (Subdirectory)

  • "Remove Directory" Löscht ein Verzeichnis

  • "Show Drive" zeigt das aktuellen Laufwerk an (z. B. "C:")

  • "Change Path" läßt Sie einen neuen Path, d. h. ein neues Unterverzeichnis anwählen

  • "Change Drive" läßt Sie ein anderes Laufwerk wählen. Dazu geben Sie den Laufwerksnamen mit anschließendem Doppelpunkt ein (z. B. "C:").

  • "Delete File" löscht einen File vom aktuellen Verzeichnis, wenn sie den Filenamen mit Extension angeben.

  • "Interactive Operating System" ermöglicht es, eine komplette Kommandozeile einzugeben. Hiermit können beliebige Kommandos auf Ebene der DOS-Shell ausgeführt werden, z. B. das Ansehen eines Datenfiles mit dem DOS-Befehl "TYPE" oder mittels eines Texteditors oder das Aufrufen beliebiger Programme. Außer einer Fehlermeldung in dem Fall, daß der Befehl nicht ausgeführt werden konnte, wird keine weitere Meldung an das picCOLOR Programm zurückgegeben. Zur Ausführung des Befehls wird automatisch eine DOS-Box geöffnet. Nach Beendigung des Befehls wird die DOS-Box sofort wieder geschlossen. Es ist also in der Regel nicht möglich, den Inhalt der DOS-Box interaktiv zu betrachten. Beim Directory-Command ist es z. B. möglich, die DOS-Box länger auf dem Bildschirm zu halten, indem man dem Kommando den Befehl "| more" anfügt.

*6.13.11. Stereo Control (im Stereo-Zusatzmodul)

Im picCOLOR Programm gibt es grundsätzlich zwei verschiedene Möglichkeiten zur Darstellung von Stereobildern: entweder mit Rot/Grün-Auszügen des Bildes und einer Rot/Grün-Brille oder über ein schnelles Hin- und Herschalten der beiden Stereo-Bilder für beide Augen und die Benutzung einer LCD-Shutter-Brille. Beide Möglichkeiten werden im Stereo-Zusatzmodul genauer beschrieben.

Zur Benutzung der Stereofunktionen müssen Bildspeicher für das linke und rechte Auge definiert werden. Danach kann das Stereo-Flag eingeschaltet werden. Hiermit werden bestimmte Stereo-Funktionen aktiviert. Eine davon ist die Stereo-Darstellung mit der LCD-Shutter-Brille über den Punkt "Display Stereo". Bei geeigneter Hardware wird dann der Monitor auf eine sehr hohe Bildwiederholfrequenz geschaltet (z. B. 120 oder 140 Hz) und die Bilder für das linke und rechte Auge werden abwechselnd dargestellt. Gleichzeitig wird die LCD-Shutter-Brille über einen Infrarot-Sender so gesteuert, daß das linke und rechte Auge genau mit der Bildschirmdarstellung synchronisiert wird. Man sieht dann ein räumliches Bild mit halber Monitor-Frequenz, also z. B. 60 oder 70 Hz. Dieses Verfahren ist im Gegensatz zum Rot/Grün-Verfahren auch für Farbbilder geeignet. Weitere Funktionen, die die Stereo-Speicher benutzen, sind das Stereo-Bildeinlesen, die 3D-Vektordarstellung, die 3D-Relief-Darstellung von Grauwertbildern und die stereometrische Vermessung von Bildern. Die Stereo-Bildübernahme ist nur aus der Acquire-Dialogbox aus möglich, in der auch das Stereo-Flag geschaltet werden kann, wenn sinnvolle Stereo-Bildspeicher gewählt wurden.

Neben der Stereo-Einstellung mit zwei Bildspeichern kann man mit einer oder zwei Kameras auch mit der Split-Screen-Einstellung arbeiten. Hier teilen sich zwei Stereobilder einen einzigen Bildspeicher, entweder horizontal oder vertikal getrennt. Genauere Beschreibung findet man im Kapitel 6.5.2. Split-Screen Bildübernahme.

Bei genauen Stereovermessungen wird man in der Regel vor der Messung eine Kalibrierung der Linsenfehler durchführen. Dies ist z. B. eine Kissen- oder Tonnenverzerrung des Bildes oder irgendwelche Schieflagen durch ungenauen Einbau des Kamerasensors. Die Entzerrung wird über das TSAI-Kameramodell durchgeführt, dessen verschiedene Parameter man in der Camera Calibration Dialogbox einstellen kann. Eine genauere Beschreibung findet man im Kapitel Camera Calibration.

6.13.12. Image File Info

Last Loaded Image Size

-----------------------------------

Set Special File Params

Display TIFF Errors

-----------------------------------Display Image Buffer Header
Display BMP Header
Display TIFF Header

Display EXIF Header

Mit der Funktion "Last Loaded Image Size" kann die Größe und der Name des zuletzt geladenen Bildes inspiziert werden und es kann die aktuelle ROI auf die Größe und Lage des zuletzt eingelesenen Bildes (TIFF, JPG, GIF, PPM, S3D, RAW, Clipboard, Acquisition, Twain, FireWire) gesetzt werden. Diese letztere Funktion ist auch in der Toolbox unter dem Menü-Punkt Define-ROI schnell erreichbar.

Der TIFF-Header des zuletzt geladenen TIFF-Bildes oder der BMP-Header des zuletzt eingelesenen BMP-Bildes (Windows-Bitmap) kann angezeigt werden. Hierbei werden nur die wichtigsten "Tag´s" angezeigt, z. B. Bildbreite und -höhe, Kompressionsart, Art der internen Speicherung und andere. Wenn ein TIFF- oder JPG-Bild einen EXIF-Header enthielt, so kann dieser ebenfalls auf die gleiche Weise angezeigt werden. Auch hierbei werden nur die wichtigsten Tags ausgelesen und angezeigt.

Einschalten des Schalters "TIFF-Errors" bewirkt, daß nicht erkannte TIFF-Befehle beim Bildeinlesen mit genauer Bezeichnung ausgegeben werden. Auf diese Weise kann festgestellt werden, welcher TIFF-Befehl den Fehler verursachte und ob es ein schwerer Fehler war. Im Zweifelsfall bitte die Fehlernummer mit allen Parameters aufschreiben und dem Entwicklungsteam mitteilen! Zusätzliche Features können in der Regel mit wenig Aufwand implementiert werden!

Mit "Set Special File Params" können die Parameter für das Laden im RAW-Fileformat angegeben werden, z. B. Bildbreite und -höhe, Bittiefe, Shiftwerte für das selektive Einlesen von Teilwörtern (d. h. z. B. niedrigwertiges oder höherwertiges Byte bei 16Bit Bildern) und andere. Diese Dialogbox erscheint automatisch, wenn ein Bildfile im RAW-Format eingelesen werden soll.

6.13.13. System Time

Hier wird in einer Message-Box die Systemzeit, d. h. die aktuelle komplette Laufzeit seit Programmstart in Sekunden und außerdem die aktuelle Tageszeit angegeben.

6.13.14. System Information

Hier wird in einer Message-Box die Systeminformation angegeben. Dies ist der gleiche Text, der auch nach dem Ausführen des picCOLOR-Benchmarks unter den Benchmark-Werten angezeigt wird, d. h. Softwareversion, Hardware-Information wie Prozessoranzahl und -typ, die gefundene Graphikkarte, und eventuell auch Information über spezielle Prozessorfeatures wie Hyperthreading, Dual-Core usw. Wichtig ist hier die Zeile: "Thread Distribution" - hier sieht man, wie die Software multi-threaded Funktionen auf die einzelnen Prozessoren/Cores verteilt.

6.13.15. Test Functions

picCOLOR Benchmark

Harddisk Speed Test
Physical Memory Test
High Res. Timer Test

Other Test Function

In diesem Menü sind einige Spezialfunktionen enthalten, die Sie bei normaler Benutzung des Programmes nicht benötigen. Sie sind zum Test gedacht oder zur speziellen Einstellung bestimmter Prozessor- oder System-Register. Einige der nachfolgend beschriebenen Funktionen sind immer enthalten, andere sind möglicherweise aktuell im README.TXT-File beschrieben.

6.13.15.1. picCOLOR Benchmark

(See description in English below)

Mit dem picCOLOR Benchmark kann die Ausführungsgeschwindigkeit des Systemes speziell für Bildverarbeitungsfunktionen getestet werden. Diese Systemleistung hängt sicher in erster Linie von der Taktfrequenz und vom "IPC"-Faktor (Instructions Per Clock) des Prozessors ab. Wichtige Einflußfaktoren sind jedoch auch die Art und Größe des Prozessor-Cache und die interne Prozessor-Architektur (die z. B. recht unterschiedlich ist bei Intel oder AMD), die Anzahl der Prozessoren oder Prozessorkerne, die verfügbare Speichermenge des Systemes, und schließlich die Graphikkarte und der hierzu benutzte Treiber. Beim Ablauf des Benchmark ist es natürlich sehr wichtig, dafür zu sorgen, daß die CPU nicht anderweitig beschäftigt ist, d. h. nicht anderen Tasks hoher Priorität Rechenzeit zuweisen muß, die dann dem Benchmark-Programm verloren geht. Daher ist es z. B. sinnvoll, vor dem Test alle anderen Programme zu schließen (auch im Hintergrund laufende) und den Test direkt nach dem Hochfahren des Systemes durchzuführen. Wenn mehrfaches Ausführen des Tests zu stark unterschiedlichen Ergebnissen führt (mehr als 3% Unterschied), so ist dies ein Indiz auf Hintergrundaktivität des Prozessors. Hier muß allerdings bemerkt werden, daß der erste Lauf des Benchmarks nach Starten des picCOLOR-Programmes in der Regel 1..2% langsamer ist als alle nachfolgenden Aufrufe. Dies gilt besonders für Mehr-Prozessor-Systeme.

Nach Aufruf der Funktion werden eine Reihe von Tests absolviert, die auf dem Bildschirm graphisch nachvollzogen werden können. In der neuesten Version des picCOLOR-Programmes werden alle Tests (bis auf die Video-Tests) in 3 unterschiedlichen Bildspeichergrößen durchgeführt, nämlich mit 768*512 Pixeln, mit 1280*1024 Pixeln und mit 2048*1024 Pixeln Auflösung. Hierdurch wird versucht, den direkten Einfluß der Größe des Prozessor-Cache-Speichers und des Öffnens von Threads im Multitasking-Betrieb zu minimieren. Nach einigen Minuten erscheint schließlich eine Dialogbox mit den Ergebnissen: Man erhält hier jeweils Geschwindigkeitsfaktoren relativ zu einem Referenzsystem, in der Regel einem 1 GHz PIII System mit Matrox G450 Graphikkarte und W2K Betriebssystem. Es folgt nun die kurze Beschreibung aller einzelnen Tests (Beschreibung z. Zt. nur in Englisch verfügbar):

  • Test 1 defines an internal bitmap compatible to the screen bit depth (which normally is 24 or 32 Bit RGB True Color), puts some little graphics (a test pattern) on this bitmap and converts this bitmap back to internal 8 bit gray level picCOLOR format. So this test mostly checks RGB->Gray conversion and handling of "compatible bitmaps". To get useful values, the Bit depth of the desktop should be 32 Bit. This test is single-threaded. The graphic card has a very small influence on this test.

  • Test 2 is morphological dilation and erosion, based mainly on handling many address pointers. This test can run dual-threaded. It runs in an SSE2 or MMX-optimized version, if the processor supports SSE2 or MMX commands.

  • Test 3 is a skeleton algorithm to make thin 1-pixel lines from the thick bars of the dilation process of the last function. This function can run dual-threaded.

  • Test 4 performs a texture recognition or segmentation, using a 16*16 Direct Cosine Transformation. It can run up to octo-threaded.

  • Test 5 is a floating point rotation with bi-linear interpolation. It rotates a random pattern image. This test can run up to octo-threaded.

  • Test 6 is a fixed point rotation with bi-linear interpolation. It is done twice as often as test 5. This test can run up to octo-threaded.

  • Test 7 is a Fourier transform test: FFT -> Power spectrum -> Inverse FFT. It is 32 Bit float. This test can run up to quad-threaded.

  • Test 8 opens a second image buffer, generates some random pattern, copies this pattern with a fixed pixel shift to the second buffer and performs a Particle Image Velocimetry calculation, i. e. considers the two images as particle seeded flow images that have been displaced by some flow speed. Displacement vectors are shown as a result. This test can run up to octo-threaded.

  • Test 9 converts 2 different fourier buffers from Real/Imag to Power/Phase representation and back. This test is always used in its dual-threaded version, even if only one processor core has been detected.

  • Test 10 does a local dynamic binarization of a random pattern with a strong gray slope. This test is not yet multi-threaded.

  • Test 11 does a Watershed segmentation. This function is normally used to separate touching objects in images. It uses approximately 5MByte of vector space that is used several times. Large processor cache can speed up this function. It is not yet multi-threaded.

  • Test 12 provides a test image with large and small white objects. These objects are searched and the small ones are rejected by internal rejection criteria. This test is not yet multi-threaded.

Using weight factors, these 12 tests are used to build an overall score. The weight factor is defined quite personally: it is how the development team judges the importance of the various functions...

Additionally there are 3 video tests that show the capabilities of the graphics card:

  • Test 13 is a video clip running at maximum speed in its own thread. The video clips are not really exciting, it is just sort of a clock rotating its pointer. Internally, however, this is a sequence of memory blocks (complete 768*512 pixel images) copied to the screen by using bitblock transfer functions as SetDIBitsToDevice of the MS API. We'll try to replace this by more exciting videos in the future. This test is important for users of high speed cameras and frame grabbers. When for instance grabbing at 500 frames per second into the system memory for a real time processing, a display of the live camera images can be useful. If the graphics card is too slow, however, the display would take too much valuable CPU time. While this may seem quite strange, it is the experience of many tests. Also it may be useful to check the clip before analyzing. In this case, we are happy to have at least the same playing speed as recording speed. Of course one could object that no real monitor is able to display 500 Hz, and even the human eye would not be able to see a motion displayed at this speed. This is correct, and it would be more professional to display the clip at monitor frequency and skip images for higher speed. We'll think about this in the future... The number of images used for the clip is shown in the brackets [128]. It depends on available memory. It is interesting to see that the most important influence is the graphics driver, not the card itself. So we found speed factors of 5 using the same Matrox G450 card and using different drivers, very strange... A very fast system at its time was the Matrox Parhelia card with approx 1200 frames per second, which translates to 470MBytes/sec transfer rate to the graphics card, only counting 8 bit gray levels. Modern graphics cards like the ATI 4870 or the nVidia X280 have even reached values of 4000fps with approximately 1.6GB/s transfer, again only using the 8 bit gray level. Actually I don't know exactly how it is done in Windows if the screen is 32 bit: are they converting to 32 bit and then transfering or transfering 8 bit and then converting in the graphics card to 32 bit? Who knows?
  • Test 14 is the same video clip as before, but now played in a zoomed mode, which may become interesting if images are larger than screen resolution and have to be zoomed out to see the complete image. This display normally is considerably slower.
  • Test 15 is a multi-threaded test to do the conversions of test 9 and at the same time displaying a video clip on the screen. This is an experiment how different threads with different priority behave, as the video thread is set to have a lower priority... It is always used in its multi-threaded form, even if only one processor or core is detected.

Tests 13..15 are not used for calculating the overall score because these tests are more graphics card dependent. They form a separate video score. The tests 1 to 12 are used to calculate a weighted value to indicate the overall system score. Higher scores are better. The additional tests at the bottom of the output file are simple floating point base functions or the Integer BitShift (to test the barrel shifter). They are designed to take up 100ms each on the reference system. Lower is better. Especially the ArrayAdd is interesting as it improves with cache size: it adds two 32kB float arrays into a third one. Apparently 256kB cache is too small for this. With 512kB cache this functions sees a real nice speed-up.

Here is a test for an 2GHz Athlon 64 3200 processor system that was a reasonable good system around the year 2002:

picCOLOR 32 Speed Test Results:

Ref: 1GHzPIII 440BX 133FSB MatroxG400 32Bit W2KSP4 MSVC71

Ref=1.0: Higher=Better (0.0=n.a.) | Time[s]: Shorter=Better

-----------------------------------------------------------

1. GraphicCopyBuffer: 4.09 (Weight=1.00; Time= 0.3313[s])

2. Morph(AdrMemSSE2): 5.80 (Weight=1.00; Time= 0.3146[s])

3. Skeleton(ArrIndx): 2.78 (Weight=1.00; Time= 4.6943[s])

4. TextureOrien(DCT): 3.43 (Weight=1.00; Time=14.3573[s])

5. Rotation(FltIpol): 3.02 (Weight=1.00; Time= 0.5548[s])

6. Rotation(FixIpol): 2.19 (Weight=1.00; Time= 0.5871[s])

7. Fourier (FFT/PWR): 2.64 (Weight=1.00; Time= 2.5883[s])

8. Flow (PIV[32&64]): 2.72 (Weight=1.00; Time= 2.3355[s])

9: FDom(ReIm->PwrPh): 2.88 (Weight=1.00; Time= 8.7106[s])

10. LocalBin (Parker): 2.57 (Weight=1.00; Time= 1.1516[s])

11. Watershed(Rodrig): 2.99 (Weight=1.00; Time=13.0818[s])

12. ObjectFeaturesRej: 2.50 (Weight=1.00; Time= 0.2029[s])

---------------------------------------------------------

OverallScore(Ref=1.0): 3.13 (Weighted, Higher=Better)

-----------------------------------------------------------

Additional Video Speed Test Results:

-----------------------------------------------------------

13. Video[128]Buffers: 5.01 (Weight=1.00; Time= 0.1400[s])

14. Video[128] Zoomed: 5.16 (Weight=1.00; Time= 0.5000[s])

15: Video&(ReIm>PwPh): 6.82 (Weight=1.00; Time= 0.1570[s])

-----------------------------------------------------------

Video Score : 5.66 (Weighted, Higher=Better)

-----------------------------------------------------------

(Notation for Dual Proc: 'N.'=single, 'N:'=multi-threaded)

Your Software:

picCOLOR Image Analysis

Version: 4.0 Build 545

Demonstration Version

DDE Support: 0

S/N: 2003-X-V400-0022

MSC Version 1310

Your System:

Operating System = WINDOWS 2000 Service Pack 4

No of Processors = 1

Proc.Arch./Level = 0, 15 ==> INTEL 80x86 Processor?

Proc. Features = MMX Yes, SSE Yes, 3DNOW! Yes, SSE2 ???

Processor Speed = 2009 MHz

Processor Type = x86 Family 15 Model 4 Stepping 8

Processor Name = AMD Athlon(tm) 64 Processor 3200+

Board Chipset = unknown...

Board Bios = Phoenix - AwardBIOS v6.00PG

Video Bios = Version 4.31.20.38.00

Graphics Adaptor = WinFast A310

Graphics Driver = nv4_disp

Graphics Package = (Key not found in registry)

BitPerPixel,X,Y = 32, 1600, 1200

Low Level (Double/Array/BitShift: Ref=100ms, Lower=Better)

Addition : 76.30ms

Multiplic: 52.50ms

Division : 27.80ms

SqareRoot: 20.90ms

Sinus : 54.40ms

Arctan2 : 64.40ms

FastAtan : 33.90ms

ArrayAdd : 6.10ms

IBitShift: 37.20ms

For direct comparison of single and dual processor systems here is the test for a 2 GHz double processor Opteron 246 system:

picCOLOR 32 Speed Test Results:

Ref: 1GHzPIII 440BX 133FSB MatroxG400 32Bit W2KSP4 MSVC71

Ref=1.0: Higher=Better (0.0=n.a.) | Time[s]: Shorter=Better

-----------------------------------------------------------

1. GraphicCopyBuffer: 4.01 (Weight=1.00; Time= 0.3377[s])

2: Morph(AdrMemSSE2): 7.97 (Weight=1.00; Time= 0.2291[s])

3: Skeleton(ArrIndx): 5.03 (Weight=1.00; Time= 2.5994[s])

4: TextureOrien(DCT): 6.77 (Weight=1.00; Time= 7.2782[s])

5: Rotation(FltIpol): 5.30 (Weight=1.00; Time= 0.3165[s])

6: Rotation(FixIpol): 4.22 (Weight=1.00; Time= 0.3051[s])

7: Fourier (FFT/PWR): 3.66 (Weight=1.00; Time= 1.8668[s])

8: Flow (PIV[32&64]): 5.11 (Weight=1.00; Time= 1.2432[s])

9: FDom(ReIm->PwrPh): 5.81 (Weight=1.00; Time= 4.3239[s])

10. LocalBin (Parker): 2.53 (Weight=1.00; Time= 1.1680[s])

11. Watershed(Rodrig): 2.66 (Weight=1.00; Time=14.7055[s])

12. ObjectFeaturesRej: 2.52 (Weight=1.00; Time= 0.2016[s])

---------------------------------------------------------

OverallScore(Ref=1.0): 4.63 (Weighted, Higher=Better)

-----------------------------------------------------------

Additional Video Speed Test Results:

-----------------------------------------------------------

13. Video[128]Buffers: 6.43 (Weight=1.00; Time= 0.1090[s])

14. Video[128] Zoomed: 5.16 (Weight=1.00; Time= 0.5000[s])

15: Video&(ReIm>PwPh): 7.60 (Weight=1.00; Time= 0.1410[s])

-----------------------------------------------------------

Video Score : 6.40 (Weighted, Higher=Better)

-----------------------------------------------------------

(MultiCore Notation: 'N.'=single, 'N:'=2-, 'N::'=4-threaded)

Your Software:

picCOLOR Image Analysis

Version: 4.0 Build 560

Demonstration Version

DDE Support: 0

S/N: 2003-X-V400-0022

MSC Version 1310

Your System:

Operating System = WINDOWS 2000 Service Pack 4

No of Processors = 2

Proc.Arch./Level = 0, 15 ==> INTEL 80x86 Processor?

Proc. Features = MMX Yes, SSE Yes, 3DNOW! Yes, SSE2 ???

Processor Speed = 1991 MHz

Processor Type = x86 Family 15 Model 5 Stepping 10

Processor Name = AMD Opteron(tm) Processor 246

Board Chipset = unknown...

Board Bios = BIOS Date: 05/06/05 10:48:02 Ver: 08.00.10

Video Bios = Version 4.36.20.21.AS26

Graphics Adaptor = ASUS V9570 V61.21

Graphics Driver = nv4_disp

Graphics Package = (Key not found in registry)

BitPerPixel,X,Y = 32, 1280, 1024

Proc/Core Information Not Supported (Windows 2003 Family Only)

=> Thread Distribution: 1: 0x03 2: 0x03 3: 0x03 4: 0x03

Low Level (Double/Array/BitShift: Ref=100ms, Lower=Better)

Addition : 75.10ms

Multiplic: 51.10ms

Division : 28.00ms

SqareRoot: 21.10ms

Sinus : 54.90ms

Arctan2 : 65.00ms

FastAtan : 33.60ms

ArrayAdd : 6.60ms

IBitShift: 37.50ms

We can see a very good speed up of approx. 1.8 for the eight dual-threaded tests when compared to the single processor results. Also, the FX5700 graphics card seems to be quite a bit faster for these simple 2D-transfers compared to the FX5600 of the single processor system. Other differences can be explained by the different memory type (normal DDR and ECC-registered DDR), by the DRAM-affinity of the two processors, internal chipset drivers that compensate for different hardware bugs of the processors, and other reasons.

And now finally here is the result of a real power system: the Skulltrail dual processor X9775 system:

picCOLOR 64 Speed Test Results:

Ref: 1GHzPIII 440BX 133FSB MatroxG400 32Bit W2KSP4 MSVC71

Ref=1.0: Higher=Better (0.0=n.a.) | Time[s]: Shorter=Better

-----------------------------------------------------------

1. GraphicCopyBuffer: 6.62 (Weight=1.00; Time= 0.2048[s])

2: Morph(AdrMemSSE2): 13.74 (Weight=1.00; Time= 0.1328[s])

3: Skeleton(ArrIndx): 15.62 (Weight=1.00; Time= 0.8368[s])

4:::TextureOrien(DCT): 61.22 (Weight=1.00; Time= 0.8047[s])

5:::Rotation(FltIpol): 73.19 (Weight=1.00; Time= 0.0229[s])

6:::Rotation(FixIpol): 23.53 (Weight=1.00; Time= 0.0547[s])

7:: Fourier (FFT/PWR): 19.66 (Weight=1.00; Time= 0.3475[s])

8:::Flow (PIV[32&64]): 36.10 (Weight=1.00; Time= 0.1759[s])

9: FDom(ReIm->PwrPh): 10.27 (Weight=1.00; Time= 2.4475[s])

10. LocalBin (Parker): 6.00 (Weight=1.00; Time= 0.4924[s])

11. Watershed(Rodrig): 10.44 (Weight=1.00; Time= 3.7429[s])

12. ObjectFeaturesRej: 5.02 (Weight=1.00; Time= 0.1011[s])

---------------------------------------------------------

OverallScore (Ref=1.0): 23.45 (Weighted, Higher=Better)

-----------------------------------------------------------

Additional Video Speed Test Results:

-----------------------------------------------------------

13. Video[128]Buffers: 22.61 (Weight=1.00; Time= 0.0310[s])

14. Video[128] Zoomed: 33.08 (Weight=1.00; Time= 0.0780[s])

15: Video&(ReIm>PwPh): 13.73 (Weight=1.00; Time= 0.0780[s])

-----------------------------------------------------------

Video Score : 23.14 (Weighted, Higher=Better)

-----------------------------------------------------------

(MultiCore: 'N.'=single, 'N:'=2-, 'N::'=4-, 'N:::'=8-threaded)

Your Software:

picCOLOR Image Analysis

Version: 4.0 Build 627, 64Bit

Demonstration Version

DDE Support: 0

TCP/IP Support: 0

S/N: 2003-X-V400-0022

MSC Version 1500

Your System:

Operating System = WINDOWS VISTA Or Longhorn Service Pack 1, (winnt=1536)

No of Processors = 8

Proc.Arch./Level = 9, 6 ==> AMD64 Processor?

Proc. Features = MMX No, SSE Yes, 3DNOW! No, SSE2 Yes

Processor Speed = 3192 MHz

Processor Type = Intel64 Family 6 Model 23 Stepping 6

Processor Name = Intel(R) Core(TM)2 Extreme CPU X9775 @ 3.20GHz

Board Typ/Chipset= Error Reading SM-BIOS Information

Board Bios (Reg) = _ASUS_ - 47d

Video Bios = (Key not found in registry)

Graphics Adaptor = (Key not found in registry)

Graphics Driver = vga

Graphics Package = (Key not found in registry)

BitPerPixel,X,Y = 32, 1600, 1200

LargePageSize64 = 2097152 Bytes

Additional Processor/Core Information (31 Records):

Proc 0x1 is Physical

Proc 0x1 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x1 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0x2 is Physical

Proc 0x2 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x2 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0x3 has L2 Cache of Type: Unified, Size: 6291456 Bytes

Proc 0x4 is Physical

Proc 0x4 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x4 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Procs/Cores 0xf share the same package

Proc 0x8 is Physical

Proc 0x8 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x8 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0xc has L2 Cache of Type: Unified, Size: 6291456 Bytes

Proc 0x10 is Physical

Proc 0x10 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x10 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0x20 is Physical

Proc 0x20 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x20 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0x30 has L2 Cache of Type: Unified, Size: 6291456 Bytes

Proc 0x40 is Physical

Proc 0x40 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x40 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Procs/Cores 0xf0 share the same package

Proc 0x80 is Physical

Proc 0x80 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x80 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0xc0 has L2 Cache of Type: Unified, Size: 6291456 Bytes

Proc 0xff is on NUMA node 0

GenuineIntel, HT=0, CoresPerPack=4, LogicalsPerCore=1

=> Thread Distribution: 1:0xff 2:0xff 3:0xff 4:0xff

Features: mmx=0, sse=1, sse2=1, sse3=1, 3dnow=0, 3dnow+=0

Low Level (Double/Array/BitShift: Ref=100ms, Lower=Better)

Addition : 16.60ms

Multiplic: 13.70ms

Division : 20.30ms

SqareRoot: 10.40ms

Sinus : 16.50ms

Arctan2 : 33.40ms

FastAtan : 14.80ms

ArrayAdd : 2.20ms

IBitShift: 31.30ms

No comment necessary here...

And here the results of a very modern Intel Core i7 system:

picCOLOR 64 Speed Test Results:

Ref: 1GHzPIII 440BX 133FSB MatroxG400 32Bit W2KSP4 MSVC71

Ref=1.0: Higher=Better (0.0=n.a.) | Time[s]: Shorter=Better

-----------------------------------------------------------

1. GraphicCopyBuffer: 18.77 (Weight=1.00; Time= 0.0722[s])

2: Morph(AdrMemSSE2): 18.95 (Weight=1.00; Time= 0.0963[s])

3: Skeleton(ArrIndx): 15.96 (Weight=1.00; Time= 0.8188[s])

4:::TextureOrien(DCT): 38.86 (Weight=1.00; Time= 1.2676[s])

5:::Rotation(FltIpol): 55.50 (Weight=1.00; Time= 0.0302[s])

6:::Rotation(FixIpol): 18.20 (Weight=1.00; Time= 0.0707[s])

7:: Fourier (FFT/PWR): 23.49 (Weight=1.00; Time= 0.2908[s])

8:::Flow (PIV[32&64]): 27.57 (Weight=1.00; Time= 0.2303[s])

9: FDom(ReIm->PwrPh): 13.87 (Weight=1.00; Time= 1.8112[s])

10. LocalBin (Parker): 6.69 (Weight=1.00; Time= 0.4414[s])

11. Watershed(Rodrig): 13.63 (Weight=1.00; Time= 2.8673[s])

12. ObjectFeaturesRej: 5.85 (Weight=1.00; Time= 0.0869[s])

---------------------------------------------------------

OverallScore (Ref=1.0): 21.45 (Weighted, Higher=Better)

-----------------------------------------------------------

Additional Video Speed Test Results:

-----------------------------------------------------------

13. Video[128]Buffers: 14.91 (Weight=1.00; Time= 0.0470[s])

14. Video[128] Zoomed: 27.74 (Weight=1.00; Time= 0.0930[s])

15: Video&(ReIm>PwPh): 17.00 (Weight=1.00; Time= 0.0630[s])

-----------------------------------------------------------

Video Score : 19.89 (Weighted, Higher=Better)

-----------------------------------------------------------

(MultiCore: 'N.'=single, 'N:'=2-, 'N::'=4-, 'N:::'=8-threaded)

Your Software:

picCOLOR Image Analysis

Version: 4.0 Build 627, 64Bit

Demonstration Version

DDE Support: 0

TCP/IP Support: 0

S/N: 2003-X-V400-0022

MSC Version 1500

Your System:

Operating System = WINDOWS VISTA Or Longhorn Service Pack 1, (winnt=1536)

No of Processors = 8

Proc.Arch./Level = 9, 6 ==> AMD64 Processor?

Proc. Features = MMX No, SSE Yes, 3DNOW! No, SSE2 Yes

Processor Speed = 3200 MHz

Processor Type = Intel64 Family 6 Model 26 Stepping 4

Processor Name = Genuine Intel(R) CPU 000 @ 3.20GHz

Board Typ/Chipset= Error Reading SM-BIOS Information

Board Bios (Reg) = _ASUS_ - 8d4

Video Bios = (Key not found in registry)

Graphics Adaptor = (Key not found in registry)

Graphics Driver = vga

Graphics Package = (Key not found in registry)

BitPerPixel,X,Y = 32, 1600, 1200

LargePageSize64 = 2097152 Bytes

Additional Processor/Core Information (19 Records):

Proc 0x3 is Logical

Proc 0x3 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x3 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0x3 has L2 Cache of Type: Unified, Size: 262144 Bytes

Proc 0xc is Logical

Proc 0xc has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0xc has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0xc has L2 Cache of Type: Unified, Size: 262144 Bytes

Proc 0x30 is Logical

Proc 0x30 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0x30 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0x30 has L2 Cache of Type: Unified, Size: 262144 Bytes

Procs/Cores 0xff share the same package

Proc 0xc0 is Logical

Proc 0xc0 has L1 Cache of Type: Data, Size: 32768 Bytes

Proc 0xc0 has L1 Cache of Type: Instruction, Size: 32768 Bytes

Proc 0xc0 has L2 Cache of Type: Unified, Size: 262144 Bytes

Proc 0xff has L3 Cache of Type: Unified, Size: 8388608 Bytes

Proc 0xff is on NUMA node 0

GenuineIntel, HT=0, CoresPerPack=8, LogicalsPerCore=2

=> Thread Distribution: 1:0xff 2:0xff 3:0xff 4:0xff

Features: mmx=0, sse=1, sse2=1, sse3=1, 3dnow=0, 3dnow+=0

Low Level (Double/Array/BitShift: Ref=100ms, Lower=Better)

Addition : 17.10ms

Multiplic: 14.00ms

Division : 20.60ms

SqareRoot: 16.20ms

Sinus : 12.90ms

Arctan2 : 26.80ms

FastAtan : 12.20ms

ArrayAdd : 1.90ms

IBitShift: 29.90ms

This is the fastest single processor (quad-core) system available.

If you happen to have an interesting system available with high speed processors or graphics, please feel free to save the benchmark results and email them to the developer team. We are trying to build up a huge and comprehensive data set of the usefulness of all systems for image analysis purposes.The speed-up over a few years is amazing: a modern Intel Core i7 system with 3.2Ghz easily reaches overall benchmark results of some 22, i. e. more than 7 times faster than the 2GHz single Athlon system!

6.13.15.2. Harddisk Speed Test

Speziell zum Test der modernen schnellen Harddisk-Systeme (z. B. RAID0) zur Abspeicherung von Echtzeit-Videosequenzen (Streaming-Write) wurde ein einfacher Schreibgeschwindigkeitstest implementiert. Hierzu muß das gewünschte Laufwerk (oder die Partition) gewählt werden und dann der "Start Test"-Schalter betätigt werden. Es wird dann ein File geöffnet und 512MByte an Daten mit maximal möglicher Geschwindigkeit geschrieben. Die benötigte Zeit wird dann in die Schreibgeschwindigkeit MB/s umgerechnet und angezeigt. Der File wird nach der Messung gelöscht. Defaultmäßig wird zum schnelleren Schreiben das WINDOWS- "No_Buffering" und "Sequential_Scan" -Flag beim File-Öffnen gesetzt. Mit diesem Schreib-Modus, für den die Files exakt ein Vielfaches der Clustergröße der Festplatte sein müssen, kann auf einigen Systemen eine doppelt so hohe Schreibgeschwindigkeit erzielt werden. Diese "Streaming"-Flags können zum Test jedoch auch abgeschaltet werden, entweder hier in der Dialogbox der Testfunktion oder - falls kein Schalter vorhanden ist - im Data-Rekorder-Dialogbox. Moderne IDE-Festplatten erreichen z. Zt. (2007/2008) bis zu 70MB/s, die schnellsten SATA II Festplatten (2009) sogar bis zu 110MB/s, RAID0-Systeme, die am normalen PCI-Bus angeschlossen sind, bis zu 110MB/s. Beim letzteren Wert ist der Flaschenhals natürlich der PCI-Bus, der eine theoretische Bandbreite von 128MB/s hat. Auf dem 66MHz/64Bit-PCI-Bus oder dem PCI-X-Bus oder gar auf dem PCIexpress-Bus werden wesentlich höhere Schreibgeschwindigkeiten möglich, bis zu etwa 500MB/s! Hierzu gibt es entsprechende RAID-Controller, für IDE, Serial-ATA, und SCSI, falls der on-board-controller auf dem Mainboard keine ausreichende Leistung zur Verfügung stellt. Noch höhere Schreibgschwindigkeiten sind nicht so leicht zu erreichen, da wohl Windows hier der Flaschenhals ist. Mit Geräten der Firma IO-Industries sind allerdings doch Datenraten bis 2GB/s möglich. Hier wird allerdings die Kamera direkt an das Gerät angeschlossen, d. h. Windows und jegliche langsame Hardware wird umgangen.

6.13.15.3. Physical Memory Test

Physical Memory Test: Testen von großen Speicherblöcken, die zu diesem Zweck als physikalisch lineare Blöcke angefordert (allociert) werden. Hiermit kann auch getestet werden, wieviel physikalischen Speicher man unter dem benutzten Betriebssystem überhaupt festlegen kann, ohne daß auf die Festplatte ge-"swap"-t wird.

6.13.15.4. High Resolution Timer Test

High Resolution Timer Test: Hiermit kann die maximale Auslesegeschwindigkeit des High Resolution Timers abgefragt und getestet werden.

6.13.15.5. Other Test Function

Alle weiteren im "Test Functions"-Menü aufgeführten Funktionen sind für Testzwecke gedacht - sie sollten vom Benutzer nicht bzw. nur nach Absprache verwendet werden.


7. Processing Menu

Cut
Copy
Paste
----------------
Geometrics
Modify Histogram
Arithmetic
Filters
True Color
Frequency
Texture Segm.
Pyramid Conv.
Binarization
Morphology
3D-Processing
Sequence Proc.

Im "Processing"-Menü sind Funktionen zur Vorverarbeitung von Bildern enthalten. "Vorverarbeitung" bedeutet hier, daß ein Bild derart bearbeitet wird, daß eine Bildanalyse, d. h. eine Vermessung oder Objektklassifikation möglich wird. Im Gegensatz zu den Vermessungsfunktionen bewirkt eine Vorverarbeitungsfunktion in der Regel eine Bildveränderung. Zur Vorverarbeitung gehören folgende Funktionen:

  • Geometrische Verzerrungen und Entzerrungen, Zoom, Rotation, Transformationen

  • Modifikationen des Grauwerthistogrammes

  • Filter, Konvolutionen zur Kontrast- oder Kantenverstärkung oder -extraktion

  • Rangordnungsfilter (Median)

  • Rekursive Filter, eindimensionale Filter (z. B. 4.43MHz Farbfilter)

  • Arithmetische und logische Funktionen

  • Echtfarbbearbeitung, Umwandlungen in verschiedene Farbräume

  • Frequenzraumumwandlungen, Filter im Frequenzbereich

  • Texturerkennungsalgorithmen

  • Pyramidenfunktionen zur Erstellung unterschiedlicher Bildauflösungen

  • Binärisierungen (global und lokal dynamisch)

  • Morphologische Funktionen für Grauwert- oder Binärbilder

  • Die Funktionen zur Bearbeitung von 2D-Bildern sind mit Einschränkung auch für 3D-Bilder verfügbar. (siehe 3D/Sequenz Zusatzmodul)

  • Alle 2D-Funktionen können ohne Einschränkung für Sequenzen verwendet werden. Hierzu werden die einzelnen Sequenzbilder in einen normalen Bildspeicher kopiert, dort weiterverarbeitet und schließlich wieder in den Sequenzspeicher zurückgeschrieben. Über MACRO-Programme besteht auch die Möglichkeit, Sequenzen direkt im Sequenzspeicher zu verarbeiten. (siehe 3D/Sequenz-Zusatzmodul)

Einige Funktionen zur Vorverarbeitung von Bildern können auch in anderen Menüs gefunden werden, so z. B. im "ImagePaint" Graphikmodul: hier befinden sich graphische Hilfswerkzeuge, die für eine Vorverarbeitung interessant sein können, z. B. für eine Maskenbilderzeugung. Weitere Vorverarbeitungsfunktionen können natürlich auch im "User"-Menü abgelegt sein. Dies können sowohl Macro-Programme sein, über die verschiedene Funktionen zur Vorverarbeitung zusammengefaßt sind, als auch vom Benutzer selbstgeschriebene, völlig neuartige Funktionen. Weiterführende Funktionen zur Vorverarbeitung sind in speziellen picCOLOR Zusatzmodulen erhältlich. Sie sind im vorliegenden Handbuch teilweise angesprochen und sind durch einen Asterisken (*) gekennzeichnet.

Cut, Copy und Paste

Last but not least sind hier auch die üblichen Funktionen zur Bedienung der Zwischenablage aufgeführt, nämlich "Cut", "Copy" und "Paste". In der Regel wirken diese Funktionen hier auf die aktuelle ROI. Bei "Cut" und "Copy" wird der Inhalt der aktuellen ROI in die Zwischenablage übertragen, bei "Cut" wird der Inhalt der aktuellen ROI im Bild zusätzlich gelöscht. Mit "Paste" wird ein eventuell in der Zwischenablage befindliches Bild in die aktuelle ROI geladen. Das in anderen Programmen übliche "Selektieren" eines Bildes oder Bildausschnittes vor dem Übertragen in die Zwischenablage wird bei picCOLOR also automatisch durch die aktuelle ROI geregelt. Da picCOLOR in der Regel mit 8 Bit/Pixel arbeitet, wird auch ein 8 Bit-Bild in die Zwischenablage übertragen. Aus der Zwischenablage kann picCOLOR alle BMP-Bitmap-Formate übertragen, die auch über die BMP-Bitmap-Ladefunktion implementiert sind. Wenn kein True-Color-Zusatzmodul vorhanden ist und das Bild in der Zwischenablage 24- oder 32-Bit tief ist, so wird lediglich die Grauwertintensität bestimmt und in den normalen picCOLOR-Bildspeicher übertragen. Dialogbox-Inhalte können mit der "Alt"-"Druck"-Tastenkombination in die Zwischenablage übertragen werden und damit dann in "richtige" Bilder umgewandelt werden. Wenn übrigens kein Bild in der Zwischenablage steht, sondern Text, so wird beim Versuch, diesen mit "Paste" zu laden eine Fehlermeldung ausgegeben. In diesem Fall kann der Text innerhalb des Notebooks oder der I/O-Dialogbox mit dem dort befindlichen "Paste"-Taster oder der windows-üblichen "Strg"-"V"-Tastenkombination eingelesen werden.


7.1. Geometry

Zoom
Mirror
Rotate
----------------
Cosine Distort.
-Full Preview
-Subpix.Intpol
-Set Limits
-Stereo Dsplce
----------------

Unroll Pattern
Polynom Dewarping
Spline Dewarping
Trapezoidal Dewarping
Camera Calibration

Eine geometrische Vorverarbeitung des Bildes dient z. B. dazu, zwei Bilder, die in irgendeiner Form verglichen werden sollen, die jedoch verschiedene Größenmaßstäbe oder unterschiedliche Verzerrungen aufweisen, aneinander anzupassen. Eine wichtige Anwendung ist etwa die geometrische Entzerrung von Fernerkundungsbildern, wenn diese mit Landkartendaten verglichen werden sollen. Einfacherere Funktionen sind Zoom, Translation oder Rotation, die oft eine weitergehende Verarbeitung erst ermöglichen.

7.1.1. Zoom Image

Ein Bildausschnitt (ROI) kann vergrößert oder verkleinert werden. Dabei sind in x- und y-Richtung unterschiedliche stufenlose (d. h. in Pixelstufen) Vergrößerungs- oder Verkleinerungsfaktoren wählbar. Hierzu werden Source-Rechteck und Destination-Rechteck durch zwei ROI’s festgelegt. Die Größe und Lage dieser zwei ROI’s muß vor Ausführung der Zoomfunktion definiert werden. Die Zoomfunktion überführt dann den Inhalt des Source-ROI in das Destination-ROI. Defaultmäßig wird von ROI x nach ROI y gezoomt. Die Zoom-Funktion kann mit Interpolation der zusätzlichen Pixel arbeiten. Hierbei ist eine lineare oder Spline-Interpolation wählbar. Die Benutzung von Splines kann leicht zu Grauwertüberschwingen führen und sollte daher nicht für scharfkantige Graphiken verwendet werden.

7.1.2. Mirror Image: Vertical – Horizontal

Flip Horizontal
Flip Vertical

Der Bildausschnitt in der ROI kann horizontal oder vertikal gespiegelt werden. Die Spiegelung wird dabei an der jeweiligen vertikalen oder horizontalen Mittellinie durchgeführt.

7.1.3. Rotate Image

Rotate Angle: Innerhalb der aktiven ROI wird um beliebige Winkel von [-180.0..180.0] Grad gedreht. Für diese Rotationsfunktion gelten folgende Einstellmöglichkeiten:

  • ohne Interpolation

  • lineare Interpolation innerhalb einer 2*2-Nachbarschaft

  • Interpolation mit kubischen Splines innerhalb der 4*4-Nachbarschaft

  • Es kann zusätzlich eine beliebige Translation in x- und y-Richtung mitangegeben werden.

Der Drehpunkt ist der Diagonalenschnittpunkt der aktiven ROI. Das gedrehte Bild wird durch die aktuelle ROI abgeschnitten. Als Source für die Drehung wird jedoch auch auf außerhalb der aktuellen ROI liegende Bildbereiche zugegriffen. Falls dies nicht erwünscht ist, so muß vor der Drehung außerhalb der ROI gelöscht werden ("Clear Out of ROI", in der Toolbox). Dieser Bereich kann nach Zwischenspeicherung mit anderen Funktionen später wieder in das Bild hineinkopiert werden. Wenn bei der Drehung auf Bildbereiche außerhalb der Bildspeichergrenzen zugegriffen wird, so werden diese zu "0" angenommen. Ohne Pixelinterpolation führt die Drehung leicht zu unerwünschten Treppenstufenmustern. Um die Drehung genauer und praktisch verlustfrei und subpixelgenau ausführen zu können, kann dabei interpoliert werden. Dies kann linear zwischen den 4 Pixeln geschehen, die den tatsächlichen Punkt umgeben, es kann jedoch auch sehr genau mit kubischen Splines in der 4*4-Nachbarschaft um den tatsächlichen Punkt gearbeitet werden. Welches Verfahren die besten Resultate liefert, hängt vom Bildinhalt ab: übliche Kamerabilder mit nicht allzuhohen Ortsfrequenzen (Grauwertschwankungen) werden am besten mit dem Spline-Verfahren gedreht, künstlich erzeugte Bilder mit plötzlichen Grauwertänderungen (z. B. Testbild mit schwarzen und weißen Linien) werden besser linear interpoliert, da die Splines hier überschießen können.

Eine 2-dimensionale Translation des Bildes kann bei der Rotation mit angegeben werden. Dabei wird dann das Ergebnisbild um den Betrag der eingegebenen Translation in x- und y-Richtung verschoben. Mit diesen Funktionen kann auch, wenn die Rotation auf 0.0 gesetzt ist, eine subpixelgenaue Bildverschiebung erreicht werden.

Die Funktion mit einfacher linearer Interpolation liegt in einer sehr schnellen Integer-Version vor, die allerdings bei extrem großen Bildern (>2048*2048 Pixel) zu leichten Drehungfehlern führen kann.Durch Versuche sollte man austesten, ob diese Integer-Version tatsächlich Geschwindigkeitsvorteile bringt, da dies sehr prozessorarchitekturabhängig ist.

Zusätzlich sind einfache - und natürlich wesentlich schnellere - Rotationsfunktionen für den Fall von 90 Grad-Drehungen verfügbar:

Rot. Square 90 Degree
Rot. Rect. 90 Degree

Rotate Square: Der Inhalt der quadratischen aktiven ROI wird im Uhrzeigersinn um 90 Grad rotiert. Wenn die ROI nicht quadratisch ist, so wird eine Fehlermeldung ("ROI not Quadratic") ausgegeben.

Rotate Rect: Der Inhalt des Source-ROI wird um 90 Grad im Uhrzeigersinn oder im Gegenuhrzeigersinn gedreht in die linke obere Ecke der Destination-ROI kopiert. Wenn die Destination-ROI zu klein ist, wird das rotierte Bild abgeschnitten.

7.1.4. Cosine Distortion

Hier können rechteckige Bildausschnitte (1+cos)-förmig verzerrt werden. Die Verzerrung ist dabei in drei Schritte gegliedert, 1. der Einstellung des Verzerrungsbereiches mit einer ROI, 2. der Wahl der Verzerrung und 3. der Beurteilung des Verzerr-Ergebnisses. Die drei Modi werden dabei immer wieder zyklisch durchgeführt, bis man einen Ende-Befehl eingibt. Die Vorgehensweise ist dabei wie folgt:

Nach Start der Funktion befindet man sich im ROI-Edit-Modus. Hier wird der Bildbereich für die Verzerrung definiert. Nach der Beendigung der Definition dieser ROI mit der rechten Maustaste verschwindet der Mauszeiger und es erscheint ein Fadenkreuz, das die gesamte ROI überstreicht. Nun befindet man sich im Verzerr-Modus. Abhängig von der Einstellung des "Preview"-Schalters kann nun das große Fadenkreuz mit der Maus verschoben werden oder der gesamte Bildinhalt der ROI mit dem Fadenkreuz. Mit der linken Maustaste kann man die eingestellte Verzerrung akzeptieren und man befindet sich im Check-Modus, deutlich gemacht durch den Fragezeichen-Kursor. Hier kann man das Ergebnis mit dem Stand vor der Verzerrung vergleichen, indem wiederholt die rechte Maustaste oder die "U"-Taste (Undo) gedrückt wird. Mit der linken Maustaste wird das Ergebnis wie dargestellt akzeptiert und man befindet sich wieder im ROI-Edit-Modus für die nächste Verzerrung. Wenn der Verzerr-Modus mit der rechten Maustaste beendet wird, wird die gerade eingestellte Verzerrung zurückgenommen und man befindet sich wieder im ROI-Edit-Modus, d. h. der Check-Modus wird übersprungen. Die Funktion kann in jedem Modus durch die "Q"-Taste (Quit) beendet werden. Nach Beendigung der Funktion ist ein allgemeines Undo über alle Verzerrungen nach dem letzten Aufruf der Funktion möglich.

Die Verzerrung geschieht in x- und y-Richtung in Form einer (1+cos)-Funktion. Bei kleineren Bildausschnitten (bis etwa 128*128 Bildpunkten) kann mit eingeschaltetem Preview gearbeitet werden. Bei größeren Bildausschnitten wird die direkte Ausführung der Verzerrung derart langsam, daß ein flüssiges Arbeiten nicht mehr möglich ist. Die "Preview"-Funktion sollte dann abgeschaltet werden, so daß nur noch die schnelle Verzerrung des Fadenkreuzes bleibt. Die eigentliche Bildverzerrung wird dann nach Akzeptieren der Fadenkreuzposition durch Anklicken der linken Maustaste durchgeführt. Auch bei eingeschalteter "Preview"-Funktion wird während der Verzerrung immer ohne Interpolation gearbeitet. Erst nach Akzeptanz der Verzerrung wird dann gegebenenfalls subpixelgenau interpoliert.

Spezielle Tastenbefehle während der Ausführung:

  • Das Fadenkreuz im Verzerr-Modus und die ROI-Umrandung im ROI-Edit-Modus können zur besseren Beurteilung des verzerrten Bildes mit der Taste "W" aus- und wieder eingeschaltet werden. Während die "W"-Funktion aktiv ist, d. h. während die ROI-Umrandung oder das Fadenkreuz ausgeschaltet ist, kann keine Verzerrung vorgenommen werden. Erst nach erneutem Drücken der "W"-Taste oder irgendeiner anderen Taste oder auch Maustaste erscheint das Fadenkreuz wieder und man kann den Verzerr-Vorgang fortsetzen.

  • Die Taste "Q" (oder die Kombination "Shift und linke Maustaste") beendet die Verzerrfunktion, unabhängig davon, in welchem Modus Sie sich gerade befinden.

  • Die Taste "U" im ROI-Edit-Mode setzt die Lage und Größe der ROI auf den Zustand vor ihrer letzten Änderung zurück, z. B. wenn sie versehentlich geändert wurde. Im Check-Modus bewirkt sie ein "Undo" der letzten Verzerrung, oder ein "Undo" dieses "Undo" usw.

  • Wie im üblichen ROI-Edit-Modus können alle drei definierten ROI’s mit "X", "Y", "Z" durchgeschaltet und verwendet werden.

Alle weiteren üblichen Hot-Keys sind im speziellen ROI-Edit-Modus der Verzerrfunktion gesperrt, d. h. man kann nicht versehentlich zwischen zwei Verzerrungen auf ein anderes Bild umschalten. Die Lupe ist ebenfalls abgeschaltet.

Die Verzerrung kann pixelgenau oder subpixelgenau linear interpoliert durchgeführt werden. Außerdem können Begrenzungen gesetzt werden, über die eine Verzerrung des ROI-Mittelpunktes nicht hinausgehen kann. Der Wertebereich ist dabei [0..1]. Bei einem Maximalwert von 1.0 kann der Mittelpunkt des Verzerrfadenkreuzes über die gesamte ROI verschoben werden, bei einem Wert von 0.0 ist jegliche Verzerrung verhindert.

Es kann auch über ein Stereo-Bildpaar verzerrt werden. Hierzu muß das Stereoflag eingeschaltet sein und es müssen zwei Stereobildspeicher richtig definiert sein. Vor der Verzerrung muß dann eine eventuelle Verschiebung beider Bilder oder des gewünschten Bereiches in beiden Bildern dem System mitgeteilt werden. Dies geschieht mit den beiden System-Fadenkreuzen. Das durchgezogene Fadenkreuz gilt für das linke Bild, das gestrichelte für das rechte Bild. Während der Fadenkreuzeinstellung können die Stereobildspeicher mit den Zifferntasten abwechselnd aktiviert werden.

7.1.5. Polynom Dewarping

Wenn Bilder verglichen werden sollen, die unter unterschiedlichen Aufnahmewinkeln und/oder Entfernungen übernommen worden sind, so müssen diese zuvor geometrisch entzerrt oder aneinander angepaßt werden. Ein bekanntes Beispiel ist hier die Anpassung von Fernerkundungsbildern an Landkarten desselben Gebietes. Mit der implementierten Funktion kann ein beliebig linear verzerrtes Bild an ein Referenzbild angepaßt werden. Nach der Eingabe einer beliebigen Anzahl von Paßpunkten werden hierzu die Polynomparameter für eine lineare Entzerrung berechnet und dann das Bild mit den gefundenen Parametern entzerrt. Dabei kommen in der Regel die folgenden linearen Polynome zum Einsatz:

x := a0 + a1 * x’ + a2 * y’
y := b0 + b1 * x’ + b2 * y’

mit x,y als Koordinaten des alten, verzerrten Bildes und x’,y’ als Koordinaten des neu berechneten, entzerrten Bildes. Wenn mehr als drei Paßpunkte eingegeben werden, so werden die Entzerrungsparameter nach der Gauß’schen Fehlerquadratmethode bestmöglichst angepaßt. In einer erweiterten Version der Funktion können auch weitere Polynomkoeffizienten genutzt werden:

x := a0 + a1 * x’ + a2 * y’ + a3 * x‘ * y‘ + a4 * x‘ * x‘ + a5 * y‘ * y‘
y := b0 + b1 * x’ + b2 * y’ + b3 * x‘ * y‘ + b4 * x‘ * x‘ + b5 * y‘ * y‘

Hier müssen dann mindestens 6 Paßpunkte angegeben werden, es können jedoch auch wesentlich mehr eingegeben werden, mit denen dann wiederum eine Ausgleichsrechnung durchgeführt wird.

Schließlich wird eine weitere Ausführung mit den Koeffizienten 3. Grades zur Verfügung gestellt, mit der dann auch recht komplexe Verzerrungen korrigiert werden können, z. B. komplizierte assymmetrische Kissenverzerrungen, die mit der üblichen Kamerakalibrierung (siehe unten) nicht mehr vorgenommen werden können. Es müssen dann mindestens 10 Paßpunkte eingegeben werden. Die Maximalanzahl von Paßpunkten ist im picCOLOR-Programm begrenzt.

x := a0+a1*x’+a2*y’+a3*x‘*y‘+a4*x‘*x‘+a5*y‘*y‘+a6*x‘*x‘*y‘+a7*y‘*y‘*x‘+a8*x‘*x‘*x‘+a9*y‘*y‘*y‘
y := b0+b1*x’+b2*y’+b3*x‘*y‘+b4*x‘*x‘+b5*y‘*y‘+b6*x‘*x‘*y‘+b7*y‘*y‘*x‘+b8*x‘*x‘*x‘+b9*y‘*y‘*y‘

Anwendungsbeispiel: Auf Bildspeicher "1" sei das verzerrte Bild gespeichert - z. B. ein durch eine schräge Aufnahmeperspektive entstandenes Bild. Auf Bildspeicher "2" sei das Referenzbild, d. h. das geometrisch "richtige" unverzerrte Bild gespeichert - z. B. eine graphisch dargestellte Landkarte. Über die Funktion "Set Reference" wird nun das geometrisch "richtige" Bild als Referenzbild festgelegt. Danach wird das verzerrte Bild in Bildspeicher "1" aktiviert und auf dem Bildschirm angezeigt. Nach Start der Entzerrungsfunktion muß die Anzahl der Paßpunkte festgelegt werden. Diese Paßpunkte können nun zunächst im aktiven verzerrten Bild mit Fadenkreuz und Mausklick eingegeben werden. Nach dem letzten Paßpunkt schaltet die Funktion auf das Referenzbild um und man muß die gleichen Paßpunkte (in gleicher Reihenfolge) im geometrisch "richtigen" Bild wählen. Wenn mehr Paßpunkte als Polynomkoeffizienten eingegeben wurden, werden danach die Fehler der Ausgleichsrechnung angezeigt. Wenn diese zu groß werden, kann man davon ausgehen, daß eine lineare Entzerrung mit Polynomen nicht mehr sinnvoll angewandt werden kann. In diesem Fall sollte man die Anzahl der benutzten Koeffizienten erhöhen oder mit der Spline-Ausgleichsrechnung arbeiten (siehe unten). Schließlich beginnt die Entzerrung. Bildteile, die außerhalb der aktuellen ROI (des verzerrten Bildes) liegen, werden in einem mittleren Grau dargestellt. Das Ergebnis der Entzerrung kann pixelweise ohne Interpolation, linear oder mit kubischen Splines interpoliert durchgeführt werden.

Alle Koeffizienten können auf File abgespeichert werden, sodaß sie später für weitere Entzerrungen wiederverwendet werden können.

Achtung: die Lage der Paßpunkte muß wohlüberlegt sein. Je nach Anzahl der Koeffizienten darf es nicht zu unlösbaren Gleichungen durch Polstellen kommen. Für den einfachsten Fall mit 3 Paßpunkten wäre das eine kollineare Anordnung der drei Punkte, die dann nicht zu sinnvollen Ergebnissen führt. Bei 6 oder gar 10 Koeffizienten (und mindestens ebensovielen Paßpunkten) sind die unbestimmten Anordnungen natürlich wesentlich komplizierter.

Diese Art der Bildentzerrung kann auch automatisch für beliebige Messungen eingesetzt werden. Hierzu wird im Measurement-Control-Menu das entsprechende Flag gesetzt. Sichtbar wird diese Einstellung dann in der Statuszeile beim Anklicken des Fadenkreuzes im normalen picCOLOR-Bildspeicher.

7.1.6. Spline Dewarping

Wenn das Bild durch nichtlineare Verzerrungen gestört ist, so kann es nach Angabe mehrerer Paßpunkte mittels 2-dimensionaler kubischer Splines entzerrt werden. Das Ergebnis der Entzerrung kann pixelweise ohne Interpolation, linear oder mit kubischen Splines interpoliert durchgeführt werden. Diese Funktion ist noch nicht vollständig implementiert.

7.1.7. Trapez Dewarping

Wenn das Bild durch eine Schrägstellung der Kamera verzerrt ist, so kann diese Verzerrung statt mit der aufwendigen Polynom-Entzerrung auch mit der Trapez-Entzerrung vorgenommen werden. Mit "Camera Distance" und "Angle" wird der Kameraort in der aktuellen Einheit (Unit: Pixel, Meter,...) eingegeben. Das zur Entzerrung zu lösende Gleichungssystem wird intern durch eine Iteration abgearbeitet. Dabei sind in der Regel 10 Iteration ausreichend, um eine gute Konvergenz zu erreichen. Wenn trotzdem noch Abweichungen vorhanden sind, so wird dies über eine Fehlermeldung mitgeteil und man kann die Anzahl der zugelassenen Iterationen erhöhen.

Die Bestimmung der Pixelwerte kann wie üblich ohne oder mit linearer oder Spline-Interpolation durchgeführt werden.

7.1.8. Camera Calibration

Üblicherweise sind Kamerabilder geometrisch verzerrt, hauptsächlich durch optische Ungenauigkeiten der Linsen und Objektive. Einige dieser Verzerrungen, z. B. die Kissenverzerrung (pin cushion), können über eine Korrekturrechnung entzerrt werden. Im picCOLOR Programm ist die Entzerrung nach Tsai implementiert. Diese Methode benutzt ein Pin-Hole Kameramodell. Zur automatischen Bestimmung der Gleichungsparameter müssen verschiedene Bilder bekannter Objekte oder Gitter mit der Kamera aufgenommen werden und dem System die genaue Lage dieser Objekte im 3-dimensionalen Raum bekanntgegeben werden.

Es wird empfohlen, für sehr genaue Messungen gute Spiegel-Reflex-Kameraobjektive zu benutzen, die über einen C-Mount-Adapter an die meisten CCD- und CMOS-Kameras angeschlossen werden können. Diese hochwertigen Objektive (z. B. von Zeiss, Olympus, Nikon, Canon usw.) sind mit besser als 1% Verzerrung in den Randbereichen angegeben. Bei Benutzung mit den üblichen Videokameras mit sehr kleinen CCD- oder CMOS-Chips von 2/3, ½, oder 1/3 Zoll Größe werden die Randbereiche nicht genutzt und man erhält eine beinahe verzerrungsfreie Bildwiedergabe mit weniger als 0.1% Verzerrung. Das sind bei üblichen Megapixel-Auflösungen weniger als 1 Pixel Verzerrung in den Randbereichen, so daß eine softwaremäßige Entzerrung meist gar nicht notwendig ist, zumindest bei nicht allzu weitwinkligen Objektiven. Bei Benutzung üblicher C-Mount Objektive ist die Verzerrung oft um einen Faktor 5..10 höher, besonders bei Weitwinkelobjektiven.

Mit dem Initialisierungs-Schalter werden die wichtigsten internen Variablen für eine Entzerrung gesetzt. Dies sind

- Brennweite der Optik

- Verzerrungswert K1 = kappa (Barrel(+)/Pin Cushion(-))

- Sensorelementgröße in x- und y-Richtung

- Schnittpunkt der optischen Achse mit dem Bild, in x- und y-Richtung

- Korrekturwert für nicht exakte Pixelgröße in x- und y-Richtung

- Pixelanzahl in horizontaler Richtung

- weitere intern benutzte Werte

Nicht alle diese Werte werden tatsächlich bei einer normalen Entzerrung benötigt. So wird z. B. die Brennweite nicht benutzt. Für eine komplette Kamerakalibrierung werden jedoch alle Werte benötigt. Der Reset-Schalter setzt lediglich den K1-Wert, d. h. die Stärke der Entzerrung, auf Null. Mit dem großen Entzerrungsschalter wird die Entzerrung im Bild gestartet, je nach Einstellung mit unterschiedlicher Interpolation. Wenn eine Vermessungsfunktion ausgeführt wird, so werden die Ergebniswerte, d. h. die x,y-Pixelkoordinaten, mit den Entzerrungswerten korrigiert, sofern die Camerakalibrierungskorrektur im Measurement-Control-Menü eingeschaltet ist. In diesem Fall kann man also mit dem unkorrigierten Originalbild arbeiten und erhält trotzdem korrigierte Resultate. Es ist damit natürlich Vorsicht geboten, daß die Korrektur nicht zweimal angewendet wird, einmal durch Entzerrung des Bildes und zum zweiten durch automatisch Korrektur von Messwerten.

Es gibt verschiedene Arten, die Entzerrungsparameter zu bestimmen. Die bisher bevorzugte Methode ist eine Aufnahme eines regelmäßigen Gitters mit der Kamera und die iterative Bestimmung mit dem hierzu erstellten MACRO-Programm "camcal_grid_sel.mcr", das auf Wunsch zur Verfügung gestellt werden kann. Hierbei ist es wichtig, das Gitterbild möglichst exakt senkrecht zur optischen Achse der Kamera auszurichten und außerdem eine minimale Rotation der Gitterlinien relativ zur Horizontalen und Vertikalen einzurichten. Wenn jedoch die Entzerrungsparameter komplett automatisch bestimmt werden sollen, so kann dies mit den von TSAI zur Verfügung gestellten Funktionen geschehen, falls im Bild bekannte Markerpunkte liegen, die über die Tracking-Funktionen (Extension-Modul) gefunden werden können. Hierzu muß die "Camera Calibration" Dialogbox aus dem Measurement-Menü aufgerufen werden, da sonst alle Tsai-Funktionen grau und nicht anwählbar sind.

Wenn mit den Echtzeit-3D-Vermessungsfunktionen (Extension-Modul) gearbeitet wird und hierfür zwei Kameras in Split-Screen- oder in Stereo-Konfiguration gearbeitet wird, so müssen natürlich beide Kameras einzeln und getrennt kalibriert werden. Hierzu findet man sowohl in der "Stereo"- Dialogbox als auch in der "Split-Screen"-Dialogbox den "Camera Calibration"-Schalter. Hiermit kann eine "Stereo-Camera-Calibration"-Dialogbox geöffnet werden, in der alle Parameter für die Entzerrung eingestellt werden können. Sobald der Wert der Verzerrung (Barrel/PinCushion) von Null verschieden ist, wird bei der Bildauswertung, speziell der Echtzeitauswertung automatisch eine Entzerrung der gefundenen Ortskoordinaten durchgeführt, d. h. es werden nicht die kompletten Bilder im Speicher entzerrt, wie es die oben besprochene Funktion ausführt, sondern nur einzelne subpixelgenau bestimmte Punkte.

7.1.9. Unroll Pattern

Das Abrollen eines Bildausschnittes kann sinnvoll sein, um in einfacheren geometrischen Bezugssystemen zu arbeiten. So wird nach dem Abrollen aus einem Kreis eine einfache Linie. Interessant ist dieses Verfahren auch zur drehungsinvarianten Mustererkennung über die Fourier-Domain: Wenn das Fourierspektrum eines Musters in dieser Form abgerollt wird, so wird aus einer Objektdrehung eine einfache x-Verschiebung. In der implementierten Funktion kann der Radius gewählt werden, auf dem abgerollt werden soll. Es kann außerdem das Interpolationsverfahren eingestellt werden und entschieden werden, ob das Objekt zweimal abgerollt werden soll, damit zyklische Untersuchungen in jedem Winkel durchgeführt werden können. Der gewählte Abrollradius bestimmt die Größe des Ergebnisbildes: wenn der 100%ige Radius genommen wird, z. B. bei einer 256*256 Pixel-ROI mit 100% der Radius 128 gewählt wird, so wird die sich ergebende Bildbreite nach dem Abrollen 2*PI*128 sein, also 804 Pixel. Um das Originalbild nicht zu überschreiben, muß hier ein Destination-Bildspeicher gewählt werden. Das Ergebnisbild kann nur in eine andere als die aktuelle ROI geschrieben werden.


7.2. Histogram Modify

Equalize
- LastTable
Scale to Max

Adaptive Hist. Equal

Histogramm-Modifikationen sind Funktionen, die die Grauwertverteilung eines Bildes verändern. Der einfachste Fall wäre eine lineare Skalierung der Grauwerte, wenn z. B. nicht der gesamte Grauwertebereich im Bild ausgenutzt ist. Wenn etwa die im Bild vorkommenden Grauwerte nur den Bereich [30..150] überdecken, so ist eine lineare Skalierung mit der Vorschrift: g_neu = (g_alt - 30) * 2.0 sicherlich sinnvoll - ohne Informationsverlust wird der vorhandene Grauwertebereich im erlaubten Bereich gespreizt und das Bild erhält ein wesentlich kontrastreicheres Aussehen. Der Informationsgehalt des Bildes wird hierbei nicht verändert. Diese Funktion, die automatisch den kompletten Grauwertebereich ausnutzt, ist die Scale-Histogramm-Funktion.

7.2.1. Scale Histogram

Der gesamte Grauwertebereich von 0 bis 255 wird ausgenutzt, indem der im Bild vorhandene Grauwertebereich linear gestreckt und verschoben wird. Dies geschieht nach der Formel

g_neu = (g_alt - Grau_Min) * (255/(Grau_Max-Grau_Min))

wobei g_alt der bisherige Grauwert eines Pixels ist und g_neu der neu einzutragende Grauwert. Durch Rundungseigenheiten kommt der Wert 255 nicht vor. Das Ergebnis liegt somit im Bereich [0..254]. Durch Rundungsfehler kann es vorkommen, daß der Informationsgehalt des Bildes leicht vermindert wird.

7.2.2. Histogram Equalization

Das Ebnen oder Ausgleichen des Grauwert-Histogrammes mit der Equalization-Funktion ist schon etwas aufwendiger. Hierzu wird eine Art Look-Up-Tabelle T[n] mit 0<=n<=255 bestimmt, die zur Transformation des Bildes benutzt wird. Diese Tabelle wird nach der folgenden Vorschrift gebildet:

- Im Feld H[0..255] wird das Histogramm des Bildausschnittes mit Werten von 0 bis 1.0 (=100%) abgelegt.
- Der Anfangswert der Look-Up-Tabelle T[0] erhält den Wert 255*H[0].
- Alle weiteren Werte der Look-Up-Tabelle werden in der folgenden Schleife bestimmt:

for g:=1 to 255 do begin
H[g] := H[g-1] + H[g];
T[g] := round( 255 * H[g]);
end;

Nun kann das Bild über die Tabelle transformiert werden: g(neu) := T[g(alt)]

Durch diese Funktion wird eine starke Kontrastanhebung an Bildstellen erzielt, die großflächig geringe Kontraste aufweisen. Üblicherweise wird die Tabelle für jeden neuen Funktionsaufruf neu berechnet. Wenn jedoch bestimmte Bildausschnitte wichtiger sind als andere, kann es sinnvoll sein, diese stärker zu bewerten. Hierzu wird eine kleine ROI genau um den interessanten Bildausschnitt gesetzt und eine Tabelle durch den Funktionsaufruf berechnet. Dann restauriert man das Bild mit der Undo-Funktion "U" und setzt das "Last Table"-Flag. Nun wird bei erneutem Funktionsaufruf mit beliebig geänderter ROI keine neue Tabelle berechnet und das Bild (oder besser dessen Histogram) wird mit Schwerpunkt auf den vorher gewählten Bildausschnitt skaliert.

7.2.3. Adaptive Histogram Equalization

This program implements Prof. Pizer's adaptive histogram equalization algorithm for constrast enhancement. The only option presently supported is the partitioning of the input image into N by N subimages and interpolating histograms to obtain the enhanced output image. (Diese Funktion wurde aus dem KUIM Bildverarbeitungsprogramm adaptiert).


7.3. Arithmetic

Invert
Add Constant
Sub Constant
Mul Constant
Scale:(Act-c1)*c2
Quantify (Steps)
Pow: Act=Act**Con
And Constant
Or Constant
Xor Constant

NAND Constant

<< Shift Left

>> Shift Right

------------------------------
Add: Active=Active+Second
Add: Active=Active+Scnd+C
Sub: Active=Active-Second
Sub: Active=Active+Scnd+C
Mul: Active=(Active*Scnd)/C
Div: Active=(Active*C)/Scnd
And: Active&=Second
Or: Active|=Second
Xor: Active~=Second
Max: Act=MAX(Act,Second)
Min: Act=MIN(Act,Second)
Energy: Act=Sqrt(A*A+S*S)

SubCycle: Act-=Scnd (cyclic)
Set SecondSource

------------------------------

Copy Image

Copy/Move Functions ->

Clear Image

Clear Functions ->

------------------------------
Cut Min/Max Peaks
Abs.Value (0=128)

In diesem Menü befinden sich mathematische und logische Funktionen zur Verknüpfung von Bildern mit einer Konstanten oder mit einem zweiten Bild (Second Source).

7.3.1. Invert Image

Durch Invertieren eines Bildausschnittes (ROI) kann aus einem Bild sein "Negativ"-Abbild erzeugt werden. Hierbei werden die jeweiligen Pixelwerte einfach invertiert, d.h. bei einem Grauverlauf wird aus Schwarz Weiß und umgekehrt. Zahlenmäßig ausgedrückt wird die folgende Gleichung ausgeführt: Pixelwert = 255 - Pixelwert (für 8-Bit Bilder). Aus dem Pixelwert 0 wird also der Wert 255, aus 1 wird 254 usw.

Diese einfache Funktion kann sehr nützlich sein, wenn Bilder direkt von Filmnegativstreifen übernommen werden sollen - man spart den Schritt über einen photographischen Abzug, der ja auch einen Informationsverlust, d. h. eine Verschlechterung des Bildes bedeuten würde. Sehr wichtig ist diese Funktion

auch zur Vorbereitung einer morphologischen Funktion oder einer Konturbestimmung, da viele dieser Funktionen helle Objekte auf dunklem Hintergrund erwarten, was nach der Bildübernahme natürlich nicht immer gegeben ist.

7.3.2. Add/Subtract Constant

Es wird eine Konstante (positiver Integer-Wert) eingefragt, die zu jedem Bildpunkt des Bildausschnittes (ROI) addiert oder vom Bild subtrahiert wird. Wenn das Ergebnis den Pixelwert 255 überschreitet, wird der jeweilige Bildpunkt auf den Wert 255 gesetzt. Wenn das Ergebnis der Subtraktion den Wert 0 unterschreitet, wird der jeweilige Bildpunkt auf den Wert 0 gesetzt.

7.3.3. Multiply Constant

Es wird eine Konstante (positiver Floating-Point-Wert) eingefragt. Jeder Bildpunkt im gewählten Bildausschnitt (ROI) wird mit dieser Konstante multipliziert und auf einen Integerwert gerundet. Wenn das Ergebnis den Pixelwert 255 überschreitet, wird der jeweilige Bildpunkt auf den Wert 255 gesetzt.

Die Division eines Bildes durch eine Konstante kann mit Hilfe der Multiplikation durchgeführt werden, indem als Konstante die Inverse der gewünschten Konstante eingegeben wird. Eine Division durch den Wert "2" läßt sich also durchführen, indem für die Multiplikation die Konstante "0.5" eingegeben wird.

7.3.4. Scale Image

Es wird die Möglichkeit gegeben, den Grauwertbereich des Bildes linear zu skalieren. Hierzu wird die folgende Formel angewandt:

Neuer Pixel = (Alter Pixel - C1) * C2

Die Subtraktionskonstante C1 (Integer) und die Multiplikationskonstante C2 (Floating Point) werden vor Ausführung der Funktion eingefragt.

7.3.5. Quantify Image (Gray Steps)

Es wird die Möglichkeit gegeben, den Grauwertbereich des Bildes zu quantifizieren, d. h. das Bild mit einer bestimmten Anzahl von Grauwerten darzustellen. Hierzu wird die folgende Formel angewandt:

Neuer Pixel = (Integer)((Alter Pixel) * (Steps/GrauMax)) * (GrauMax/Steps)

7.3.6. Power

Die Power-Funktion dient dazu, die Grauwerte eines Bildes zur x-ten Potenz zu erheben. Dies dient z. B. zur Simulation verschiedener Gamma-Kurven. Hier liegt die Tatsache zugrunde, daß das menschliche Auge keinen linear sensitiven Grauwertebereich hat. So werden bei dunklen Grauwerten wesentlich mehr Grautöne erkannt als bei sehr hellen Grauwerten. Oft kann bei der Bildübernahme eine sinnvolle Gamma-Kurve bereits in der Kamera eingestellt werden. Wenn dies nicht möglich ist, kann dies nachträglich über die Potenzierung mit einer Konstanten (Floating Point) erzielt werden. Die Rechenvorschrift ist:

Image = MaxGray * pow(Image/MaxGray, constant)

Dabei ist der Wert MaxGray bei normalen 8-Bit-Bildern 255.

7.3.7. Bit-wise Arithmetic Operators (AND, OR, XOR, NAND, Bit-wise Shift Left/Right)

Mit diesen Funktionen kann mit einer bit-weise einzugebenen Konstanten ein bit-weises AND, OR oder XOR durchgeführt werden. Beispiel: ein bit-weises AND mit der Konstante 11111110 löscht bei allen Bildpunkten das Bit 0, ein bit-weises OR mit der Konstante 00000011 setzt bei allen Bildpunkten die Bits 0 und 1, unabhängig, ob diese vorher gesetzt waren oder nicht.

7.3.8. Add Images

Mit dieser Funktion kann ein zweites Bild auf das aktuelle Bild (immer im definierten Bildausschnitt ROI) aufaddiert werden. Dazu muß vorher dem System mitgeteilt werden, welches Bild für die Addition hinzugezogen werden soll. Dieses Bild wird als "Second Source" bezeichnet. Der "Second Source"-Bildspeicher kann unter dem Menüpunkt "Def. Second Source" im aktuellen Menü oder auch in der "Toolbox" eingestellt werden. Das als "Second Source" bezeichnete Bild wird bei Ausführung der Operation nicht verändert. Bildpunkte, bei denen der Pixelwert "255" durch die Addition der Bilder überschritten wird, werden auf den Wert "255" gesetzt. Die Funktion existiert in zwei Ausführungen. In der einfachen Version werden beide Bilder nur addiert, in der anderen Fassung wird während der Addition der konstante Wert 128 subtrahiert, um etwa gleich viele Bereichsüberschreitungen wie -unterschreitungen zu erhalten.

Aktuelle ROI = Aktuelle ROI + Second Source
oder
Aktuelle ROI = Aktuelle ROI + Second Source - Konstante

7.3.9. Subtract Images

Mit dieser Funktion kann ein zweites Bild vom aktuellen Bild (im definierten Bildausschnitt ROI) subtrahiert werden. Dazu muß vorher dem System mitgeteilt werden, welches Bild für die Subtraktion hinzugezogen werden soll. Dieses Bild wird als "Second Source" bezeichnet. Der "Second Source"-Bildspeicher kann unter dem Menüpunkt "Def. Second Source" im aktuellen Menü oder in der "Toolbox" eingestellt werden. Das als "Second Source" bezeichnete Bild wird bei Ausführung der Operation nicht verändert. Bildpunkte, bei denen der Pixelwert "0" durch die Subtraktion der Bilder unterschritten wird, werden auf den Wert "0" gesetzt. Die Funktion existiert in zwei Ausführungen. In der einfachen Version werden beide Bilder nur subtrahiert, in der anderen Fassung wird während der Subtraktion der konstante Wert 128 addiert, um nicht zu viele Bereichsunterschreitungen zu erhalten. Der Nullpunkt des Ergebnisbildes liegt damit beim Wert 128. Es gibt einige Funktionen, die zur Weiterverarbeitung den Nullpunkt bei 128 erwarten.

Aktuelle ROI = Aktuelle ROI - Second Source
oder
Aktuelle ROI = Aktuelle ROI - Second Source +Konstante

Weiterhin sind auch zyklische Subtraktionsfunktionen implementiert, die man im sinnvollen Zusammenhang findet. Dies ist 1. die HUE-Subtraktionsfunktion, mit der man zwei HUE-Farbverlaufsbilder subtrahieren kann, bei denen der Nullwert als "Keine Farbe" definiert ist, und 2. die Interferometrie, bei der Phasenbilder erstellt werden, die als Sägezahnbilder bezeichnet werden und zyklische Werte von -PI bis +PI aufweisen.

7.3.10. Multiply Images
Mit dieser Funktion kann ein zweites Bild mit dem aktuellen Bild (im definierten Bildausschnitt ROI) multipliziert werden. Dazu muß vorher dem System mitgeteilt werden, welches Bild für die Multiplikation hinzugezogen werden soll. Dieses Bild wird als "Second Source" bezeichnet. Der "Second Source"-Bildspeicher kann unter dem Menüpunkt "Def. Second Source" im aktuellen Menü oder in der "Toolbox" eingestellt werden. Das als "Second Source" bezeichnete Bild wird bei Ausführung der Operation nicht verändert. Um eine Grauwertbereichsüberschreitung zu verhindern, wird nach der folgenden Vorschrift multipliziert:

Aktuelle ROI = Aktuelle ROI * Second Source / Konstante

7.3.11. Divide Images
Mit dieser Funktion kann das aktuelle Bild durch ein zweites Bild (im definierten Bildausschnitt ROI) dividiert werden. Dazu muß vorher dem System mitgeteilt werden, welches Bild für die Division hinzugezogen werden soll. Dieses Bild wird als "Second Source" bezeichnet. Der "Second Source"-Bildspeicher kann unter dem Menüpunkt "Def. Second Source" im aktuellen Menü oder in der "Toolbox" eingestellt werden. Das als "Second Source" bezeichnete Bild wird bei Ausführung der Operation nicht verändert. Zur Erzielung eines sinnvollen Grauwertebereiches des Ergebnisses der Division wird folgende Vorschrift bei der Operation benutzt:

Aktuelle ROI = Aktuelle ROI * Konstante / Second Source

Bildpunkte, bei denen der Pixelwert 255 überschritten wird, werden auf den Wert 255 gesetzt. Diese Funktion dient unter anderem zur Korrektur einer ungleichmäßigen Bildausleuchtung bei der Bildübernahme oder zur Korrektur von Fehlern in der Kamera, z. B. unempfindlicheren Stellen. Hierzu muß zusätzlich zum gewünschten Originalbild bei gleicher Beleuchtungseinstellung ein Korrekturbild eingelesen werden, das im Mittel etwa den Grauwert (Pixelwert) 128 aufweist. Dies kann leicht mit der Farbtabellen- (Color-Look-Up-Table-) Einstellung "Korrekturbild" vorgenommen werden, bei der während der Bildübernahme ein Band von Pixelwerten von 125 bis 131 in roter Farbe hervorgehoben dargestellt wird. Als Bild kann eine gleichförmig graue Vorlage dienen. Zur Korrektur wird nun das Korrekturbild vom Originalbild dividiert. An Stellen, an denen die Beleuchtung geringer ausfiel oder an denen die Kamera unempfindlicher ist, haben Originalbild und Korrekturbild zu geringe Pixelwerte - beim Korrekturbild sind dort die Pixelwerte kleiner als "128". Nach Ausführung der Division wird daher das Ergebnisbild (die aktuelle ROI) an diesen Stellen heller. Der umgekehrte Fall tritt auf, wenn die Beleuchtung an bestimmten Stellen etwas stärker war als im Mittel: Hier wird das Ergebnisbild nach der Division dunkler. Das Second Source Bild wird bei dieser Operation nicht überschrieben, so daß es zur Korrektur mehrerer Bilder nacheinander benutzt werden kann.

Für die Hintergrundskorrektur kann natürlich auch eine einfache Subtraktion eines gleichförmigen Hintergrundbildes mit interner Addition der Konstante 128 benutzt werden. Ob Subtraktion oder Division zur Korrektur den Vorzug erhalten sollen, hängt davon ab, ob die Bildstörungen additiv oder multiplikativ aufgebracht wurden. Dies ist sicherlich nicht immer leicht zu entscheiden. Wenn man aus der Art der Bilderzeugung keinen Anhaltspunkt hierfür erhält, muß man sich durch Tests an das beste Ergebnis herantasten. Weitere Funktionen zur Hintergrundkorrektur finden Sie im Filter/Background-Filter-Menü.

7.3.12. Square Root
Die Wurzel aus den Quadraten zweier Bilder kann bei der Filterung im Frequenzbereich zur Berechnung des Leistungsspektrums sehr sinnvoll sein und ist hier daher implementiert. Ein Beispiel für eine solche Filterung ist z. B. die Bestimmung des Leistungsspektrums nach Berechnung der geraden und ungeraden Funktionen durch einen Gabor-Filter im Frequenzbereich. Die Rechenvorschrift lautet:

Aktuelles Bild = sqrt ((Aktuelles Bild * Aktuelles Bild) + (Second Source)*(Second Source))

7.3.13. Weitere logische und arithmetische Operationen

Folgende weitere Operationen sind implementiert:

- And: Active = Active & Second

- Or: Active = Active | Second

- Xor: Active = Active ~ Second

- Max: Active = MAX(Active, Second)

- Min: Active = MIN(Active, Second)

- Source NAND Destination -> Destination

- Threshold Surface: Destination wird als Threshold Surface für die Binärisierung der Source verwendet.

Auf Wunsch können weitere Funktionen implementiert werden. Diese Funktionen lassen sich aus den bereits implementierten zusammensetzen, können jedoch bei der Sequenzbildverarbeitung zu deutlichen Geschwindigkeitssteigerungen führen, wenn sie direkt implementiert sind. Folgende Funktionen stehen zur Auswahl:

- Source AND (not)Destination -> Destination

- Source OR (not)Destination -> Destination

- Source XNOR Destination -> Destination

- Source NOR Destination -> Destination

- (not)Source AND Destination -> Destination

- (not)Source OR Destination -> Destination

7.3.14. Second Source

Die Second Source für alle dualen arithmetischen oder logischen Funktionen kann in einem Menü ausgewählt werden. Jeder der definierten Bildspeicher kann als Second Source definiert werden. Wenn Second Source und Aktuelles Bild gleich sind, kann es zu unerwarteten Ergebnissen kommen.

7.3.15. Transparency

Ein- und Ausschalten der Transparenz. Während der logischen Operationen kann der Transparency-Modus bestimmen, welche Bildbereiche als transparent, d. h. durchscheinend, betrachtet werden. Bei einem Ergebnis vom Grauwert "0" bei einer Operation mit zwei Bildern wird Transparenz angenommen. Alle Pixel, die durch die Operation den Wert "0" erhalten, werden nicht geändert und zeigen daher den Hintergrund, das ursprüngliche aktive Bild. (Die Transparenz ist in dieser Version des Programmes nicht implementiert)

7.3.16. Copy Image / Copy/Move Functions

Die Beschreibung der Funktionen zum Kopieren eines Bildes in einen anderen Bildspeicher oder zum Kopieren oder Verschieben bestimmter Bildausschnitte findet man in der Beschreibung der Toolbox ( Copy Image: Kap. 13.5 und Copy/Move: Kap.13.6.).

7.3.17. Clear Image / Clear Functions

Die Beschreibung der Funktionen zum Löschen eines Bildes oder zum Löschen bestimmter Bildausschnitte findet man in der Beschreibung der Toolbox (Clear Image oder Clear Functions: Kap. 13.6).

7.3.18. Cut Minimum Peaks / Cut Maximum Peaks

Mit diesen Funktionen können kleine oder sehr große Werte der ROI oder des gesamten Bildes abgeschnitten werden. Beispiel: Nach Ausführen der Funktion "Cut Max. Peaks" mit dem Parameter 250 werden alle Pixel mit einem Grauwert über 250 zu 250 gesetzt.

7.3.19. Absolute Value (0 := 128)

Verschiedene Funktionen können vorzeichenbehaftete Bilder als Ergebnis erhalten. Da negative Werte mit Bildpunkten nicht direkt dargestellt werden können, wird einfach als Nullwert der Pixelwert 128 definiert. Solche vorzeichenbehaftete Bilder entstehen beispielsweise durch folgende Funktionen: Subtraktion zweier Bilder, Gradientenbilder nach Laplacefilterung oder Darstellung von Real- oder Imaginärteil des Frequenzspektrums. Die "Absolute Value"-Funktion kann aus solchen Bildern den Absolutwert bilden, d. h. der ursprüngliche Wert 128 wird wieder zu dem Pixelwert 0 gesetzt, bei Werten größer 128 wird einfach 128 subtrahiert, Werte kleiner als 128 werden zu (128 - Grauwert) gesetzt.


7.4. Filters

Convolution3x3
Average
Gauss
Laplace
Sobel
Edge Filter
Rank/Median
Recursive
Relaxation
Video Filter
Backgrnd Ops.

In diesem Menü sind lineare und nichtlineare lokale Filter aufgeführt. Zu den linearen Filtern gehören z. B. der Laplace- und der Sobel-Filter, beides Filter, die die Kanten (=Grauwertgradienten) im Bild verstärken oder hervorheben. Zu den nichtlinearen lokalen Filtern gehören z. B. die Rangordnungsfilter, die hier in allgemeiner Form oder speziell optimiert als Median-Filter implementiert sind. Neben den hier direkt programmierten und zeitoptimierten Filtern kann der Benutzer sich einfache Nachbarschaftsoperatoren in der 3*3-Nachbarschaft selbst definieren. Die Extraktion und Erkennung von Kanten ist ein sehr wichtiger Schritt in der Vorverabeitung von Objekten in Bildern. Während man bisher verschiedene Funktionen in der richtigen Kombination benutzen mußte (Laplace, Sobel, Thresholding usw.), wurden nun einige neue Funktionen zur direkten Kantenextraktion implementiert. Dies sind der Marr-Hildreth-Filter, der Canny-Edge-Filter und eine Funktion zur Detektion von Nulldurchgängen im Gradientenbildern (ZeroCrossings).

7.4.1. User Defined 3*3 Convolution

Mit dieser allgemeinen 3*3-Konvolution kann eine Faltung mit einer beliebigen 3*3-Maske durchgeführt werden. Hierfür kann den einzelnen Koeffizienten der Maske ein Integerwert im Bereich [-255..255] zugeordnet werden, wobei auch das Vorzeichen bei der Operation festgelegt wird. Bei Ausführung der Filteroperation wird der jeweilige Pixelwert der angesprochenen Bildpunkte, d.h. des mittleren Bildpunktes selbst und der 8 umgebenen Bildpunkte, mit dem in der Maske festgelegten Faktor multiplikativ verknüpft und auf das Endergebnis aufaddiert. Damit keine Bereichsüberschreitung auftritt, kann ein zusätzlicher Teilfaktor eingegeben werden, durch den das Endergebnis der Konvolution dividiert wird. Außerdem kann eine Additionskonstante festgelegt werden, die zum Endergebnis hinzuaddiert wird. Dies ist notwendig bei Gradientenfiltern, die auch negative Werte erzeugen, so daß hier der Null-Pegel zur Darstellung am besten auf den mittleren Grauwert 128 gelegt wird. Bei Bereichsüberschreitung wird das Ergebnis auf den erlaubten Grauwertebereich abgeschnitten [0..255].

Das Besetzen der 3*3-Matrix und Ausführen der Konvolution:

In einer Dialogbox erscheint eine 3*3-Matrix mit bestimmter Vorbelegung. Diese ist beim Aufstarten des Systemes eine Mittelwertmaske (siehe Average), die einen Bildpunkt durch den Mittelwert der 3*3 Nachbarschaftsmatrix ersetzt. Additionskonstante ist Null und der Teilfaktor ist 9. Durch Anwahl eines Matrixelementes mit dem Mauszeiger und der linken Maustaste wird der Edit-Mode aktiviert und es kann für den jeweiligen Matrixwert ein beliebiger ganzzahliger positiver oder negativer Wert im Bereich [-255..255] eingegeben werden, der mit der linken Maustaste oder der RETURN- oder Enter-Taste akzeptiert wird. Ebenso lassen sich noch die Additionskonstante und der Teilfaktor eingeben.

Auf der rechten Seite der Dialogbox sind in einem Auswahlfeld einige vordefinierte Matrixbelegungen aufgelistet, die mit dem Mauszeiger aktiviert werden können: in der aktuellen Softwareversion sind dies die Kompass-Operatoren, die die Gradienten im Bild in einer von 8 verschiedenen Richtungen extrahieren. Eine vom Benutzer eingegebene Matrixeinstellung kann mit dem Befehl "Save" für die Dauer des Programmablaufes festgelegt werden. Mit dem "Load"-Befehl wird diese Einstellung erneut aktiviert, wenn zwischenzeitlich andere Einstellungen vorgenommen wurden. Diese festgelegte Einstellung kann über den "Save"-Schalter jederzeit mit einer neuen Belegung überschrieben werden. Beim Neuladen und Neuaufstarten des picCOLOR Programmes wird diese Einstellung gelöscht.

Die im Matrixfeld definierte und angezeigte Filterfunktion wird über die Schaltfläche "Accept" gestartet. Bei Betätigung der "Cancel"-Schaltfläche setzt das System die ursprünglich (bei Öffnen des Dialogfensters) einprogrammierte Matrix wieder ein und schließt das Dialogfenster ohne Ausführung der Filterfunktion. Wenn die neu eingegebene Matrixbelegung erhalten bleiben soll, ohne daß die Konvolution ausgeführt werden soll, so muß das Dialogfenster über die Exit-Fläche in der linken oberen Ecke geschlossen werden.

Die hier einprogrammierten Filter sind nicht geschwindigkeitsoptimiert, d. h. beispielsweise ein Laplace-Filter, der hier vom Benutzer definiert wird, läuft wesentlich langsamer ab als der zeitoptimierte, fest einprogrammierte, der in Abschnitt 7.4.6. beschrieben wird.

Größere allgemeine Konvolutionen sind implementiert, jedoch nur für bestimmte Filter freigegeben, so z. B. für sehr große Laplace-Kernel. Wenden Sie sich bei Bedarf an das Entwicklungsteam.

7.4.2. Average

Average N*N
Mosaik N*N

Der Average-Filter bildet einen Mittelwert über die N*N-Nachbarschaft eines Bildpunktes (inclusive des Bildpunktes selbst) und gibt diesem Bildpunkt dann den errechneten Mittelwert. Mit dieser Rechteck-Maske werden Bilder unschärfer und Kanten werden weicher, dafür werden jedoch Bildstörungen ebenfalls abgeschwächt. Wenn notwendig, kann der Average-Filter mehrmals hintereinander ausgeführt werden. Die Rechenvorschrift für diesen Filter bei einer 3*3-Umgebung lautet:

 |  | 1 |  | 1 | 1 | 1
M | = | - | * | 1 | 1 | 1
 |  | 9 |  | 1 | 1 | 1

Zur Berechnung kann eine 3*3, 5*5, 7*7 oder bis zu 15*15-Nachbarschaft herangezogen werden.

7.4.3. Mosaic Filter

Bei Anwendung des Mosaik-Filters wird das Bild in Blöcke der Größe N*N eingeteilt. Jeder Bildpunkt eines N*N-Blockes erhält den Grauwert, der als Mittelwert über alle Punkte des Blockes berechnet wird. Hierdurch wird das Bild je nach Blockgröße mehr oder weniger grob gerastert. (Der Filter ist nicht implementiert)

7.4.4. Gauss Filter

Wie der Average-Filter dient auch der Gauss-Filter zur Tiefpaßfilterung eines Bildes. Die Gauss-Filter-Funktion wird hierzu durch eine Binomialverteilung approximiert, aus der die Filtermaske bestimmt wird. Für den einfachsten Fall eines 3*3 Filterkernels lautet die Rechenvorschrift

 |  | 1 |  | 1 | 2 | 1
M | = | - | * | 2 | 4 | 2
 |  | 16 |  | 1 | 2 | 1

Zur Berechnung kann eine 3*3, 5*5, 7*7 oder bis zu 15*15-Nachbarschaft herangezogen werden. Je größer die Nachbarschaft gewählt wird, desto besser wird die Gauss´sche Glockenkurve approximiert.

7.4.5. Sobel

Sobel Edge
-4 Neighbour
-8 Neighbour
Sobel Hx Mask
Sobel Hy Mask

Der Sobel-Filter gehört zu den Differenzen-Operatoren. Er ist ein linearer lokaler Filter und hier in verschiedenen Formen implementiert. Differenzen-Operatoren erkennen Gradienten im Bild in einer bestimmten Richtung und verstärken diese. Die Faltungsmaske des Sobel-Operators in x- und y-Richtung ist folgendermaßen definiert:

 |  | 1 | 2 | 1 |  |  | 1 | 0 | -1
Hx | = | 0 | 0 | 0 | Hy | = | 2 | 0 | -2
 |  | -1 | -2 | -1 |  |  | 1 | 0 | -1

Durch das Auslassen der mittleren Spalte oder Zeile bleiben kleine Störungen in benachbarten Spalten oder Zeilen unberücksichtigt und der Filter wirkt symmetrisch. Durch die Berechnung von drei Differenzen (mit höherer Gewichtung der jeweils mittleren Zeile oder Spalte) ergibt sich eine gute Rauschverminderung. Als Ergebnis erhält man reliefartige Bilder, in denen nur noch die Gradienten in der jeweiligen Richtung (d. h. x- oder y-Richtung) hervorgehoben sind. Da es positive und negative Gradienten gibt, die negativen jedoch nicht im Pixelwertebereich von 0 bis 255 darstellbar sind, wird der Nullwert (d. h. der mittlere Wertebereich ohne Gradienten) wiederum auf 128, also einen mittleren Grauwert angehoben. Positive Gradienten sind dann heller als dieser mittlere Grauwert, negative dunkler.
Durch Kombination der Hx- und Hy-Komponenten des Sobel-Operators, nämlich durch die Berechnung des Betrages des Gradienten nach der Vorschrift:

sqrt( (Hx)*(Hx) + (Hy)*(Hy) )

lassen sich alle Kanten eines Bildes unabhängig von ihrer Richtung darstellen. Diese "Kantenverstärkung" ist relativ unempfindlich gegenüber Störungen, so daß sie sicherlich eine der wichtigsten Funktionen zur Kantenerkennung darstellt. Neben der Form mit den oben dargestellten Komponenten Hx und Hy, die bei Einstellung einer 8-Nachbarschaft benutzt wird, ist auch eine vereinfachte Form mit der 4-Nachbarschaft mit den folgenden Komponenten implementiert:

 |  | 0 | 1 | 0 |  |  | 0 | 0 | 0
Hx | = | 0 | 0 | 0 | Hy | = | 1 | 0 | -1
 |  | 0 | -1 | 0 |  |  | 0 | 0 | 0

Diese Form ist sehr viel anfälliger gegen zufällige Bildstörungen. Weitere Gradienten-Operatoren können mit der allgemeinen Konvolutionsmatrix definiert werden. Dort sind unter anderem die Kompaßgradienten-Operatoren vordefiniert, die Gradienten auch in schräge Richtungen berechnen (Ost, Nordost, Nord, Nordwest, West, Südwest, Süd und Südost, wobei Nord die y-Richtung nach oben auf dem Bildschirm und Ost die x-Richtung nach rechts auf dem Bildschirm darstellt.

7.4.6. Laplace

Low 3*3
Medium 3*3
High 3*3
Ultra 3*3
Optimal 3*3
Optimal 5*5
Large Laplace
--Sharpen--
Sharpen 3*3
Sharpen 5*5

Mit dem Laplace-Operator werden ebenfalls Kanten im Bild hervorgehoben. Der Laplace-Operator besitzt eine Punktsymmetrische Faltungsmaske. Er ist dadurch richtungsunabhängig. Der Laplace-Operator berechnet in etwa die 2. Ableitung einer zweidimensionalen Funktion (des Bildes) nach der allgemeinen Vorschrift:

d2 S(x,y) |  | d2 S(x,y)
---------- | + | -----------
dx2 |  | dy2

Er gibt damit ein Maß für die Krümmung der Grauwertfunktion des Bildes. Der Laplace-Operator, hier mit vier verschieden stark wirkenden Masken implementiert, ist jedoch in seiner 3*3-Version recht anfällig gegenüber Bildstörungen. Daher wurde ein optimierter Laplace-Filter mit 5*5-Maske implementiert.

 |  |  | 1 | -2 | 1
H | (Low) | = | -2 | 4 | -2
 |  |  | 1 | -2 | 1
 |  |  | 0 | -1 | 0
H | (Med) | = | -1 | 4 | -1
 |  |  | 0 | -1 | 0
 |  |  | 0 | -2 | 0
H | (High) | = | -2 | 8 | -2
 |  |  | 0 | -2 | 0
 |  |  | -1 | -1 | -1
H | (Ultra) | = | -1 | 8 | -1
 |  |  | -1 | -1 | -1
 |  |  | -1 | -2 | -1
H | (Opt) | = | -2 | 12 | -2
 |  |  | -1 | -2 | -1
 |  |  | 4 | 1 | 0 | 1 | 4
 |  |  | 1 | -2 | -3 | -2 | 1
H | (5*5) | = | 0 | -3 | -4 | -3 | 0
 |  |  | 1 | -2 | -3 | -2 | 1
 |  |  | 4 | 1 | 0 | 1 | 4

Als Ergebnis erhält man ein Bild, in dem an allen Stellen ohne Krümmung des Grauwertgradienten der Nullwert (128) auftritt. Alle Kanten werden als Werte kleiner oder größer als Null (128) hervorgehoben.

Mit der "Large Laplace"-Funktion können auch größere Kernel zur Filterung benutzt werden, bis hin zu 13*13. Aus Einfachheitsgründen ist hier z. Zt. lediglich ein "Ultra"-Filter implementiert, der allerdings an den Ecken leicht kreisförmig abgerundet ist.

Eine sehr interessante Anwendung ist die Überlagerung des Originalbildes mit einem relativ kleinen Anteil des nach obiger Vorschrift Laplace-gefilterten Bildes. Dazu dient die folgende Funktion "Sharpen Image".

7.4.7. Sharpen Image

Hier wird der Laplace-Operator auf das Bild angewandt und zu 17% dem Originalbild überlagert. Die hierzu benutzte Maske sieht folgendermaßen aus:

 |  |  | 1 |  | -1 | -1 | -1
H | (3*3) | = | - | * | -1 | 13 | -1
 |  |  | 5 |  | -1 | -1 | -1

Das Ergebnis ist eine recht gute Kantenverschärfung im Bild. Diese Funktion ist optimal dafür eingestellt, unscharfe Bilder zu schärfen, ohne ein eventuell vorhandenes Rauschen allzusehr zu erhöhen. Eine stärkere Bildschärfung kann durch mehrmaliges Ausführen dieses Filters erzielt werden. Es muß dabei jedoch auch eine Verstärkung des Bildrauschens in Kauf genommen werden. Mit der Möglichkeit, in der Funktion "User Defined 3*3 Convolution" selbst Masken zu definieren, können Sie auch andere Verhältnisse von Laplace-Anteil und Originalbild-Anteil erproben: Bei einer Wichtung des mittleren Wertes von 10 statt 13 und einem entsprechenden Teilfaktor von 1/2 erhalten Sie z. B. einen wesentlich stärker wirkenden Filter mit der Eigenschaft: "Originalbild + 33% Anteil des Laplace-gefilterten Bildes". Da der Filter sehr anfällig gegenüber Bildrauschen ist, wurde er auch in einer 5*5-Nachbarschaftsversion implementiert.

H (5*5) = Original + 1.0 * Laplace(5*5)

Edge Filters

7.4.8. Zero Crossing

Wenn ein Bild vektorisiert werden soll, um später eine Erkennung von Gegenständen durchführen zu können, so ist ein erster Ansatz die Verstärkung aller Kanten mit dem Sobel oder Laplace-Filter. Besonders interessant ist hier der Laplace-Filter, da man genau an Stelle der Kante einen Nulldurchgang der Grauwertgradientenkrümmung erhält. Diese Nulldurchgänge, im Bild durch den Pixelwert 128 dargestellt, können bestimmt und als Kantenlage angenommen werden. Ein Nachteil ist jedoch, daß an allen Stellen im Bild ohne Gradienten ebenfalls der Nullwert 128 auftritt. Zur Bestimmung der wirklichen Kanten gibt es die "Zero-Crossing"-Funktion, die folgendermaßen ausgeführt wird: Mit einem Laplace-Filter wird ein Gradientenbild erzeugt, dessen Nullwert auf dem intern definierten Grau-Nullwert für Vorzeichenbehaftete Bilder (128) liegt. Die Funktion bestimmt nun alle Nulldurchgänge, deren Nachbarschaft deutlich verschieden von Null ist, wo also starke Gradientenkrümmungen auftraten. Als Ergebnis erhält man ein Bild mit 1-Pixel-breiten binären Kanten. Wenn der Schalter "frame" gesetzt wird, so wird ein 1-Pixel breiter Rahmen um das Bild gezeichnet.

7.4.9. Marr Hildreth Filter

Der Marr-Hildreth-Operator dient zur Kantenextraktion nach der Vorschrift: Ergebnis = Sobel AND ZeroCrossing(Laplace). In der Originalvorschrift werden hierzu der Sobel-Filter mit 4er Nachbarschaft und ein 3*3 Medium-Laplace-Filter verwendet. Hierzu stellt man den Schalter auf "normal". Sinnvoller erscheint die Verwendung des 8er-Nachbarschaft-Sobel-Filters und ein 5*5er Laplace-Filter mit optimiertem Kernel (Schalter auf "smooth"). Hiermit werden Fehlerkennungen durch Bildrauschen stark vermindert. Es ist durchaus sinnvoll, vor der Bearbeitung noch einen Gauss-Filter mit 3*3 oder 5*5 Kernel anzuwenden. Als Ergebnis erhält man ein Bild mit 1-Pixel breiten nicht unterbrochenen Kanten, deren Grauwert proportional zur Stärke des Grauwertgradienten der Kante ist. Dieses Kantenbild kann mit der Synthese-Funktion (in der canny-edge-Funktion erklärt: siehe unten) zu definierten binären Kanten weiterverarbeitet werden.

7.4.10. Canny Edge Filter

Canny-Edge-Operator zur Kantenextraktion mit 3*3 Kernel. Als Ergebnis erhält man ein Bild mit 1-Pixel breiten ununterbrochenen Kanten, deren Grauwert proportional zur Stärke des Grauwertgradienten der Kante ist. Dieses Kantenbild kann mit der Synthese-Funktion zu definierten binären Kanten weiterverarbeitet werden. Es ist durchaus sinnvoll, vor der Bearbeitung noch einen Gauss-Filter mit 3*3 oder 5*5 Kernel anzuwenden. Der Filter erbringt sehr ähnliche Ergebnisse wie der Marr-Hildreth-Filter, jedoch mit leicht (um einen Pixel) verschobener Kantenlage. Testen Sie, welche Funktion für Ihre Zwecke besser geeignet ist.

Kanten-Synthese:

Die Synthese-Funktion erzeugt ein binäres Kantenbild, indem nur noch stark ausgeprägte Kanten übrig bleiben. Alle schwach ausgeprägten Kanten verschwinden. Hierzu benötigt man zwei Grauwertgrenzwerte, "low_threshold" und "high_threshold". Dabei werden zunächst alle Kanten des "Edge Image Buffer" mit einem Grauwert (Gradienten) größer als high_threshold als definitive Kanten in den aktuellen Bildspeicher eingetragen. Danach werden, ausgehend von diesen gefundenen Kanten, direkte Fortsetzungen dieser Kanten bei kleineren Gradienten hinzugenommen, bis eine Kante mit dem Grauwert unter die low_threshold-Grenze fällt. Hiermit werden schwache Kanten bis zum high_threshold-Grenzwert größtenteils eliminiert, wichtige Kanten, die an manchen Stellen durch Bildrauschen zu schwach sind, jedoch trotzdem noch mitberücksichtigt. Vor Benutzung der Synthese-Funktion müssen "low_threshold" und "high_threshold" sowie der "Edge-Image-Buffer", d. h. der Source-Buffer gesetzt werden. Die erkannten Kanten werden dann im aktiven Bildspeicher aufgebaut. Die Kanten-Synthese kann auch für die Marr-Hildreth-Funktion genutzt werden. Mit den Grenzwerten muß üblicherweise etwas probiert werden, bis man das gewünschte Ergebnis erhält.

Edge-Tracing:

Mit dieser Funktion kann interaktiv mit dem Fadenkreuz eine Grauwert-Kante im Bild angewählt werden. Sie wird dann automatisch verfolgt, solange der Grauwertgradient (Edge Threshold) einen bestimmten, eingestellten Wert nicht unterschreitet.

7.4.11. Rank / Median Filter

Med. ver 3..9
Med. hor 3..9
Med. 3*3 4con
Med. 3*3 8con
Med. 5*5
-- Rank ----
Rank 3*3 4con
Rank 3*3 8con
Rank 5*5
-Black/White
-Gray Level

Der Rangordnungsfilter (Rank-Filter) ist ein nichtlinearer Filter, der für morphologische Operationen, aber in seiner Spezialversion als Median-Filter sehr gut zur Eliminierung einzelner Störpunkte im Bild verwendet werden kann. Alle Pixel der angegebenen Maske (z. B. 3*3 Nachbarschaft) werden in aufsteigender Grauwertreihenfolge angeordnet und dann wird der gewählte Wert als neuer Wert des Bildpunktes genommen. Wird der erste, also kleinste Grauwert genommen, erhält man einen Erosionsfilter (siehe auch Morphologie). Wählt man den größen Wert, erhält man einen Dilatationsfilter. Beim mittleren Wert erhält man den sogenannten Medianfilter. Es wurden allgemeine Rank-Filter mit der Kernelgröße 3*3 (4er und 8er Nachbarschaft) und 5*5 (ohne die Eck-Pixel, d. h. beinahe kreisförmig) implementiert. Sie sind als optimierte Funktionen sowohl für Grauwertbilder als auch für Schwarz/Weiß-Bilder vorhanden. Die Funktionen arbeiten nach den optimierten Verfahren von Alan Peters (Vanderbilt, Nashville, TN) oder Chenyang Xu (). Der "Rank"-Wert für die einzelnen Filter-Masken ist folgendermaßen einzugeben:

 | Erosion | Median | Dilatation
4er-Nachbarschaft (3*3): | 1 | 3 | 5
8er-Nachbarschaft (3*3): | 1 | 5 | 9
5*5 ohne Ecken: | 1 | 11 | 21

Der Einfachheit halber kann der Median-Filter immer durch Eingabe von "0" und die Dilatation immer durch Eingabe von "-1" erreicht werden. Es muß eingestellt werden, ob mit einem Schwarz/Weiß-Bild oder mit einem Grauwertbild gearbeitet wird.

Der Median-Filter ist die spezielle Version der Rangordnungsfilter, bei dem der mittlere Grauwert in der Reihenfolge aller Grauwerte der Maske als neuer Pixelwert genommen wird. Er ist auch als eindimensionaler Filter implementiert. In der eindimensionalen Form können Folgen von 3, 5, 7, 9 aufeinanderfolgenden Bildpunkten gefiltert werden - sowohl in horizontaler als auch in vertikaler Richtung. In der zweidimensionalen Ausführung wird der Median-Filter über die 3*3-Nachbarschaft ausgeführt, wobei die 4-er und die 8-er Nachbarschaft gewählt werden kann. Der Median-Filter eignet sich sehr gut, einzelne störende Bildbunkte zu eliminieren. Kanten werden praktisch nicht verändert. Seine Arbeitsweise in der eindimensionalen Form ist wie folgt: Aus einer ungeraden Anzahl von aufeinanderfolgenden Bildpunkten (z. B. n = 3, 5, 7, ...) ist der Medianwert derjenige, der die Eigenschaft hat, daß (n-1)/2 Bildpunkte im Grauwert kleiner oder gleich und (n-1)/2 Bildpunkte im Grauwert größer oder gleich sind. Je länger die Medianfolge (n) gewählt wird, desto größere Bildstörungen kann der Medianfilter beseitigen. Die maximale Ausdehnung von Störungen, die beseitigt werden kann, beträgt (n-1)/2. Bei der Anwendung der zweidimensionalen Form ist zu beachten, daß hier die Medianfolge bei einer 3*3-(4er)-Nachbarschaft die Länge n=5 hat. Dies unterscheidet sich damit stark von der nacheinander ausgeführten eindimensionalen Form der Länge n=3 in x- und y-Richtung.

7.4.12. Relaxation

Der Relaxations-Filter führt zu einer lokalen Kontrastverbesserung. Der implementierte Relaxations-Filter hat die folgende Vorschrift:

 | gmin , | wenn | (g - gmin) < (gmax - g)
g (neu) = | g (alt), | wenn | (g - gmin) = (gmax - g)
 | gmax , | wenn | (g - gmin) > (gmax - g)

wobei g = g(x,y) ist, gmax das Maximum einer N*N-Umgebung um g, und gmin das Minimum einer N*N-Umgebung um g ist. Es sind Umgebungen von 3*3 bis 9*9 erlaubt. Der Filter kann beliebig oft hintereinander angewandt werden. Ab etwa der 10ten Iteration wird das Verfahren jedoch in den meisten Fällen konvergieren, d. h. es werden keine Änderungen mehr auftreten. Die Anzahl der Iterationen kann vor Ausführung der Funktion eingestellt werden. Nach Ausführung wird die Summe der Grauwertänderungen durch die Filteranwendung angezeigt. Hiermit kann das Konvergenzverhalten des Filters begutachtet werden. Mehr als 16 Iterationen sind üblicherweise nicht sinnvoll.

7.4.13. Recursive Filters

--1.Order--
Horizontal
Vertical
Both (Area)
--2.Order--
Crit.Damping
Bessel
Butterworth
Tschebyschef
- Low Pass
- High Pass
- Band Pass
- !BandPass
- All Pass
Band Quality

Rekursive eindimensionale Filter laufen nur in Zeilen- oder Spaltenrichtung eines Bildes. Einige der Filter können nacheinander zeilen- und spaltenweise ausgeführt werden und wirken damit zweidimensional.

7.4.13.1. Filter 1. Ordnung

Mit dem "Rekursiv"-Filter 1. Ordnung können Bildstörungen in verschiedener Richtung abgeschwächt oder geglättet werden. Er kann horizontal, vertikal oder auch automatisch nacheinander in beide Richtungen ablaufen. Dabei wird jeweils ein Bildpunkt mit seinem vorherigen Nachbarn nach der folgenden Vorschrift verknüpft und neu berechnet:

Pixel(n) = C * Pixel(n) + (1-C) * Pixel(n-1)

C ist dabei eine reelle Konstante im Wertebereich [0..1]. Der Filter läuft jeweils einmal von links nach rechts und anschließend von rechts nach links (bzw. oben -> unten und unten -> oben). Dadurch tritt keine Bildverschiebung auf. Der Filterparameter 0.0 bewirkt keine Änderung, 1.0 bewirkt maximale Filterwirkung: der erste Pixel wird über das gesamte Bild verschmiert. Sinnvolle Faktoren liegen im Bereich von 0.2 bis 0.8.

7.4.13.2. Filter 2. Ordnung

Infinite Impulse Response Filter (2.Order)

Diese 1-dimensionalen Filter 2.Ordnung wurden nun in einfacher Form zur Verfügung gestellt. Die Filter wirken nur horizontal und nur von links nach rechts. Bei der Ausführung tritt eine Phasenverschiebung auf, d. h. das Ergebnisbild ist etwas nach rechts verschoben. Die Koeffizienten der Filter können eingestellt werden, so daß folgende Filtertypen benutzt werden können:

  • - Critical Damping,

  • - Bessel,

  • - Butterworth,

  • - Tschebyscheff mit 0.5dB, 1.0dB, 2.0dB, und 3.0dB Restwelligkeit.

Die Filter können als

  • - Low Pass,

  • - High Pass,

  • - Band Pass,

  • - Band Cut (Bandsperre),

  • - All Pass

ausgeführt werden. Da die Filter in ihrer einfachen Ausführung noch nicht phasenlinear sind, wurde der "All Pass" hinzugefügt, um für die Weiterverarbeitung und Kombination mit anderen Bildern die gleiche Phasenverschiebung ohne Filtereinfluß erzeugen zu können. Bei "Band Pass" und "Band Cut" ist außerdem der Wert für die "Quality" wirksam. Hohe Werte (2.0..10.0) erzeugen steile Filterübergänge und damit schmale Band Filter, niedrige Werte (0.05..0.5) flache Filterübergänge und damit breite Bänder.

7.4.14. Video Filter

Even Frame 024..
Odd Frame 135..
Evn/Odd 024.135.
4.43 MHz Filter
- Width 0.5 MHz
- Width 1.0 MHz
- Width 2.0 MHz

Im Video-Filter-Menü findet man eine Anzahl von Filtern zur Bearbeitung von eingelesenen Videobildern, die wegen des Aufnahmeverfahrens (z. B. Interlaced-Halbbild-Verfahren oder Farbfrequenzträger im PAL-Signal) vorverarbeitet werden müssen.

7.4.14.1. Odd/Even-Filter

Dieser Filter stellt das erste oder zweite Halbbild eines im Interlaced-Verfahren eingelesenen Videobildes dar. Es kann das Even-Halbbild (Zeilen 0,2,4,6,8...,n-1) oder das Odd-Halbbild (Zeilen 1,3,5,7,9...,n) dargestellt werden (n ist z. B. 511 als unterste Bildzeile). Dies geschieht hier durch Zeilenverdopplung, d. h. man erhält für das Even-Bild die Zeilen 0,0,2,2,4,4,6,6,8,8,.... Es können auch beide Halbbilder getrennt übereinander angezeigt werden, man erhält dann ein Bild mit den Zeilen: 0,2,4,6,8,.....,n-1,1,3,5,7,9,...,n.

Es ist zu beachten, daß für die richtige Funktion in Zusammenhang mit dem Sequenzspeicher die obere y-Koordinate der ROI gerade sein sollte. Mit der Sequenzbildeinlesefunktion übernommene Bildsequenzen werden immer ab Zeile 0 im Sequenzspeicher abgelegt. Wenn nun ein Bild zur Bearbeitung auf den Bildschirm oder in den Arbeitsspeicher übertragen wird, und die ROI beginnt bei ungerader y-Koordinate, dann werden gerade Zeilen zu ungeraden. Eine Umrechnung oder Darstellung von Even- oder Odd-Bild wird dann zu falschen Ergebnissen führen. Üblicherweise ist das Odd-Halbbild das erste Halbbild im übernommenen Interlaced-Bild. Bei einem Snap-Shot wird zuerst das Odd-Bild, dann das Even-Bild übernommen. Dieses Verhalten kann jedoch bei der picCOLOR V2.17-Karte geändert werden.

7.4.14.2. Color Filter 4.43 MHz

Mit diesem Filter kann das im PAL-Fernsehsignal enthaltene Farbträgersignal bei der Mittenfrequenz von 4.43 MHz weggefiltert werden. Bei Übernahme von Grauwert-Bildern mit einer PAL-Farbkamera kann man diese Frequenz als deutliches Moire-Muster erkennen. Üblicherweise hat der Farbträger eine Bandbreite von 1MHz. Der Filter kann jedoch auch auf 0.5 oder 2.0 MHz eingestellt werden. Es wird ein 0.5dB-Restwelligkeit Tschebyscheff-Band-Cut-Filter verwendet, dessen Bandmitte über die eingestellte Pixelfrequenz des Frame Grabbers definiert ist. Hierbei muß beachtet werden, daß die interne Frame Grabber Pixelfrequenz zur Zeit der Filterung mit der Frequenz zur Zeit der Bildübernahme übereinstimmt. Üblicherweise ist dies z. B. 14.375MHz. Wenn diese Frequenz z. B. zur Erzielung exakt quadratischer Bildpunkte geändert wurde, so sollte die Filterung direkt im Anschluß daran durchgeführt werden. Wenn das System die Frame Grabber-Pixelfrequenz nicht kennt - z. B. bei externem Frame Grabber - so sollte der Filter nicht benutz werden, sondern statt dessen ein richtig eingestellter IIR-Filter (s.o.)

7.4.15. Background Filter

Flatten Background

Flat Field Correction

Remove Slope Error

----------------------
Flatten LineScan Image
- Init Parameters
- Save Parameters
- Load Parameters

Die Verarbeitung von Bildinhalten hängt oft sehr stark von der Ausleuchtung des Bildhintergrundes ab. Wenn z. B. helle Objekte im Bild gefunden werden sollen, so ist dies problematisch, wenn die hellen Objekte in Bereichen sehr dunkler Ausleuchtung mit dunklen Hintergründen dunkler sind als der Hintergrund in hellen, besser ausgeleuchteten Bereichen, in denen dann die Objekte noch sehr viel heller sind. Wenn es möglich ist, ein genauso ungleichmäßig ausgeleuchtetes Korrekturbild ohne Objekte einzulesen, so kann die bereits im Arithmetik-Kapitel beschriebene Subtraktion oder Division des Korrekturbildes zu gleichmäßigem Hintergrund führen. Wenn dies nicht möglich ist, so kann über die Funktion "Flatten Background" ein ähnlicher Effekt erzielt werden.

7.4.15.1. Flatten Background

Wenn Objekte bei stark unterschiedlicher Hintergrundhelligkeit binärisiert oder mit dem Objektsuchalgorithmus bestimmt werden sollen, so muß zuerst eine Korrektur des Hintergrundes durchgeführt werden. Hierzu muß die Größe der interessierenden Objekte und ihre Helligkeit relativ zum Hintergrund (helle oder dunkle Objekte) angegeben werden. Als Größe wird der ungefähre Durchmesser der Objekte in Pixelgrößen angegeben, genauer die minimale Breite von Strukturen im Bild, die nach der Filterung noch korrekt dargestellt werden sollen. Alle noch größeren Objekte werden durch diese Funktion zu ihren Kanden reduziert. Die Objekte werden dabei durch fortlaufende Grauwert-Erosion (bei hellen Objekten) oder Dilatation (bei dunklen Objekten) entfernt und der so erhaltene objektfreie Hintergrund vom Originalbild subtrahiert. Die Funktion kann mehrmals hintereinander ausgeführt werden, um den Effekt zu verstärken.

7.4.15.2. Flat Field Correction

Kamerabilder werden in der Regel immer eine ungleichförmige Bildhelligkeit aufweisen. Diese kann verschiedene Hintergründe haben. Meistens ist jedoch die Ursache im Objektiv zu suchen. Die meisten Objektive weisen eine mehr oder weniger starke Vignettierung auf, d. h. in den Bildecken nimmt die Lichtstärke ab. Dazu kommt noch, daß die in den weiter von der optischen Achse schräg auf den Sensor auftretenden Lichtstrahlen eine geringere Effektivität haben. Besonders bei Sensoren mit Mikrolinsen ist dieser Effekt sehr deutlich. Abhilfe ergeben hier z. B. die modernen bildseitig telezentrischen Objektive. Weiterhin kann aber auch schon die interne Bildhelligkeit eines Sensors recht ungleichförmig sein. Bei CMOS-Sensoren kommt dazu noch eine mehr oder weniger starke Störung durch das sogenannte Fixed Pattern Noise (FPN), das nämlich jeder einzelne Pixel eine andere Kennlinie bzgl. der Bildhelligkeit aufweist. Über eine Flat Field Correktion können alle diese Fehler behoben werden. Dazu werden ein Dunkelbild und ein Hellbild aufgenommen und es werden Gain- und Offsetwerte für jeden Pixel berechnet, mit denen dann der Pixel korrigiert wird.

Es gibt zwei unterschiedliche Methoden zur Korrektur, :

Dark: Corrected(x,y) = (Original(x,y) - Offset(x,y)) / Gain(x,y)

mit Offset(x,y) = DarkImage(x,y) - AverageOfDarkImage * Gain(x,y)

und Gain(x,y) = (BrightImage(x,y) - DarkImage(x,y)) / (AverageOfBright - AverageOf Dark)

Black: Corrected(x,y) = (Original(x,y) - Black(x,y)) * AverageOfBrightMinusBlack / (Bright(x,y) - Black(x,y))

Achtung: das Verfahren mit dem "Black"-Bild funktioniert nicht, wenn das Schwarzbild in der Kamera korrigiert ist, was z. B. bei der Mikrotron 1310 der Fall ist.

Ansonsten wird das Black-Bild mit geschlossenem Objektiv aufgenommen, das Dark-Bild sollte dunkle Grauwerte im Bereich von 20 bis64 aufweisen, das Bright-Bild Grauwerte im Bereich von 200 bis 230. Zur Ausführung der Funktion muß natürlich das zu korrigierende Bild in einem Bildspeicher liegen, der nicht durch das Dunkel- oder Hellbild benutzt wird.

7.4.15.3. Remove Slope Error

Kleine Grauwertschwankungen werden normalerweise über eine Grauwertspreizung deutlicher gemacht, z. B. über die Funktionen der Histrogrammspreizung oder über eine einfache Grauwertskalierung. Dies funktioniert natürlich nicht, wenn zusätzlich dem Bild ein deutlicher Graukeil aufgeprägt ist. Solches kommt z. B. bei der Auswertung von Interferometriebildern vor, wo es darum geht, feinste Höhenschwankungen und Oberflächenstörungen zu vermessen. Wenn nun durch die Art der Auswertung über Interferenzstreifen eine stetige Schräglage der Oberfläche bestimmt wurde, so muß diese vor der Verstärkung eliminiert werden. Dies wird hier über eine Bestimmung der über alle Zeilen und/oder Spalten gemittelten Regression durchgeführt.

- Exclude Color: hier kann ein Hintergrund-Grauwert (0..255) von der Regressionsrechnung ausgeschlossen werden.

- Offset: Das Ergebnisbild, d. h. die korrigierte Grauwertebene, wird normalerweise automatisch im Grauwert so angepaßt, daß keine Werte unten oder oben abgeschnitten werden. Diese Automatik kann überstimmt werden, indem man hier einen Offset-Wert im Bereich 0..255 angibt.

- Horizontally/Vertically: die Korrektur kann auch getrennt für einen horizontalen oder vertikalen Graukeil durchgeführt werden.

7.4.15.4. Flatten LineScan Camera Image

Wenn Bilder mit einer LineScan-Kamera aufgenommen werden, so erhält man in der Regel erstens ein mehr oder weniger streifiges Bild und zweitens je nach Beleuchtung einen mehr oder weniger deutlichen Helligkeitsabfall zu den Rändern hin. Die Streifigkeit liegt an einzelnen Fehlpixeln, die etwas zu helle oder etwas zu dunkele Grauwerte liefern. Bei einer Flächenkamera ist ein solches Fehlpixel nicht oder kaum zu sehen, bei der Zeilenkamera zieht sich der Fehler jedoch als dunklere oder hellere Linie durch das ganze Bild. Die Randabfallproblematik wird durch schlecht eingestellte Linienlichter (Querschnittswandler zur Erzeugung von schmalen Lichtstreifen mittels Glasfaserkabeln) oder durch großen Abstand der Linienlichter von der Objektoberfläche hervorgerufen. Diese Arten von Bildfehlern können mit der "Flatten LineScan" Funktion korrigiert werden. Hierzu muß ein Bild einer konstanten Grauwerteverteilung bei Originalbeleuchtung aufgenommen werden. Hierzu kann man z. B. eine gleichmäßig graue Pappe aufnehmen. Die Helligkeit sollte möglichst im mittleren Grauwertebereich liegen. Aus diesem Referenzbild kann sich das System eine Korrekturzeile erzeugen, mit der dann ale folgenden Bilder zur Korrektur multipliziert werden. Diese Referenzzeile kann zur späteren Wiederbenutzung auf einen Datenfile abgespeichert werden.


7.5. True Color

*7.5. True Color (im True Color Extension Module)

Display RGB
Display 332
-----RGB->...------
RGB -> HLS
RGB -> HSI
RGB -> YIQ

RGB -> UVW

RGB -> XYZ

RGB -> U*V*W*

RGB -> LAB

RGB -> CMY
-----...->RGB------
HLS -> RGB
HSI -> RGB
YIQ -> RGB

UVW -> RGB

XYZ -> RGB

U*V*W* -> RGB

LAB -> RGB

CMY -> RGB
-------------------
RGB Noise
Rotate Hue
Subtract cyclic HUE
- Second HUE-Buffer
Copy Area RGB
Clear Color Buffer
Set Active Color Space
Activate RGB Buffer
Show Color Buffer
Bayer Filter

Convert Palette

Echtfarbbilder sind Farbbilder von Szenen oder Objekten, die mit Hilfe eines "Farbraumes" beschrieben werden. Im Gegensatz zu Grauwertbildern, die pro Bildpunkt nur eine Information haben, nämlich den Grauwert, besitzen Farbbilder mehrere Informationen pro Bildpunkt. Wenn die Information in mehrere Teilbildern aufgeteilt ist, kann man auch von mehrkanaligen Bildern sprechen. Eine übliche Auftrennung ist z. B. der RGB-Farbraum mit Rot-, Grün, und Blau-Kanal. Für den Farbdruck wird meist der CMYK-Farbraum verwendet, also ein 4-kanaliger Farbraum. Beliebige andere Farbräume sind denkbar. Einige der hier im True Color Menü aufgeführten Funktionen sind auch geeignet, andere mehrkanalige Bilder zu bearbeiten, z. B. Satellitenbilder in mehreren Spektralkanälen vom sichtbaren bis infraroten Bereich.

Im picCOLOR System sind Echtfarbbilder als 3-kanalige Bilder mit 8 Bit pro Kanal definiert, üblicherweise mit den Kanälen Rot, Grün und Blau. Sie liegen als mehrkanaliges Bild im Speicher, ähnlich wie eine Bildsequenz. Die einzelnen Kanäle können wie einfache Grauwertbilder verarbeitet werden, wenn sie zuvor in einen normalen 2D-Bildspeicher kopiert wurden. Über MACRO-Programme kann diese Verarbeitung auch zeitsparend ohne den Transfer ins 2D-Bild direkt im Farbbild vorgenommen werden.

Da die Echtfarbverarbeitung in unterschiedlichen Farbräumen ein sehr wichtiges Thema in der Bildverarbeitung ist, wird hier eine relativ ausführliche Beschreibung gegeben. Sie soll Ihnen helfen, zu entscheiden, ob eine Echtfarbverarbeitung für Ihre speziellen Problemstellungen sinnvoll ist. Die Verarbeitung von Echtfarbbildern mit 24-Bit Auflösung pro Bildpunkt ermöglicht die Auswertung der gesamten in der Farbe enthaltenen Information. Dies kann wesentlich mehr sein als der Informationsgehalt eines Grauwertbildes. Beim Grauwertbild ist es oft der Fall, daß im Original völlig verschiedene Farben nach der Digitalisierung den gleichen Grauwert aufweisen. Erst die Aufnahme als Farbbild und dessen Auswertung ermöglicht es, hier wieder Unterschiede zu erkennen, die für eine richtige Bilderkennung und -vermessung notwendig sind. Üblicherweise ist jedoch die Bearbeitung von Farbauszügen eines Farbbildes, d. h. von Rot-, Grün- und Blauanteil recht aufwendig und umständlich: Helligkeits-, Farb- und Sättigungsinformation sind über die drei Anteile verschmiert. Sinnvoll ist es, hier für verschiedene Anwendungen zu verschiedenen Farbmodellen überzugehen. Das Originalbild muß vor der Auswertung in den speziellen Farbraum umgerechnet werden. Mehr zu diesem Thema finden Sie unten im Kapitel 7.5.1. "Select Color Space".

Da die 3 Farbanteile in 3 verschiedenen Bildspeichern abgelegt sind, wird eine Darstellung des Echtfarbbildes nur auf ausdrücklichen Wunsch mit der Display-RGB-Funktion durchgeführt. Dieses Echtfarbbild belegt dann ein spezielles zusätzliches Bildfenster, das nicht bearbeitet werden kann, es ist ein sogenante "uneigentliches" Bild, es liegt in dieser Form nicht in irgendeinem Bildspeicher vor sondern wurde aus den 3 Farbspeichern berechnet. Wenn das Farbbild – z. B. als 8-Bit-Farbbild gedithert – weiterverarbeitet oder abgespeichert werden soll werden soll, so muß es über eine dazu geeignete Funktion umgewandelt werden.

Das picCOLOR Programm existiert übrigens auch in einer True-Color-Version. Hiermit erhält man die Möglichkeit, tatsächlich alle 16.8 Millionen Farben eines 24-Bit-Bildes ständig gleichzeitig darzustellen und auch zu bearbeiten. Dies ist sicherlich von Vorteil, wenn die hauptsächlichen Aufgaben der Bildverarbeitung z. B. ein Retuschieren für photographische Veränderungen sind. Solche Arbeiten können mit sogenannten "Photo-Studio-Programmen" in der Regel jedoch flexibler durchgeführt werden. Eine wissenschaftliche Bildverarbeitung scheint im 24-Bit-Modus z. Zt. jedoch nicht sinnvoll - hier interessiert eher die Arbeit mit den einzelnen Farbkanälen des 24-Bit Farbbildes, für die wiederum das 8-Bit-System völlig ausreicht.

Vor dem Arbeiten mit 24-Bit Echtfarbbildern muß ein separater Farbbildspeicher definiert werden ("Define Color Buffer" im Control Panel). Hierbei werden 3 oder 6 einzelne Farbkanalspeicher angelegt, die für den Rot-, den Grün-, den Blauanteil sowie wahlweise für drei weitere Kanäle in einem anderen Farbraum vorgesehen sind. Diese Farbkanalspeicher sind durch Attribute "R", "G", "B" in der Fenster-Titelleiste gekennzeichnet. Wenn der Arbeitsspeicher nicht für 6 Bildspeicher ausreicht, werden nur 3 RGB-Speicher definiert und dann wahlweise benutzt, d. h. bei Umwandlung in einen anderen Farbraum werden die RGB-Kanäle überschrieben. Zusätzlich wird ein weiterer Kanal angelegt, der nur für die Darstellung des Echtfarbbildes vorgesehen ist. Da das Echtfarbbild nicht als 24 Bit RGB-Bild im Speicher vorliegt, so wie es bei den meisten Bildbearbeitungsprogrammen gemacht wird, sondern in einzelnen Farbkanälen, kann ein direkter Display nicht mit den üblichen Windows-Darstellungsfunktionen durchgeführt werden. Diese Einzelkanalspeicherung ist jedoch sinnvoll für eine einfachere Verarbeitung der einzelnen Kanäle. Daher wird zur Betrachtung das Echtfarbbild in ein von Windows darstellbares Format umgerechnet. Z. Zt. ist dies ein mit dem 8 Bit Ditherverfahren umgerechnetes Bild, das mit einer geeigneten Look-Up-Table dargestellt wird. Man wird staunen, wie gut diese Darstellung trotz einer recht allgemeinen Look-Up-Table-Belegung und nur 256 unterschiedlichen Farben sein kann. Natürlich hat diese Art der Darstellung trotzdem seine Grenzen. Wenn es auf perfekte Echtfarbdarstellung ankommt, sollte man die ebenfalls erhältliche Echtfarbversion des picCOLOR-Programmes einsetzen.

*7.5.1. Select Color Space

R,G,B
H,L,S
H,S,I
Y,I,Q
UVW

XYZ

U*V*W*

LAB

CMY

...

Üblicherweise stellt man sich ein gutes Echtfarbbild als 24 Bit Bild vor - 8 Bit Rot, 8 Bit Grün und 8 Bit Blau. In dieser Form werden im picCOLOR Programm alle Echtfarbbilder von RGB-Kameras eingelesen und im TIFF-Format auf Disk abgespeichert. Es gibt jedoch andere, oft sehr viel sinnvollere Farbsysteme oder Farbräume, in denen ein Echtfarbbild wesentlich einfacher verarbeitet und beurteilt werden kann: So müßten z. B. zur Beantwortung der Frage, ob ein Bildpunkt hell oder dunkel ist, im RGB-Farbraum alle drei Farbanteile untersucht werden. Ebenso ist es bei einer Kontrastverstärkung eines Echtfarbbildes: hier müssen alle drei Anteile kontrastverstärkt werden. Allgemein kann man feststellen, daß beinahe jede Information des Echtfarbbildes über seine Rot-, Grün- und Blauanteile "verschmiert" oder verteilt ist. Schon vom S-VHS Videorekorder wissen wir jedoch, daß die Aufteilung in andere Signale sinnvoll sein kann. Beim dort verwendeten Y/C-Signal sind die beiden Signale Y (die Helligkeit des Bildes) und C (die Farbe) getrennt. Die Farbanteile des Bildes sind hier relativ komplex zusammengemischt - wir wollen hier nicht näher darauf eingehen. Wichtig ist nur, zu erkennen, daß die Trennung in andere Signale als R, G, B beim Videorekorder folgende Vorteile hat:

  • Bei Benutzung eines Schwarz/Weiß-Bildschirmes wird nur das Helligkeitssignal ausgewertet - das Bild bleibt gut erkennbar. Dies wäre bei getrennten R, G, B-Signalen nicht möglich.

  • Das Y-Signal besitzt eine wesentlich höhere Bandbreite als das C-Signal. Das ergibt eine wesentlich (etwa 4-fach) höhere Auflösung in der Helligkeit als in der Farbe. Dieses Verfahren spart bei der Übertragung des Signales oder bei der Abspeicherung der Bilder den Faktor 2 an Information ein, ohne dem Bild wesentlich zu schaden - das menschliche Sehsystem ist in der Farbauflösung viel schlechter als in der Schwarz/Weiß-Auflösung. Im Sehzentrum des Auges sind einfach wesentlich mehr (und kleinere) schwarz/weiß-empfindliche Stäbchen als farbempfindliche Zapfen.

Für die digitale Bildverarbeitung eignen sich zwei Farbsysteme besonders gut: Es sind dies das HSI- und das HLS-Farbsystem. Beide sind im Prinzip recht ähnlich aufgebaut: HSI steht für Hue, Saturation und Intensity oder auf deutsch: Farbwert im Farbenkreis, Sättigung der Farbe und Intensität; HLS steht für Hue, Lightness und Saturation oder übersetzt: Farbwert im Farbenkreis, Helligkeit und Sättigung. Der Aufbau ist in den Skizzen dargestellt.

HSI - Farbraum ......................................................................................................................HLS - Farbraum

Dabei entspricht die Intensität des HSI-Farbsystemes nicht genau der Helligkeit des HLS-Systemes. Das von der Firma Tektronix definierte Farbsystem ist dem häufiger benutzten HSI-System ähnlich, gibt jedoch den physikalischen Zusammenhang zwischen hellstem Weiß und maximal gesättigter Farbe im Gegensatz zum HSI-System besser wieder.

Als kleines Beispiel für die Vorteile dieser Systeme soll etwa ein Farbbild kontrastverstärkt werden: Wie schon oben angedeutet, müßte man im RGB-Farbraum alle drei Farbanteile mit der Kontrastverstärkungsroutine behandeln. Im HLS-Farbraum dagegen genügt es, den Lightness (oder Helligkeits-) Anteil zu verstärken und das Bild in den RGB-Raum zurückzuwandeln. Ein zweites, vielleicht sehr viel eindrucksvolleres Beispiel ist die Mustererkennung von 3-dimensionalen Gegenständen: Im Grauwertbild oder auch im RGB-Farbbild sind durch die störenden zusätzlichen Bildkanten durch Schlagschatten die einzelnen Gegenstände nur schwer voneinander oder von der Unterlage zu trennen. Nach Umwandlung in den HSI- oder HLS-Farbraum dagegen stören die Schatten nicht mehr: Bei Betrachtung des Hue- (oder Farb-) Anteils ist die störende Schatten-Information, die sich nicht in einer Farbänderung, sondern nur in der Helligkeitsänderung oder in der Sättigung zeigt, nicht mehr vorhanden. Damit würde eine Unterscheidung der Gegenstände sehr einfach.

Zusätzlich wurde die Umwandlung in das YIQ (oder YUV) Farbsystem implementiert. Y ist hierbei die Luminanz wie beim S-VHS Recorder-Signal, I und Q (oder U und V) sind die Farbanteile. I (U) entspricht hierbei dem Anteil: Grün - Magenta, Q (V) dem Anteil: Blau - Gelb.

Im Show-Image-Menü wird immer durch Attribute hinter der Bildspeichernummer angezeigt, welcher Farbanteil welchem Bildspeicher zugeordnet ist. Alle Farbauszüge können durch spezielle Hot-Key´s einfach angezeigt werden. Dies sind "R","G","B" für den normalen RGB-Farbraum, "H","L","S" für den HLS-Farbraum, "H", "S", "I" (oder "V" für "Value") für den HSI-Farbraum oder "V" (Achtung: "Y" ist ROI-Wahl), "I", "Q" für den YIQ (oder YUV)-Farbraum. Wenn die Farbauszüge mit diesen Hot-Key´s aktiviert und angezeigt werden, werden automatisch sinnvolle Look-Up-Table (Farbtabellen)-Belegungen gewählt. Wenn diese LUT-Wahl nicht erwünscht ist, so muß man die Bildspeicher mit den Hot-Key-Tasten "1" bis "9" anwählen.

Nach dem Aufstarten des picCOLOR Programmes wird automatisch das HSI-System als das bevorzugte Farbsystem angenommen. Über die gezielte Umwandlung in einen anderen Farbraum oder über die "Select Color Space"-Funktion können Sie auf andere Systeme umschalten.

Der aktuelle Farbraum ist dem System normalerweise immer bekannt, damit keine unsinnigen oder nicht implementierten Funktionen aufgerufen werden können. Bei Bedarf, wenn z. B. Farbanteile eines Bildes einzeln hereingeladen werden, muß der dann geltende Farbraum dem System im "Select Color Space"-Menü mitgeteilt werden.

*7.5.2. Display RGB (Dither True Color Image)

Bei Aktivierung des Echtfarb-Display-Speichers (das ist der Farbkanal "0" des mehrkanaligen Echtfarbbildes) mit der HotKey-Taste "D" oder über die entsprechende Menüfunktion (Display RGB) wird das aktuelle in den RGB-Farbkanälen liegende Farbbild in ein darstellbares z. Zt. im Ditherverfahren umgerechnetes Bild umgewandelt. Diese Art der Farbdarstellung sollte in der Regel für die Beurteilung von Echtfarbbildern völlig ausreichen. Dies geschieht über eine Dithermatrix der Größe 8*8 Pixel und eine spezielle Belegung der Farbtabelle (Color-Look-Up-Table). Je nach Auflösung des verwendeten Bildschirmes ist hiermit eine gute Farbdarstellung möglich: Flächen mit einer Ausdehnung von mehr als 8*8 Bildpunkten erhalten - durch das menschliche Farbsehsystem gemittelt - den richtigen Farbwert aus 16.8 Millionen Farben. Kleinere Flächen oder farbige Einzelpunkte erhalten den bestmöglichen Annäherungswert. Dies hat den Vorteil, das das Bild praktisch nicht an Schärfe verliert. Dabei wird der Vorteil ausgenutzt, daß der exakte Farbwert von sehr kleinen Flächen oder Einzelpunkten sowieso nicht von allzu großer Bedeutung ist. Zum Abspeichern eines solchen geditherten Bildes im TIFF-Format muß das Bild in einen normalen 2D-Bildspeicher übertragen werden und es muß die Look-Up-Table (Palette) mit dem Bild abgespeichert werden.

*7.5.3. Display 332 (True Color Image)

Über eine einfache 332-Tabelle (3 Bit Rot, 3 Bit Grün, und 2 Bit Blau) kann eine Umrechnung eines Echtfarbbildes mit 24 Bit pro Pixel Farbtiefe auf einem 8 Bit Bildspeicher erfolgen. Entsprechend der Empfindlichkeit des menschlichen Auges werden Rot- und Grünanteil von je 8 Bit zu je 3 Bit umgesetzt, der Blauanteil von 8 Bit auf 2 Bit umgerechnet. Übrig bleiben also 8 Rotabstufungen, 8 Grünabstufungen, 4 Blauabstufungen sowie alle möglichen Mischwerte. Es ergibt sich eine recht grobe Darstellung des Echtfarbbildes.

*7.5.4. Convert to Color Space

Hiermit kann ein RGB-Bild in das selektierte Farb-System umgewandelt werden. Auch die Rückwandlung nach erfolgter Bearbeitung des Bildes ist möglich. Da die Ausführung dieser Funktion auf den jeweiligen Farbbildspeichern stattfindet, gibt es in der Regel keinerlei Reaktion auf dem Bildschirm. Nach der Umwandlung können Sie sich die Farbanteile im jeweiligen Farbraum und das geditherte Echtfarbbild mit den jeweiligen Hot-Key’s "R", "G", "B" oder "H", "S", "I","V" oder "H", "L", "S" oder "V", "I", "Q" sowie "D" für "Dithern" ansehen. Da bei der Vielzahl der implementierten Farbräume nicht mehr genügend Hot-Keys zur Verfügung stehen, müssen die gewünschten Farbauszüge eventuell per Menü ausgewählt werden.

Vollständig implementierte Farbräume sind bisher der RGB-Raum, der HLS- sowie der HSI-Raum, und schließlich der YIQ (oder YUV)-Raum. Teilweise implementiert sind nun auch der UVW-, U*V*W*-, XYZ-, LAB- und der CMY-Raum. Bei einigen dieser Funktionen kann jedoch bisher nur zurückgewandelt werden, d. h. vom jeweiligen Farbraum zurück in den RGB-Raum.

Achtung: Wenn dem picCOLOR Programm nur sehr wenig Arbeitsspeicher zur Verfügung steht, weil Sie entweder zu wenig DRAM-Speicher installiert haben oder weil die programmierte Bildschirm- und Bildspeicherauflösung zu groß ist, können die Farbbildspeicher doppelt genutzt werden. Das bedeutet, daß z. B. das Ergebnis einer Umwandlung von RGB nach HSI in die gleichen Bildspeicher geschrieben wird. Sie erkennen dies in der "Define True Color Buffer" Dialogbox, wo dann entweder der Schalter "Allocate RGB only" oder der Schalter "Allocate RGB and additional Color Space" gewählt ist. In diesem Fall kann das RGB-Echtfarbbild erst wieder angezeigt werden (mit "D"), wenn Sie es nach der Bearbeitung in den RGB-Farbraum zurückgewandelt haben. Wenn Sie gleichzeitig alle 6 Farbanteilspeicher benötigen, müssen Sie also eventuell vor der Definition des Farbbildspeichers die Auflösung und Bildspeichergröße reduzieren. Dann kann das System 7 getrennte Buffer für das "Dither"-Bild und die 2-mal 3 getrennten Farbanteilspeicher "R", "G", "B", "H", "S", "I" usw. anlegen.

*7.5.5. Set RGB-Noise

Bei der Umwandlung in den HSI oder HLS-Farbraum ist die Berechnung des Hue-Anteiles bei geringen Sättigungen oder Helligkeiten sehr anfällig für kleine Bildstörungen oder Bildrauschen. So hat ein Bildpunkt mit den RGB-Anteilen [3,3,3] keine Farbe. Kommt durch Rauschen jedoch eine kleine Änderung eines Farbanteiles zustande, z. B. [3,3,4], so wird der Bildpunkt eindeutig als dunkelblau erkannt, was in diesem Fall sicherlich nicht erwünscht ist. Hierzu wurde die "RGB-Noise"-Funktion installiert, mit der eine Rauschschwelle für die Umwandlung in andere Farbräume eingestellt werden kann. Pixel, bei denen die Differenz jeweils zweier Farbkanäle (Rot, Grün, Blau) kleiner als diese Schwelle ist, werden als farblos grau angenommen und bei Umrechnung in den HLS- oder HSI-Farbraum im Hue-Anteil zum Pixelwert "0" gesetzt.

*7.5.6. Display Image in Color Space

Im normalen RGB-Farbraum können Sie die einzelnen Farbanteile Rot, Grün und Blau getrennt darstellen. Dies kann über die Funktion "Show Color Channel" aus dem "TrueColor"-Menü oder mit den Hot-Key-Tasten "R", "G", "B" geschehen. Es werden dabei zusätzlich automatisch sinnvolle Farbtabellenbelegungen erzeugt. Bei Ansicht des Rotanteiles ist dies eine rote "Rampenfunktion", die dem Pixelwert 0 die Farbe Schwarz zuordnet und bei steigenden Pixelwerten zu immer helleren Rottönen gelangt, bis Sie beim Pixelwert 255 ein helles Rot erhalten. Bei Grün- und Blauanteil sind es dann eine grüne respektive blaue Rampenfunktion. Wenn diese Farbtabellenbelegungen nicht erwünscht sind, da z. B. das menschliche Auge eine nicht so hohe Auflösung und nicht so gute Empfindlichkeit im Blauanteil aufweist und damit der Blauanteil mit der blauen Rampenfunktion schwieriger zu beurteilen ist, kann mit der Hot-Key-Taste "P" ein normaler Grauverlauf wiederhergestellt werden.

Nach einer Umrechnung in einen anderen Farbraum - z. B. HSI oder HLS - können die Farbanteile in dem gewählten Farbraum angezeigt werden. Bei Darstellung des Hue-Anteiles wird eine Hue-Farbtabelle geladen: dies ist ein zyklischer Farbenkreis mit reinem Rot bei 0 Grad (entspricht dem Pixelwert 1), reinem Grün bei 120 Grad (Pixelwert 85) und reinem Blau bei 240 Grad (Pixelwert 170). In dieser Notation entspricht der Pixelwert 0 allen Grautönen des Originalbildes, d. h. allen Stellen, an denen die Farbanteile Rot, Grün und Blau gleich sind (oder unter die durch RGB-Noise gesetzte Schwelle fallen). Die Saturation-, Intensity- und Lightness-Anteile der HSI- und HLS-Farbmodelle werden mit einem Grauverlauf dargestellt. Die Farbanteile im HSI- oder HLS-Farbraum können auch mit Hot-Key’s angezeigt werden. Dies sind dann - je nach Farbmodell: "H", "S", "I" (oder "V" statt "I" für Value) für das HSI-Farbmodell oder "H", "L", "S" für das HLS-Farbmodell oder "V" (statt "Y" für die ROI-Auswahl), "I", "Q" für das YIQ (YUV) Modell. Wenn eine Taste benutzt wird, die im aktuellen Farbmodell nicht enthalten ist (z. B. "L" im HSI-Modell), so wird eine entsprechende Fehlermeldung ausgegeben.

*7.5.7. Rotate HUE

Mit der Funktion "Rotate-HUE" kann der HUE-Anteil im Farbkreis rotiert werden. Der Nullwert, der das Merkmal "keine Farbe" darstellt, bleibt dabei erhalten. Diese Funktion ist wichtig, wenn etwa der rote Bereich, d. h. Farben von Rotviolett bis Rotorange beurteilt oder verarbeitet werden sollen. Da der Nullpunkt des Farbkreises bei Rot liegt, würden sonst Pixelwerte von z. B. 230 (= Rotviolett) über 254, 255, 0 (= keine Farbe), 1 (= reines Rot), 2, usw. bis z. B. 30 (= Rotorange) berücksichtigt werden müssen. Wenn der HUE-Anteil vorher jedoch um z. B. 128 (das entspricht 180 Grad im Farbkreis von 0 bis 360 Grad) gedreht wurde, liegt der interessierende Bereich nun bei 230+128 = 358 gleich 103, da 255 abgezogen werden kann, und 30+128 = 158. Dies ist zwar nun der blau-grüne Bereich, aber dafür ist dieser Bereich nun lückenlos und ohne Nulldurchgang für die verschiedensten Anwendungen zu verwenden. Die Angabe des Winkels ist direkt in Grad, von 0 bis 360 Grad, vorzunehmen. Der Wert wird intern auf den Pixelwertumfang von 0 bis 255 umgerechnet. Einige Funktionen im picCOLOR-System, die standardmäßig mit solchen zyklisch aufgebauten Bildspeichern arbeiten, z. B. die Objektklassifikation, können ohne diese manuelle Drehung im Hue-Anteil auskommen und berücksichtigen selbständig den richtigen Nulldurchgang.

*7.5.8. Subtract Cyclic HUE
Wenn die Farbverläufe zweier HUE-Bildspeicher voneinander subtrahiert werden sollen, um die Farbunterschiede zu bestimmen, so kann diese zyklische Subtraktionsfunktion verwendet werden. Die Besonderheit dieser Funktion besteht darin, daß der Wert Null nicht berücksichtigt wird, da er ja im HUE-Verlauf keiner Farbe zugeordnet ist. Der Abstand von 255 nach 1 ist dann 1. Die Differenz der Farbwerte wird immer als Absolutwert ausgegeben. Wenn eines der beiden HUE-Bilder keine Farbe (0) aufweist, wird der Ergebnispixel zu 255 (Weiß) gesetzt. Alle anderen Pixel werden nach der folgenden Vorschrift berechnet:

Ergebnispixel = ABS((Aktueller HUE-Bildspeicher) - (Second HUE-Bildspeicher))
if (Ergebnispixel > 127) Ergebnispixel = 255 - Ergebnispixel

Man erhält also nur Werte von 0 bis 127 als Farbdifferenzwerte oder 255 als "nicht sinnvolle Subtraktion".

*7.5.9. Copy/Move RGB-ROI

Während die übliche "Copy/Move"-Funktion des "Arithmetic"-Menüs und der Toolbox nur auf einen einzigen Bildspeicher wirken, arbeitet die hier beschriebene Funktion auf den drei Echtfarb-Bildspeichern gleichzeitig. Hierbei werden also die drei 8 Bit-Farbspeicher als einziges 24 Bit-Echtfarbbild behandelt. Um die Kopieraktion interaktiv gestalten zu können, wird das Echtfarbbild auf einem speziellen Bildspeicher dargestellt. Danach kann man auf dem üblichen Wege den Inhalt der aktuellen ROI Kopieren. Hierbei gilt in der derzeitigen Version des Echtfarb-Modules die Einschränkung, daß nur innerhalb des einen einzigen definierten Echtfarbbildes kopiert werden kann. Der Move-Befehl kann durch nachfolgendes Löschen der ROI in allen RGB-Anteilen durchgeführt werden. Die Funktion ist auch im Copy-Menü in der Toolbox verfügbar.

Diese Funktion ist nur für Monochrome-Systeme sinnvoll; bei der 24 Bit True Color Version des picCOLOR Programmes hat natürlich die normale Copy/Move-Funktion die richtige Wirkung auf das gesamte 24 Bit-Bild.

*7.5.10. Clear RGB / HSI / HLS / YIQ

Löschen der Farbbildspeicher. Es werden jeweils die 3 zu einem Farbraum gehörenden Bildspeicher gelöscht. Diese Funktionen sind auch im "Clear"-Menü in der Toolbox verfügbar.

*7.5.11. Activate RGB Image

Nach Definition eines RGB-Speichers ist dieser noch nicht vollständig zur Benutzung freigegeben. Erst nach Hereinladen eines RGB-Bildes kann dieses auf dem Bildschirm angezeigt werden und der RGB-Speicher wird zur Bearbeitung freigegeben. Wenn jedoch einzelne Farbanteile eines RGB-Bildes getrennt geladen werden, so muß dies mit dem Schalter "Set RGB Active" dem System bekanntgegeben werden.

*7.5.12. Calibrate Color Temperature

Mit dieser Funktion ist eine Kalibrierung des Systemes auf die Farbtemperatur oder Farbfrequenz möglich. Hierdurch lassen sich quantitative Vermessungen von Echtfarbbildern durchführen. Diese Funktion ist noch nicht implementiert. Wahrscheinlich wird sie im True-Color-Zusatzmodul implementiert.

*7.5.13. RGB-Binärisierung

Die Binärisierung eines RGB-Farbbildes kann bei unterschiedlichen Schwellwerten in den RGB-Farbanteilen durchgeführt werden. Hierzu muß in einem "Lern"-Schritt dem System die richtige Wahl der drei Schwellwerte angegeben werden. Danach wird die Binärisierung ausgeführt. Die Funktion ist im "Binary"-Menü aufgeführt und dort genauer beschrieben.

*7.5.14. Bayer Filter

Moderne 1-Chip-Farbdigitalkameras arbeiten in der Regel mit einem "Bayer"-Filter, um die einzelnen Grundfarben Rot, Grün und Blau zu separieren. Hierzu sind vor den einzelnen Pixelelementen auf dem CCD- oder CMOS-Chip Farbfilter angebracht. Beim "Bayer"-Pattern sind sie typischerweise z. B. folgendermaßen angeordnet:

GRGRGRGR....
BGBGBGBG...
GRGRGRGR...
...
Dieses derart kodierte Bild wird wie ein Grauwertbild zum Rechner übertragen. Hier muß nun mit einer geeigneten Software das RGB-Farbbild rekonstruiert werden. Hierzu werden im einfachsten Fall alle benötigten und fehlenden Pixelwerte durch bilineare Interpolation mit den jeweiligen Nachbarpixeln gewonnen. Es kann jedoch auch eine sogenannte "Smooth Hue Transition" eingestellt werden. Hierbei wird beachtet, daß an Farbgrenzen eine vernünftige Farbübergangscharakteristik bestimmt wird und keine störenden Farbsäume erzeugt werden. In der vom picCOLOR-Programm zur Verfügung gestellten Funktion kann eingestellt werden, ob ein Farbbild berechnet werden soll (es wird dann in den aktiven RGB-Farbspeicher geschrieben) oder ob ein reines Grauwertbild bestimmt werden soll. Die Koeffizienten für die jeweiligen Pixel können einzeln gesetzt werden (Offset/Gain). Zur Graubilderzeugung mit Bayer-Pattern-Kameras lesen Sie bitte auch den Testbericht für monochrome oder Infrarot-Beleuchtung auf den FIBUS-Image-Processing Web-Seiten.

*7.5.15. Convert Palette

Grauwertbilder können mit einer Farbpalette versehen sein und dann als Farbbilder gelten, bei denen jeder Grauwert einen Eintrag in einer RGB-Farbpalette darstellt. Es ist möglich, ein solches Palettenbild in ein echtes RGB-Farbbild umzuwandeln. Hierzu muß ein RGB-Farbspeicher angegeben werden, in den das Ergebnisbild gespeichert wird.

*7.5.16. Weitere Funktionen des "True Color"-Zusatzmodules

Neben diesen bereits implementierten Funktionen ist es geplant, im "True Color"-Zusatzmodul folgende weiterführende Funktionen zur Bearbeitung von Farbbildern zur Verfügung zu stellen:

Bearbeitung in weiteren Farbsystemen.

  • CMYK, d. h. Cyan, Magenta, Yellow und Schwarz als Farbsystem für die Druckvorbereitung und

  • CIE XYZ 1931 Color Model,

  • CIE LUV 1976 Color Model,

Das Modul stellt weiterhin alle wichtigen Funktionen aus den Bereichen "Arithmetik", "Filterung", "Morphologie", "Geometrie" und "Binärisierung" zur Verfügung, d. h. praktisch alle Funktionen des picCOLOR "Processing"-Menüs. Diese Funktionen werden im jeweils idealen Farbsystem ausgeführt. Zur Vermessung der Farbwerte eines Echtfarbbildes ist auch die Möglichkeit gegeben, eine Farbkalibrierung oder Farbtemperaturkalibrierung vorzunehmen. Die zusätzliche Information, die in Echtfarbbildern vorhanden ist, läßt sich damit in Zusammenhang mit den im picCOLOR Grundprogramm enthaltenen Funktionen zur weiteren Bildbearbeitung für die verschiedensten Auswertungen und Bearbeitungen ausnutzen:

  • Erzeugung zusätzlicher Merkmale für die Objektklassifikation mit der Information über Farbwert und Farbsättigung;

  • Mustererkennung von 2-dimensionalen Abbildungen 3-dimensionaler Gegenstände allein anhand ihrer Farbgebung ohne die störende zusätzlich überlagerte Information durch Schlagschatten;

  • Farbveränderungen im Echtfarbbild ohne Änderung von Sättigung und Helligkeit durch gezielte Bearbeitung der Hue-Daten.


7.6. Frequency

Fourier Transform
Power Spectrum
Freq. Domain Inspection
-------------------------
Spectra ->
Filters ->
Arithmetic ->
-------------------------
Freq.Histogram
Shift DC (FFT Buffer)
Shift DC (Image Buffer)
Hamming Window
Find Maximum
-------------------------
Free FFT Buf.

Viele Filteroperationen von Bildern im Ortsbereich können z. B. durch die Wahl größerer berücksichtigter Nachbarschaften (Masken) bei Konvolutionen extrem komplex werden und unerträglich lange Rechenzeiten erfordern. Wenn zwei komplette Bilder nach einer allgemeinen Faltungsvorschrift gefaltet werden sollen, kann dies auf normalem Wege eine Rechenzeit von Monaten erfordern...

Um solche Operationen trotzdem in vernünftigem Zeitaufwand durchführen zu können, kann die Bearbeitung im Ortsfrequenzraum erfolgen. Statt der Konvolution kann im Ortsfrequenzraum das transformierte Bild einfach mit einer Übertragungsfunktion multipliziert werden. Nach der Rückwandlung in den Ortsbereich erhalten wir dann das Ergebnis der Filterung. Diese Multiplikation eines transformierten Bildes ist natürlich recht schnell auszuführen. Solche Filterungen stehen z. B. als Hoch- Tief- und Bandpaßfunktion zur Verfügung.

Hierbei wird ausgenutzt, daß nach dem Faltungssatz einer Faltung zweier Funktionen im Ortsbereich die Multiplikation im Frequenzbereich entspricht:

FT[s(x,y)] FT[h(x,y)] = FT [s(x,y) * h(x,y)]

mit den 2-dimensionalen Funktionen s(x,y) und h(x,y),

dem Symbol ‘*’ für die Faltung und

dem Symbol ‘FT’ für die Fouriertransformation.

Übertragen auf Bilder gilt damit: Wenn die Filterfunktion gegeben ist (sie wird i. a. Impulsantwortfunktion genannt), so entspricht der Faltung dieser Impulsantwortfunktion mit dem Bild im Ortsbereich die Multiplikation der fouriertransformierten dieser Funktion (sie wird Übertragungsfunktion genannt) mit dem ebenfalls transformierten Bild. Bei vielen Problemen der digitalen Filterung ist sogar nur die Übertragungsfunktion direkt gegeben, so daß die Transformation der Impulsantwortfunktion entfällt. Dies ist z. B. bei den einfachen Hoch- und Tiefpaßfiltern der Fall. Eine aus der Literatur (Haberäcker) entnommene Prinzipskizze kann diese Verhältnisse weiter verdeutlichen:

Ortsbereich
_____________________

s(x,y) -------------

Originalbild
|
|
|
s * h
Faltung mit der
Impulsantwort
|
|
|

s’(x,y) <-----------

Ergebnis der
Filterung

Ortsfrequenzbereich
_____________________

------------> f(u,v)

Fouriertransformierte
|
|
|
s g
Multiplikation mit der
Übertragungsfunktion
|
|
|

-------------- f’(u,v)

gefilterte Fourier-
transformierte

Eine sehr wichtige Anwendung ist in diesem Zusammenhang auch die "Inverse Filterung": hier wird angenommen, daß das Bild durch eine Störfunktion verschlechtert wird - d. h. mit der Störfunktion gefaltet ist, deren Impulsantwort- oder Übertragungsfunktion bekannt ist. Nach der Notation der obigen Skizze wäre also das gestörte Bild s’(x,y) sowie die Störfunktion als Impulsantwortfunktion h(x,y) oder als Übertragungsfunktion g(u,v) gegeben. Wir können nun - zumindest prinzipiell - das ungestörte gefilterte Bild s(x,y) erhalten, indem wir das gestörte Bild transformieren, durch die Übertragungsfunktion g(u,v) dividieren und in den Ortsbereich zurücktransformieren. Wegen der Division, d. h. der Multiplikation mit der Inversen der Übertragungsfunktion, heißt diese Filterung die Inverse Filterung. Leider kommt es in der praktischen Anwendung zu Problemen an den Bereichen, an denen die Übertragungsfunktion den Wert Null annimmt. Hier gibt es in der Literatur eine Reihe von mehr oder weniger komplizierten Verfahren, trotzdem zu einer Lösung zu kommen.

Zur Transformation in den Frequenzbereich wird üblicherweise die Fouriertransformation oder in speziellen Fällen auch die Hartleytransformation benutzt. Da die diskreten Fourier- und Hartleytransformationen prinzipiell ebenfalls sehr aufwendige Funktionen sind, muß - und kann - hier ein Trick angewandt werden: es gibt sehr schnelle Versionen der Fourier- und Hartleytransformationen, die bei geringen Beschränkungen (z. B. nur für Bildausschnitte, die eine Kantenlänge vom Faktor 2 besitzen, d. h. etwa 128, 256 oder 512 Pixel) in absehbarer Rechenzeit zum Ergebnis führen. Einer dieser Algorithmen, die schnelle Fouriertransformation nach Cooley und Tuckey, ist im picCOLOR Programm implementiert und kann nach Wahl eines quadratischen Ausschnitts ausgeführt werden. Die Hartleytransformation kann auf Wunsch implementiert werden. Sie hat unter anderem den Vorteil einer Speicherreduzierung im Frequenzbereich um den Faktor 2. Die Ergebnisse der Hartley-Transformation lassen sich leicht in die Fourierkoeffizienten umwandeln.

Neuerdings wurden verschiedene Verfahren zur Transformation von Bildern beliebiger Größe implementiert. Dies geschieht mit sogenannten "Mixed Radix" Verfahren. Hierzu werden verschiedene Transformationen mit fest definierten Längen kombiniert. Die Ausführung ist nur unwesentlich langsamer als die perfekt optimierte 2**n x 2**m-Transformation. Die implementierten Verfahren sind z. B. das von Nielsen oder das von Soley (nach Singleton). Wenn eines dieser Verfahren genutzt werden soll, fragen Sie bitte nach dem möglicherweise erforderlichen Erwerb einer Lizenz.

7.6.1. Set FFT-ROI - Free FFT Buffer

Die Region of Interest (ROI) für eine FFT können Sie im Bild-Modus definieren. Dazu editieren Sie einfach eine der zulässigen ROI’s (X, Y, Z). Die FFT-Routine sucht in dieser ROI das größtmögliche Rechteck mit den Seitenlängen (2**n) * (2**m). Sie setzt dieses Rechteck in die linke obere Ecke der ROI. Über die Möglichkeit - wie schon in der Beschreibung des Bild-Modus’ dargestellt, mit Hilfe der "Shift"-Taste und der "Control/Strg"-Taste quadratische ROI’s mit der Kantenlänge 2**n zu erzeugen, können Sie das üblicherweise gewünschte Quadrat für die FFT natürlich auch direkt exakt festlegen.

Genauso, wie Sie drei verschiedene ROI’s definieren und editieren können, ist es auch möglich, drei getrennte Fouriertransformationen in getrennten ROI’s durchzuführen. Wenn die X-ROI aktiv ist, wird ein X-FFT-Speicher angelegt usw. Da hierfür vom System völlig getrennte Arbeitsspeicher zur Verfügung gestellt werden, können diese ROI’s auch eine unterschiedliche Größe besitzen. Bei einer Neudefinition einer dieser ROI’s wird ein neuer Speicher angelegt, falls das zu transformierende Bild in den vorhandenen Speicher nicht hineinpaßt. Sie brauchen sich um diese Speicherbelegung normalerweise nicht zu kümmern. Nur in dem Fall, daß Sie den Speicherplatz für andere Zwecke benötigen, da z. B. der freie Arbeitsspeicher zu klein ist, müssen Sie den von der Fouriertransformation angeforderten Speicherplatz wieder freigeben. Mit der Funktion "Free FFT Buffer" erhalten Sie die Möglichkeit, sehr gezielt die FFT-Arbeitsspeicher einzeln wieder freizugeben. Dabei wird der FFT-Speicher freigegeben, der der aktiven ROI entspricht.

7.6.2. Forward FFT

Mit der "Forward FFT" transformieren Sie den Inhalt eines rechteckigen Bildausschnittes der Größe (2**n) * (2**m) - oder neuerdings mit "mixed radix" Funktionen auch beliebiger Größe - vom Ortsbereich in den Frequenzbereich (oder besser Ortsfrequenzbereich). Dabei wird die schnelle FFT (Fast Fourier Transform) angewandt. Durch den schnellen Algorithmus (siehe Literaturverzeichnis: Cooley, Tukey: Fast Fourier Transform, und Müller, R.: Die Fouriertransformation in der Bildverarbeitung) müssen "nur" etwa log(N)*N*N (bei einer Kantenlänge N=(2**n)) komplexe Berechnungen ausgeführt werden. Das ist zwar sehr viel weniger als beim nicht optimierten Algorithmus mit N*N*N Berechnungen, benötigt jedoch trotzdem recht viel Rechenzeit. Als Ergebnis der Transformation erhalten Sie dann den Realteil und den Imaginärteil der komplexen Fourierkoeffizienten. Diese liegen im FFT-Speicher und können auf verschiedene Art auf dem Bildschirm dargestellt und weiter bearbeitet werden und schließlich wieder zurücktransformiert werden.

Wenn Sie ein Bild transformiert haben, wird der aktuelle FFT-Speicher intern als "valid" markiert. Erst dann können Funktionen in diesem Speicher ausgeführt werden. Nach einer Fouriertransformation kann die benutzte ROI auf dem Bildschirm übrigens anderweitig verwendet und neu editiert werden: die für die FFT notwendigen Koordinaten werden intern in anderen Variablen gespeichert. Die Darstellung von Ergebnissen und die Rücktransformation geschieht auch nach Änderung der ROI im alten Bildausschnitt.

  • Shift DC: Mit dem Schalter "Shift-DC" kann festgelegt werden, ob der Nullpunkt, d. h. der Gleichanteil des Fourierspektrums, in der linken oberen Ecke der FFT-ROI zu liegen kommt oder ob er - zur leichteren Beurteilung des Spektrums - in die Mitte der ROI verschoben wird. Dies ist die Default-Einstellung. Wenn die Verschiebung abgeschaltet ist, liegen die Koeffizienten der maximalen Frequenzen in der Mitte der ROI (bei x=N/2, Y=N/2 mit der Kantenlänge N der FFT-ROI).

  • Use Hamming Window: vor der Ausführung der FFT wird ein Hamming Window auf die Ausgangsdaten angewand. Hierdurch werden Störungen durch nichtübereinstimmende Werte an den Rändern des Bildes stark vermindert (immerhin ist die Fouriertransformation ja unbegrenzt: theoretisch wird das Bild in alle Richtungen immer wiederholt). Bei Rücktransformation muß dieser Schalter dann ebenfalls eingestellt sein.

  • FromTo: Image Buffer -> FFT-Buffer / FFT-Buffer -> Image

  • FromTo: FFT-Buffer -> FFT-Buffer: Üblicherweise werden die zu transformierenden Daten direkt vom Bild genommen und die Fourierkoeffizienten im FFT-Speicher abgelegt. Bei der Rücktransformation werden umgekehrt die Ausgangsdaten aus dem FFT-Speicher genommen, und das Endergebnis, das gefilterte Bild, wird in den Bildspeicher zurückgeschrieben. In manchen Fällen kann dieses Verhalten unerwünscht sein, wenn z. B. mit den rücktransformierten Daten weitere Berechnungen im Frequenzbereich vorgenommen werden sollen, z. B. nach einer Kreuzkorrelation. Hierzu kann das Verhalten mit den "FromTo"-Schaltern eingestellt werden. Mit dem ersten Schalter wird festgelegt, daß bei einer FFT die Ausgangsdaten aus dem Bild geholt werden und bei einer Inversen FFT die Ergebnisdaten wieder ins Bild zurückgeschrieben werden. Mit dem zweiten Schalter wird festgelegt, daß alle Daten immer aus dem FFT-Speicher geholt und auch wieder dahin zurückgeschrieben werden. In diesem Fall kann man übrigens trotzdem das zurückgewandelte Bild ansehen: man braucht nur den Realteil anzeigen zu lassen. Er entspricht dem Rücktransformierten Bild bis auf einen einstellbaren linearen Faktor.

  • Show Power Spectrum: nach der Transformation kann hiermit direkt das Leistungsspektrum berechnet und auf dem Bildschirm angezeigt werden.

  • Show Warning Messages: wenn versucht wird, einen sinnvollen FFT-Buffer-Inhalt zu überschreiben oder wenn versucht wird, einen FFT-Buffer in die Orts-Domain zurückzuwandeln, obwohl sein Inhalt nicht definiert ist (z. B. bereits zurückgewandelt) so kann eine Fehlermeldung ausgegeben werden, sodaß der Benutzer selbst entscheiden kann, ob er die Funktion ausführen will. Wenn die Warnmeldungen abgeschaltet sind, wird die betätigte Funktion in jedem Fall ausgeführt, auch wenn sie nicht sinnvoll erscheint.

7.6.3. Hamming Window

Bei der diskreten Fouriertransformation wird ein Bild in x- und y-Richtung zyklich angesehen, d. h. es setzt sich an allen Kanten fort. Wenn nun üblicherweise die Grauwerte auf der einen Seite nicht denen auf der anderen Seite entsprechen, so entsteht hier ein Sprung, der zu hohen Werten der höheren Harmonischen im Spektrum führt. Dies erschwert einerseits die Beurteilung des Spektrums und stört andererseits die Anwendung von Filtern im Frequenzbereich. Dieses Problem kann stark vermindert werden, wenn vor der Transformation ein spezieller Filter auf das Bild angewandt wird, der die Ränder aneinander angleicht. Bewährt hat sich hier die Hamming-Fensterfunktion, die nach der Formel: 0.54 - 0.46*cos(2*pi*n/(M-1)) mit der Fenstergröße M alle Bildpunkte mit dem Index 0<=n<M multipliziert. Mit der Funktion "Hamming Window" kann diese Funktion vor der Fouriertransformation auf das Bild angewandt werden, allerdings mit dem Nachteil größerer Rundungsfehler in den Bildrandbereichen. Diese Funktion ist daher auch nicht umkehrbar. Wenn dies notwendig ist - z. B. für eine Filterung, bei der später wieder in den Ortsbereich zurücktransformiert werden soll, so kann das Hamming Window automatisch vor der Transformation und nach der Rücktransformation ausgeführt werden, indem der Schalter "Use Hamming Window" eingeschaltet wird. Es wird dann mit Floating Point Zahlen gearbeitet, so daß die Filterung umkehrbar ist.

7.6.4. Re/Im -> Power/Phase

Die übliche Darstellung im FFT-Speicher ist getrennt in Realteil und Imaginärteil der komplexen Fourierkoeffizienten. Im "Spectrum"-Menü kann man eine Umrechnung auf das Power-Spektrum oder das Phasen-Spektrum berechnen und auf dem Bildschirm anzeigen. Mit der Funktion "Re/Im->Power/Phase" kann diese Umrechnung im FFT-Speicher vollzogen werden, so daß diese Werte auch für weitere Rechnungen zur Verfügung stehen. Es ist dabei zu beachten, daß die Namensgebung im Menü nach der Umrechnung nicht mehr aktuell sind: d. h. nach Umrechnung findet man die Amplituden (Power) im Realteil-Speicher, die Phasenwerte im Imaginärteil-Speicher. Nach der Umwandlung kann man z. B. zur phasenlinearen Filterung Umrechnungen der Amplituden vornehmen und dann mit der Funktion "Power/Phase->Re/Im" wieder in Realteil und Imaginärteil zurückrechnen, von wo aus dann in den Ortsbereich zurücktransformiert werden kann. Die Werte des Phasenanteils liegen zwischen -pi und +pi.

7.6.5. Inverse FFT

Nach erfolgter Bearbeitung kann das fouriertransformierte Bild mit der "Inversen FFT" wieder zurückgewandelt werden. Das Ergebnis der Rücktransformation wird direkt auf den Bildschirm (und natürlich auch in den aktuellen Bildspeicher) geschrieben, wenn der Schalter "FromTo: FFT-Buffer->Image" eingeschaltet ist. Der FFT-Speicher wird nach dieser Rückwandlung nicht gelöscht und an das System zurückgegeben, sondern steht für weitere Transformationen zur Verfügung. Er wird lediglich als "not valid" markiert, so daß keinerlei Funktionen als eine neue FFT-Transformation darauf angewandt werden können.

7.6.6. Shift-Space

Diese Funktion bewirkt ein örtliches Verschieben des DC-Anteils in die Mitte der FFT-ROI oder zurück in die linke obere Ecke. Diese Funktion arbeitet im FFT-Speicher und bewirkt nach Ausführung einer FFT das gleiche wie der Schalter "Shift DC" vor Ausführung der FFT. Diese Funktion ist wichtig zur Verschiebung der Maxima im FFT-Spektrum z. B. nach Ausführung einer Kreuzkorrelation.

Diese Shift-Space-Funktion ist auch in einer Version verfügbar, die im Ortsbereich auf dem Bildspeicher arbeitet. Hiermit kann man die Darstellung von FFT-Spektren oder auch von mit der FFT umgerechneten oder gefilterten Bildern an die gewünschte Form anpassen. Achtung: die aktuelle ROI muß hierbei exakt der aktuellen FFT-ROI entsprechen, d. h. quadratisch der Größe 2**n sein.

7.6.7. Clear-FFT-Buffer

Mit der Funktion "Clear-FFT-Buffer" werden Realteil und Imaginärteil des aktivierten und definierten FFT-Speichers gelöscht. Dies kann sinnvoll sein, wenn durch Setzen bestimmter Frequenz-Koeffizienten mit der Spot-Filter-Funktion bestimmte Ergebnisbilder oder Testbilder erzeugt werden sollen. Beim Löschen wird automatisch ein Flag gesetzt, das einen sinnvollen FFT-Speicherinhalt für die Ausführung anderer Funktionen besagt.

7.6.8. Inspect FFT

Mit einem Fadenkreuz können einzelne Koeffizienten im FFT-Speicher untersucht werden. Angezeigt wird bei Druck auf die linke Maustaste der Realteil und der Imaginärteil des angewählten Koeffizienten sowie des punktsymmetrisch zum DC-Anteil liegend gespiegelten Koeffizienten. Mit "Shift" und linker Maustaste wird der Mauszeiger genau auf den DC-Anteil in der Mitte (oder in der oberen linken Ecke, wenn der Shift-DC-Schalter ausgeschaltet ist) des Speichers gesetzt. Hier muß natürlich sehr darauf geachtet werden, ob der tatsächliche Inhalt des FFT-Speichers auch der Einstellung des Shift-DC-Schalters entspricht. Beenden der Vermessung mit der rechten Maustaste.

7.6.9. Spectra

Power
Phase
Real
Imag
- Lin.Factor
- NULL = 128
- NULL = 0
- NULL = aut
Inspection
---Convert---
Re/Im->Pw/Phs
Pw/Phs->Re/Im

Die Ergebnisse einer Fouriertransformation können auf verschiedene Art auf dem Bildschirm dargestellt werden. Die üblichste Art der Darstellung ist sicherlich das Amplitudenspektum. Hierbei wird der Betrag der komplexen Fourierkoeffizienten dargestellt. Es kann jedoch ebenso sinnvoll sein, die Phasenlage der Koeffizienten und auch Real- oder Imaginärteil darzustellen. So befinden sich z. B. nach einer Kreuzkorrelation die Ergebnisdaten im Realteil.

7.6.9.1. Power Spectrum

Für das "Power"- oder Amplituden-Spektum wird nach der Formel

(|f(u,v)| = sqrt(real(u,v)*real(u,v) + imag(u,v)*imag(u,v))

der Betrag der komplexen Fourierkoeffizienten berechnet und als Grauwert auf dem Bildschirm dargestellt. Um auch kleinere Anteile darstellen zu können, wird bei der Umrechnung in Grauwerte eine logarithmische Skalierung nach

Grauwert(u,v) = c * log(1+|f(u,v)|)

mit der Konstanten c durchgeführt.

7.6.9.2. Phase Spectrum

Neben der Darstellung des Betrages kann auch die Auftragung der Phasenlage, d. h. des Winkels der Fourierkoeffizienten in der komplexen Zahlenebene sinnvoll sein. Bei dieser Funktion wird der Bereich [0..360] Grad auf den Grauwertebereich [0..255] umgerechnet und auf dem Bildschirm dargestellt. Da der Übergang von 360 Grad nach 0 Grad in der komplexen Zahlenebene kein besonders hervorzuhebendes Merkmal ist, im Grauverlauf jedoch stark auffällt, ist es hier oft sinnvoll, zur Darstellung einen Farbenkreisartigen Farbverlauf in die Farbtabelle (Color-Look-up-Table) einzuprogrammieren, der keinen plötzlichen Sprung beim Übergang von 255 auf 0 aufweist. Hierfür ist der HUE-Verlauf gut geeignet.

7.6.9.3. Real Spectrum

Zur Inspektion der komplexen FFT-Speicher kann es auch sinnvoll sein, sich den Realteil oder den Imaginärteil einzeln anzusehen. Mit der Funktion "Real Spectrum" kann der Realteil auf dem Bildschirm dargestellt werden. Da die Fourierkoeffizienten Werte kleiner und größer als Null annehmen können, wird hier der Nullwert üblicherweise auf den mittleren Grauwert von 128 gelegt: Werte kleiner Null finden Sie dann bei kleineren Grauwerten als 128, Werte größer als Null bei Grauwerten größer 128. Da die Floating-Point Zahlen der Koeffizienten natürlich nicht dem Grauwertebereich des Bildschirmspeichers entsprechen, wird hier linear auf den kompletten Grauwertebereich des Systemes [0..255] gestreckt oder gestaucht. Falls dies nicht erwünscht ist, kann auch ein linearer Vergrößerungsfaktor angegeben werden, mit dem die Koeffizienten multipliziert werden. Hierbei werden dann Werte < 0 oder > 255 abgeschnitten. Bei der manuellen Wahl des Verstärkungsfaktors kann auch der Wert des Nullpunktes gewählt werden: auf 0, auf 128 und automatisch, so daß alle Koeffizienten bestmöglich dargestellt werden.

7.6.9.4. Imaginary Spectrum

Ebenso wie die Darstellung des Realteiles der Fourierkoeffizienten kann auch der Imaginärteil auf dem Bildschirm dargestellt werden. Die Darstellung wird dabei wie im "Real Spectrum" beschrieben vorgenommen.

7.6.9.5. Real/Imag -> Power/Phase

Es ist möglich, die interne Darstellung des FFT-Speichers von der üblichen Realteil/Imaginärteil-Darstellung in die Power/Phase-Darstellung und umgekehrt umzurechnen. Hierbei ist natürlich Vorsicht geboten: die Anwendung weiterer Funktionen auf den FFT-Speicher kann dann eventuell völlig unvorhergesehene Ergebnisse produzieren.

7.6.9.6. Transfer Image->FFT

Transfer des Bildes in den FFT-Speicher zur weiteren Verarbeitung. Hierbei wird eine Umwandlung des üblicherweise 8-Bit tiefen Bildinhaltes in Floating-Point-Werte vorgenommen.

7.6.10. Frequency Filters

Pass Filter
GaussianSmooth
- Sigma
GaussBandPass
-CenterFreq.
-Bandwidth
Gabor:Evn.Odd
-Orientation
-CenterFreq.
-Bandwidth
PatternFilter
Spot Filter

Inverse /Wiener Filter

Neben den einfachen Filterfunktionen wie Tiefpaß, Hochpaß und Bandpaß mit rechteckiger Fensterfunktion finden Sie hier auch komplexere Filter, die auf bestimmten Frequenz- und Winkelbereichen arbeiten. Mit dem "Spot"-Filter können Sie wie mit einem Radiergummi im Spektrum einzelne Koeffizienten vermindern oder löschen.

7.6.10.1. Low / High / Band Pass / Band Cut Filter

Diese einfachen Filter arbeiten mit einer rechteckigen Fenstermaske, d. h. Frequenzen (Harmonische) werden im Bereich der Filtermaske vollständig weggefiltert, außerhalb dieses Bereiches überhaupt nicht. Vor Aufruf dieser Funktionen sollten Sie die Fourierkoeffizienten in irgendeiner Form, d. h. mit irgendeiner Funktion aus dem "Spectrum"-Menü auf dem Bildschirm darstellen, da die Auswahl der Grenze des Filters nicht nur numerisch, sondern auch graphisch an Hand eines solchen Spektrums durchgeführt werden kann. Bei Aufruf dieser Funktion wird ein Kreisring auf dem Bildschirm dargestellt, der als Mittelpunkt den Nullpunkt (DC-Anteil) des FFT-Speichers hat (Auf dem Schirm entspricht dies dem Mittelpunkt der quadratischen FFT-ROI). Hierzu muß der Schalter "Shift-DC" bei der FFT eingeschaltet sein. Dieser Kreisring hängt bei Betätigung der linken Maustaste derart am Mauszeiger, daß Sie seinen Durchmesser durch seitliches Verschieben der Maus vergrößern und verkleinern können. Zusätzlich wird die eingestellte Grenze als Zahl der Harmonischen in einer Info-Box dargestellt. Mit einem Druck auf die rechte Maustaste wird der Auswahlmodus beendet und die Funktion gestartet. Bei Eingabe einer x- oder y-Verschiebung wird der Filter um die eingestellten Werte verschoben ausgeführt. Hierbei ist die positive x- oder y-Koordinate nach rechts bzw. unten. Nach erneuter Darstellung der Fourierkoeffizienten mit einer Funktion aus dem "Spectrum"-Menü können Sie das Ergebnis der Filterung auf die Fourierkoeffizienten beurteilen. Mit der "ESC"-Taste können Sie die Funktion im Auswahlmodus ohne Änderung der Fourierkoeffizienten abbrechen.

Hinweis: Benutzen Sie die Lupenfunktion des Bild-Modus oder die mächtigere Vergrößerungsfunktion aus dem ImagePaint-Modul zur Inspektion der einzelnen Harmonischen. Da jeder Bildpunkt eine Harmonische darstellt, ist die Beurteilung im nicht vergrößerten Bild kaum exakt durchzuführen. Erst nach starker Vergrößerung können Sie erkennen, ob eine bestimmte Harmonische z. B. durch eine Filterung verändert wurde. Natürlich kann auch mit den ">" und "<" Zoom-Hot-Key´s eine Vergrößerung der Darstellung erzielt werden.

Nach Rücktransformation in den Ortsbereich können Sie das Ergebnis der Filterung auch im Ortsbereich, d. h. im gefilterten Bild sehen.

  • Low Pass Filter: Bei der Tiefpaß-Funktion werden alle Harmonischen von Null bis einschließlich der in der Info-Box eingestellten Harmonischen unverändert gelassen - alle höheren Harmonischen werden gelöscht, d. h. zu Null gesetzt.

  • High Pass Filter: Die Funktion des "High Pass"- oder Hochpaßfilters ist genau gegenteilig zum Tiefpaßfilter: hier bleiben nur hohe Frequenzen erhalten - alle niedrigeren Harmonischen bis zur eingestellten Schwelle (ausschließlich, d. h. die Harmonische der eingestellten Grenze wird nicht verändert) werden zu Null gesetzt. Der Wert des DC-Anteiles in der Mitte der FFT-ROI wird jedoch nicht verändert, falls die eingestellte x- oder y-Verschiebung auf Null gesetzt wird.

  • Band Pass Filter: Der "Band Pass"- oder Bandpaßfilter wirkt genau wie eine Kombination von Tiefpaß und Hochpaßfilter: Sie erhalten mit zwei Kreisringen die Möglichkeit, sowohl niedrige Harmonische, d. h. niedrige Frequenzen, als auch hohe Harmonische und damit hohe Frequenzen wegzufiltern. Übrig bleiben nur Harmonische in einem von Ihnen definierten Bandbereich. Die Auswahl der "inneren" und "äußeren" Grenze geschieht durch Anwahl des jeweiligen Kreisringes mit dem Mauszeiger: Bei Drücken der Maustaste wählt das Programm den Kreisring aus, der dem Mauszeiger am nächsten liegt. Wie bei den anderen Filtern starten Sie die Funktion mit der rechten Maustaste, die "ESC"-Taste bricht die Funktion ohne Änderung ab. Die Ausführungs- oder Filtergrenzen des Bandpasses sind die gleiche wie bei Hoch- und Tiefpass, d. h. vom Mittelpunkt aus gesehen wird bis zur unteren Grenzfrequenz (ausschließlich derselben) gefiltert und ab der oberen Grenzfrequenz (wiederum ausschließlich derselben). Genauso wie bei der Hochpaßfunktion bleibt der DC-Anteil erhalten, wenn keine x/y-Verschiebung eingestellt wurde.

  • Band Cut Filter: Der "Band Cut"- wirkt umgekehrt wie der Bandpaßfilter: Sie erhalten mit zwei Kreisringen die Möglichkeit, einen speziellen Frequenzbereich (Harmonischenbereich) wegzufiltern. Es wird von der inneren bis zur äußeren Grenze, jeweils ausschließlich derselben, gefiltert.

7.6.10.2. Gaussian-Smooth-Filter

Der Gaussian-Smooth-Filter ist ein Tiefpaßfilter mit Gauss-förmiger Filtercharakteristik. Vor der Ausführung muß der Radius mit der Variable sigma eingestellt werden. sigma ist dabei der Radius bei e-0.5.

7.6.10.3. Gauss-Pass-Filter

Der Gauss-Filter ist ein Bandpaßfilter mit Gauss-förmiger Filtercharakteristik. Vor der Ausführung muß die Mittenfrequenz (Mittenharmonische) und die Bandbreite eingestellt werden. Die Mittenfrequenz wird zu [0 < freq < 180] in degree/pixel eingestellt, d. h. die höchste Frequenz ist eine Schwingung über zwei Pixelbreiten bei freq=180. Die Bandbreite ist die Breite des Filters in Oktaven.

7.6.10.4. Gabor Filter

Mit dieser Funktion wird in der angegebenen FFT-ROI ein Gabor-Filter-Satz erstellt. Der Cosinus-Filter (even) wird im Realteil des Speichers abgelegt, der Sinus-Filter (odd) im Imaginärteil. Der Winkel (Orientierung) des Gabor-Filters wird zu [-180..180] eingegeben. Zusätzlich muß, wie beim Gauss-Filter, die Mittenfrequenz und die Bandbreite eingegeben werden. Dabei wird die Mittenfrequenz zu [0 < freq < 180] in degree/pixel eingegeben, die Bandbreite in Oktaven. Zur Anwendung des Gabor-Filters wird das zu filternde Bild in den Frequenzraum transformiert. Dann wird in einem zweiten FFT-Speicher gleicher Größe der Gabor-Filtersatz erstellt und schließlich wird das transformierte Bild mit dem geraden oder ungeraden Filteranteil multipliziert und in den Ortsraum zurücktransformiert. Achtung: für Bandbreiten > 1.0 ist die Verstärkung des DC-Anteils nicht gleich Null! Wenn mit geradem und ungeradem Gabor-Filter gearbeitet wurde und beide gefilterte Anteile in Bildspeichern vorliegen, kann mit der Funktion "Square Root" aus dem Arithmetik-Menü (Kapitel 7.3.12.) das Leistungsspektrum des Ausgangsbildes berechnet werden. (Eine Grau-Dilatation des Ergebnisses kann sinnvoll sein). Ein interessantes Beispiel zur Gabor-Filterung zur Bestimmung des Leistungsspektrum unterschiedlicher Wasserwellen finden Sie bei [Jähne].

7.6.10.5. Difference of Gaussian Filter

Der DOG-Filter kann zur Detektion von Kanten benutzt werden. Seine Wirkung entspricht in etwa dem Laplace-Filter, natürlich mit dem Unterschied, daß er wie alle Frequenzraumfilter gleichzeitig über das gesamte Bild wirkt und damit homogener und isotrop arbeitet. An Parametern können z. Zt. die Werte RC (Center Radius at e-0.5 und RS (Surround Radius) eingestellt werden. Aus diesen Werten werden die Werte KC und KS (Center Gain and Surround Gain Constant) nach der folgenden Formel automatisch bestimmt:

KC = 1.0/(pk*PI*RC*RC)

KS = 1.0/(pk*PI*RS*RS)

mit pk = (RS/RC)(-2*RC*RC/aa) - (RS/RC)(-2*RS*RS/aa) und aa = RS2 - RC2

Bei unzulässigen Eingaben werden RC=1.0 und RS=3.0 als Defaultwerte angenommen. Auf Wunsch werden die Werte KC und KS auch getrennt beeinflußbar eingegeben werden können. Für eine genauere Beschreibung lesen Sie bitte die einschlägige Literatur.

7.6.10.6. Pattern-Filter

Der Pattern-Filter sucht regelmäßige Frequenzen im FFT-Spektrum automatisch und schwächt sie ab. Diese Funktion ist noch nicht getestet, daher bitte nicht oder nur nach Rücksprache mit dem Entwickler-Team verwenden... Besser wird der Spot-Filter manuell benutzt.

7.6.10.7. Spot Filter

Mit der "Spot Filter"-Funktion können Sie einzelne Harmonische in bestimmten Richtungen in der komplexen Zahlenebene im FFT-Speicher löschen oder setzen: Stellen Sie dazu den FFT-Speicher z. B. als "Power"- oder Amplitudenspektrum auf dem Bildschirm dar. Vor Aufruf der "Spot-Filter"-Funktion müssen Werte für Form, Größe, Zahlenwert und Randverhalten der Filterung festgelegt werden. Hierzu stellen Sie sich den Filter am besten als Radiergummi oder weichen Farbpinsel dar: mit dem Radiergummi können Sie - genau oder diffus begrenzt - bestimmte Harmonische des FFT-Speichers löschen, mit dem Farbpinsel können Sie bestimmte Harmonische auf einen vorher festgelegten Wert setzen, ebenfalls genau begrenzt oder diffus. Die Funktion kann wahlweise gleichzeitig im Realteil- und im Imaginärteilspeicher und zur Verdeutlichung (wegen möglicher Rundungsfehler nur annäherungsweise korrekt) auch auf dem Bildschirm ausgeführt werden. Für die Bildschirmausführung müssen die Koeffizienten natürlich auf dem Bildschirm sinnvoll dargestellt sein. Sie sehen damit sofort, welche Änderungen Sie im Speicher vollzogen haben. Die Funktion bietet die folgenden Einstellmöglichkeiten:

  • Symmetrieausführung, d. h. alle Änderungen, die Sie vornehmen, werden automatisch auch auf der anderen Seite des Nullpunktes (DC-Anteil), punktsymmetrisch zum Nullpunkt des Spektrums durchgeführt,

  • Ausführung der Symmetrie in positiver oder negativer Weise. Bei negativer Ausführung wird an der gewählten Stelle z. B. addiert, an der dem DC-Punkt symmetrisch gegenüberliegenden Stelle jedoch subtrahiert.

  • Löschfunktion, d. h. Harmonische werden auf Null gesetzt,

  • Additionsfunktion, d. h. es werden bestimmte Werte zu den ausgewählten Harmonischen hinzuaddiert,

  • Radius des Editierstiftes in Bildpunkten (Pixel),

  • Rand des Editierstiftes (pixelexakt oder diffus: (0.5-0.5*cos)-förmig).

  • Ausführung im Realteilspeicher, im Imaginärteilspeicher und/oder auf dem Bildschirm

Mit dieser Funktion können Sie regelmäßige Strukturen in Bildern entfernen oder hinzufügen, indem bestimmte Frequenzen (Koeffizienten) im Spektrum ausgelöscht oder erzeugt werden (Beispiele finden Sie im ELEKTRONIK-Artikel: Die Fouriertransformation in der Bildverarbeitung). Hierzu wird der Filter normalerweise immer punktsymmetrisch angewandt, d. h. wenn ein Koeffizient, d. h. eine bestimmte Harmonische gelöscht werden soll, so soll auch bei der entsprechenden negativen Harmonischen - punktsymmetrisch zur gewählten Harmonischen - gelöscht werden.

7.6.10.8. Inverse Filter / Wiener Filter

Der Inverse Filter wird zur Verbesserung von Bildern verwendet, wenn die Störfunktion bekannt ist, z. B. bei unscharfen Bildern durch eine falsche Entfernungseinstellung des Objektivs oder bei Bewegungsunschärfe von Remote Sensing Bildern. Hierbei wird die Störfunktion im Ortsbereich benötigt. Beide Funktionen, das gestörte Originalbild und die Störfunktion werden in den Fourierbereich transformiert und dort durcheinander dividiert. Hierbei kann es zu Problemen führen, wenn die Fouriertransformierte der Störfunktion Nullstellen besitzt. Der Wiener Filter, eine Variante des Inversen Filters, kann solche Probleme vermeiden oder zumindest verringern, indem bestimmte statistische Ansätze für das Bildrauschen angesetzt werden. Die Formel für den Wiener Filter und einige gute Beispiele findet man bei Russ.

7.6.11. Frequency Arithmetic

Clear FFT Buffer
Add Complex Const
Mul Complex Const
Conjugate Complex
Invers Complex

Normalize
-----------------
Copy Buf1-->Buf2
Add Buf1+=Buf2
Add Buf1+=Buf2.Re
Add Buf1+=Buf2.Im
Sub Buf1-=Buf2
Mul Buf1*=Buf2
Mul Buf1*=Buf2.Re
Mul Buf1*=Buf2.Im
Div Buf1/=Buf2
X-Corr.Buf1x=Buf2
AutoCorr. Buf1
- Buffer 1: [x]
- Buffer 2: [y]

In diesem Untermenü finden Sie Funktionen zur Bearbeitung und Verknüpfung von FFT-Speichern und Konstanten. Hierzu muß der gewünschte FFT-Speicher aktiv sein, d. h. bei Konstantenoperationen muß die richtige ROI gewählt sein und bei Funktionen mit zwei FFT-Speichern müssen FFT-Speicher [1] und [2] gesetzt sein. Da die FFT-Speicher mit den x,y,z-ROI’s korrespondieren, können Source- und Destination-FFT Speicher der x-, der y- oder der z-FFT-Speicher sein. Die Größe der FFT Speicher muß für diese dualen Funktionen natürlich gleich sein.

7.6.11.1. Kopiere FFT-Speicher [1] nach FFT-Speicher [2]

Der Inhalt des kompletten FFT-Speichers [1] wird in den FFT-Speicher [2] kopiert.

7.6.11.2. Addiere Konstante zum FFT-Speicher

Addieren oder Subtrahieren von Konstanten auf den aktiven FFT-Speicher. Es wird eine komplexe Konstante eingegeben.

7.6.11.3. Multipliziere Konstante zum FFT-Speicher

Multiplizieren von Konstanten zum aktiven FFT-Speicher. Es wird eine komplexe Konstante eingegeben.

7.6.11.4. Inverse Coefficients

Berechnung der Inversen der Koeffizienten im aktiven FFT Speicher

7.6.11.5. Conjugate Complex

Berechnung der konjugiert komplexen der Koeffizienten im aktiven FFT Speicher

7.6.11.6. Normalize Coefficients

Alle Koeffizienten (Real- und Imaginärteil getrennt) werden duch die Totalsumme aller Koeffizienten dividiert, d. h. die Summe aller Koeffizienten wird 1.0. Achtung: dies macht in der Regel nur für den Realteil Sinn, wenn gerade ein Bild hereingeladen wurde und der Imaginärteil leer ist.

7.6.11.7. Addition/Subtraktion zweier FFT-Speicher

Die durch FFT-Speicher [1] und [2] festgelegten FFT-Speicher werden addiert oder subtrahiert. Es gibt drei verschiedene Ausführungsarten: in der komplexen Version wird der Inhalt des FFT-Speichers [2] komplex zum FFT-Speicher [1] addiert. Man kann jedoch auch lediglich den Realteil oder den Imaginärteil des FFT-Speichers [2] zum FFT-Speicher [1] addieren.

  • FFT-Speicher [1] = FFT-Speicher [1] + FFT-Speicher [2]

  • FFT-Speicher [1] = FFT-Speicher [1] + FFT-Speicher [2].real

  • FFT-Speicher [1] = FFT-Speicher [1] + FFT-Speicher [2].imag

  • FFT-Speicher [1] = FFT-Speicher [1] - FFT-Speicher [2]

7.6.11.8. Multiplikation / Division zweier FFT-Speicher

Die durch FFT-Speicher [1] und [2] festgelegten FFT-Speicher werden multipliziert oder dividiert. Es gibt drei verschiedene Ausführungsarten: in der komplexen Version wird der Inhalt des FFT-Speichers [2] komplex zum FFT-Speicher [1] multipliziert. Man kann jedoch auch lediglich den Realteil oder den Imaginärteil des FFT-Speichers [2] zum FFT-Speicher [1] multiplizieren.

  • FFT-Speicher [1] = FFT-Speicher [1] * FFT-Speicher [2]

  • FFT-Speicher [1] = FFT-Speicher [1] * FFT-Speicher [2].real

  • FFT-Speicher [1] = FFT-Speicher [1] * FFT-Speicher [2].imag

  • FFT-Speicher [1] = FFT-Speicher [1] / FFT-Speicher [2]
Bei der Division muß beachtet werden, daß nicht durch 0.0 geteilt wird. Hierzu kann ein minimaler Nenner eingegeben werden. Bei Unterschreiten dieses minimalen Nenners wird automatisch durch diesen dividiert. Wenn 0.0 angegeben wird, so wird intern ein minimaler Nenner von 1.0e-20 angenommen.
Die Division zweier FFT-Speicher kann zur "Inversen Filterung" benutzt werden.

7.6.11.9. Auto Correlation

Es wird eine Autokorrelation des FFT-Speichers [1] mit sich selbst gebildet. Das Ergebnis steht wieder im gleichen FFT-Speicher[1].

7.6.11.10. CrossCorrelation

Es wird eine Kreuzkorrelation von FFT-Speicher [1] und [2] gebildet. Das Ergebnis steht im FFT-Speicher[1].

7.6.12. Find Maximum

Finden der 3 größten Maxima im FFT-Spektrum. Die Suche wird auf dem Bildschirmspeicher durchgeführt, d. h. das Spektrum muß vorher berechnet und angezeigt werden. Hierbei ist auch die Einstellung des Schalters Polynom/Gauss-Approximation im Measurement-Control-Menü zu berücksichtigen, da die Maxima mit Subpixelgenauigkeit gesucht werden. Polynom-Approximation ist die Defaulteinstellung. Wenn die Maxima Gauss-förmig sind, kann die Gauss-Approximation höhere Genauigkeit bringen. Die gefundenen Maxima werden dann durch kleine Kreise hervorgehoben und die Daten (x- und y-Abstand vom Mittelpunkt, d. h. vom DC-Anteil) werden in einer Info-Box angezeigt. Der Nachbarschaftsfaktor Sigma steht normalerweise auf 2.8 und braucht nicht geändert zu werden. Nur in bestimmten Fällen bei sehr flachen Maxima kann man hier mit kleineren Werten experimentieren (siehe auch Pattern-Recognition-Funktion). Der DC-Anteil, d. h. der Mittelpunkt im Spektrum, wird bei der Suche nicht berücksichtigt.

Auf Wunsch können hier Variationen der Funktion implementiert werden. So kann die Funktion auch mit höherer Genauigkeit direkt im Realteil des FFT-Speichers ablaufen. Außerdem kann entschieden werden, ob der Peak beim DC-Anteil mitberücksichtigt werden soll oder nicht.

7.6.13. Frequency Histogram

Die Funktion "Frequenz-Histogramm" berechnet die Mittelwerte aller Harmonischen bestimmter Ordnungszahlen über alle Richtungen. D. h. es wird über konzentrische Kreise um den Mittelpunkt, d. h. den DC-Gleichanteil gemittelt. Diese Werte können in einen ASCII-File mit der Extension .HST abgespeichert werden. Das Format ist, entsprechend der picCOLOR-Konvention für Daten-Files, folgendermaßen:

*80* Frequency Histogram:

No. of Harmonic,
0
1
usw...

Value
val0
val1

Diese Funktion kann u. a. zur Texturanalyse verwendet werden.


7.7. Texture

Texture Synthesis
----------------
Statistics
Freq.Analysis
Orientation

Ein ganz besonders problematisches Gebiet der digitalen Bildverarbeitung ist die Texturanalyse. Als Textur wird dabei eine Strukturierung der Grauwerte innerhalb einer definierten Umgebung bezeichnet. Während das menschliche Sehsystem sehr leicht verschiedene Strukturen unterscheiden und immer wieder erkennen kann, ist dies für die digitale Bildanalyse eine in vielen Fällen nur schwer durchführbare Aufgabe. Dies ist unter anderem dadurch begründet, daß es meistens nicht möglich ist, die Textur durch ein einziges einfaches Merkmal zu beschreiben. Es ist normalerweise die Kombination vieler komplexer Merkmale, durch die eine Textur definiert ist.

Einige sehr einfache Ansätze können jedoch in bestimmten Fällen zu recht guten Ergebnissen führen. Solche Funktionen sind hier in der Grundversion des picCOLOR Programmes implementiert. Dies sind z. B. Funktionen zur Bestimmung der Rauhigkeit einer Textur mit dem "Max-Min"- Filter oder den anderen statistischen Filtern. Die Orientierung einer Textur kann mit Hilfe der Sobelfilter oder der lokalen Orientierungsanalyse mit dem Trägheitstensorverfahren bestimmt werden. Die implementierte Frequenzanalyse ist noch relativ neu, dürfte jedoch sehr großes Potential haben.

Es sei hier auch auf das Kapitel Statistik verwiesen: dort ist mit der Funktion "Coocurrence Matrix" eine weitere Funktion zur Erkennung von Strukturen einer Bildfläche gegeben. Diese Funktion erlaubt z. B. die Beurteilung, wie ein Bildmuster, um eine gewisse Strecke dx, dy verschoben, mit sich selbst korreliert. Regelmäßige Strukturen können damit erkannt werden. Einige Funktionen zur Synthese von Texturen dienen zum Test verschiedener Texturerkennungsalgorithmen.

7.7.1. Texture Synthesis

Zur Erstellung oder zum Test von Funktionen zur Texturerkennung ist es oft notwendig, geeignete Test-Texturen zur Verfügung zu haben. Mit dieser Funktion wird dazu ein geeignetes Werkzeug zur Verfügung gestellt. Es handelt sich hier um eine Textursynthese durch Autoregression. Hierbei wird der Grauwert eines Bildpunktes aus den Werten der vorangehenden Punkte "links oben", "oben", "rechts oben" und "links" vom zu berechnenden Bildpunkt ermittelt. Nach Eingabe der Regressionsparameter (oder Wichtungen) dieser vier vorangehenden Bildpunkte und eines Rauschparameters erzeugt die Funktion vielseitige Texturmuster. Die Eingabe wird in einer Dialogbox durchgeführt, in der man in einem kleinen Ergebnisrechteck sofort die Auswirkungen der geänderten Parameter auf die erzeugte Textur beurteilen kann. Erst nach Anwahl der "Accept"-Schaltfläche wird diese Textur dann in der aktuellen ROI erzeugt. Bei Verlassen der Dialogbox mit der "Cancel"-Fläche werden die ursprünglichen Werte der Parameter wieder restauriert, bei Verlassen über die Exit-Fläche (links oben) werden die gewählten Parameter beibehalten, die Funktion jedoch nicht ausgeführt. (Die Funktion ist z. Zt. nur in einer einfacheren Version ohne Dialogbox implementiert).

7.7.2. Statistische Texturerkennung

Max-Min N*N
Std.dev. N*N
Variance N*N
- Factor
- Step Size

Die Funktionen zur statistischen Textursegmentierung berechnen jeweils eine bestimmte statistische Größe für die angegebene Nachbarschaft eines Pixels. Der berechnete Wert wird linear auf den Grauwertebereich abgebildet und dem neuen Mittelpixel zugewiesen. Hierbei besteht eine bestimmte Variationsmöglichkeit über den Multiplikationsfaktor "Factor". Dieser Multiplikationsfaktor wird intern schnell durch eine Verschiebeoperation erreicht und kann daher nur Werte von 2**n annehmen. Nachbarschaften können 3*3 bis n*n für sehr große "n" sein, um auch sehr grobe oder großflächige Strukturen untersuchen zu können. Es kann die Schrittweite "Step-Size" der Funktionsausführung eingestellt werden: bei "1" wird für jeden Bildpunkt ein neuer Statistik-Wert seiner Nachbarschaft berechnet. Oft is dies nicht notwendig und man kann die Berechnung mit größeren Schrittweiten sehr beschleunigen.

7.7.2.1. Max-Min-Function

Die "Max-Min"-Funktion extrahiert ein Merkmal aus einem Bild, das in etwa ein Maß für die Rauhigkeit (oder Verrauschtheit) eines Bildausschnittes ist: Es wird in einer bestimmten Nachbarschaft um einen Bildpunkt die Differenz des größten und des kleinsten vorkommenden Grauwertes gebildet. Diese Differenz wird dann für jeden Bildpunkt als Grauwert dargestellt. Als Ergebnis erhält man in Bildausschnitten, an denen große Grauwert-Differenzen (d. h. starkes Rauschen) auftreten, sehr helle Werte und an gleichmäßigeren Grauwertflächen dunkle Werte. Allerdings werden natürlich auch ganz normale Grauwertkanten sehr deutlich hell hervorgehoben - ein sicherlich oft unerwünschter Effekt.

7.7.2.2. Grey Level Standard Deviation

Ein anderes einfaches Texturmerkmal ist die Streuung der Grauwerte, berechnet aus dem Histogramm einer bestimmten n*n-Nachbarschaft eines Bildpunktes.

7.7.2.3. Variance

Das Quadrat der Standardabweichung ist die Varianz. Die Ergebnisse dieser Funktionen sind daher sehr ähnlich. Durch die Quadrierung werden jedoch die Grauwertbereiche unterschiedlich bewertet.

7.7.3. Frequency Analysis

Die Textur-Segmentierung über die Frequenzanalyse wurde mit der Diskreten Cosinus Transformation implementiert. Die Diskrete Cosinus-Transformation, die der Fouriertransformation sehr ähnlich ist, jedoch mit reelwertigen Bildern arbeitet, d. h. nicht Realteil und Imaginärteil benötigt und auch als Ergebnis nur ein reelwertiges Bild erzeugt, eignet sich nicht nur für die Bildkompression (sie wird z.B. beim JPEG-Verfahren eingesetzt), sondern auch sehr gut für die Beurteilung der Textur eines Bildausschnittes. In der implementierten Funktion wird für jeden Bildpunkt in seiner 8*8- oder 16*16-Nachbarschaft die Cosinus-Transformation ausgerechnet. Dies ergibt für jeden Bildpunkt ein 8*8- oder 16*16-Feld von Koeffizienten für die unterschiedlichen Harmonischen, aus denen das Bildfeld aufgebaut ist. Die DCT ist folgendermaßen definiert:

Forward DCT: S(u) = C(u)/2 Summe(x=0..7) [ s(x)cos[(2x+1) u PI / 16]]
Inverse DCT: s(x) = Summe(u=0..7) [C(u)/2 S(u) cos [(2x+1) u PI / 16]]
mit: C(u) = 1/sqrt(2) für u=0
C(u) = 1 für u>0
s(x) = 1D sample value
S(u) = 1D DCT coefficient

Achtung: das Koeffizientenfeld entspricht nicht dem einer üblichen FFT: Es ist in der folgenden Form aufgebaut: DC-Anteil in der linken oberen Ecke des 8*8-Koeffizientenfeldes, dann nach rechts und nach unten die Koeffizienten für 0.5cos, 1.0cos, 1.5cos, 2.0cos, 2.5cos, 3.0cos, 3.5cos.

Durch eine Analyse der Koeffizienten kann z. B. die Orientierung der Kanten eines Musters oder die Maschenweite eines Musters bestimmt werden. Außerdem kann durch Beurteilung der Koeffizienten für die höheren Harmonischen z. B. das Rauschen bestimmt werden. Das Ergebnis einer Bestimmung wird in Form eines Graubildes abgespeichert, wobei für jeden Bildpunkt der jeweilige Ergebniswert der Koeffizientenanalyse auf den Grauwertebereich von [0..255] abgebildet wird und dem Mittelpixel des 8*8 oder 16*16-Fensters zugewiesen wird. Die Funktion kann mit einer Schrittweite von 1 oder 2 ausgeführt werden. Die Schrittweite von 2 beschleunigt die Funktion um den Faktor 4, so daß sinnvolle Tests in absehbarer Zeit durchführbar sind. Einige Funktionen sind z. Zt. implementiert (die Beschreibung bezieht sich dabei normalerweise nur auf die 8*8-Version, da die 16*16-Version noch nicht optimiert und daher sehr langsam ist).

Wenn ein bestimmtes Texturmerkmal wegen seiner Größe nicht im 8*8 oder 16*16-Fenster erkennbar ist, so empfiehlt es sich, eine Gauss-Bildpyramide zu erstellen, in der alle möglichen Verkleinerungsstufen des Bildes erstellt werden. Hier kann man sich dann die Vergrößerungsstufe zur Bearbeitung auswählen, in der die Textur vernünftigerweise bestimmt werden kann. VORSICHT: Alle DCT-Funktionen sind neu und noch nicht ausgiebig getestet... Diese Funktionen sind dual-threaded ausgeführt und laufen auf einem Dual-Prozessorsystem beinahe doppelt so schnell ab.

7.7.3.1. Max DCT Amplitude

Es wird die höchste Harmonische gesucht, deren Koeffizient größer als eine einzugebende Schwelle ist. Hierzu wird das 8*8-Feld zuerst derart in linearer Weise umgruppiert, daß zuerst der Gleichanteil kommt, dann immer höhere Harmonische im Zick-zack-Verfahren aus dem ursprünglichen 8*8-Koeffizientenfeld (Koeffizient 1,1, dann 1,2, dann 2,1, 3,1, 2,2 1,3, 1,4, 2,3, 3,2, 4,1, 5,1, 4,2 usw. bis 8,8). Bei stark verrauschen Bildern haben auch die höchsten Koeffizienten hohe Werte. Das Ergebnis im Bereich [0..63] wird durch eine Multiplikation mit 4 auf den Grauwertebereich von [0..252] gestreckt, der in etwa dem Pixelwertebereich von [0..255] entspricht. Helle Bildpunkte deuten auf großes Rauschen oder prägnante Muster oder Textur hin. Nachteil ist, daß aufgrund der definierten Periodizität des Eingangssignales der diskreten Cosinustransformation, d. h. des über seine Ränder immer wieder wiederholten 8*8 Bildfeldes, auch einfache Grauwert-Rampen hohe Werte bei den höheren Koeffizienten aufweisen, da diese als Sägezahnfunktion gedeutet werden.

Mit der Funktion "Set DCT-Amplitude" wird die Amplituden-Schwelle für die obige Funktion gesetzt. Sinnvolle Werte liegen bei etwa 4 bis 100, je nach Art und Ausgeprägtheit der Textur.

7.7.3.2. DCT Orientation

Bestimmung der Orientierung eines Musters oder einer Textur, indem die Richtung gesucht wird, in der die höchsten Werte der Koeffizienten vorkommen. Hierzu muß vorher die zu bestimmende Richtung gewählt werden. Mit der Funktion "Set Orientation 0, 45, 90" setzen Sie die Suchrichtung der Orientierung in Grad. Beispiel: Setzen Sie die Orientierungssuche auf 0 Grad. Führen die die DCT aus. Alle Bildpunkte, die hell erscheinen, deuten darauf hin, daß starke Helligkeitsschwankungen in 0-Grad-Richtung (x-Richtung) vorhanden sind, d. h. daß die Koeffizienten der Cosinustransformation große Werte aufweisen. Dies gilt ebenso für die 45- und 90-Grad-Richtung.

7.7.3.3. DCT-No. of Harmonics

Hier wird der Mittelwert der n-ten Harmonische um den Nullpunkt des Koeffizientenfeldes herum berechnet. Hiermit erhalten Sie Informationen über die Maschenweite des untersuchten Musters oder der Textur. Wenn Sie z. B. die untersuchte Harmonische auf "5" setzen, so werden Bildpunkte hell gezeichnet, in deren Nachbarschaft die 5.te Harmonische besonders ausgeprägt ist. Beachten Sie hierbei, daß die Koeffizienten nicht den der Fouriertransformation entsprechen. So bedeutet z. B. die 2. Harmonische einen Cosinus mit einer Periode über das 8*8-Feld, die 4. Harmonische einen Cosinus mit zwei Perioden usw.

7.7.4. Orientierungsanalyse

Über die Orientierungsanalyse können Texturen segmentiert werden, die sich streifige oder sonstige gerichtete Struktur ausweisen. Das einfachste Verfahren ist die Anwendung des Sobel-Filters zur Bestimmung der Phase in x- und y-Richtung. Hieraus läßt sich dann der Winkel aller Kanten ermitteln. Aufgrund der kleinen Filtergröße ist diese Funktion natürlich sehr rauschanfällig. Besser ist hier die Orientierungsanalyse nach dem Trägheitstensormodell (siehe Jähne: Digitale Bildverarbeitung).

7.7.4.1. Sobel Orientation

Orientierungsanalyse mit einfachem Sobelfilterung zur Richtungsbestimmung der Grauwertgradienten. Hierbei werden die Gradienten in x- und y-Richtung bestimmt und dann hieraus der Winkel des stärksten Gradienten bestimmt. Ohne Vorzeichenberücksichtigung erhält man die Richtung im Bereich [0..180] Grad, mit Berücksichtigung des Vorzeichens im Bereich [0..360] Grad. Die Funktion verwendet nur eine 3*3-Umgebung und ist daher entsprechend rauschanfällig. Es kann sinnvoll sein, vor der Ausführung einen Gauss-Filter anzuwenden. Für den Sobel-Filter kann die 4er und 8er Nachbarschaft eingestellt werden.

7.7.4.2. Local Orientation

Eine wesentlich bessere Methode zur Ermittlung der lokalen Orientierung ist die Methode mit Tensorrechnung [Jähne]. Hierbei wird zuerst ein Glättungsfilter (Gauss-Binomial-Filter) eingesetzt, um höchste Wellenzahlen wegzufiltern, für die keine genaue Ableitungsberechnung möglich ist. Dann werden die horizontalen und vertikalten Ableitungen berechnet. Hierauf folgen nichtlineare Operationen wie die Quadrierung der horizontalen und vertikalen Ableitung und die Multiplikation der horizontalen und der vertikalen Ableitung. Diese drei Zwischenergebnisse werden wiederum mit dem Binomialfilter geglättet. Die Subtraktion der beiden quadrierten Ableitungsbilder und die Multiplikation der Ableitungsbilder können als Komponenten des Orientierungsvektors angesehen werden. Sein Winkel wird in den HUE-Kanal des vorher definierten Farb-Speichers geschrieben, sein Betrag, der als Bestimmtheitsmaß für die Orientierung angesehen werden kann, wird in den Intensity-Kanal geschrieben. Der Saturation-Kanal wird zu 255 (weiß) gesetzt. Wenn nun mit der Umwandlungsfunktion "HSI->RGB" in den RGB-Farbraum gewandelt wird, kann mit "D" (dithern) ein Farbbild betrachtet werden, das die Orientierung farbkodiert im Bereich [0..180] Grad zeigt (0 Grad = Rot, 60 Grad = Grün, 120 Grad = Blau, 180 Grad wieder Rot usw.). Die Bestimmtheit dieser Orientierung ist dann helligkeitskodiert (hell = Orientierung stark ausgeprägt). Das Ausgangsbild darf nicht in den HSI-Bildspeichern liegen, da das Ergebnis in diese Speicher geschrieben wird. Das Ausgangsbild wird bis auf die nicht rückgängig zu machende Glättung mit dem Gauss-Filter nicht verändert. Wenn die Funktion über ein MACRO aufgerufen wird, müssen die Ergebnisspeicher mit ihren Speichernummern angegeben werden. Hiermit kann das Ergebnis auch in andere als die HSI-Speicher geschrieben werden. Wenn das Ausgangsbild gleich einem dieser angegebenen Ergebnisspeicher ist, erhält man eine Fehlermeldung.


7.8. Pyramid Conversion

Gauss Pyramid
Laplace Pyramid
Pyramid Level
Scale Back

In diesem Untermenü werden Funktionen zur Bildpyramidenerzeugung und zur Anwahl der einzelnen Pyramidenstufen zur Verfügung gestellt. Eine Bildpyramide ist ein mehrkanaliges Bild, bei dem jeder Kanal eine andere geometrische Auflösung hat. Üblicherweise sind dies Verkleinerungen um den Faktor 2, 4, 8, 16 usw., bis nur noch ein Pixel übrigbleibt. Eine Verarbeitung des Bildes erfolgt dann jeweils in der Auflösungsstufe, in der das auszuwertende Merkmal, z. B. ein Muster oder bestimmte Konturen gerade noch erkennbar sind. Hierdurch wird nicht nur die Bearbeitungszeit stark verringert, sondern es werden bestimmte Auswertungen überhaupt erst ermöglicht. Ein wichtiges Beispiel ist die Texturerkennung über die Frequenzanalyse innerhalb einer 8*8 Nachbarschaft. Eine Textur, deren Wiederholrate im Originalbild z. B. 12 Pixelweiten beträgt, ist im 8*8 Fenster nicht als solche erkennbar. Nach einer Verkleinerung um den Faktor 2 beträgt die Wiederholrate nur noch 6 Pixel und liegt damit dann etwa bei der 3. Harmonischen im DCT-Spektrum.

Gauss Pyramid

7.8.1. Gauss Pyramid

Bestimmung der Gauss-Pyramide eines Bildes. Das Originalbild (der aktuellen ROI) wird in die linke obere Ecke geschoben. Dann wird dieses Bild jeweils um den Faktor 2 verkleinert rechts daneben oder darunter dargestellt, bis nur noch ein einziger Pixel übrigbleibt. Alle Teilbilder werden auf dem Bildschirm dargestellt und in den Bildspeicher übertragen. Für jedes Teilbild wird eine eigene ROI berechnet und abgespeichert, die jederzeit mit der "Set Pyramid Level"-Funktion aufrufbar ist. Es können unterschiedliche Verfahren zur Reduzierung hoher Bildfrequenzen eingesetzt werden.

  • keine Glättung (kann Informationsverlust bedeuten, wenn tatsächlich hohe Orts-Frequenzen vorkommen)

  • lineare Mittelung (2*2 Averaging) (verschiebt das Bild um einen halben Pixel, daher nicht verwenden)

  • Averaging über 3*3 Gaussfilter

  • Averaging über 5*5 Gaussfilter

Die x,y,z-original-ROI’s werden nicht verändert.

7.8.2. Laplace Pyramid

Mit diesem Schalter kann eingestellt werden, daß zusätzlich zur Gauss-Pyramide eine Laplace-Pyramide berechnet wird. Diese wird in den mit der Funktion "Second Source" ausgewählten Bildspeicher geschrieben. Ein Undo des Bildes im "Second Source"-Speicher ist nicht möglich.

7.8.3. Set Pyramid Level

Hier wird der Level der Pyramide ausgewählt, der jeweils bearbeitet werden soll. Die aktuellen ROI-Koordinaten wird dann durch die intern abgelegte ROI überschrieben, die genau das Teilbild des gewählten Pyramiden-Levels beschreibt. Die ursprünglichen ROI-Koordinaten können nicht restauriert werden.

7.8.4. Scale Back Pyramid

Wenn geometrische oder statistische Vermessungen im Teilbild der Bildpyramide vorgenommen werden sollen, so muß dieses zuvor auf Originalgröße zurückskaliert werden. Dies ist auch sinnvoll, wenn das Teilbild betrachtet und beurteilt werden soll. Mit der "Scale Back"-Funktion wird das Teilbild an die Stelle des Originalbildes in voller Größe kopiert. Hierbei wird die aktuelle ROI auf die ROI des Pyramiden-Teilbildes [0] gesetzt. Die für die Vergrößerung notwendigen Zwischenpixel können über eine Interpolation Ermittelt werden. Es stehen folgende Interpolationsverfahren zur Verfügung:

  • keine Interpolation

  • schnelle lineare Interpolation

  • langsame lineare Interpolation (Testfunktion)

  • Interpolation über kubische Splines

Es empfiehlt sich, die Spline-Interpolation zu benutzen, wenn die Pyramide mit einem einfachen 3*3-Gaussfilter erzeugt wurde. Bei Verwendung des 5*5-Gauss-Filters genügt normalerweise auch die lineare Interpolation bei der Rückskalierung. In manchen Fällen kann es sinnvoll sein, das Bild nicht bis zur Originalgröße zurückzuskalieren, sondern bei einer bestimmten Verkleinerungsstufe haltzumachen. Über die Eingabe des sogenannten "Stop Level" kann eingestellt werden, bei welcher Stufe der Vergrößerungsprozess stoppt. Hierbei bedeutet "0" die unterste Stufe der Pyramide, d. h. das Originalbild, "1" die nächst folgende Stufe usw. Die aktuelle Arbeits-ROI wird auch auf diese gewählte Stufe gestellt.


7.9. Binary

Interactive Binarization --->
Global Binarization --->
Local Binarization --->

Printer Binarization --->

-------------------------------

- Show Last Global Threshold

-------------------------------

Remove Ghost Image

Remove Inverted Ghost Image

Mark Ghost Image

Mark Inverted Ghost Image

Use Threshold Surface

- Set Second Image Buffer

Mit diesen Funktionen wird das Bild nach verschiedenen Rechenvorschriften binärisiert, d. h. alle Grauwerte werden nach einem bestimmten Schema zu Schwarz oder Weiß (Pixelwert 0 oder 255) gesetzt. Üblicherweise gehören die binärisierenden Funktionen zusammen mit den morphologischen Funktionen zu den abschließenden Bearbeitungsschritten einer Bildvorverarbeitung, nämlich der Segmentierung - danach beginnt die eigentliche Auswertung, Vermessung oder Vektorisierung.

Im einfachsten Fall sind hier globale Binärisierungsverfahren geeignet, bei denen auf bestimmte Weise eine globale Grauwertschwelle (Threshold) ermittelt wird. Dieser Schwellwert wird bei den meisten dieser Verfahren automatisch bestimmt und kann daher nach der Binärisierung mit der "Show Last Global Threshold"-Funktion abgefragt werden. Diese globale Binärisierung kann jedoch oft sehr problematisch sein, besonders wenn die Beleuchtung des Bildes während der Aufnahme nicht gleichmäßig war. In diesem Fall sollte versucht werden, vor der Binärisierung eine Helligkeits- oder Hintergrundskorrektur durchzuführen, z. B. am besten mit der Flat-Field-Correction, mit der Subtraktion eines Korrekturbildes oder mit der "Flatten Background"-Funktion. Wenn dies nicht möglich ist, können eventuell dynamische Binärisierungsverfahren helfen: hier wird für jede Pixel-Nachbarschaft nach speziellen Vorschriften ein eigener Schwellenwert definiert. Üblicherweise arbeiten diese Verfahren über die Beurteilung des Grauwert-Histogrammes der Pixel-Nachbarschaft. Sie sind sehr sensibel bzgl. der Einstellung ihrer Parameter, z. B. der Fenstergröße.

Binärisierungsalgorithmen wie die Multischwellen-Matrix oder die Random-Maske werden für die Druckvorbereitung eines Grauwertbildes auf einem Schwarz/Weiß-Matrixdrucker (auch Laserdrucker) benötigt: hier werden die im Bild vorhandenen Graustufen derart in bestimmte Muster umgesetzt, daß sie später auf dem Ausdruck zumindest aus einem bestimmten Abstand betrachtet als Grauwerte erscheinen.

Einige neue Binärisierungsalgorithmen aus dem "XITE image analysis program" sind zusätzlich implementiert, die jedoch noch nicht in allen Einzelheiten getestet sind und daher nur mit Vorsicht benutzt werden sollten. Dies sind globale Verfahren nach:

- Abutaleb
- Kapur, Sahoo, Wong
- Otsu
- Kittler, Illingworth

- Mardia & Hainsworth

und lokale dynamische Verfahren von:

- Eikvil, Taxt, Moen
- Yanowitz, Bruckstein (Pot. Surface)
- Parker

- Niblack (Stat. Threshold)

- Nakagawa, Rosenfeld (Bimodal)

- Taxt, Flynn, Jain

- White Rohrer 1 and 2 and improved

Besonders interessant ist hier das Verfahren von Yanowitz und Bruckstein, das mit einer sogenannten "Threshold Surface" arbeitet. Das Niblack-Verfahren bestimmt sich die lokale dynamische Schwelle aus der Statistik der jeweiligen Nachbarschaft. Dieses Verfahren arbeitet zuverlässig und außerdem ziemlich schnell.

Im XITE-Programm wird vorgeschlagen, einen Validierungsschritt an die Binärisierung anzuhängen, um falsch segmentierte Objekte oder Hintergründe zu entfernen. Hierzu wird eine Validierungsgrauwertschwelle definiert, unterhalb derer ein binärisiertes Objekt nicht akzeptiert wird und wieder dem Hintergrund zugeordnet wird. Ebenso kann ein Hintergrundgrauwertschwelle definiert werden, unterhalb derer ein Hintergrundobjekt nicht akzeptiert wird. Diese Schwellen sind hier: object_validation und background_validation. Wenn gewünscht, kann man die Korrektur mit den "mark_ghost"-Funktionen ausführen, sodaß man nachher selbst interaktiv die optimale Binärisierungsschwelle finden kann. Wird jedoch die "remove_ghost"-Funktion verwendet, wird dieser Schritt vom Programm nach bestem Wissen und Gewissen durchgeführt. Der Arbeitsablauf bei der Korrektur ist wie folgt:

if (Binärisierte Objekte korrigieren) {

kopiere binärisiertes Bild in einen temporären Bildspeicher;

und restauriere das Originalbild im aktuellen Bildspeicher;

if (nicht automatisch korrigieren) {

mark_ghost(0=normal, object_validation_threshold);

dann mit interaktiver Grauwertschwelle binärisieren;

}

else if (Objekt- und Hintergrundkorrektur automatisch durchführen) {

remove_ghost(0=normal, object_validation_threshold);

kopiere korrigiertes Bild in einen weiteren temporären Bildspeicher;

und restauriere das Originalbild im aktuellen Bildspeicher;

aktiviere das gerade entstandene und kopierte Zwischenergebnis;

remove_ghost(1=invert, background_validation_threshold);

}

else { /* Nur Objekte automatisch korrigieren */

remove_ghost(0=normal, object_validation_threshold);

}

}

else if (Nur Hintergrund korrigieren) {

if (Nicht automatisch korrigieren) {

mark_ghost(1=invert, background_validation_threshold);

dann mit interaktiver Grauwertschwelle binärisieren;

} else { /* Automatisch korrigieren */

remove_ghost(1=invert, background_validation_threshold);

}

}

References:

[1] 'Ahmed S. Abutaleb', "Automatic thresholding of gray-level pictures using two-dimensional entropy", Computer Vision, Graphics, and Image Processing, vol 47, pp 22-32, 1989.

[2] 'John Bernsen', "Dynamic thresholding of grey-level images", Proc. 8th International Conference on Pattern Recognition (ICPR8), pp 1251-1255, Paris, France, October 1986.

[3] 'C.K. Chow & T. Kaneko', "Automatic detection of the left ventricle from cineangiograms", Computers and biomedical research, vol. 5, pp 388-410, 1972.

[4] 'L.Eikvil, T.Taxt & K.Moen', "A Fast Adaptive Method for Binarization of Document Images", Proceedings of the First International Conference on Document Analysis and Recognition, pp 435-443, 1991, Saint-Malo, France.

[5] 'Kapur, Sahoo & Wong', "A new method for Gray-level picture thresholding using the entropy of the histogram", Computer Vision, Graphics, and Image Processing, vol 29, pp 273-285, 1985.

[6] 'Josef Kittler & John Illingworth', "Minimum error thresholding", Pattern Recognition, vol 19, pp 41-47, 1986.

[7] 'K.V. Mardia & T.J. Hainsworth', "A spatial thresholding method for image segmentation", IEEE Transactions on Pattern Analysis and Machine Intelligence, vol T-PAMI 10, no 6, pp 919-927, 1988.

[8] 'Yasuo Nakagawa & Azriel Rosenfeld', "Some experiments on variable thresholding", Pattern Recognition, vol 11, no 3, pp 191-204, 1979.

[9] 'Wayne Niblack', "An introduction to Digital image processing", pp 115-116, Prentice Hall, 1986.

[10] 'Nobuyuki Otsu', "A threshold selection method from gray-level histograms", IEEE transactions on Systems, man and cybernetics, vol T-SMC 9, no 1, pp 62-66, 1979.

[11] 'J.R. Parker', "Gray level thresholding in badly illuminated images", IEEE Transactions on Pattern Analysis and Machine Intelligence, vol T-PAMI 13, no 8, pp 813-819, 1991.

[12] 'T. Taxt, P.J. Flynn & A.K. Jain', "Segmentation of document images", IEEE Transactions on Pattern Analysis and Machine Intelligence, vol T-PAMI 11, no 12, pp 1322-1329, 1989.

[13] 'Oivind Due Trier & Torfinn Taxt', "Improvement of `Integrated Function Algorithm` for Binarization of Document Images", Pattern Recognition Letters, to appear.

[14] 'Oivind Due Trier & Torfinn Taxt', "Evaluation of binarization methods for utility map images", in Proceedings of the first IEEE International Conference on Image Processing, vol. 2, Austin, Texas, Nov. 1994.

[15] 'Oivind Due Trier & Torfinn Taxt', "Evaluation of binarization methods for document images", IEEE Transactions on Pattern Analysis and Machine Intelligence, to appear.

[16] 'James M. White & Gene D. Rohrer', "Image Thresholding for Optical Character Recognition and Other Applications Requiring Character Image Extraction", IBM Journal of Research and Development, vol 27, no 4, pp 400-411, July 1983.

[17] 'S.D. Yanowitz & A.M. Bruckstein', "A New Method for Image Segmentation", Comput. Vision Graphics Image Proc., vol 46, no 1, pp 82-95, April 1989.

Weiterhin wurden auch noch einige linear interpolierende lokale dynamische Verfahren aus dem KUIM image analysis program implementiert:

- Statistics
- Edge Based
- Optimal

Die meisten dieser neuen Verfahren sind nicht optimiert und daher oft recht langsam in der Ausführung. Es ist geplant, die interessantesten Verfahren recht bald zu optimieren.

7.9.1. Interactive Binarization

Threshold
Band
RGB Band(Train)

7.9.1.1. Binary Threshold

Einfache Binärisierung eines Bildes mit einem Schwellwert. Alle Grauwerte unter diesem Grenzwert werden zu schwarz "0" gesetzt, alle Werte gleich oder darüber zu weiß "255". Die Wahl des Schwellwertes ist über eine manuelle Eingabe möglich, wonach die Binärisierungsfunktion sofort ausgeführt wird, oder über eine Auswahl in einem Look-Up-Table-Grauwertfeld mit Preview-Möglichkeit. Hier erscheint nach Aufruf eine Dialogbox mit einer Grauwertetabelle [0..255], in der die Grenze zwischen Schwarz und Weiß graphisch ausgewählt werden kann. Über die interne Hardware-Look-Up-Table kann die Auswirkung der Binärisierung beurteilt werden, ohne daß der Bildspeicher verändert wird. Dies gilt allerdings für das gesamte Bild, nicht nur die aktuelle ROI. Die endgültige Ausführung der Funktion, d. h. die Umrechnung des Bildes in der ROI in ein Binärbild geschieht bei Anwahl der "Accept"-Schaltfläche. Bei Abwahl der Funktion über die "Cancel"-Schaltfläche wird die ursprüngliche Farb- oder Grauwerttabelle wieder restauriert und die Binärisierung nicht ausgeführt. Bei Schließen der Dialogbox über die Rechteckfläche in der linken oberen Ecke wird die Binärisierung ebenfalls nicht ausgeführt, die Schwarz/Weiß-Farbtabellenwerte intern jedoch beibehalten. Nach Ausführung der Binärisierung mit "Accept" wird die Farbtabelle auf eine normale Grauwerttabelle gesetzt. Die Binärisierung mit Hilfe der Look-up-Table kann unabhängig für jeden Bildspeicher durchgeführt werden. Die dabei eingestellten Werte, d. h. die Binärisierungsgrenzen bleiben dabei für jeden Bildspeicher erhalten.

7.9.1.2. Band Threshold

Diese Funktion ist sehr ähnlich wie die oben dargestellte "Binary Threshold"-Funktion. Sie steht ebenfalls in zwei Versionen zur Verfügung. Hier kann ein begrenztes Band des Grauwertebereiches zu Weiß (oder Schwarz) gesetzt werden, während der übrige Grauwertbereich zu Schwarz (oder Weiß) gesetzt wird. Der Startwert bezeichnet den ersten Grauwert, der zu Weiß gesetzt wird - der Endwert immer den ersten, der zu schwarz gesetzt wird. Der Grauwertebereich wird dabei als zyklisch angeordnet angesehen, d. h. das Weiß- oder Schwarz-Band kann den maximalen Grauwert von "255" überschreiten und erstreckt sich dann weiter über die niedrigen Grauwerte, beginnend mit "0". Ein Beispiel: Wenn der Start des weißen Bandes auf den Wert "250" gesetzt wird und das Ende auf den Wert "5", dann wird das Band: "250,251,252,253,254,255,0,1,2,3,4" zu Weiß gesetzt und der Rest zu schwarz. Wenn der Endwert auf "0" gesetzt wird, verhält sich diese Funktion genau wie die einfache Binärisierung mit einem Grenzwert. Die zwei Versionen der Funktion sind wiederum die einfache manuelle Eingabe der beiden Grenzwerte oder die Auswahl in der Grauwert-Tabelle.

In der interaktiven Version erscheint wie bei der einfachen Grenzwertbildung eine Dialogbox mit einer vollständigen Grauwertetabelle, in der das schwarze und weiße Band beurteilt werden kann. Über die interne Farbtabelle (Color-Look-Up-Table) kann auch hier die Auswirkung der Binärisierung auf das gesamte Bild beurteilt werden, ohne daß der Bildspeicher geändert wird. Die endgültige Ausführung der Funktion, d. h. die Umrechnung des Bildes in ein Binärbild geschieht bei Anwahl der "Accept"-Schaltfläche. Bei Abwahl der Funktion über die "Cancel"-Schaltfläche wird die ursprüngliche Farbtabelle wieder restauriert und die Binärisierung nicht ausgeführt. Bei Schließen der Dialogbox über die Rechteckfläche in der linken oberen Ecke wird die Binärisierung nicht ausgeführt, die Schwarz/Weiß-Look-Up-Tabelle jedoch beibehalten. Nach Ausführung der Funktion über "Accept" wird die Farbtabelle auf eine normale Grauwerttabelle gesetzt. Neben der direkten Auswahl der Schwellwerte mit der linken Maustaste im Grauwertfeld können die Werte auch über drei mit Maus und Tastatur benutzbare Selektionsflächen gewählt werden. Dies kann über den Start des weißen Bandes, seine Breite und das Ende eingegeben werden. Dabei ist zu beachten, daß die Eingabe des Endwertes auch den Startwert verschiebt: so kann das gesamte Band auf einfache Art verschoben werden. Wenn nur der Endwert geändert werden soll, so muß die Breite geändert werden: hierbei wird der Startwert nicht beeinflußt.

Bei Betrachtung der Grauwert- (oder besser Schwarz/Weiß-) Tabelle fällt auf, daß die Werte "0" und "255" immer auf schwarz und weiß festgelegt sind. Das bedeutet, daß die Tabelle nicht den wahren Inhalt der Farbtabelle wiedergibt. Hierdurch wird gewährleistet, daß das Dialogfenster, das diese beiden Werte zur Darstellung benutzt, immer sichtbar ist und daß trotzdem nicht zwei Pixelwerte von der allgemeinen Benutzung ausgeschlossen sind.

7.9.1.3. RGB Binarization (trained)

Diese Funktion dient der Binärisierung von RGB-Bildern, die in den Rot-, Grün- und Blau-Farbbildspeichern liegen. Bei Ausführung wird das Echtfarbbild auf dem Bildschirm dargestellt (gedithert) und es können mit der linken Maustaste Bildpunkte ausgewählt werden. Aus den jeweils ausgewählten Punkten werden - intern für Rot, Grün und Blau getrennt - Bandbereiche berechnet, innerhalb derer alle Pixel zu 255 (weiß) gesetzt werden. Die rechte Maustaste beendet dann diesen Trainingsmodus und startet die Binärisierung. Das Ergebnisbild ist ein "uneigentliches" Bild und muß vor Weiterverarbeitung in einen gültigen Bildspeicher kopiert werden ("Copy Screen to Buffer" in der Toolbox). Der Inhalt der R-, G-, B-Bildspeicher wird mit Hilfe der drei berechneten Bänder ebenfalls binärisiert. Ein Undo ist nicht möglich, da die Inhalte dreier Bildspeicher geändert werden.

Bei der Wahl der Bandbereiche werden Bildpunkte, die in das Band fallen sollen, durch Anfahren des gewünschten Pixels mit dem Fadenkreuz und Klicken der linken Maustaste gewählt. Wenn die Maustaste gedrückt gehalten wird, werden alle Pixel, die mit dem Fadenkreuz überfahren werden, für die Bandberechnung genutzt. Diese Funktion kann gut zur Klassifizierung von Echtfarbbildern verwendet werden.

7.9.2. Global Binarization

Theshold
Band
Histogram
Entropy
Bimodal
Percentage of Max
Min after Max

Abutaleb
Kapur, Sahoo, Wong
Otsu
Kittler, Illingworth

Mardia & Hainsworth

7.9.2.1. Threshold Binarization

Hier ist eine nichtinteraktive Version der einfachen "Threshold"- oder Schwellwert-Binärisierung angeführt, bei der lediglich der gewünschte Grauwertschwellwert eingegeben werden muß. Dabei gilt, daß Grauwerte über dieser Schwelle zu "255" gesetzt werden, darunter zu "0". Für mehr Information siehe Kapitel 7.9.1.

7.9.2.2. Band Binarization

Hier ist eine nichtinteraktive Version der einfachen "Band"- oder Doppel-Schwellwert-Binärisierung angeführt, bei der lediglich die gewünschten eingrenzenden Grauwertschwellwerte eingegeben werden müssen. Dabei gilt, daß Grauwerte unter der unteren Schwelle zu "0" gesetzt werden, größer oder gleich des unteren Schwellwertes zu "255", und über dem oberen Schwellwert wiederum zu "0" gesetzt werden. Für mehr Information siehe Kapitel 7.9.1.

7.9.2.3. Histogram Binarization

Eine Binärisierung kann auch aufgrund des Ergebnisses des Histogrammes durchgeführt werden: hiermit kann gewählt werden, wieviel Prozent der Bildfläche über der berechneten Schwelle liegen soll. Beispiel: Wenn eingegeben wird, daß 5% der ROI-Fläche über dem Schwellwert liegen soll, so wird intern anhand des vorher bestimmten Bildhistogrammes ein Schwellwert berechnet, so daß 5% der ROI-Fläche weiß (Pixelwert 255) gesetzt wird. Der Eingabewert wird ganzzahlig angenommen.

7.9.2.4. Entropy Binarization

Binärisierung mittels der Maximierung der Entropie des Histogrammes. Die Schwelle wird iterativ derart gewählt, daß die Entropie, d. h. der Informationsgehalt des binärisierten Bildes maximal wird. Diese Schwellwertbestimmung mit maximaler Entropie kann sowohl global über das gesamte Bild ausgeführt werden als auch lokal dynamisch einer jeweiligen kleinen Bildfläche angepaßt werden (siehe unten).

7.9.2.5. Bimodal Binarization

Binärisierung durch Ausnutzung der Bimodalität des Bild-Histogrammes. Die Schwelle wird zwischen die beiden ausgeprägten Maxima des Grauwerthistogrammes des Bildes gelegt. Diese Schwellwertbestimmung kann übrigens auch lokal dynamisch einer jeweiligen kleinen Bildfläche angepaßt werden (siehe unten "Dynamic Bimodal Binarization"). Dort findet man auch eine genauere Erklärung der zur Bimodalitätsprüfung und Schwellwertfindung notwendigen Parameter: "Catch-Range", "Filter-Iterations" sowie "Left Start" und "Right Start".

7.9.2.6. Percentage of Maximum Binarization

Binärisierung durch Setzen der Schwelle auf eine bestimmten Prozentanteil des linken oder rechten Maximums im Histogramm des Bildes. Hierzu muß gewählt werden, ob von links (also kleinen Grauwerten) oder von rechts (mit großen Grauwerten) gesucht wird. Wenn z. B. von rechts gesucht wird, so wird zuerst das rechte Maximum bestimmt (inclusive einer Berücksichtigung eines Fangbereiches wie bei der Bimodalitätsprüfung), dann wird weiter nach links zu kleineren Grauwerten hin gesucht, bis der gewünschte Prozentualanteil gefunden wird. Die Erklärung der Parameter "Catch Range", "Left Start" und "Right Start" findet man bei der Funktion "Dynamic Bimodal Binarization".

7.9.2.7. Min after Max

Bei dieser speziellen Binärisierung wird zunächst wieder das Grauwerthistogramm des Bildes bestimmt. Nach der eingestellten Filterung des Histogrammes wird dann entweder auf der linken oder auf der rechten Seite das erste Maximum gesucht. Als Grauwertschwelle wird dann der Grauwert des danach folgenden ersten Minimums im Histogramm genommen. Die Erklärung der Parameter "Catch Range", "Left Start" und "Right Start" findet man bei der Funktion "Dynamic Bimodal Binarization".

7.9.2.8. Abutaleb

Für eine Beschreibung dieses Verfahrens bitte in der oben angegebenen Literaturstelle nachsehen.

7.9.2.9. Kapur, Sahoo, Wong

Für eine Beschreibung dieses Verfahrens bitte in der oben angegebenen Literaturstelle nachsehen.

7.9.2.10. Otsu

Für eine Beschreibung dieses Verfahrens bitte in der oben angegebenen Literaturstelle nachsehen.

7.9.2.11. Kittler, Illingworth

Für eine Beschreibung dieses Verfahrens bitte in der oben angegebenen Literaturstelle nachsehen.

7.9.2.12. Mardia & Hainsworth

Mardia and Hainsworth`s method first makes an initial binarization. Then several steps are iterated until convergence is reached. First, the estimated mean values mu1 and mu2, and the number of pixels n_i in both foreground and background of the current binarization are calculated. Then a threshold T based on these values is calculated. Then, for each pixel, a weighted mean, G, of the pixel and its eight neighbors is calculated. If G<=T, the pixel is classified as ``black', otherwise ``white'. The weights on the neighbor pixels, used to calculate G, may be equal, or they may be calculated based on a semivariogram approximation. If use_sem_var >= 1, the semivariogram approach is used. The last step of each iteration is to smooth the new binary image using a (3 x 3) median filter. diff_limit is used to test if convergence has been reached. The number of different pixels of two successive binarizations is counted, and compared to diff_limit.

7.9.3. Local Binarization

Dynamic Entropy
Dynamic Bimodal

Eikvil, Taxt, Moen
Yanowitz, Bruckstein (Pot. Surface)
Parker

Niblack (Stat. Threshold)

Nakagawa, Rosenfeld (Bimodal)

Taxt, Flynn, Jain

White Rohrer I

White Rohrer II

White Rohrer Improved

Lin. Ipol. Thresh.(Statistics)

Lin. Ipol. Thresh.(Edge Based)

Lin. Ipol. Thresh.(Optimal)

7.9.3.1. Dynamic Entropy Binarization

Dynamische lokale Binärisierung mittels der Maximierung der Entropie des Histogrammes. Die lokale Schwelle wird derart gewählt, daß die Entropie, d. h. der Informationsgehalt des binärisierten Bildausschnittes maximal wird. Hierzu wird für jeden Bildpunkt die Nachbarschaft untersucht und iterativ der lokale Schwellwert bestimmt. Über die Größe der Nachbarschaft (fieldsize) (3*3, 5*5, 7*7, usw. bis etwa 39*39 je nach zugelassenem Heap-Speicherplatz) kann der lokale Schwellwert beeinflußt werden, so daß auch kleine Strukturen detektiert werden. Die "fieldsize" sollte dem Bildinhalt angepaßt sein, d. h. bei größeren Strukturen sollte eine größere "fieldsize" gewählt werden. Innerhalb der Nachbarschaftsgröße (fieldsize) sollte über die gesamte aktuelle ROI eine einigermaßen sinnvolle Verteilung von hellen und dunklen Bereichen auftreten, sonst können keine guten Binärisierungsergebnisse erwartet werden. Achtung: die Funktion benötigt etwas Zeit. Dies hängt jedoch kaum von der Nachbarschaftsgröße ab. Im Gegenteil - bei größerer Nachbarschaft ist die Funktion schneller. Die Entropie-Maximierung wird nicht für jeden einzelnen Bildpunkt gerechnet, sondern es wird in einstellbaren Schritten (stepsize) gearbeitet. Die "stepsize" kann dazu benutzt werden, die Funktion zu beschleunigen: das Nachbarschaftsfenster (fieldsize) wird jeweils um die "stepsize" verschoben, d. h. bei einer "stepsize" von 2 werden nur für jeden zweiten Pixel in x- und y-Richtung neue Grauwertschwellen berechnet. Bilder mit gröberen Strukturen (größerer "fieldsize") können meistens auch eine größere "stepsize" vertragen. Auch bei beliebigen Nachbarschaftsgrößen arbeitet die Funktion immer vollständig bis zum ROI-Rand.

7.9.3.2. Dynamic Bimodal Binarization

Dynamische lokale Binärisierung mit Bimodalitätsprüfung des lokalen Histogrammes. Wenn das lokale Histogramm bimodal ist, d. h. zwei deutlich getrennte Maxima hat, so wird die Grauwertschwelle in die Mitte zwischen beide Maxima gesetzt. Wenn das Histogramm nicht bimodal ist, wird der letzte bestimmte Schwellwert benutzt (oder beim allerersten Mal der Mittelwert des Histogrammes). Die Nachbarschaftsgröße (fieldsize) sollte dem Bildinhalt angepaßt sein, d. h. bei größeren Strukturen sollte eine größere "fieldsize" gewählt werden. Innerhalb der Nachbarschaftsgröße sollte über die gesamte aktuelle ROI eine einigermaßen sinnvolle Verteilung von hellen und dunklen Bereichen auftreten, da sonst keine guten Ergebnisse erwartet werden können. Die "stepsize" kann dazu benutzt werden, die Funktion zu beschleunigen: das Nachbarschaftsfenster wird jeweils um die "stepsize" verschoben, d. h. bei einer "stepsize" von 2 werden nur für jeden zweiten Pixel in x- und y-Richtung neue Grauwertschwellen berechnet. Bilder mit gröberen Strukturen (mit größerer "fieldsize") können meistens auch eine größere "stepsize" vertragen. Da die Histogramme oft sehr verrauscht sein können und dann die Bestimmung der Histogramm-Maxima sehr problematisch ist, kann ein einfacher rekursiver Filter auf das Histogramm angewandt werden. Die Eingabe der "Filter Iterations" gibt die Anzahl der über das Histogramm ausgeführten rekursiven Filterläufe an. Mit der Angabe des Fangbereiches "catch range" kann ausgeschlossen werden, daß der Algorithmus nur ein Nebenmaximum findet, das Hauptmaximum jedoch übersieht: Bei "catch=10" wird z. B. nach Auffinden eines Maximums im Abstand von bis zu 10 Grauwerten überprüft, ob ein größeres Maximum existiert. Wenn ja, so wird dieses neue Maximum angenommen und wiederum im Grauwertabstand "catch range" nach einem weiteren, noch größerem Maximum gesucht. Auf diese Weise kann praktisch sichergestellt werden, daß das absolute Maximum gefunden wird. Wenn "catch range" zu groß gewählt wird, besteht die Gefahr, daß versehentlich bis zum zweiten Maximum am anderen Ende des Histogrammes gesprungen wird. Sinnvolle Werte für "catch" sind 10 bis 60, je nach Kontrast des Bildes. Auch bei beliebigen Nachbarschaftsgrößen arbeitet die Funktion immer vollständig bis zum ROI-Rand.

Die Parameter "Left Start" und "Right Start" bestimmen, in welchem Grauwertebereich überhaupt nach einem Maximum gesucht wird. Hierbei ist zu beachten, daß für den Fall, daß nicht von 0 bis 255 gesucht wird, zunächst eine steigende Flanke gesucht wird, bevor mit der Maximumsuche begonnen wird. Hierdurch wird ausgeschlossen, daß abzuschneidende Bereiche am Anfang oder am Ende des gewünschten Grauwertebereiches als Maximum gefunden werden.

7.9.3.3. Eikvil, Taxt, Moen

Variables: <region_size> <small_window_size> <mean_diff_limit> <weight> <global_min> <global_max>

The pixels inside a small window 'S' of size ('small_window_size' x 'small_window_size', = "step size") are thresholded on basis of the clustering of the pixels inside a larger concentric window 'L' of size ('region_size' x 'region_size'). 'S' and 'L' slide across the image in steps equal to the side of 'S'. For all pixels inside 'L', a threshold 'T' is calculated to divide the pixels into two clusters. If the two estimated cluster means mu1 and mu2 are further apart than a limit, (mu2 - mu1 > 'mean_diff_limit' = "Distance Limit") the pixels inside 'S' are binarized using the threshold value 'T'. When (mu2 - mu1 < 'mean_diff_limit'), the pixels inside 'S' are all assigned to the class with the closest updated mean value, being it print or background.

'bin_method' is used to select the global binarization method which finds 'T'. Use 'bin_method' = OTSU or 'bin_method' = KITTLER_ILLINGWORTH. (cannot be selected in this version, defaults to Otsu method)

'weight' is used to calculate the updated mean values MU1 and MU2. For each small window 'S', the new values are caluculated as

| MU1 = 'weight' * MU1 + (1.0-'weight') * mu1

| MU2 = 'weight' * MU2 + (1.0-'weight') * mu2

'weight' = 1.0 means that the initial estimates for MU1 and MU2 are kept forever, while

'weight' = 0.0 means that the mean values

mu1 and mu2 of the two clusters in 'L' are used in the next step.

For extremely difficult images, a preprocessing step can be used on the image. Replace all pixel values higher than the value 'glob_max' by ' glob_max' itself, and similarly, replace all pixel values lower than 'glob_min' by 'glob_min'.

7.9.3.4. Yanowitz, Bruckstein (Pot. Surface)

Variables: <beta> <max-nof-iter> <threshold>

A potential surface passing through the image at local maxima of the gradient image is used as a thresholding surface. The gradient magnitude image is computed, using for example Sobel`s edge operators. This image is thresholded and thinned to one-pixel wide lines, to identify edge pixels. The original image is smoothed by a (3x3) mean filter to remove stochastic noise. A potential surface is constructedby an iterative interpolation scheme. The interpolation surface is made to pass through the edge pixels. An interpolation residual R(x,y) is calculated for each non-edge pixel, and the new pixel value P(x,y) at iteration n is calculated as

P[n](x,y) = P[n-1](x,y) + (beta * R[n](x,y)) / 4

Yanowitz and Bruckstein recommended to use 1.0 < 'beta' < 2.0 for fast convergence (over-relaxation). However, we found that by using 'beta' > 1.0, P(x,y) started to diverge after 5-10 iterations. So 'beta' <= 1.0 must be used, and 'beat' = 1.0 works well.

Next, the image is binarized using the thresholding surface. In the original algorithm, so-called "ghost" objects are removed by a validation step. This validation step is in a separate library function named 'remove_ghost'.

7.9.3.5. Parker

Variables: <region-size> <weight> <mean-limit> <stdev-limit>

Parker's method should normally not be used with other parameters than 'region-size', if any. The other parameters were included to manipulate with the internal tests in the algorithm, since some of these were obviously wrong in the original paper. More sensible values are given as default in this program. This method first detects edges, and then the interior of objects between edges are filled. First, for each pixel (x,y) in the input image Z, calculate

D(x,y) = min [Z(x,y)-Z(x_i,y_i)] , i=1,..,8

where (x_i,y_i), i=1,.., 8 are the 8 eight-connected neighbors of (x,y). Thus, the negative of the gradient in the direction of the brightest neighbor is found. Then 'D' is broken up in regions of size 'region-size' x 'region-size', and for each region, the sample mean and standard deviations are calculated. Both values are smoothed, and then bilinearly interpolated to give two new images 'M' and 'S', originating from the mean values and standard deviations, respectively. Then for all pixels (x,y), if M(x,y) >= 'mean-limit' or S(x,y) < 'stdev-limit', then the pixel is regarded as part of a flat region, and remains unlabeled. [In Parker's paper, the test is M(x,y) >= -1 or S(x,y) >= -1, which is fulfilled by all pixels, since S(x,y) is never negative.] Else, if D(x,y) < M(x,y) + 'weight' S(x,y), then (x,y) is labeled print; else, (x,y) remains unlabeled. The resulting binary image highlights the edges. This is followed by pixel aggregation and region growing steps to locate the remaining parts of the print objects. The following default values are used: 'region-size' = 16, 'mean-limit' = -1.0, 'stdev-limit' = 1.0, and 'weight' = -1.0.

7.9.3.6. Niblack (Stat. Threshold)

Variables: <region-size> <weight>

The idea of this method is to vary the threshold over the image, based on the local mean and local standard deviation. The threshold at pixel (x,y) is calculated as

T(x,y) = 'weight' * sigma(x,y) + mu(x,y)

where sigma(x,y) and mu(x,y) are the estimated standard deviation and mean value in a local neighborhood of (x,y) of size ('region_size' x 'region_size'). The value of 'weight' is used to adjust how much of the foreground object edges that are taken as a part of the object.

A recommended value for

'weight' is -0.2 for images with black foreground objects, and

'weight' = +0.2 for images with white foreground objects.

7.9.3.7. Nakagawa, Rosenfeld (Bimodal)

Variables: <region-size> <mean-diff-limit> <min-ratio> <max-ratio> <sdev-limit> <vtp-limit>

The method is a slight modification of Chow and Kaneko`s method. The result is returned in 'outband'. This method calculates a thresholding surface. The image is divided into windows of size ('region_size' x 'region_size'), and the histograms for each window are tested for bimodality. Each histogram is approximated by a mixture of two Gaussian distributions. Let mu1 and mu2 be the estimated mean values, and sigma1 and sigma2 be the estimated standard deviations of the two distributions. Also, let sigma_tot be the total standard deviation, and vtp be the valley-to-peak ratio. The bimodality test requires the following five criteria to hold:

(1) sigma_tot > 'sdev_limit'

(2) mu2 - mu1 > 'mean_limit'

(3) sigma1/sigma2 > 'min_ratio'

(4) sigma1/sigma2 > 'min_ratio'

(5) vtp < 'valley_to_peak_limit'

For each bimodal window, a threshold is calculated based on the mu_1, mu_2, sigma_1 and sigma_2 parameters of the mixture distribution.

Thresholds for the other windows are calculated on basis of the thresholds for the bimodal windows. The thresholds are first smoothed, and then interpolated to give a threshold surface, having a single threshold value for each image pixel. The image is binarized using the threshold surface.

7.9.3.8. Taxt, Flynn, Jain

Variables: <region-size> <small-window-size> <training-set-size>

Taxt, Flynn and Jain`s method divides the image into non-overlapping windows of size ('small_window_size' x 'small_window_size'). For each window, a larger concentric window of size ('region_size' x 'region_size') pixels. The histogram of each of the larger windows is approximated by a mixture of two Gaussian distributions. The parameters of the mixture are estimated using an expectation-maximization (EM) algorithm. In each small window, the pixels are classified using the quadratic Bayes'' classifier. A training set of 'training_size' pixels are picked on random, but edge pixels are avoided in the training set. The EM algorithm requires global start values for the estimated class means mu1 and mu2, and estimated standard deviations sigma1 and sigma2. These are obtained by k-means clustering of the whole input band. The EM algorithm also needs an initial estimate of the mixing weight pi, and pi = 0.5 is used.

7.9.3.9. White Rohrer, Method I, II, and Improved

(White and Rohrer I)

Variables: <nof-lookahead-pixels>

In their 1983 paper, White and Rohrer proposed two very different binarization methods. The first they called "Dynamic

threshold algorithm", which we call 'WR1' (White and Rohrer method I). The second they called "Integrated function

algorithm" ('WR2', (White and Rohrer method II) The 'lookahead' parameter gives the number of lookahead pixels

used in the biased running average that is used in deciding the threshold at each pixel location. Good values for

'lookahead' are 8 or (8 + Bildbreite).

(White & Rohrer II)

Variables: <activity-limit>, <max-value>, <mean-filter-size>, <search-vector-length>, <spot-label>, <min-obj-width>

White and Rohrer`s method II (Integrated function algorithm) uses a gradient-like operator called the activity on the image. Pixels with activity below 'activity_limit' are labeled '0'. The other pixels are further tested. If the Laplacian edge operator of the pixel is positive, the pixel is labeled '+', otherwise '-'. That way a three-level label-image is constructed, with legal pixel values '+', '0' and '-'. The idea is that in a sequence of labels, edges are identified as '-+' transitions or '+-' transitions. Object pixels are assumed to be '+' and '0' labeled pixels between a '-+' and '+-' pair. For each pixel to be classified, a search vector of length 'search_vec_len' for each search direction is centered on the pixel. The '-+' and '+-' must be inside the seach vector to be recognized. By using a low value on 'search_vec_len', only lines and small filled areas will be

captured. If 'spot_size_limit' > 1, then small '+'-labeled regions having less than 'spot_size_limit' pixels are relabeled as

'0'-regions.

By specifying 'activity_limit' = 0, Kitler and Illingworth`s method is used to set the activity threshold. An upper bound

for this value is specified by 'max_activity'. A lower limit on the distance between the '-+' and '+-' for pixels to be classified as object pixels is specified by 'distance_limit'. This can be used to eliminate the thinnest lines in 'inband'.

The first improvement suggested by Trier and Taxt [1] can be used in 'bin_wr2': (1) The input image is smoothed by a mean filter of size ('mean_size' x 'mean_size') to remove stochastic noise. To run the original White and Rohrer`s method,

'mean_size' = 1 must be used. Variations on how pixels are classified as 'print' or 'background' are selected though the 'mode' parameter: If 'mode' = WR_TWO_BY_TWO, the original approach is used. Two times two pixels are classified at a time, requiring that all four pixels are inside either horizontal or vertical object pixel sequences. The reasons for classifying (2 x 2) pixels at a time in the original implementation was partly to save computational time, partly to reduce noise. With faster computers, a more time-consuming algorithm may be allowed.

If 'mode' = WR_DOUBLE_VECTORS, then the idea is that a single pixel being part of an object pixel sequence is not enough. It has to have support from at least one of its neighbors. Either one of its vertical neighbors and the pixel itself have to be inside horizontal object pixel sequences or one of its horizontal neighbors and the pixel itself must be inside

vertical object pixel sequences to be recognized as object pixels. If 'mode' = WR_SINGLE_VECTOR, only a single search vector is used in each direction. If 'diagonal' >= 1, then the horizontal and vertical search directions are complemented with two diagonal search directions. If 'diagonal' == 0, then only the horizontal and vertical search directions are used.

(Improved White & Rohrer)

Variables: <activity-limit>, <max-value>, <mean-filter-size>, <spot-label>

This is an improved version of 'WR2'. Some of the switches allowed for 'WR2' have been removed, since the use of search vectors to locate print pixels in the three-level label image is abandoned in 'IWR'. The switches still in use have the same meaning as for 'WR2'. The following approach is used. First, all "'+'"-marked regions are labeled 'print' and "'-'"-marked regions are marked 'background'. Then, for each "'0'"-marked region, the number of "'-'" and "'+'" pixels that are 8-connected to the region is counted. If the number of "'+'" pixels is in majority, the "'0'" -marked region is labeled 'print',

otherwise 'background'. This approach prodces a lot of noise which can be seen as spurious print components, which must be removed by using the validation step (the '-v' option described earlier).

7.9.3.10. Lin. Ipol. Threshold (Statistics)

Local Binarization from KUIM image processing package.

7.9.3.11. Lin. Ipol. Threshold (Edge Based)

Local Binarization from KUIM image processing package.

7.9.3.12. Lin. Ipol. Threshold (Optimal)

Local Binarization from KUIM image processing package.

7.9.4. Printer Binarization

Multiple Threshold
Random

7.9.4.1. Fixed Mask (Multiple Threshold)

Bei dieser Multischwellen-Binärisierung wird das Grauwertbild - z. B. zur Druck-Vorbereitung - mit einer 4*4-Matrix abgetastet: Hellere Bildpunkte als der jeweilige Matrixwert werden zu Weiß gesetzt, dunklere zu Schwarz. Nach jeder kompletten Abtastung der 4*4-Matrix wird die Matrix um Ihre Breite verschoben. Damit entsteht ein Bild mit größeren Bildpunkten mit einer Grauwertauflösung von 16 Grauwerten, das bei genügend feiner Druckweise (z. B. 300 DPI eines Laserdruckers) zu einem 75 DPI Rasterbild führt und zu recht guten Ergebnissen eines Grauwertdruckes führen kann.

7.9.4.2. Random Mask

Mit der Random-Binärisierung kann ebenfalls eine Druck-Vorbereitung des Grauwertbildes durchgeführt werden. Hierbei wird mittels eines Random-Generators (Zufallszahlen) für jeden Bildpunkt eine neue Zufallszahl im Wertebereich [0..255] generiert, die als binäre Grenze für diesen einzelnen Bildpunkt benutzt wird.

7.9.5. Show Last Global Threshold

Bei globalen Binärisierungsfunktionen wird entweder eine Schwelle angegeben oder von der Funktion automatisch bestimmt. Im letzteren Fall kann es gewünscht sein, diese automatisch bestimmte Schwelle zu erfahren, z. B. um sie dann ohne Neuberechnung auf ähnliche Bilder anwenden zu können. Hierzu kann der letzte bestimmte globale Wert für die Grauwertschwelle abgefragt werden.

7.9.6. Remove Ghost Image

Bei den automatischen lokalen Binärisierungsfunktionen wird die lokale Schwelle oft anhand der Statistik einer bestimmten Nachbarschaft eines Bildpunktes ermittelt. Dabei kann es leicht zu fehlerhaften Kontrastbewertungen kommen, die dann zu sogennanten Geisterbildern führen, d. h. zu falsch binärisierten Bildstellen. In einem zweiten Schritt nach der Binärisierung können nun solche Fehlinterpretationen entfernt werden. Hierbei werden alle Stellen, in denen ein bestimmter Grauwertkontrast nicht vorhanden ist, auf den jeweiligen Hintergrund (schwarz oder weiß) gesetzt. Es muß zusätzlich eingegeben werden, in welcher Nachbarschaft die Kontrastsuche durchgeführt werden soll. Die Vorgehensweise ist dann folgendermaßen: Man nimmt das Original-Grauwertbild in den aktiven Bildspeicher, setzt das vorläufig binärisierte Bild in einen zweiten Bildspeicher, den man als "Second Image Buffer" deklariert, setzt Nachbarschaftsgröße und minimalen Kontrast in Grauwerten, und startet die Funktion.Hierbei muß entschieden werden, ob die weißen Bereiche die interessanten sind, d. h. die segmentierten, oder ob es die schwarzen Bereiche sind. Je nachdem muß die normale oder die invertierende Funktion gewählt werden.

7.9.7. Mark Ghost Image

Wenn nicht sicher ist, welche Schwellwerte bei der Ghost-Removal-Funktion verwendet werden muß, dann kann mit der Mark-Ghost-Funktion ein intermediate Bild erzeugt werden, das nicht völlig binärisiert ist, sondern in dem die unterschiedlichen Stufen des Ghost-Removals als Grauwerte dargestellt sind. Man kann dann im nächsten Schritt mit einer interaktiven Binärisierung den optimalen Schwellwert finden.

7.9.8. Use Threshold Surface

In einigen der lokalen Binärisierungsfunktionen wird eine sogenannte Threshold Surface bestimmt. Das ist eine Grauwertebene, die für jeden Pixel im Bild eine andere Schwelle angibt, d. h. Pixel, die heller als die jeweiligen lokalen Grauwert der "Threshold Surface" sind, werden zu "255" gesetzt, Pixel, die dunkler sind, werden zu "0" gesetzt. Um diese interessante Funktion für den Fall zu verallgemeinern, daß eine Threshold Surface auf irgendeine andere Weise gewonnen oder erzeugt wurde, wird sie hier als spezielle Einzelfunktion zur Verfügung gestellt. Vorgehensweise ist wie üblich: Das Originalgrauwertbild wird in den aktuellen Bildspeicher gesetzt, das "Second Source"-Bild bekommt die "Threshold Surface", dann wird die Funktion vom aktuellen Bild mit dem Originalbild aus ausgeführt.


7.10. Morphology

Erosion
Dilatation
Opening
Closing
------B/W only--------
Outline
Skeleton
Pruning(complete)
Pruning (N)
Remove Single Pix
Remove 2*2 Clust.

Remove Small Objects
-----Segmentation-----
Distance Mapping ->
Watershed ->

Labeling

Mark Local Peaks

Region Growing

Extrapolate Null Region

Das Ziel einer Bildvorverarbeitung ist normalerweise die Segmentierung bestimmter Merkmale, Texturen oder Objekte, die dann mit anderen Verfahren klassifiziert oder vermessen werden können. Hierbei dient die Binärisierung oft der Reduzierung auf die wesentlichen Merkmale, so daß Auszählen, Vermessung oder Vergleich mit anderen Merkmalen möglich wird. Oft ist jedoch das Ergebnis einer Binärisierung alles andere als optimal: Rauschen, schlechte Beleuchtung, sich berührende Objekte oder andere Einflüsse können die weitere Auswertung durch falsche Vordergrund/Hintergrund-Klassifizierung sehr erschweren. Mit Hilfe von morphologischen Operationen können solche Bilder entweder vorher oder nachher überarbeitet werden. Die morphologischen Funktionen sind dabei nicht auf Binärbilder beschränkt: Die auf der "Erosion" oder "Dilatation" basierenden Funktionen können auch auf Grauwertbilder angewandt werden. Hierzu müssen in der Dialogbox die Schalter "Gray" oder "Black/White" gesetzt werden. Wichtig bei vielen morphologischen Funktionen ist die Wahl, welche Art der Nachbarschaft oder Kernelgröße zur Berechnung herangezogen werden soll. Im einfachsten Fall ist dies die Kernelgröße 3*3, die dann entweder die 4er-Nachbarschaft für eine eher kreisförmige, d. h. isotrope Wirkung oder die 8er-Nachbarschaft für eine quadratische Auswirkung. Bei größeren Kernels (Structuring Elements) kann dann die Nachbarschaft deutlich genauer gewählt werden. Hier stehen die Möglichkeiten Square, Diamond und Circle zur Verfügung. Square ist wieder die quadratische Nachbarschaft beliebiger (ungerader Größe), Diamond ist ein auf der Spitze stehendes Quadrat und mit der Circle-Einstellung wird eine beinahe kreisförmige Anwendung durch Hintereinanderschalten von Square und Diamond-Funktionen erreicht. Tatsächlich ist hier die Auswirkung eher achteckig. Zur Anwendung in ausschließlich horizontaler oder vertikaler Richtung wurden zusätzliche Strukturelemente implementiert. Zusätzlich kann ein 1-dimensionales Structuring-Element in beliebiger Richtung angegeben werden. Die Größe des "Structuring Element", d. h. die Größe der berücksichtigten Nachbarschaft, kann von 3..n beliebig eingestellt werden. Intern wird bei größeren Nachbarschaften entweder mit größerem Kernel oder mit Hilfe von Iterationen kleinerer Kernel gearbeitet, je nach Geschwindigkeitsvorteil. Einige der internen Funktionen sind MMX- bzw. SSE2-optimiert.

Da einige der Funktionen des Morphologie-Menüs (Skelett, Watershed, usw.) nur für weiße Objekte auf schwarzem Hintergrund implementiert wurden, muß das Bild eventuell mit der Funktion "Invert" aus dem "Arithmetik"-Menü invertiert werden.

7.10.1. Erosion

Bei der Erosion geht es darum, helle Objekte auf das wesentliche zu reduzieren und kleine störende helle Bildpunkte oder Bildflächen zu entfernen. Außerdem können z. B. durch die Binärisierung fehlerhaft geschlossene Kurven oder verbundene oder sich berührende Objekte aufgetrennt werden. Damit eignet sich diese Funktion sehr gut zur direkten Vorbearbeitung für eine Objektzählung.

Die Funktion kann - je nach Einstellung der Gray/Black/White-Schalters - auf binärisierte Bilder oder auf Grauwertbilder angewandt werden. Bei der Einstellung "Black/White" gelten alle Werte, die von Null verschieden sind, als 255 und werden zu 255 gesetzt. Bei Einstellung "Gray" wird ein Rangordnungsfilter benutzt, der den jeweils mittleren Pixel auf den kleinsten in der Nachbarschaft gefundenen Grauwert setzt.
Die Funktionsweise dieses Operators ist einfach: Je nach Nachbarschaftseinstellung, die über die Art des Structuring Elements definiert ist, wird die direkte (4- oder 8-)-Nachbarschaft jedes Punktes überprüft. Wenn nun auch nur ein einziger Punkt dieser Nachbarschaft gleich Null ist, heißt dies, daß der Punkt auf einer Kante liegt und wird ebenfalls zu Null gesetzt. Objekte und Linien werden immer schlanker oder dünner, bis sie an den dünnsten Stellen aufreißen. Einzelpunkte verschwinden. Bei der 4-Nachbarschaft werden nur Bildpunkte berücksichtigt, die direkt an den untersuchten Bildpunkt angrenzen (dies entspricht der Einstellung "Diamond" mit einer Größe des Structuring Element von 3):

 | x |
x | o | x
 | x |

Damit ist die hiermit ausgeführte Erosion nicht so stark wie die 8-Nachbarschafts-Erosion, bei der alle Nachbarn getestet werden (dies entspricht der Einstellung "Square" mit einer Größe des Structuring Element von 3):

x | x | x
x | o | x
x | x | x

Ein kleines Beispiel einer relativ dünnen schrägen Linie zeigt den Unterschied:

x | x | x | x | x |  |  |  |
 | x | x | x | x | x |  |  |
 |  | x | x | x | x |  |  |
 |  |  | x | x | x | x |  |
 |  |  |  | x | x | x |  |
 |  |  |  |  | x | x | x |
 |  |  |  |  |  | x | x | x
 |  |  |  |  | x | x | x |
 |  |  |  | x | x | x |  |
 |  |  |  |  | x | x | x |

Bei der 4-Nachbarschaftsoperation erhält man nach der Erosion:

o | o | o | o | o |  |  |  |  |  |  |  |  |  |  |  |
 | o | x | x | x | o |  |  |  |  |  | x | x | x |  |  |
 |  | o | x | x | o |  |  |  |  |  |  | x | x |  |  |
 |  |  | o | x | x | o |  |  |  |  |  |  | x | x |  |
 |  |  |  | o | x | o |  |  |  |  |  |  |  | x |  |
 |  |  |  |  | o | x | o |  |  |  |  |  |  |  | x |
 |  |  |  |  |  | o | x | o | = | > |  |  |  |  |  | x
 |  |  |  |  | o | x | o |  |  |  |  |  |  |  | x |
 |  |  |  | o | x | o |  |  |  |  |  |  |  | x |  |
 |  |  |  |  | o | o | o |  |  |  |  |  |  |  |  |

Bei der 8-Nachbarschaftsoperation erhält man nach der Erosion:

o | o | o | o | o |  |  |  |  |  |  |  |
 | o | o | x | o | o |  |  |  |  |  | x |
 |  | o | o | x | o |  |  |  | = | > |  | x
 |  |  | o | o | o | o |  |  |  |  |  |
 |  |  |  | o | o | o |  |  |  |  |  |
 |  |  |  |  | o | o | o |  |  |  |  |
 |  |  |  |  |  | o | o | o |  |  |  |
 |  |  |  |  | o | o | o |  |  |  |  |
 |  |  |  | o | o | o |  |  |  |  |  |
 |  |  |  |  | o | o | o |  |  |  |  |

Man sieht, daß dünne Linien besser mit der "vorsichtigeren" 4-Nachbarschafts-Erosion behandelt werden sollten. Die Erosionsfunktion kann mehrfach hintereinander ausgeführt werden, um ihren Effekt zu verstärken. Durch Eingabe der Größe des Structuring Element (SE) kann die Iterationszahl der intern direkt nacheinander ausgeführten Erosionsschritte bestimmt werden: Bei einem SE von 3 wird die Funktion einmal ausgeführt, bei einem SE von 5 wird sie zweimal ausgeführt und erfaßt dabei die 5-er Nachbarschaft eines jeden Pixels, usw. Beim "Circle"-Structuring Element wird abwechselnd mit "Square" und "Diamond" gearbeitet, um annähernd eine kreisförmige Auswirkung zu erreichen. Streng genommen ist das eher eine achteckige Auswirkung.

7.10.2. Dilation

Die Dilatation ist das Gegenteil der Erosion: helle Objekte und Linien werden immer dicker und fülliger, auseinander liegende helle Objekte verbinden sich, Löcher schließen sich.

Die Funktion kann ebenfalls auf Grauwertbilder und binärisierte Bilder angewandt werden, je nach Einstellung der Gray/Black/White-Schalter. Bei Black/White-Einstellung gelten alle Werte, die von Null verschieden sind, als 255 und werden zu 255 gesetzt. Bei Schalterstellung "Gray" wird der jeweils mittlere Pixel auf den größten gefundenen Grauwert der jeweiligen Nachbarschaft gesetzt.

Die Funktionsweise dieses Operators ist einfach: Die direkte (4- oder 8-)-Nachbarschaft jedes Punktes wird überprüft. Bei Gray-Schaltung wird der Punkt auf den Grauwert des hellsten Nachbarn gesetzt. Anders bei Black/White-Schaltung: wenn der Bildpunkt ungleich Null ist, wird er auf 255 gesetzt. Wenn auch nur ein einziger Punkt um einen Bildpunkt, der den Wert Null hat, ungleich Null ist, wird angenommen, daß der Punkt an einer Kante liegt und er wird auf 255 gesetzt. Helle Objekte und Linien werden immer dicker und fülliger, bis getrennte Objekte verschmelzen. Löcher, die in größeren Objekten liegen und den Wert Null haben (für Black/White-Stellung), verschwinden.

Die (4- oder 8-)-Nachbarschaft, d. h. das Structuring Element ist bei der Dilatation ebenso wie bei der Erosion definiert: Bei der 8-Nachbarschaft ist die Expansion eines Objektes sehr viel stärker und außerdem bleiben Ecken scharfkantig. Bei der 4-Narchbarschaft werden Ecken leicht abgerundet. Als Beispiel soll das folgende Objekt untersucht werden:

 | x | x | x | x | x
 | x | x | x | x | x
 | x | x | x | x | x
x |  | x | x | x | x
 |  | x |  |  |
 |  | x |  |  |

Bei der 4-Nachbarschaftsoperation erhält man das folgende Ergebnis der Dilatation:

 |  | 1 | 1 | 1 | 1 | 1 |  |  |  |  |  | x | x | x | x | x |
 | 1 | x | x | x | x | x | 1 |  |  |  | x | x | x | x | x | x | x
 | 1 | x | x | x | x | x | 1 |  |  |  | x | x | x | x | x | x | x
 | 1 | x | x | x | x | x | 1 | = | > |  | x | x | x | x | x | x | x
1 | x | 1 | x | x | x | x | 1 |  |  | x | x | x | x | x | x | x | x
 | 1 | 1 | x | 1 | 1 | 1 |  |  |  |  | x | x | x | x | x | x |
 |  | 1 | x | 1 |  |  |  |  |  |  |  | x | x | x |  |  |
 |  |  | 1 |  |  |  |  |  |  |  |  |  | x |  |  |  |

Bei der 8-Nachbarschaftsoperation erhält man das folgende Ergebnis der Dilatation:

 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |  |  |  | x | x | x | x | x | x | x
 | 1 | x | x | x | x | x | 1 |  |  |  | x | x | x | x | x | x | x
 | 1 | x | x | x | x | x | 1 |  |  |  | x | x | x | x | x | x | x
1 | 1 | x | x | x | x | x | 1 | = | > | x | x | x | x | x | x | x | x
1 | x | 1 | x | x | x | x | 1 |  |  | x | x | x | x | x | x | x | x
1 | 1 | 1 | x | 1 | 1 | 1 | 1 |  |  | x | x | x | x | x | x | x | x
 |  | 1 | x | 1 |  |  |  |  |  |  |  | x | x | x |  |  |
 |  | 1 | 1 | 1 |  |  |  |  |  |  |  | x | x | x |  |  |

Auch hier muß abgeschätzt werden, welcher Effekt der Gewünschte ist. Die Dilatationsfunktion kann mehrfach hintereinander ausgeführt werden, um ihren Effekt zu verstärken. Durch Eingabe der Größe des Structuring Element (SE) kann die Iterationszahl der intern direkt nacheinander ausgeführten Dilatationsschritte bestimmt werden: Bei einem SE von 3 wird die Funktion einmal ausgeführt, bei einem SE von 5 wird sie zweimal ausgeführt und erfaßt dabei die 5-er Nachbarschaft eines jeden Pixels, usw. Beim "Circle"-Structuring Element wird abwechselnd mit "Square" und "Diamond" gearbeitet, um annähernd eine kreisförmige Auswirkung zu erreichen. Streng genommen ist das eher eine achteckige Auswirkung.

7.10.3. Opening

Durch Nacheinanderausführen von Erosion und Dilatation verschwinden kleinere, helle Bildbereiche, ohne daß sich andere Objekte ändern. Helle Objekte, die sich nur knapp berühren, trennen sich. Die Funktion "Opening = Öffnen" stellt diese Kombination zur Verfügung. Mit der Größe des Structuring Elements wird eingestellt, wieviele direkt aufeinanderfolgende Erosionen und wieviele danach erst ausgeführte Dilatationen folgen sollen.

7.10.4. Closing

Im Gegensatz zum Opening werden durch Ausführung von Dilatation und anschließender Erosion kleinere schwarze Bildbereiche gelöscht und durch geringe Zwischenräume getrennte helle Objekte verwachsen miteinander. Die Funktion "Closing = Schließen" stellt diese Kombination zur Verfügung. Mit der Größe des Structuring Elements wird die Anzahl die direkt aufeinanderfolgenden Dilatationen und danach die ebenso direkt aufeinanderfolgenden Erosionen festgelegt.

7.10.5. Top Hat

Die Funktion "Top Hat" ist die Kombination der Einzelfunktionen:

Ergebnisbild = Originalbild - Opening(Originalbild)

= Originalbild - Dilatation(Erosion(Originalbild))

Diese Funktion ist nicht im Menü implementiert, sie muß manuel oder per MACRO-Programm ausgeführt werden.

7.10.6. Well

Die Funktion "Well" ist die Kombination folgender Einzelfunktionen:

Ergebnisbild = Closing(Originalbild) - Originalbild

= Erosion(Dilatation(Originalbild)) - Originalbild

Diese Funktion ist nicht im Menü implementiert, sie muß manuel oder per MACRO-Programm ausgeführt werden.

7.10.7. Outline

Die "Outline"-Funktion erzeugt bei binären Bildern eine Umrandung der hellen Gebiete mit der Breite eines Pixels. Die Funktionsweise ist folgende: Bildpunkte, die in der 4-Nachbarschaft einen Bildpunkt mit dem Pixelwert Null besitzen, behalten ihren alten Wert bei. Alle anderen Bildpunkte erhalten den Wert Null.

7.10.8. Skeleton

Diese Funktion sucht bei binären Bildern die Skelettlinie eines Objektes. Die Skelettlinie liegt etwa in der Mitte eines Objektes und deutet die grundsätzliche Objektform möglichst genau an. Diese Funktion ermöglicht damit eine anschließende Vektorisierung von Objekten. Sie wirkt dabei ähnlich wie eine fortlaufende Erosion. Der Unterschied liegt darin, daß Objekte an dünnen Stellen nicht getrennt werden, d. h. die Funktion erodiert an Stellen, die nur einen Bildpunkt breit sind, nicht mehr weiter. Es stehen verschiedene Algorithmen zur Skelettisierung zur Verfügung, die sich in der Arbeitsgeschwindigkeit, aber auch im Ergebnis unterscheiden. Aufgrund der unterschiedlichen Arbeitsweise mit Abtragen der Randpixel in 4 Zyklen von vier Seiten nacheinander (Normalfunktion und Rosenfeld-Funktion) oder mit Erodieren von allen Seiten gleichzeitig (Hilditch) können sich die Skelettlinien um wenige Pixel unterscheiden. Die Hilditch-Funktion benötigt die kürzeste Zeit. Diese Funktion ist zusätzlich auch noch dual-threaded ausgeführt und läuft auf einem Dual-Prozessorsystem beinahe doppelt so schnell ab. Die Funktion nach Zhang und Suen läßt Linien mit einer Breite stehen, die größer als 1 sein kann. Die Lee und Chen-Funktion basiert auf der letzteren und korrigiert in einem letzten Schritt diese etwas zu dicken Skelettlinien. Diese beiden letzgenannten Funktionen sind nicht optimiert und daher recht langsam.

7.10.9. Pruning

Beim Vorgang der Skelettierung entsteht neben den gewünschten Mittellinien eines Objektes oft auch eine mehr oder weniger große Anzahl von unerwünschten Seitenarmen. Dies kommt durch Ecken oder Rauhigkeiten der Ausgangsobjekte, die beim Skelettieren als relevante Strukturecken erkannt wurden. In gewissem Maße kann dies durch die vorherige Anwendung des Opening-Operators mit 4-er Nachbarschaft verhindert werden, die in der Regel ja die Kanten etwas ausgleicht. Speziell zur Entfernung von Seitenarmen ist jedoch die Pruning-Funktion entwickelt worden. Hierzu muß die maximale Länge der zu entfernenden Seitenarme angegeben werden. Durch eine spezielle Art der Erosion werden dann alle Skelettenden abgeschnitten und anschließend nur die Seitenarme, die eine größere als die angegebene Länge besitzen, wieder restauriert.

Pruning (complete)

1-Pixel dicke Auswüchse und Seitenarme eines Objektes werden iterativ vollständig gelöscht. Diese Funktion ist nur eine vorläufige Version und funktioniert z. Zt. noch nicht mit 8-connected Ecken oder Strukturen.

7.10.10. Remove Single Pixel / Remove 2*2 Clusters

Entfernen von Einzelpixeln und kleinen Pixelclustern bis zur Größe 2*2 Pixel. Diese Funktionen sind sehr nützlich zum "Säubern" eines Bildes nach einer Binärisierung. Es werden helle Pixel (Pixelwert 255) entfernt. Notfalls muß zuvor die "Invert-ROI"-Funktion angewandt werden.

Mit einer weiteren Funktion, der "Remove Small Objekts"-Funktion, können nun auch Objekte beliebiger Größe entfernt werden. Hierbei wird die Grenzgröße in Pixelflächen eingegeben.

7.10.11. Distance Mapping

Berechnung der Euclidian Distance Map oder der 4- oder 8-Connected Map von binärisierten Bildern. Hierbei wird die kürzeste Entfernung eines Objektpunktes vom Rand des Objektes als Grauwert dargestellt. Randpunkte selbst bekommen den Pixelwert 1, die Nachbarn der Randpunkte den Pixelwert 2, usw. Mit Hilfe dieser Funktion lassen sich zusammen mit der Watershed-Funktion z. B. berührende oder überlappende Objekte trennen. Da bei kleinen Objekten die hier dann vorkommenden sehr dunklen Grauwerte oft nicht gut sichtbar sind, ist es sinnvoll, vor der Ausführung der Funktion eine andere Look-Up-Table-Belegung zu wählen, z. B. "First-16", die den ersten 16 Grauwerten deutlich unterscheidbare Farben zuordnet. Es stehen drei unterschiedliche Nachbarschaftsbehandlungen zur Verfügung, entweder die 4er Nachbarschaft, die 8er Nacbarschaft, oder die euklidisch optimierte Funktion.

7.10.12. Watershed - Segmentierung

Zur Trennung von Objekten, die sich nach einer Binärisierung berühren oder überlappen, kann die Watershed-Segmentierung verwendet werden. Die Idee, die hinter dieser Methode steckt, besagt, daß man sich das Bild als Grauwertgebirge vorstellt, bei dem die Objekte Senken darstellen. Wenn Wasser auf dieses Grauwertgebirge gegossen wird, so wird es von allen Bergen und Wasserscheiden, die jeweils die Zwischenräume zwischen benachbarten Objekten darstellen, herunterfließen und sich in den Senken, den Objekten, sammeln. Die Vorgehensweise zur Segmentierung ist wie folgt:

  • Man nehme das Originalbild und sichere es auf einem zweiten Bildspeicher.

  • Binärisierung des Bildes, Objekte sind weiß und berühren sich teilweise. Diese sollen nun mit dem folgenden Funktionsablauf getrennt werden.

  • Erstellung der Euclidian Distance Map (4er Nachbarschaft hat sich dabei als sinnvoll erwiesen)

  • Ergebnis Invertieren. Nun hat man ein helles Bild mit den Objekten als etwas dunklere Senken.

  • Ausführen der Watershed-Funktion (8er Nachbarschaft, wenn die Objekte später mit der Objekt-Suchfunktion klassifiziert werden sollen, da diese Funktion auch mit der 8er Nachbarschaft arbeitet)

  • Das Ergebnisbild wird Binärisiert mit der festen Schwelle (Threshold) von "1". Man erhält ein weißes Bild mit einem Netz von schwarzen Wasserscheiden (Trennungslinien).

  • Schließlich wird die logische "AND"-Funktion mit dem binärisierten Originalbild und dem Ergebnisbild ausgeführt. Die schwarzen Wasserscheiden trennen die sich berührenden oder überlappenden Objekte.

Gleichzeitig mit der Trennung an den Wasserscheiden werden mit der Watershed-Funktion alle gefundenen Objekte segmentiert: sie erhalten einen unterschiedlichen Grauwert. Dies erkennt man, wenn man nach der Ausführung der Watershed-Funktion nicht binärisiert sondern eine farblich stark unterscheidende Look-Up-Table läd. Wenn der Schalter "Not at Boundary" gesetzt wird, dann werden Wasserscheiden, die die ROI-Umrandung berühren, nicht berücksichtigt. Es werden dann keine Objekte getrennt, die die ROI-Umrandung berühren. Die Watershed-Funktion benötigt relativ viel Speicherplatz auf dem Heap-Speicher, besonders in der 8er Nachbarschafts-Ausführung. Es empfiehlt sich dann, eine kleinere ROI-Größe zu wählen oder auch auf die 4er Nachbarschaft auszuweichen und später eine Erosion auszuführen, die die Objekte dann bis auf die 8er Nachbarschaft voneinander trennt. Die Funktion benötigt relativ viel Zeit und kann mit der ESC-Taste abgebrochen werden. Nach Abbruch durch den Benutzer oder durch Speichermangel muß der benutzte Speicher an das System zurückgegeben werden. Die Watershed-Funktion wurde aus dem Khoros-Bildverarbeitungssystem übernommen.

7.10.13. Labeling

Diese Funktion dient dazu, den Objekten eines binärisierten Bildes fortlaufend von oben nach unten und von links nach rechts unterschiedliche Grauwerte zuzuordnen. Das Objekt oben links in der ROI erhält den Pixelwert 1. Die Objekte werden dabei je nach Angabe der Nachbarschaft (4er oder 8er) als getrennt angesehen.

7.10.14. Mark Local Peaks

Mit dieser Funktion können alle lokalen Maxima im Bild bestimmt mit Einzelpixeln des Grauwertes "255" hervorgehoben werden. Im Falle eines gleichmäßigen hellen Plateaus wird der Schwerpunkt desselben bestimmt und mit einem einzelnen Pixel markiert.

7.10.15. Region Growing

Diese Funktion ermöglicht eine Art Füllen von Grauwertregionen. Hierzu muß interaktiv mit dem Fadenkreuz ein Punkt angewählt werden. In dessen Nachbarschaft (Größe einstellbar) wird dann ein sogenannter "Activity Level" bestimmt, der dann mit Hilfe der zusätzlich angegebenen Schwelle entscheidet, bis zu welchen Grauwerten die Region gilt und damit gefüllt wird. Achtung: dies ist eine vorläufige Funktion.

7.10.16. Extrapolate Null Region

Mit dieser Funktion können sogenannte NULL-Regions, d. h. Regionen mit dem Grauwert "0" sukzessive von den Rändern her gefüllt werden. Hierbei werden die Mittelwerte aller von Null verschiedenen Randgrauwerte der 3*3-er oder der 5*5-er Nachbarschaft eines jeden schwarzen Pixels als neuer Grauwert benutzt. Bei mehrmaligem Ausführen kann damit eine Null-Region komplett gefüllt werden und erhält mehr oder weniger gute, d. h. weiche Grauwertübergänge. Achtung: dies ist eine vorläufige Funktion.


7.11. 3D-Processing

*7.11. 3D-Processing (Im 3D/Sequence-Zusatzmodul)

Mit diesem picCOLOR Zusatzmodul wird die Bearbeitung von 3-dimensionalen Bildern ermöglicht. 3-dimensionale Bilder sind räumliche Bilder, die z. B. über Verfahren der Tomographie (Computer-Tomographie CT oder Magnet-Resonanz-Tomographie MR oder NMR) oder auch durch Schnittbildaufnahmetechnik mit dem Mikroskop gewonnen werden (Durchfokussieren). Das Modul ist in erster Linie zur Bearbeitung der 3-dimensionalen Bilder im Sinne der digitalen Bildbearbeitung ausgelegt. Es werden jedoch auch einige Funktionen zur anschaulichen graphischen Darstellung der 3-dimensionalen Bilder bereitgestellt. Neben den im folgenden aufgeführten Funktionen können weitere Funktionen auf Wunsch ins Programm aufgenommen werden.

Es ist z. Zt. nicht vorgesehen, im 3D-Bild Regions of Interest (ROI‘s) zu definieren. Ein 3D-Bild sollte immer gerade so groß definiert werden, daß der komplette Bildinhalt bearbeitet werden kann. Weitere grundsätzliche Besonderheiten von 3D-Bildern und außerdem zu Sequenz-Bildern findet man unter dem folgenden Link:

*7.11.1. / 7.12.1. Einleitung 3D/Sequenz

(Unter diesem Link findet man genauere Erklärungen zur Philosophie von 3D-Bildern und Sequenzen im picCOLOR-Programm.)

*7.11.2. / 7.12.2 Funktionsübersicht:
Diese Funktionsübersicht für 3D-Funktionen sowie für Sequenzverarbeitungsfunktionen ist sicherlich nicht vollständig, da praktisch täglich neue Funktionen implementiert werden.

Define 3D-Image/Sequenz

Definieren eines 3D-Bildspeichers mit x-, y- und z-Ausdehnung sowie eventuell der internen Pixeltiefe. Hierbei ist zu beachten, daß 3D-Bilder eine enorme Speichermenge benötigen können. So hat z. B. ein 512*512*512 Pixel großes 3D-Bild einen Speicherbedarf von 128 MBytes, ein 1024*1024*1024 Pixel großes 3D-Bild sogar 1 GByte! Es können gundsätzlich mehrere 3D-Bilder definiert werden, die dann allerdings die gleiche Größe aufweisen müssen.

  • Set x-size

  • Set y-size

  • Set z-size (oder Anzahl Bilder/Sequenz)

  • Allocate 3D/Sequence-Buffer

  • Deallocate 3D-Buffer

Darstellung von 3D-Bildern oder Sequenzen

  • Videoplayer für 3D-Bild oder Sequenz

  • Pixelinspektionsfunktion für xyz-Koordinaten und Grauwert.

  • Auswahl aus einer Serie verkleinert dargestellter Schnittbilder

  • Anzeige von xy-, yz- oder zx-Schnitt eines 3D-Bildes

  • Anzeige von xy-, xt-, yt-Schnitt einer Sequenz (t=time)

Bildübernahme von 3D-Bildern und Sequenzen

  • Interleave (Delay) Factor für langsamere Aufnahmen bis zu 1 Bild / Stunde (nur picCOLOR V2.17 FrameGrabber)

  • Benutzung des Sequenzspeichers als unendlicher Ring-Speicher

  • Wahl interner oder externer Synchronisation

  • Zyklisches scannen von bis zu vier Bildebenen/Kameras zur Farbbild- oder Stereo-Aufnahme

  • Einzelbildaufnahme (Single Shot) mit Mausklick

  • Kontinuierliche Sequenzaufnahme

  • Aufnahme im Interlaced- oder im Noninterlaced-Modus (für schnelle Bewegungen)

  • Aufnahme von Teilbildern durchgescannter Kameras (1/2, 1/3, 1/4 Bildstreifen, partial scan)

  • Einlesen eines 3D-Schnittbildes mit Videokamera und Mikroskop. Hierzu kann z. B. auch ein Mikroskop-Stepper-Motor angesteuert werden, um die Bildübernahme von Fokusserien automatisch zu handhaben.

  • Aufnahme von Bildsequenzen als Video-Stream direkt auf die Festplatte

Ein- und Ausgabe auf Festplatte
Als Speicherformat stehen alle im Basisprogramm implementierten Bildformate zur Verfügung. In der Regel wird man das bekannte TIF-Format oder das bei den großen Datenmengen sehr sinnvolle, da stark komprimierende JPEG-Format benutzen. Eine Kompression auf 10 bis 20% der ursprünglichen Datenmenge ist bei immerhin noch kaum sichtbarer Bilddegradierung möglich.

  • Lade Sequenz oder 3D-Bild von Festplatte (in Einzelbildern)

  • Speichere Sequenz oder 3D-Bild auf Festplatte (in Einzelbildern)

  • Lade Video-Stream von der Festplatte

  • Speichere Video-Stream auf die Festplatte

Sequenzverarbeitungsfunktionen:

  • Kopiere xy, xt, yt-Schnittbild vom normalen 2D-Bildspeicher in den Sequenzspeicher und zurück

  • Arithmetische Funktionen mit einer Sequenz oder mit zwei Sequenzen:

  • - Invertieren

  • - Addieren oder Subtrahieren einer Konstanten

  • - Multiplizieren einer Konstanten

  • - Kopieren einer Sequenz in einen anderen Sequenzspeicher

  • - Logische Funktionen zwischen zwei Sequenzen

  • - Arithmetische Funktionen mit zwei Sequenzen

  • Rotieren einer Sequenzfolge im Ring-Speicher

  • Mittelwertbildung über mehrere Bilder einer Sequenz

  • Sequenz-Binärisierung:

  • - Threshold

  • - Band (lower and upper threshold)

  • Weiterhin können alle 2-dimensionalen Funktionen aus dem picCOLOR-Programm zur Sequenzverarbeitung eingesetzt werden. Diese können über ein MACRO-Programm automatisch oder halbautomatisch ablaufen.

3D-Verarbeitungsfunktionen:

3D-Test

Einfache Testbilder für Sequenzen oder 3D-Bilder:

  • Laufender Punkt

  • Movie Clip, d. h. eine Art Uhr mit laufendem Zeiger und der Bildnummer

3D-Geometry

Einfache geometrische Funktionen von 3D-Bildern:

  • Spiegeln an einer der drei Achsen

3D-Histogram Modify

Einfache Funktionen zur Histogramm-Modifikation von 3D-Bildern:

  • Histogram Modify

  • Scale Histogram

3D-Arithmetics

Einfache arithmetische Funktionen mit einem 3D-Bild:

  • Clear Image

  • Add Constant

  • Sub Constant

  • Mul Constant

  • Div Constant

  • Copy Active Image -> Destination Image

  • Logische Funktionen zwischen zwei 3D-Bildern (AND, OR, XOR usw.)

  • Arithmetische Funktionen mit zwei 3D-Bildern (MAX, MIN, SUB, ADD usw.)

3D-Filters

Einfache 3*3*3- oder 5*5*5-Nachbarschaftsfilter mit 3D-Bildern:

  • Laplace Ultra

  • Sharpen Image (Laplace + x%Original), medium and strong

  • Sobel Hz (in z-Richtung)

  • Average 3*3*3

  • Gauss 3*3*3

  • Rank/Median 3*3*3 und 5*5*5

3D-Frequency

Umwandlung eines 3D-Bildes in den Frequenzraum mittels 3D-FFT oder 3D-Hartley. Filterung im Frequenzraum über verschiedene Filterfunktionen (z. Zt. Low/High/Band-Pass). Rückwandlung in den Ortsbereich.

  • 3D-FFT / IFFT

  • Hamming-Filter

  • Shift DC

  • Spectrum: Power / Phase / Realteil / Imaginärteil

  • Filter: Low / High / Band-Pass

  • Arithmetic: Clear 3D-FFT / Add Complex Constant / Mul Complex Constant / Conj.-Complex / Inverse Complex, Add complex images / Sub complex images / Mul complex images / Div complex images

  • Inverse Filter / Wiener Filter

  • CrossCorrelation of two complex images / AutoCorrelation

  • Build Optical Transfer Function (OTF) (Optische Transferfunktion eines Licht-Mikroskopes)

  • Shift-DC (DC-Anteil in der Bildmitte oder in der vorderen linken oberen Ecke)

3D-Binary

Einfache Binärisierungen eines 3D-Bildes:

  • Threshold

  • Band Threshold

3D-Morphology

Einfache morphologische Operationen mit 3D-Bildern:

  • Erosion 3*3*3 oder 5*5*5

  • Dilatation 3*3*3 oder 5*5*5

  • Rank 3*3*3 oder 5*5*5 (u.a. für Median-Filter)

3D-Texture

Einfache Textur-Segmentierungsfunktionen für 3D-Bilder.

Hier sid noch keine Funktionen implementiert.

3D-Vermessungsfunktionen:

  • 3D-Volumenbestimmung binärisierter Bilder (über MACRO-Programm)


7.11.1. 3D-Introduction

*7.11.1. / 7.12.1. Einleitung 3D/Sequenz
Die Auswertung von Bewegungssequenzen und von 3D-Bildern ist ein ganz besonders wichtiger und vielseitiger Teilbereich der digitalen Bildverarbeitung. Wie ist es jedoch zu erklären, daß 3D-Modul und Sequenz-Modul zu einem einzigen picCOLOR-Zusatzmodul zusammengelegt wurden? Was hat schließlich z. B. ein 3-dimensionales Magnetresonanz-Tomographie-Schnittbild (MR) oder Computer-Tomographie-Schnittbild (CT) eines menschlichen Kopfes mit einem schnellen Bewegungsablauf, z. B. im Sport gemeinsam? Nun - die Erklärung ist sehr einfach: ein 3D-Bild kann man sich als Serie von 2-dimensionalen Schnittbildern vorstellen. Genau dies passiert ebenfalls z. B. beim Durchfokussieren eines durchsichtigen Objektes unter einem Mikroskop: man sieht immer einen einzigen Schnitt scharf - alle anderen Schnitte verschwinden (mehr oder weniger), da sie außerhalb der Fokusebene zu liegen kommen. Man kann sich hierbei die einzelnen Schnitte des 3-dimensionalen Gegenstandes nur nacheinander anschauen - man betrachtet also ein 3D-Bild in einer zeitlichen Sequenz. Später kann man dann alle Schnitte als Bildblock hintereinander anordnen und als tatsächliches 3D-Bild betrachten - zumindest theoretisch, denn praktisch ist dies mit einem Computer-Monitor wohl schwerlich machbar... Genauso gut kann man nun einen Sportbewegungsablauf, der ja normalerweise als zeitliche Sequenz abläuft, als 3D-Schnittbild betrachten - es wird ganz einfach die zeitliche Dimension in eine räumliche umgewandelt. Hier ist es dann z. B. durchaus sinnvoll, eine der beiden Raumdimensionan über der Zeit aufzutragen, so daß die Bewegung eines Objektes als Raumkurve sichtbar wird. Diese Erkenntnis, daß ein 3D-Bild und eine Sequenz aus 2D-Bildern auch in der jeweils anderen Anordnung durchaus sinnvoll angesehen werden können, kann bei der Verarbeitung der Bilddaten sehr hilfreich sein und bei der Auswertung eine große Rolle spielen.

Man sieht also, daß es je nach Art der Betrachtungsweise keinen allzugroßen Unterschied zwischen einer Sequenz, d. h. einem Zeitreihenbild und einem 3D-Bild gibt. Auch bei der Behandlung von Sequenzen und 3D-Bildern im Bildverarbeitungsrechner gibt es viele Parallelen: die Speicherung der Bilder wird immer als Serie 2-dimensionaler Schnitte vorgenommen und die Ansicht geschieht üblicherweise ebenfalls in 2-dimensionalen Schnitten. Da die 3D- und Sequenz-Funktionen damit softwaremäßig auf den gleichen Grundfunktionen aufbauen, ist es sicherlich sehr sinnvoll, die beiden Zusatzmodule 3D-Imaging und Sequenzbearbeitung zusammenzulegen. Die Verarbeitung der Bilder ist jedoch in der Regel unterschiedlich: sicherlich macht es in den wenigsten Fällen Sinn, bei einer Bewegungssequenz eine Kantenverstärkung in zeitlicher Richtung vorzunehmen - für ein 3D-Bild ist es jedoch völlig normal, solch einen Filter in z-Richtung anzuwenden. Wie oben schon angedeutet, kann es jedoch auch neuartige Möglichkeiten der Auswertung ergeben, wenn man die Auffassung von 3D-Bild und Sequenz ein wenig miteinander vermischt. Hier sei die Phantasie des Anwenders angeregt...

Bei den üblichen Bildsequenzen sind die Einzelbilder immer nur 2-dimensionale Bilder, da die Kamera, die bei der Aufnahme benutzt wird, üblicherweise ein 2-dimensionales Abbildungsgerät ist. Schwieriger wird es, wenn man den zeitlichen Ablauf eines 3-dimensionalen Bewegungsablaufes erfassen möchte: man erhielte ein 4-dimensionales Raum-Zeit-Bild. Die Simulation eines solchen Bildes im Rechner ist sicherlich kein Problem und könnte auf speziellen Wunsch programmiert werden. Die bildliche Darstellung und noch viel mehr die Bildaufnahme wird jedoch mit größeren Problemen verbunden sein - mit einer einfachen Kamera wird man nicht mehr auskommen. Bei kleinen durchsichtigen Objekten unter dem Mikroskop könnte man dazu etwa Fokusserien zu verschiedenen Zeiten anfertigen. Mit den neu auf den Markt gekommenen High-Speed-Kameras wird es bis zu einem bestimmten Grad auch möglich sein, komplette 3-D-Bilder von Strömungsvorgängen aufzunehmen: bei einer Aufnahmegeschwindigkeit von z. B. 4000 Bildern/Sekunde mit 512*512 Pixeln könnte man hierbei mit einer bewegten Lichtschnittbeleuchtung (über einen Drehspiegel) 3-D-Bilder der Auflösung 512*512*512 Voxel mit 8 Bildern/Sekunde aufnehmen. Das bedeutet natürlich schon erhebliche Speichermengen und -auslastungen von 1 GByte/s! Zur 3-dimensionalen Untersuchung könnte man auch mit zwei stereometrisch angeordneten Kameras Stereo-Sequenzen aufnehmen und auswerten. Die Aufnahme solcher Stereo-Sequenzen ist mit dem 3D/Sequenz-Zusatzmodul möglich, wenn sich Kameras und Bildeinlesekarte dafür eignen. Für die Auswertung solcher Stereo-Sequenzen steht z. B. das 3D-Position-Tracking Zusatzmodul zur Verfügung. Zur Ermittlung von 3D-Formen undurchsichtiger Objekte und deren zeitlicher Änderung können z. B. Meßmethoden mit Kamera und Lichtstreifenprojektoren dienen, die die gekrümmte Objektoberfläche über die verzerrte Projektion der Lichtstreifen auswerten. Dies kann je nach Anwendung mit dem FCM-Zusatzmodul oder mit dem Interferometrie-Zusatzmodul durchgeführt werden. Hiermit erhält man jedoch lediglich die Oberflächenstruktur. In der Magnet-Resonanz-Tomographie kommen immer schnellere Systeme auf den Markt, so daß es wohl bald möglich sein wird, hiermit 3-dimensionale Zeitreihenbilder zu erzeugen.

Doch nun zurück zum einfachen 3D/Sequenz-Bild: Die Speicherung von 3D-Bildern oder Sequenzen benötigt in der Regel einen größeren Speicherausbau und die Auswertung derselben eine entsprechende Rechenzeit. Hierdurch kann es notwendig werden, spezielle Programmoptimierungen durchzuführen oder auf schnellere Prozessoren auszuweichen. Als Beispiel sei hier der Speicherbedarf eines 512*512*512-Bildes mit 128 MByte und der eines 10 Sekunden langen Bewegungsablaufes in einfacher CCIR-Auflösung von 768*512 Bildpunkten bei 50 Hz Bildfrequenz mit etwa 100 MByte angegeben. Bei einer typischen Hochgeschwindigkeitskamera wie z. B. der Mikrotron MC1310 würde man z. B. Bildsequenzen mit 1280*1024 Pixeln erzeugen, und zwar bei einer Bildrate von bis zu 500fps, also bis zu 700MByte/s! Je nach Funktionsaufwand lassen sich solche Datenmengen auch mit sehr schnellen Prozessoren kaum noch in ein paar Sekunden bearbeiten. Man wird sich also auf längere Auswertezeiten einstellen müssen.

Die Funktionen zur 3D-Bild/Sequenz-Definition, zum Bildeinlesen oder -abspeichern, zur Bildaufnahme und zum Bildbetrachten sind in der Software fest installiert. Ebenso eine Reihe von 3D-Funktionen bis hin zur 3D-Fouriertransformation sowie Filterung und Arithmetik im Frequenzbereich. Andere Funktionen - speziell komplexe Funktionsabläufe - werden jeweils als MACRO-Programme implementiert. Dies sind Bildverarbeitungsmethoden, die über den eingebauten MACRO-Interpreter automatisch oder halbautomatisch arbeiten. Beispiele sind als Quellcodes beigefügt und lassen sich damit leicht vom Anwender ändern und für spezielle Zwecke anpassen. Sequenzbearbeitungsfunktionen wurden nur sehr wenige fest implementiert, da diese zum größten Teil auf 2-dimensionalen Funktionen basieren und damit über einfache MACRO-Funktionen programmiert werden können. Einige beispielhafte MACRO-Funktionen zur Sequenz-Bearbeitung werden hier im Handbuch beschrieben.

Die Reihe der verfügbaren Funktionen wird ständig erweitert. Im Kapitel 7.11.2 (oder 7.12.2 von der Sequenzverarbeitung aus) ist eine Liste der z. Zt. verfügbaren Funktionen angeführt.


7.11.3. 3D-Define

*7.11.3. / 7.12.3. Definition eines 3D-Bildes / einer Sequenz

Ein 3D-Bild kann wie eine Sequenz als Folge von 2D-Bildschnitten angesehen werden. Genauso sind derartige Bilder auch im Computerspeicher aufgebaut: man erhält einen Vektor von Zeigern auf 2-dimensionale Bildschnitte, die zusammengenommen ein 3D-Bild oder eine Bildsequenz ergeben. Zur Definition eines 3D-Bildes oder einer Sequenz öffnen Sie die "Define 3D/Sequenz"-Dialogbox im "Control-Panel". Hier müssen zunächst folgende Größen festgelegt werden:

- Breite der 2D-Bildschnitte (x-Size)
- Höhe der 2D-Bildschnitte (y-Size)
- Tiefe des 3D-Bildes oder Anzahl der Einzelbilder einer Bildsequenz (z-Size)

Diese Parameter können direkt in der oben dargestellten Dialogbox eingestellt werden. Die Angabe der Breite und Höhe kann pixelgenau und damit speichersparend sein. Es empfiehlt sich jedoch trotzdem in vielen Fällen, nicht allzu krumme Zahlen zu wählen, da dies bei der späteren Auswertung eventuell zu umständlicheren Umrechnungen führen könnte. Auch Geschwindigkeitseinbußen beim Übertragen und Kopieren von Bildern sind bei ungeraden Werten möglich. Es hat sich als sinnvoll herausgestellt, wenn die Breite des Speichers durch 4 teilbar ist. Als maximale Werte für Breite und Höhe sind die Maße der definierten normalen 2D-Bildspeicher festgelegt. Wenn also 1024*1024 Pixel große Sequenzen definiert werden sollen, so muß auch der normale 2D-Bildspeicher auf mindestens diese Größe eingestellt werden. Diese Einschränkung wurde vorgegeben, damit es in jedem Falle möglich ist, Schnittbilder in den normalen 2D-Bildspeicher zur Bearbeitung zu übertragen.

x-size, y-size, z-size (oder Anzahl Bilder/Sequenz): Mit diesen Funktionen kann die Breite, Höhe und Tiefe (oder Sequenzlänge) einzeln numerisch eingegeben werden.

Adjust xy-size to ROI: Dies ist eine weitere Möglichkeit, Breite und Höhe der 2D-Schnitte einzustellen: man wählt einfach in einem normalen 2D-Bildspeicher eine Region of Interest (ROI) anhand des interessierenden Ausschnittes des Bildes, z. B. eines aufgenommenen Testbildes. Ein Druck auf die "Adjust xy-size to ROI"-Taste überträgt dann die ROI-Größe direkt auf die "x-size, y-size"-Werte. (Diese Funktion gibt es z. Zt. nur für die an die picCOLOR V2.17-Karte angepaßte Software)

Define 3D/Sequence-Buffer: Anfordern des Speicherplatzes für das mit den obigen Funktionen festgelegte 3D-Bild oder für die Sequenz. Die maximale Anzahl der 3D/Sequenz-Bildspeicher ist begrenzt. Per Definitionem haben alle 3D/Sequenz-Bilder die gleiche Größe. Sobald ein 3D/Sequenz-Bild definiert ist, kann die Größe in der Dialogbox nicht mehr verändert werden. Zur Änderung müssen alle 3D/Sequenz-Bilder wieder freigegeben werden.

Nach der Definition verlassen Sie die Dialogbox. Die Sequenz oder das 3D-Bild ist nun im Multiple-Document Hauptfenster des picCOLOR-Programes als zusätzliches Fenster sichtbar und ist aktiv. Über die üblichen Aktivierungsfunktionen von Windows (entweder Anklicken des Fensters oder Auswahl über das "Windows"-Menü im Hauptfenster) kann die Sequenz oder das 3D-Bild aktiviert oder deaktiviert werden. In der Kopfzeile erscheint der Schriftzug "3D/Sequence Image X" mit "X" als der tatsächlichen Bildnummer, beginnend mit "1". Man wird feststellen, daß sich bei aktivem Sequenz/3D-Bild auch die Hauptmenü-Leiste ändert: Statt des "File"-Menüs sieht man hier dann das "3D/Sequence"-Menü. Dies hat mehrere Gründe: erstens wird hiermit die Verwechslungsgefahr mit normalen 2D-Bildern vermindert und zweitens wird verhindert, daß externe Programe anderer Hersteller (wie z. B. die OCR-Software Omnipage) das File-Menü finden und dort eigene Funktionen eintragen, was ja bei 3D/Sequenzbildern kaum sinnvoll wäre. Die Funktionen der Hauptmenüzeile (d. h. "Processing" , "Measurement", ...) sind komplett geändert, auch wenn einige Funktionen ähnliche Bezeichnungen tragen. Lediglich das "Control-Panel" ist exakt gleich. Auch die Funktionen der "Tool-Box", die mit der rechten Maustaste aufgerufen werden kann, sind geändert.

Das Freigeben der 3D/Sequenz-Bildspeicher an das System geschieht in umgekehrter Reihenfolge, in der die Speicher angefordert wurden, d. h. man muß das zuletzt angelegte 3D/Sequenz-Bild zuerst schließen. Hierdurch wird sichergestellt, daß intern die Speicher eine fortlaufende Nummerierung besitzen und kein Zugriff auf nichtexistente Speicher versucht wird. Das Schließen kann wie üblich über die Funktionen in der Titelleiste der Fenster erfolgen. Bei Schließen des picCOLOR-Programmes werden automatisch alle noch geöffneten 3D/Sequenz-Bilder geschlossen.

3D/Sequenz-Bilder werden direkt im Hauptspeicher des Computers definiert. Nur so lassen sich Sequenzen auch mit Hochgeschwindigkeitskameras in Echtzeit aufnehmen. Auf die Festplatte ausgelagerte Speicherbereiche wären nicht schnell genug zugreifbar. Damit kann die maximale Sequenzlänge oder 3D-Bildgröße aus dem vorhandenen Speicherausbau bestimmt werden. Hierzu muß man jedoch beachten, daß WINDOWS nicht den kompletten Hauptspeicher zur Verfügung stellt. Es reserviert sich einen recht großen Bereich für allgemeine Systemanforderungen oder zur Ausführung anderer Programme. In der Regel kann man unter WINDOWS NT4.0 etwa 80% des gesamten Hauptspeichers für Sequenzen erhalten, unter WINDOWS 2000 und bei bei WINDOWS XP etwas weniger. Bei 32-Bit-Betriebssystemen liegt jedoch der Maximalwert bei 2GB oder 3GB (bei eingeschaltetem 3GB- und PAE-Flag im Boot.ini-File). Je nach eingesetzter Bildeinlesekarte kann dieser Wert jedoch sehr viel geringer sein. So verlangen z. B. verschiedene Karten, den Einlesespeicher beim Systemstart (Booten) des Computers zu definieren und festzulegen. Mit der F64P-Karte von CORECO z. B. erhält man damit dann lediglich 20% des Hauptspeichers für Videosequenzen. Ähnlich sieht es bei der Micro-Enable-Karte II von Silicon-Software aus, die ebenfalls aus bestimmten Gründen nur relativ kurze Sequenzen zuläßt. Bei der VIPER-Kartenserie der Firma CORECO gibt es jedoch kaum Beschränkungen: je nach eingesetzter Versionsnummer der SAPERA-Driver-Library kann der gesamte von WINDOWS zur Verfügung gestellte Speicher als Sequenzspeicher benutzt werden. Bei der Version 3.x gibt es lediglich eine Begrenzung auf ungefähr 10.000 Bilder einer Sequenz. Bei einer normalen 25Hz-Videokamera erreicht man allerdings die 2 GB-Grenze schon eher, nämlich bei 5000 Bildern. Dies wären dann mehr als 3 Minuten Video bei 2 GByte benötigtem Speicher... Bei der Hochgeschwindigkeitskamera Pulnix TM6710 erhält man damit z. B. bei 350 Hz Videofrequenz und einer Bildauflösung von 648*100 Pixeln immerhin noch eine Sequenzlänge von knapp 30 Sekunden bei einem Speicherbedarf von etwa 650 MByte. Mit den moderneren X64CL- oder Xcelera-FrameGrabbern und dem optimierten Sapera-Treiber von Dalsa/Coreco sind die Grenzen noch weiter nach oben geschraubt. Interessanterweise kann man jedoch auch bei 3GB-Einstellung nur bis zu 2.3GB an Speicher anfordern. All dies gilt natürlich nicht für 64-Bit-Betriebssysteme. picCOLOR selbst hat intern eine Grenze von 16000 Bildern in einer Sequenz.
Wichtig: Es ist allerdings zu beachten, daß WINDOWS die benötigte Speichermenge nicht immer freiwillig hergibt. Wenn z. B. größere Programme oder Datenbereiche im Hauptspeicher liegen oder ein großer Teil des Betriebssystemes im physikalischen Speicher liegt, dann muß zuerst dafür gesorgt werden, daß der benötigte Speicher freigestellt wird. Schließen Sie hierzu alle nicht benötigten Programme und sorgen Sie dafür, daß auch WINDOWS sich soweit wie möglich auslagert. Letzteres geschieht über bestimmte Tricks. So kann man z. B. sukzessive immer größere Speicherbereiche anfordern und wieder freigeben. So seltsam dies auch klingt, erst hierdurch akzeptiert WINDOWS, daß man die größeren Speicherbereich auch wirklich benötigt und macht sich selbst sehr klein, d. h. lagert alle nicht benötigten Teile des Betriebssystemes auf den Festplatten-Swap-Bereich aus. Natürlich gibt es hierzu auch besser definierte interne WINDOWS-API-Funktionen, die im picCOLOR-Programm leider jedoch nicht angewandt werden können, da die meisten Bildeinlesekarten-Treiber eigene Speicheranforderungsroutinen zur obligatorischen Benutzung zur Verfügung stellen. Wenn Sie also bei der Definition einer sehr langen und großen Videosequenz eine Fehlermeldung erhalten, so versuchen Sie bitte, über die mehrfache Definition oder über die Definition eines weniger zerstückelten Speichers (weniger Bildschnitte, größere x,y-size) WINDOWS von Ihrem Speicherwunsch zu überzeugen. Hierzu ist in der Definitions-Dialogbox der Schalter "Outwit NT" gegeben, der bewirkt, daß picCOLOR versucht, vor der Definition der einzelnen Bildschnitte einen einzigen zusammenhängenden Speicherbereich der kompletten geforderten Größe zu allocieren und wieder freizugeben. Dieser Trick ist jedoch noch nicht der Weisheit letzer Schluß...

ROI-Bearbeitung im 3D/Sequenz-Bild
Die von normalen 2D-Bildern bekannten Regions of Interest (ROI) sind für 3D-Bilder oder Sequenzen zumindest in dieser Form noch nicht definiert und implementiert. Hier wird es als sinnvoller erachtet, das 3D/Sequenzbild in genau der benötigten Größe zu definieren. Dies ist sicherlich wesentlich speichersparender. In zukünftigen Versionen des picCOLOR-Programmes wird es jedoch möglich sein, eine 3D-ROI zu definieren, in der dann alle Bearbeitungen stattfinden.
Wenn jedoch ein Schnittbild einer Sequenz oder eines 3D-Bildes in einen normalen 2D-Bildspeicher zur weiteren Bearbeitung übertragen wird, so kann hier dann wie üblich eine ROI gesetzt werden. Die Übertragung selbst erfolgt ebenfalls in die oder aus der aktuellen ROI des 2D-Bildes.
Unter bestimmten Bedingungen, d. h. bei bestimmten Funktionen wird auch im 3D/Sequenzbild schon jetzt eine ROI benötigt. In diesem Fall wird dann die allgemeine im 2D-Bild definierte gerade aktuelle ROI benutzt. Hierbei darf natürlich die normale ROI nicht größer sein als die Größe eines 2D-Schnittes des 3D-Speichers.


7.11.4. 3D-Display

*7.11.4. / 7.12.4. Darstellung von 3D-Bildern/Sequenzen

3D-Processing

------------------------
Select Active Buf. ->
Select Destin.Buf. ->

-----------------------
ROI -> 3D (xy)
Pick 3D-Image
3D (xy) -> ROI
3D (zy) -> ROI
3D (xz) -> ROI

Sequence Processing

-------------------------
Select Active Seq. ->
Select Destin Seq. ->

-------------------------
ROI -> Sequence (xy)
Pick Seq.-Image
Seq. (xy) -> ROI
Seq. (xt) -> ROI
Seq. (yt) -> ROI

Zur Darstellung einer Sequenz oder eines 3D-Bildes gibt es verschiedene Möglichkeiten: in einer Video-Player-Dialogbox kann die Sequenz mit unterschiedlichen Optionen abgespielt werden, vorwärts, rückwärts, mit einem ausgewählten Bereich, unterschiedlichen Geschwindigkeiten usw. Dies geschieht direkt im 3D/Sequenz-Bildspeicher. Weiterhin ist die Möglichkeit gegeben, alle Bilder der Sequenz (oder alle Schnitte des 3D-Bildes) gleichzeitig auf dem Bildschirm darzustellen und mit der Maus eines davon auszuwählen und in einen normalen 2D-Bildspeicher zu übertragen. Schließlich kann jedes einzelne Bild aus beliebiger (orthogonaler) Ansicht (Sequenz: xy, xt, yt, oder für 3D-Bilder: xy, yz, zx) anhand seiner Bildnummer aus dem Speicher auf einen 2D-Bildspeicher geholt werden. Wenn mehr als ein 3D-Bild oder mehrere Sequenzen definiert wurden, so kann vor der Übertragung mit der Funktion "Set Active 3D-Buffer" oder "Set Active Sequence" das angesprochene 3D/Sequenz-Bild ausgewählt werden. Schneller geht das allerdings, indem man die anzusprechende Sequenz zuerst durch Anklicken aktiviert, und danach den normalen 2D-Bildspeicher. Der zuletzt aktiv gewesene 3D/Sequenz-Speicher ist dann der ausgewählte Speicher. Eine einfache Pixelinspektionsfunktion für xyz-(oder xyt)-Koordinaten und Grauwert ist im normalen Anzeigemodus des Bildspeichers möglich: klickt man an einer beliebigen Stelle im Bild mit der linken Maustaste, so erhält man ein Fadenkreuz und eine Anzeige der aktuellen Koordinaten des Kursors incl. der Schnittbildnummer der Sequenz oder des 3D-Bildes mit dem dort befindlichen Grauwert in der Statuszeile am unteren Bildrand.

Einzelbilddarstellung
Von einem beliebigen normalen 2D-Bildspeicher aus kann mit den "Seq. (xy) -> ROI" und "3D (xy) -> ROI"- Funktionen jedes Einzelbild einer Sequenz oder eines 3D-Bildes auf den Bildschirm (d. h. den aktuellen Bildspeicher) in die aktive ROI kopiert werden. Einzelbild-Darstellung einer Sequenz ist auch für Orts/Zeit-Bildschnitte möglich, in denen dann z. B. eine Bewegung in x-Richtung oder in y-Richtung in einem einzigen Bild dargestellt werden kann. Die zugehörigen Funktionen sind "Seq.(xt) -> ROI" und "Seq. (yt) -> ROI". Entsprechend dazu gibt es für die Einzelbilddarstellung von 3D-Bildern die Funktionen "3D (xy)->ROI", "3D (yz)->ROI" und "3D (zx)->ROI", mit denen die Anzeige von xy-, yz- oder zx-Schnitten vorgenommen werden kann. Im aktuellen 2D-Bildspeicher in der aktuellen ROI stehen die Bildschnitte dann zur 2-dimensionalen Weiterverarbeitung zur Verfügung. Zusammen mit den geometrischen Spiegelungsfunktionen aus dem "Geometry"-Menü können hiermit dann 3D-Bild-Schnitte von allen Seiten betrachtet werden. Als Source wird der zuletzt aktiv wgewesene 3D/Sequenz-Bildspeicher oder der durch die Funktionen "Set Active 3D-Buffer" oder "Set Active Sequence" gewählte Speicher benutzt.

Auswahl aus verkleinerter Darstellung aller Bilder
Da es oft schwierig ist, aus einer langen Sequenz das richtige Bild herauszusuchen, um dieses dann einer weiteren Bearbeitung zu unterziehen, wird mit der "Get 3D Image" oder "Get Seq.-Image"-Funktion ein einfaches Hilfsmittel gegeben, mit dem alle oder ein bestimmter Teil der Sequenzbilder oder 3D-Schnitte gleichzeitig verkleinert auf dem Bildschirm dargestellt werden können. Hierzu muß die Bildnummerschrittweite (Interleaving) eingegeben werden (1: jedes Bild wird gezeigt; 2: jedes zweite Bild wird gezeigt usw.). Dann kann mit der linken Maustaste eines der dargestellten Bilder ausgewählt werden. Dieses wird dann in die aktuelle ROI kopiert und kann dort direkt weiterverarbeitet werden. Die rechte Maustaste oder ESC bricht die Funktion ohne Bildspeicheränderung ab.

Videoplayer für 3D-Bild und Sequenz

Mit einem Software-Videoplayer können Sequenzen oder 3D-Bilder noch schneller und flexibler als mit einem realen Videorekorder abgespielt und betrachtet werden.

- Play Once: Die Sequenz wird bei Drücken der Play-Taste einmal durchlaufen.
- Play Continuously: Die Sequenz wird fortlaufend wiederholt dargestellt.
- Synchron (noch nicht implementiert): Das Darstellen der Sequenz wird synchron mit dem Bildschirmaufbau durchgeführt. Dies kann in bestimmten Fällen Interferenzen mit der Bildschirmfrequenz abschwächen. Dies ist z. B. notwendig, wenn eine Stereosequenz mit einer LCD-Shutter-Brille betrachtet werden soll, da mit der Bildfrequenz die Bilder für das linke und rechte Auge dargestellt werden und die Shutter-Brille umgeschaltet wird. Genauere Informationen findet man im Stereo-Zusatzmodul.
- Frame Rate: Geschwindigkeit des Sequenzablaufes in Bildern/Sekunde: Bei einem Eingabewert von "100" und darüber wird die Sequenz einfach so schnell wie möglich auf dem Bildschirm abgespielt. Dies kann speziell bei kleineren xy-Ausdehnungen sehr schnell sein, wesentlich schneller als Videoechtzeit. Wenn gleichzeitig der "Synchron"-Schalter eingeschaltet ist, so werden die Sequenzbilder mit Bildschirmfrequenz angezeigt, wenn dies bei der definierten Bildgröße technisch möglich ist.
- [Start..Stop]: [von..bis] Bildnummer: Es kann eingestellt werden, daß nur ein Teil der Sequenz fortlaufend abgespielt wird. Hierzu müssen die Bildnummern des ersten und des letzten Bildes der Teilsequenz eingegeben werden.
- Select Actual: Zur Einzelbilddarstellung muß entweder die Schnittbildnummer mit den up/down-Schaltern eingegeben werden oder der Bild-Schieber benutzt werden.

Ausgabe von Sequenzen auf einem Videorekorder
Oft ist es erwünscht, eine aufgenommene und bearbeitete Videosequenz auf einen Videorekorder zu überspielen. Dies ist mit zusätzlicher Hardware möglich, die von vielen modernen Graphikkarten mit einem TV-Output zur Verfügung gestellt wird.

Overlay-Funktion für Sequenzen

Speziell bei der Darstellung einer Sequenz im Video-Player, aber auch bei der Einzelbilddarstellung kann es sinnvoll sein, ein Gitter oder andere deutliche Muster über die Bilder der Sequenz zu legen, um beim Betrachten der Sequenz bestimmte statistische oder meßtechnische Aussagen machen zu können. Hierzu wurden die 3D/Sequenz-Overlay-Funktionen definiert. Z. Zt ist ein einfaches invertierendes Gitter implementiert, dessen Gitterweite man in Pixelabständen unterschiedlich in x- und y-Richtung einstellen kann.


7.11.5. 3D-Acquisition

*7.11.5. / 7.12.5. Sequenz-Bildübernahme

Bei der Bildübernahme einer Sequenz soll in der Regel Videoechtzeit erzielt werden, d. h. die Bilder der Sequenz sollen genau mit der Geschwindigkeit in den Sequenzspeicher übertragen werden, mit der sie von der Kamera geliefert werden. Selbstverständlich sind die meisten modernen FrameGrabber hardwaremäßig darauf eingerichtet, die Bilder immer in Echtzeit in ihren Bildspeicher (Video-RAM) oder direkt in den Hauptspeicher des Computers einlesen zu können. Bei Videovollbildsequenzen mit z. B. 768*576 Pixeln und 25 Bildern/Sekunde (bei CCIR) beträgt der Videostrom üblicherweise 14.75 MByte pro Sekunde. Wegen der recht großen Austastlücken zwischen zwei Bildern (Vertikalaustastlücke) und auch zwischen zwei Zeilen (Horizontalaustastlücke) ist die tatsächlich benötigte gemittelte Videobandbreite jedoch "nur" etwa 10 MByte/Sekunde. Bei Hochgeschwindigkeitskameras kann jedoch leicht ein wesentlich höherer Wert erreicht werden. Z. Zt. liegt die Grenze bei etwa 700MB/s bei Frame Grabbern, die mit dem PCIexpress x4 Bus-Interface ausgerüstet sind. Erste x8-Karten sind allerdings schon verfügbar, die die Geschwindigkeit noch einmal um den Faktor 2 erhöhen können. Für die schnelle und prozessorunabhängige Übertragung der Bilddaten in den Hauptspeicher wird das Verfahren des Direct Memory Access (DMA) benutzt. Um auch längere Videosequenzen aufnehmen zu können, wird in der Regel eine Technik mit der Bezeichnung "Scatter Gather" benutzt, die dafür sorgt, daß die kleinen Speicherblöcke, die von WINDOWS z. B. mit der Größe von 4kByte zur Verfügung gestellt werden, in der notwendigen Geschwindigkeit in den physikalischen Speicherbereich zu liegen kommen und mit DMA beschrieben werden können. Mit den heutigen schnellen Festplatten ist es unter Umständen auch möglich, längere Videosequenzen als sogenannte "Video Streams" direkt auf die Platte zu schreiben. Zur Sequenzaufnahme öffnet sich eine Video-Recorder-Dialogbox, die dem Video-Player sehr ähnlich ist. Es sind lediglich einige weitere Optionen aufrufbar und der Aufnahme (Record)-Taster ist hier natürlich wirksam.

Zusätzliche Optionen für die Sequenzaufnahme (z. Zt. noch nicht alle Funktionen implementiert)

Dieses Menü erreichen Sie durch Anwahl der "Option"-Taste in der Acquisition-Dialogbox. Hier lassen sich eine Reihe von Parametern für die Sequenzaufnahme einstellen, z. B. die tatsächliche Aufnahmegeschwindigkeit, der Einzelbild-Modus oder die kontinuierliche Aufnahme, die Umschaltung verschiedener Kameras, und die Split-Screen-Übernahme durch mehrere Kameras.

Parameter in der Sequenz-Frame-Grabber-Dialog-Box
Für die Sequenzaufnahme wird eine Video-Recorder Dialogbox geöffnet, die der Video-Player Dialogbox sehr ähnlich ist. Hierzu muß natürlich mindestens ein Sequenzspeicher definiert sein und es müssen zuvor die notwendigen Sequenz-Kontrollparameter eingestellt sein. Wenn mehrere Sequenzen definiert wurden, so muß vor der Sequenzaufnahme der Speicher ausgewählt, d. h. aktiviert werden, in den dann die Sequenz eingelesen wird.

Record-Button (Aufnahme-Schalter)
Schalter "Record" startet die Sequenzaufnahme. Die Sequenzaufnahme wird automatisch nach Einlesen des kompletten Sequenzspeichers beendet. Sie kann jedoch mit der ESC-Taste vom Benutzer abgebrochen werden. Bei Ringbuffer-Einstellung stoppt die Aufnahme nicht am Ende des Sequenzspeichers, sondern überschreibt den Speicher immer wieder, bis sie durch die ESC-Taste (oder auch mit der rechten Maustaste) abgebrochen wird.
Über das Echtzeit-Zusatzmodul (Real Time Extension Module) ist es möglich, die Sequenzaufnahme über spezielle hardware- oder softwaregetriggerte Signale zu starten und zu beenden.

Interne/externe Synchronisation
Wie auch schon beim Basisprogramm bei der Einzelbildaufnahme kann bei der Sequenzaufnahme die interne Synchronisationsquelle oder eine externe Quelle benutzt werden. Speziell beim Einsatz mehrerer Kameras ist die Synchronisation über die karteneigene Zeitbasis die optimale Methode: alle Kameras werden gemeinsam von der Bildeinlesekarte synchronisiert - es kann zu praktisch beliebigen Zeiten zwischen verschiedenen Kameras umgeschaltet werden, im Extremfall auch innerhalb der gerade übernommenen Zeile, wodurch sehr spezielle Effekte und Aufnahmesituationen möglich werden wie z. B. eine zeilen- oder sogar spaltenweise Teilbildaufnahme mehrerer Kameras. Zur externen Synchronisation, d. h. durch die Kamera oder eine andere Videoquelle, müssen die Synchronisationssignale bestimmte Mindestanforderungen an Gleichmäßigkeit und Regelmäßigkeit erfüllen. Dies ist z. B. bei Videorekordern oft nicht der Fall, so daß man dort keine allzu guten Ergebnisse erwarten sollte. Wenn z. B. beim Videosignal eines Videorekorders einzelne Synchronisationspulse fehlen oder nicht erkennbar sind, so wird die FrameGrabber-Hardware versuchen, über eine PLL-Steuerung selbst welche einzufügen. Damit wird er immerhin in der Lage sein, das Bild einzulesen, es kann jedoch sein, daß hierdurch Bildsprünge oder -versätze auftreten.

Delay Factor: Einstellung eines Verzögerungsfaktors für langsamere Aufnahme von Echtzeit bis herunter zu 1 Bild / Stunde. Hierzu wird in einer Eingabebox der Delay-Factor N mit: Aufnahmefrequenz = Normfrequenz * 1/N eingegeben. Bei CCIR-Norm wäre dies also: 25Hz*1/N. Maximale Aufnahmefrequenz erhält man beim Wert 1 - es wird dann jedes ankommende Bild eingelesen. Beim Wert 2 wird jedes zweite Bild eingelesen, man arbeitet also mit halber Frequenz und erhält nur noch 12.5 Vollbilder pro Sekunde. Der maximale Wert von 90000 ergibt eine Bildfrequenz von 1 Bild pro Stunde. Diese Einstellung ist nur für bestimmte Frame Grabber möglich. Wenn diese Funktion nicht implementiert ist, z. B. bei der VIPER Digital Karte, so kann in bestimmten Grenzen ein Delay durch eine direkte Ansteuerung der Kamera geschehen, z. B. durch die Restart/Reset-Steuerung oder durch eine asynchrone Triggerung der Kamera. Die Frame Grabber Software ist flexibel genug, auf die einzelnen Bilder der Kamera zu warten, auch bei sehr niedrigen Frequenzen. Hierzu müssen eventuell speziell angepaßte Kamera-Definitionsfiles erstellt werden. (Dieser Delay-Faktor ist im picCOLOR-NT-Programm z. Zt. nicht implementiert. Über eine Hardware-Triggerung der Kamera kann jedoch in bestimmten Grenzen die Aufnahmegeschwindigkeit eingestellt werden. Hierzu muß die Kamera über spezielle Funktionen wie z. B. Field-On-Demand oder Restart/Reset oder einfach über eine variable Synchronisationsmöglichkeit verfügen).

Ring Buffer: Während der Bildaufnahme einer Videosequenz kann der Sequenz-Speicher als Ring-Speicher benutzt werden. Wie üblich wird dann die Bildaufnahme der Sequenz mit der linken Maustaste oder einer anderen Triggerung gestartet. Beendet wird die Bildaufnahme mit einem weiteren Drücken der linken oder der rechten Maustaste oder der ESC-Taste oder einer weiteren zuvor definierten Triggerung. Die Bilder werden kontinuierlich in den Sequenzspeicher eingelesen. Bei Überschreiten des letzten Bildes des Sequenzspeichers wird wieder am Anfgang begonnen und alte Teile der Sequenz werden überschrieben. Bei Abbruch der Übernahme ist der Anfang der aktuell aufgenommenen Sequenz dann natürlich nicht notwendigerweise am Anfang des Sequenz-Speichers. Mit der Funktion "Rotate" (im Sequence-Processing-Menü) kann bei Eingabe von "-1" der gesamte Ring-Speicher gedreht werden, so daß der Anfang der Sequenz zum Beginn des Speichers geschoben wird. (Z. Zt. wird tatsächlich intern geschoben, es werden nicht einfach nur Pointer geändert, daher kann die Funktion etwas länger dauern). Mit dieser Ring-Speicher-Funktion können einmalig auftretende Vorgänge leicht eingelesen werden.

Cam: First/Last: Zyklisches Durchscannen von bis zu vier Kameras in der Sequenzaufnahme bei hardwaremäßiger Eignung des Frame Grabbers. Mit dieser Funktion kann eingestellt werden, ob mit einer einzigen Kamera eine Sequenz aufgenommen werden soll oder ob bei der Aufnahme der Echtzeitsequenz verschiedene Kameras zyklisch durchgetaktet werden sollen. Z. Zt. wird diese Funktion im Normalmodus nur für Interlaced-Vollbilder unterstützt, d. h. jede Kamera nimmt zwei Halbbilder auf, danach wird zur nächsten angegebenen Kamera weitergeschaltet. Es ist kein Problem, dieses Verfahren auf Halbbilder zu erweitern, d. h. daß nach Halbbildaufnahme auf die nächste Kamera umgeschaltet wird. (Diese Funktion ist im picCOLOR-NT-Programm z. Zt. nicht implementiert).

Continuous Selection: Aufnahme als kontinuierliche Sequenz in den zuvor definierten Sequenz-Speicher.

Single Step Selection: Aufnahme in Einzelbildern, die von Hand, z. B. per Mausklick oder (in bestimmten Fällen) durch externe Triggerung gesteuert wird (z. B. für Standbilder vom Videorekorder oder für Einzelschnitte eines 3D-Bildes vom Mikroskop durch Durchfokussieren). Jeder Mausklick auf den Record-Button übernimmt ein Bild der Sequenz.

Continuous/Snap Shot Buttons: Mit dem Continuous-Schalter wird eine kontinuierliche Bildübernahme gestartet, die jedoch nur das erste Schnittbild der Sequenz überschreibt. Diese Funktion dient lediglich zur Live-Ansicht des Bildes, z. B. zum Fokussieren der Kamera. Das gleiche gilt für den Shap-Shot-Schalter: es wird ein einziges Bild in das erste Schnittbild der Sequenz übertragen. Achtung: Diese Funktionen werden in zukünftigen Programmversionen möglicherweise geändert!

Interlaced / Non-Interlaced: CCIR oder EIA-(RS-170)-Norm-Kameras arbeiten üblicherweise im Interlaced-Modus. Wenn eine solche Kamera von der Frame Grabber Karte synchronisiert wird, so kann dies im üblichen Interlaced-Modus, aber auch im Non-Interlaced-Modus geschehen. Wenn es sich in der Aufnahme um schnelle Bewegungen handelt und die vertikale Auflösung eine nicht allzu große Rolle spielt, so empfiehlt es sich, auf Non-Interlaced zu stellen. Hierdurch erhält man die doppelte Aufnahmefrequenz (z. B. 50 Hz bei CCIR oder 60 Hz bei RS-170) bei halber y-Auflösung. Hierzu muß die Kamera natürlich extern synchronisierbar sein und noninterlaced Signale erkennen können.

Split-Screen-(Teilbild-)-Bildübernahmen von mehreren Kameras sind mit verschiedenen Frame Grabbern möglich. Diese Einstellung kann über die "Split-Screen"-Dialogbox durchgeführt werden.
Switch Line: Die Bildzeile, bei der von Kamera 1 auf Kamera 2 umgeschaltet wird, kann in weiten Grenzen eingestellt werden. Hierbei muß die Halbbild-Zeile eingestellt werden, an der umgeschaltet werden soll.

Stereo-Bildübernahme: (siehe unten)

Beispiel einer Sequenzaufnahme

Im folgenden Beispiel wird die normale Vorgehensweise zur Aufnahme einer Echtzeitsequenz vorgestellt:

  • Definition des 3D/Sequenz-Speichers

  • Nach Definition geht man in das "Acquire Image"-Menü und öffnet dort die "Camera Selection"-Dialogbox. Hier kann die angeschlossene Kamera ausgewählt werden und es können bestimmte Kameraparameter gewählt werden. Das picCOLOR-Programm ist jedoch nicht dafür ausgelegt, eine Kamera direkt zu programmieren. Hierzu werden in der Regel von den Kameraherstellern eigene Programme geliefert, die eventuell vor der Bildübernahme gestartet werden müssen.

  • Eventuell kann es sinnvoll sein, noch die "Acquisition Control"-Dialogbox zu öffnen. Hier werden spezielle Einstellungen vorgenommen, die z. B. die Art eines eventuell eingeschalteten Zeitstempels betreffen.

  • Schließlich kann man die "Frame Grabber"-Dialogbox öffnen, wo die Sequenzaufnahme mit dem "Record"-Schalter gestartet werden kann. Zuvor kann man mit dem Schalter "Continuous" eine normale Bildübernahme in das erste Bild der Sequenz starten, die als Live-Video sichtbar ist, so daß man noch einmal die Fokussierung der Kamera überprüfen kann. Wenn bei Betätigung der "Record"-Taste gerade ein Live-Bild eingeschaltet ist, so wird diese Funktion zuerst gestoppt. Hierbei kann ein kleiner Zeitverzug von etwa 20 Millisekunden entstehen, da die Frame-Grabber-Treiber in der Regel bestimmte Synchronisationszeiten benötigen. Hier in der Dialogbox können weitere Parameter eingestellt werden. Dies kann z. B. die gewünschte Videoquelle bei mehreren Kameraeingängen sein oder der Interleave-(Delay)-Faktor oder die Einstellung des Sequenzspeichers als Ring-Speicher, der immer wieder neu zyklisch beschrieben wird. Außerdem kann man die Anzahl der zyklisch angesteuerten Videoquellen zwischen 1 und 4 bestimmen, falls mehrere Kameras angeschlossen sind (oder Farbkamera oder Stereosysteme) und die Einlesehardware dies erlaubt.

  • Während der Sequenzaufnahme wird in der Regel das Bild nicht in Echtzeit angezeigt. Dies läßt sich jedoch einschalten oder auf spezielle Anzeigefrequenzen einstellen. So ist es z. B. sicher nicht sinnvoll, bei einer Bildaufnahme mit 500Hz dies auch mit gleicher Geschwindigkeit darzustellen (falls die Graphikkarte dies überhaupt kann...). Nach beendeter Sequenzaufnahme kann die Sequenz direkt betrachtet werden. Alle Betrachtungsfunktionen der Dialogbox entsprechen den weiter oben beschriebenen Funktionen des Video-Players.

Einschub: Interlaced Vollbild oder Non-Interlaced Halbbild?

Da noch in vielen Bildverarbeitungsprojekten einfache CCIR- oder RS-170-Kameras eingesetzt werden, folgt hier eine Betrachtung der Möglichkeiten zur Interlaced/Non-Interlaced-Einstellung: Sehr wichtig ist bei der Sequenzaufnahme mit üblichen Kameras die Möglichkeit, die Halbbilder als eigenständige Bilder anzusehen, natürlich auf den Faktor 1/2 in vertikaler Richtung gestaucht: man bedenke, daß es sich hierbei ja üblicherweise um Bewegungssequenzen handelt. Bei 25Hz CCIR-Videofrequenz hat das ODD-Feld den gleichen zeitlichen Abstand von 20 ms zum vorigen EVEN-Feld wie zum nachfolgenden EVEN-Feld. ODD- und EVEN-Felder passen nicht mehr zusammen - eine schnelle Bewegung von Objekten wäre kaum auswertbar und nur als unangenehmes Verwischen des Bildinhaltes zu erkennen, wenn beide Halbbilder gleichzeitig dargestellt oder bearbeitet würden. Eine Zeilenverdopplung oder Interpolation würde hier zwar helfen, jedoch zu unnötigem Datenverlust führen. Viel sinnvoller ist es hier, die einzelnen Halbbilder als vollwertige Einzelbilder bei halber vertikaler Auflösung einer doppelt so schnellen Sequenz (nämlich mit 50 Bildern/Sekunde bei CCIR) zu betrachten und auch so auszuwerten. Die vertikale Stauchung muß hierbei natürlich durch einen speziellen Kalibrierfaktor berücksichtigt werden. Natürlich kann man auch vor der Bearbeitung vertikal um den Faktor 2 zoomen, was jedoch wiederum zu einer unnötigen Datenmengenvergrößerung und damit langsameren Bearbeitung führte.
Einen wichtigen Punkt muß man bei dieser Art der Aufnahme jedoch noch beachten: wenn es sich um Halbbilder handelt, die im Interlaced Modus aufgenommen wurden, passen die einzelnen Zeilen von EVEN- und ODD-Feld nicht exakt zusammen. Schließlich bestand das EVEN-Feld ursprünglich aus den Zeilen 0,2,4,6,8... und das ODD-Feld aus den Zeilen 1,3,5,7,9... des kompletten Interlaced-Vollbildes. Wir machen also einen Fehler von vertikal einer halben Zeile, wenn wir die erste Zeile des EVEN-Bildes (ursprünglich die Vollbildzeile 0) mit der ersten Zeile des ODD-Feldes (ursprünglich die Vollbildzeile 1) vergleichen. Dieses Problem ist sehr leicht zu lösen, indem man die Bilder im Noninterlaced-Modus aufnimmt. Die meisten hochwertigen Kameras sind in der Lage, im Noninterlaced-Modus zu arbeiten, wenn man sie entsprechend ansteuert. Die entsprechenden Signale können von der Frame-Grabber-Karte in der Regel erzeugt werden. Es wird dann nur noch jede zweite Zeile der Kamera ausgelesen, allerdings mit doppelter Frequenz, z. B. 50 Hz. Man erhält dann tatsächlich 50 Bilder/Sekunde mit der Auflösung von z. B. 768*256 Bildpunkten. Dieses Verfahren wird von der Software unterstützt und kann standardmäßig für die Aufnahme schneller Bewegungssequenzen benutzt werden.
Bei der Aufnahme vom Videorekorder kann man natürlich nicht auf den Noninterlaced-Modus umstellen: hier ist das Ausgangssignal durch die übliche Videonorm festgelegt und man muß den vertikalen Versatz von einem halben Bildpunkt von EVEN- zu ODD-Feld in Kauf nehmen.

Hochgeschwindigkeitskameras
Für die Auflösung extrem schneller Bewegungen sind natürlich auch 50 oder 60 Bilder/Sekunde beim CCIR oder RS-170 Signalstandard noch recht knapp. Technische Schwingungsvorgänge haben oft höhere Eigenfrequenzen, so daß zur Auswertung unbedingt noch höhere Aufnahmegeschwindigkeiten benutzt werden müssen. Hier bieten sich Spezialkameras an, die über eine spezielle Ansteuerung des Sensors z. B. bei verringerter horizontaler oder vertikaler Auflösung recht hohe Frequenzen erreichen. Einige dieser Kameras können direkt aus dem picCOLOR-System bedient werden. Beispiele dafür sind die analoge JAI CV-M30 mit maximal 360 Hz Aufnahmefrequenz bei 768*67 Pixeln Auflösung, die digitale Pulnix TM6710 mit maximal 350 Hz bei 648*100 Pixeln Auflösung, oder der Hitachi KP-F102 mit bis zu 190 Hz bei 1300*nn Pixeln. In den letzten Jahren sind einige spezielle CMOS-Kameras auf den Markt gekommen, die auf dem MT9M413-Photobit (bis 2008 Micron, jetzt, ab 2009, Aptina Imaging) Chip basieren, der mit 1280*1024 Pixeln maximal 500 Bildern/Sekunde aufnehmen kann. Bei diesen Kameras können über eine Fensterauslesetechnik noch höhere Frequenzen bei verringerter Auflösung erzielt werden (z. B. bis 16000Hz bei 1280*32 Pixeln). Damit können schnelle Bewegungen auf einfache und recht preiswerte Art ausgewertet werden. Interessant sind hier z. B. folgende Kameras: Basler A504, Mikrotron MC1310, oder Vosskühler CCD1300, mit jeweils 1280*1024 Pixeln bei 500 Hz. Von Aptina Imaging gibt es außerdem noch CMOS-Sensoren mit 256kPixel und mit 4MPixel bei entsprechend schnellen Bildraten.Von Cypress Semiconductor gibt es mit den LUPA-Sensoren ebenfalls extrem schnelle Typen, die gleichzeitig noch eine deutlich bessere Empfindlichkeit zeigen. Ein Beispiel mit dem LUPA-1300-Sensor ist die Mikrotron Eosens-Kamera mit 1280*1024 Pixeln bei maximal 500fps. Außerdem gibt es spezielle Kameras von Weinberger, KODAK, FastCam, RedLake und Photron. Sofern diese Kameras die Bilder direkt in den Hauptspeicher zur Auswertung übertragen, werden Busbandbreiten von 500 und mehr MByte/Sekunde erforderlich. Verschiedene Server-Mainboards stellen den schnellen PCI-X-Bus zur Verfügung, mit dem tatsächlich Transfergeschwindigkeiten bis knapp 800MB/s erzielt werden können. Hier liegt der Flaschenhals z. Zt. noch bei den meisten Frame Grabbern, die bisher in der Regel nur den 66MHz 64Bit PCI-X-Bus unterstützen und damit etwa 360..430MB/s erreichen. Außerdem gibt es PCI-Express-Frame-Grabber, die z. B. bei 8 Lanes theoretisch Geschwindigkeiten bis 2GB/s erreichen können. Leider haben die meisten verfügbaren PCI-Express-Grabber nur 4 Lanes, mit denen sie dann etwa 700MB/s Transferrate erzielen. Einzige Ausnahmen sind z. Zt. der Karbon-Frame-Grabber der Firma BitFlow, Inc. und der pcie8dv_cl von EDT, die jedoch noch nicht an das picCOLOR-Programm angepaßt wurden.Kameras, die solche Transferraten benötigen, werden z. B. mit der Basler A406k (4MPixel bei 209fps) auf den Markt kommen.

Farbbildsequenzen und Stereo-Sequenzen
Mit einem Grauwert-System lassen sich 24-Bit Echtfarbsequenzen oder Stereosequenzen nur mit bestimmten Tricks aufnehmen. Wenn der eingesetzte Frame Grabber die hierfür notwendigen Eingangskanäle zur Verfügung stellt, so werden die Farb- oder Stereoanteile gleichzeitig aufgenommen und automatisch in die richtigen Speicherbereiche geleitet. Die meisten modernen Frame Grabber, z. B. mit CameraLink-Standard, stellen diese Möglichkeit zur Verfügung. Wenn der Frame Grabber jedoch nur gemultiplexte, also umschaltbare Videoeingänge besitzt, so werden diese Eingänge so schnell wie möglich nacheinander umgeschaltet und die Teilbilder eingelesen. Hierbei erreicht man bei 24-Bit Farbbildsequenzen bei CCIR-Signalen z. B. 8.3333Hz, also 1/3 Echtzeit, bei Stereosequenzen mit zwei CCIR-Kameras 12.5Hz, also halbe Echtzeit. Wenn die Kamera jedoch eine einfache 1-Chip-Kamera mit Bayer-Pattern ist, so kann man die Bayer-Bilder einfach als Grauwertbilder auffassen und als Sequenz in den Speicher schreiben und später in richtige Farbbilder umrechnen.

Stereo-Bildsequenzen mit zwei Kameras
Mit Hilfe des Sequenz-Zusatzmodules kann auch das Einlesen von Stereo-Bildsequenzen erfolgen. Die meisten modernen Frame Grabber, z. B. mit CameraLink-Standard, gibt es als Versionen mit Dual-Eingängen, so daß direkt zwei Kameras angeschlossen werden können. Natürlich können auch zwei gleiche Frame Grabber im System eingesetzt werden, so daß dann auf jeden Fall zwei Eingänge zur Verfügung stehen. Nach korrekter Stereo-Einstellung in picCOLOR werden dann die Bildsequenzen der zwei Kameras direkt in zwei Sequenzbildspeicher übernommen. Wenn diese Möglchkeit jedoch nicht besteht, d. h. falls der eingesetzte Frame Grabber das gleichzeitige Einziehen der beiden Stereokameras nicht zuläßt, können ähnlich wie beim Einlesen von Farbbildsequenzen die beiden Kameraeingänge der Stereo-Kameras abwechselnd umgeschaltet werden. In diesem Fall kann man jedoch auch noch über einen Trick höhere Bildfrequenzen und eventuell sogar das gleichzeitige Einziehen der Stereobilder erzielen, indem man lediglich Halbbilder oder Teilbilder der Stereokameras einzieht. Wenn also z. B. jeweils das erste Halbbild der linken Kamera und darauf das zweite Halbbild der rechten Kamera eingelesen wird, läßt sich eine links/rechts-Bildfrequenz von 50 Hz bei CCIR (oder im amerikanischen System 60 Hz) erzielen, die immerhin hoch genug ist, daß man die Sequenz sogar als Echtzeit-Stereo-Sequenz mit einer LCD-Shutter-Brille relativ flickerfrei betrachten kann. Wenn Teilbilder jeder Kamera eingelesen werden, z. B. die obere Bildhälfte der linken Kamera und die untere Bildhälfte der rechten Kamera, so kann garantiert werden, daß die beiden Teilbilder zur gleichen Zeit entstanden sind. Diese Möglichkeit ist z. Zt. nur für bestimmte Frame Grabber Karten implementiert. Genauere Beschreibung der Stereo-Funktionen finden Sie im Stereo-Zusatzmodul. Ganz wichtig ist natürlich, daß die beiden Stereo-Kameras immer aufeinander synchronisiert sein müssen, z. B. über ein externes Triggersignal. Andernfalls ist eine zeitgenaue Stereoauswertung nicht möglich.

Farbbilder oder Stereobilder im Single-Shot-Modus
Wenn eine Sequenz im Einzelbildmodus (Single-Shot) eingelesen wird und das System auf 24Bit-Farbbilder mit 3 Bildspeichern oder auf Stereo mit zwei Bildspeichern eingestellt ist, so werden bei jedem Mausklick automatisch alle 3 Farbeingänge (oder entsprechend die beiden extra eingestellten Stereoeingänge) benutzt und die 3 Farbauszüge oder die beiden Stereobilder automatisch in die zugehörigen Bildspeicher übertragen.
RGB-Bilder werden von den systembekannten RGB-Kameraeingängen (normalerweise die Eingänge 1,2,3, Eingang 0 ist reserviert) eingelesen und nacheinander im Sequenzspeicher abgelegt. Stereobilder werden von den zuvor in der "Stereo"-Dialogbox eingestellten Kameras eingelesen. Wenn der Sequenzspeicher nicht durch drei (für RGB-Sequenzen) oder durch zwei (für Stereo-Sequenzen) teilbar ist, so werden die jeweils restlichen Bilder der Sequenz mit dem linken Kamerabild oder dem Rot-Anteil aufgefüllt. (Dies sind alles Funktionen des picCOLOR-Programmes für die picCOLOR V2.17-Karte)

Einlesen von 3D-Bildern
Ein 3D-Bild wird sicherlich meistens in der Form von Einzelbildern, d. h. Schnitten eingelesen. Wichtiges Beispiel ist hier die Mikroskop-Fokusserie. Hierbei wird ein Objekt unter dem Mikroskop - in der Regel ein durchsichtiges Objekt - angefahren und als 2D-Schnitt eingelesen. Dann wird der Z-Antrieb ein wenig verstellt, so daß eine andere Ebene scharf abgebildet wird, und es wird das nächste Schnittbild übernommen usw. Dieses Verfahren kann natürlich auch automatisiert werden, indem man über eine MACRO-Funktion den Z-Antrieb des Mikroskoptisches ansteuert.
Für den Fall, daß ein 3D-Bild innerhalb möglichst kurzer Zeit eingelesen werden soll, z. B. weil sich das Bild langsam verändert, ist das schnelle Einlesen wie bei einer Bildsequenz sinnvoll. Hierzu muß dann allerdings eine Triggerung auf den Verfahrvorgang, also z. B. den Z-Antrieb des Mikroskoptisches, gewährleistet sein, so daß nicht gerade verfahren wird, während die Kamera das Bild aufnimmt. Die Sachlage vereinfacht sich, wenn die Kamera auf sehr kurze Verschlußzeiten eingestellt werden kann.
Größere durchsichtige 3D-Räume können z. B. mit einer bewegten Lichtschnittoptik aufgenommen werden. Hierzu muß die Bewegung des Lichtschnittes auf die Aufnahmefrequenz synchronisiert werden. Solche Aufnahmetechniken wären sinnvoll für die PIV-Auswertetechnik (Particle Image Velocimetry) zur Vermessung von Strömungsfeldern in Wasser oder Luft mit winzigen schwebenden Partikeln. Siehe hierzu auch das PIV-Zusatzmodul.

Einlesen mit arithmetischer/logischer Funktion
Bei hardwaremäßiger Eignung der Bildeinlesekarte kann auf Wunsch programmiert werden, daß die Übertragung vom Bildschirmspeicher in den Arbeitsspeicher mit einer logischen oder arithmetischen Funktion zwischen Live-Bild und einem bereits gespeichertem Bild durchgeführt wird. Hiermit könnte man z. B. einen störenden Hintergrund schon während der Aufnahme automatisch ausblenden. So bieten die X64CL- und Xcelera-Karten von Dalsa/Coreco eine Echtzeit-Hardware an, solche arithmetische Funktionen direkt mit dem Video-Strom auszuführen. Eine Implementation kann auf Wunsch ausgeführt werden. Bei der älteren VIPER-Kartenserie kann ein spezieller Pixel-Prozessor geliefert werden, mit dem recht komplexe Filter in Echtzeit während der Bildübernahme ausgeführt werden können. Mit der Micro-Enable-Karte ist dies über eine spezielle Programmierung des FPGA-Chips ebenfalls möglich.

Sequenzaufnahme als Video-Stream direkt auf Disk
Da der Bildspeicher im PC in der Regel begrenzt ist, z. B. 1024MB bis 4096MB, kommt oft der Wunsch auf, eine sehr lange Videosequenz direkt auf die wesentlich größere Festplatte zu speichern. Hier sind heute 1000GB oder mehr kein Problem. Die Geschwindigkeit heutiger moderner Festplatten ist in der Regel auch hoch genug, zumindest die "normale" CCIR-Videofrequenz mit 768*576 Grauwert-Pixeln bei 25Hz mit genügender Sicherheit zu speichern. Dies sind ja nur 11MB/Sekunde. Die Grenze der kontinuierlichen Schreibgeschwindigkeit moderner Festplatten liegt etwa bei 70..100MB/Sekunde bei SATA-Platten, noch etwas mehr bei SCSI-Platten. Allerdings kann dies kaum garantiert werden, da erfahrungsgemäß öfters - z. B. alle paar Sekunden - kleine Pausen eingelegt werden, in denen sich etwa die Festplatte synchronisiert oder Windows irgendwelche mehr oder weniger wichtigen Hintergrundprozesse startet. Wenn höhere Geschwindigkeiten verlangt sind, z. B. bei einer CMOS-Kamera mit 1280*1024 Pixeln bei 100Hz schon 132MB/Sekunde, dann sind schnelle RAID0-Plattensysteme gefragt. Im einfachsten Fall reicht hier schon ein einfaches SATA-Festplatten-RAID0-System mit 2 Platten aus, mit dem man in der Regel schon deutlich über 100MB/Sekunde erreichen kann, auch wenn man den SATA-Controller des Motherboards benutzt. Wenn es noch schneller sein muß, wird man z. B. einen PCI-X oder PCI-Express-RAID-Controller einsetzen und mehr als 2 Platten. Transferraten von etwa 300MB/s wurden z. B. mit einem einfachen 8-fach SATA-Controller von Areca und 8 Seagate 7200.9 Festplatten mit je 160GB erzielt. Wenn SCSI oder moderne SAS-Platten und ein entsprechender Controller eingesetzt werden, sollten auch noch wesentlich höhrere Transferraten möglich sein. Richtig schnell wird es, wenn SSD-Karten mit PCIexpress x8 Interface der Firma Fusion-IO eingesetzt werden: hier sind bis zu 1.4GB/s angekündigt, immerhin bei einer Drive-Größe von 320GB!

Um die Bilddaten nun kontinuierlich und auch sicher und ohne Unterbrechung durch Plattenkalibrierung oder Windows-Zugriffe auf die Platte oder das Plattensystem schreiben zu können, wurde im picCOLOR Programm eine Funktion implementiert, die über einen Ring-Speicher eine kontinuierliche Sequenz aufnimmt und diese direkt so schnell wie möglich auf das Plattensystem schreibt. Wenn die Schreibgeschwindigkeit nicht ausreicht, mit der Bildeinlesegeschwindigkeit mitzuhalten, wird der Schreibzeiger im Ring-Speicher zurückfallen. Dies wird in der Statuszeile als "Delay" angezeigt. Erst wenn der Schreibzeiger derart weit zurückgefallen ist, daß das gerade wegzuschreibende Bild droht, mit dem nächsten eingelesenen Bild überschrieben zu werden, wird der Schreibzeiger Bilder überspringen. Dies wird in der Statuszeile als "Skip"-Anzahl angezeigt. In diesem Fall sollte die Sequenz abgebrochen werden. Auch wenn die Schreibgeschwindigkeit langsamer ist als die Bildeinlesegeschwindigkeit, kann diese Art der Abspeicherung sehr wohl sinnvoll sein. Immerhin kann man damit die Länge einer aufgenommenen Sequenz erheblich vergrößern, wenn die Schreibgesschwindigkeit zumindest größer als 50% der Bildeinlesegeschwindigkeit beträgt. Wenn möglich, d. h. wenn noch kein älteres Bild überschrieben wurde, bevor es abgespeichert wurde, so wird nach Beendigung der Bildübernahme noch der komplette Ringspeicher abgespeichert. Hierzu sollte ein Sicherheitsabstand im Ringspeicher eingestellt werden, der verhindert, daß solch ein Überschreiben passiert. Hierzu muß bedacht werden, daß picCOLOR erst nach einer Bildübernahme feststellen kann, ob der Ringspeicher eingeholt wurde. Der Sicherheitsabstand muß also so groß sein, daß zwischen Bildeinlesezeiger und Abspeicherzeiger soviele Bilder liegen, daß auch ein unerwartetes Eingreifen von Windows, etwa ein Bildschirmupdate oder eine Netzwerkanfrage nicht zum Überschreiben führt.

Nach Definition eines Ring-Speichers (hierzu wird einfach eine ganz normale Bildsequenz definiert) und Start der Funktion muß entschieden werden, ob man die Sequenz als kontinuierlichen Video-Stream in einem einzigen sehr großen File abspeichern möchte oder ob man Einzelbilder als einzelne Files abspeichern möchte. Diese letztere Möglichkeit ist langsamer, da für jedes Bild ein File geöffnet werden muß, und ist lediglich für Testzwecke implementiert. Video-Strem-Files können natürlich sehr lang werden. Da manche Systeme Filegrößen von mehr als 2GB nicht zulassen oder bei größeren Files deutlich an Geschwindigkeit verlieren, werden die Stream-Files z. Zt. auf 1GB begrenzt. Danach wird automatisch ein neuer File mit dem gleichen Namen geöffnet, der sich nur durch eine andere Extension unterscheidet (name.VID, name.V00, name.V01, name.V02, ...). Man kann also insgesamt bis zu 101GB an Videostream speichern. Lediglich an den Anfang des ersten Files wird durch picCOLOR ein File-Header geschrieben, in dem die wichtigste Sequenzinformation enthalten ist. Dieser Header kann mit einem ASCII-Anzeigeprogramm betrachtet werden. Er ist folgendermaßen aufgebaut (hier für eine Bildgröße von 648*484 Pixeln bei 8Bit Grauwerten):

picCOLOR_Video_Stream W=0648 H=0484 B=08 STEREO=0 .............

Dieser Header ist genau 64 Bytes lang, danach beginnen direkt die Bilddaten. Wenn das Stereo-Flag in picCOLOR gesetzt ist, werden Stereosequenzen abgespeichert, wobei immer abwechselnd das linke und das recht Bild gespeichert wird. Die Bildgröße richtet sich streng nach der x/y-Ausdehnung des Sequenzspeichers. Man kann einen Bildzähler/Zeitstempel mitspeichern. Dieser ist in der linken oberen Ecke jedes Einzelbildes als Pixelinformation gespeichert. Dieser belegt die ersten 12 Bytes jedes Bildes mit der laufenden Bildnummer, dem I/O-Status (das ist das "Enable"-Bit der I/O-Karte), und dem im Acquisition-Configuration eingestellten Zeitstempel, also z. B. dem HighResolution Timer.

Solche abgespeicherte Bildsequenzen können über die "Load Stream"-Funktion wieder eingelesen werden. Da der Stream ja in der Regel länger als ein intern definierter Bildsequenzspeicher ist, kann hierbei ausgewählt werden, wieviele Bilder des Streams und ab welcher Bildnummer des Streams eingelesen werden soll. Während des Einlesens kann die komplette Sequenz angezeigt werden. Hierbei wird die laufende Bildnummer in der Statuszeile angezeigt, um auf diese Weise zumindest in etwa bestimmte Sequenzbereiche finden zu können. Außerdem kann auch ein Stream-Player aufgerufen werden, mit dem dann - bei Anzeige in der Status-Zeile am unteren Bildrand - die Einzelbilder auf- und abgeblättert werden können und auch einzelne Bilder abgespeichert oder in den Sequenzbildspeicher übertragen werden können.


7.11.6. 3D-IO

*7.11.6. / 7.12.6. Ein- und Ausgabe auf Festplatte
3D-Bilder und Sequenzen sind im Arbeitsspeicher des picCOLOR-Systemes in der Regel (Ausnahme: Video-Stream) immer als Einzel- oder Schnittbilder gespeichert. Dies vereinfacht den Zugriff und ermöglicht es, mit den normalen Lade- und Speicherroutinen und Fileformaten zu arbeiten. Jedes Einzelbild wird in einem gesonderten File gespeichert und erhält einen beliebigen eigenen Namen. Normalerweise sollte dies ein Wurzelname (Root-Name) mit laufender Nummer sein. Hierfür werden die automatischen unten beschriebenen Funktionen zur Verfügung gestellt. Nachteil dieser Methode ist natürlich, daß die Verzeichnisse auf der Festplatte recht schnell voll werden und daß außerdem durch die recht großen Speicherblöcke auf Festplatten von z. B. 4kByte im Mittel ein halber Block, also 2kByte pro Bild verloren gehen. Bei kleinen Bildausschnitten und dem stark komprimierenden JPEG-Format kann es dann vorkommen, daß Einzelbilder in der gleichen Größenordnung liegen und daher dann die gesamte Sequenz auf der Festplatte den doppelten Speicherplatz belegt. Man sollte es daher zur Regel machen, längere Sequenzen oder große 3D-Bilder bei längerem Nichtgebrauch mit einem Archivierungsprogramm zu einem einzigen File zusammenzufassen. Gut bewährt haben sich hier die Archivierungsprogramme LHA.EXE oder das bekanntere Programm PKZIP.EXE unter DOS, oder die Programme WinZip oder WinRar unter Windows.
Als Speicherformat für die Einzelbilder steht unter anderem das weit verbreitete TIF-Format zur Verfügung sowie das bei den großen Datenmengen sehr sinnvolle, da stark komprimierende JPEG-Format. Eine Kompression auf 10 bis 20% der ursprünglichen Datenmenge ist bei kaum sichtbarer, jedoch meßbarer (!) Bilddegradierung möglich. Wenn eine Bilddegradierung nicht zulässig ist, so sollte man im TIF-Format abspeichern und kann dann bei der Archivierung mit den üblichen Archivierungsprogrammen mit der Huffmann-Kodierung immerhin doch noch bis zu 50% Platz sparen. Alle weiteren vom picCOLOR-Programm zur Verfügung gestellten Bildspeicherformate (BMP, EPS, PPM) können natürlich auch benutzt werden.
Die Einzelbildabspeicherung oder das Hereinladen der Bildsequenzen in hunderten oder tausenden von Einzelbildern ist natürlich nicht mehr interaktiv von Hand durchzuführen. Hierzu stehen spezielle Funktionen zur Verfügung, die nach Eingabe des Verzeichnisses, des Wurzel-Namens und einiger weiterer Parameter die Lade- oder Speicherfunktion automatisch übernehmen.

Lade 3D/Sequenz-Bild von Festplatte

Zum Laden eines 3D- oder Sequenzbildes, das den picCOLOR-Namenskonventionen genügt, welches also aus einem Wurzelnamen und einer laufenden Nummer besteht, kann die vorgegebene Ladefunktion benutzt werden. Zum Laden eines 3D-Bildes oder einer Sequenz muß zuvor der 3D/Sequenz-Speicher richtig eingestellt und definiert werden, d. h. mit der richtigen x,y-Ausdehnung und der richtigen Länge. Größer schadet nicht, bei kleinerem Speicher wird das eingelesene Bild abgeschnitten. Dann wird die "Load 3D/Sequenz"-Funktion im "3D/Sequenz"-Menü oder aus der "Tool-Box" aufgerufen. In der üblichen Windows-"Open-File"-Dialogbox wird ein Bild der Sequenz ausgewählt und geöffnet. Hierbei ist es völlig egal, welches Bild der Sequenz genommen wird - es geht hierbei ja nur darum, dem System den Root-Namen zu geben. Es erscheint dann eine weitere Dialogbox, in der bestimmte Parameter zur Namenskonvention eingegeben werden können und in der zusätzlich bestimmt werden kann, an welchem Schnittbild des 3D/Sequenzbildes das Laden starten soll. Wichtigste Eingabe ist hier die Länge von Wurzelnamenanteil und von Nummernanteil im Filenamen. In der aktuellen Version der Funktion muß noch die Länge des Wurzelnamens und die Länge der Nummernkennung von Hand eingetragen werden. Diese können natürlich auch vom System automatisch anhand des ausgewählten Files erkannt werden. Dies wird in einer zukünftigen Version des picCOLOR-Programmes eingeführt, wobei allerdings trotzdem eine manuelle Nachbearbeitung möglich sein wird, da ja zum Wurzelnamen auch Ziffern gehören können, was nicht automatisch erkennbar sein kann. Die Anzahl der Stellen im Nummeranteil muß immer gleich sein, aufgefüllt mit Nullen.

Speichere Sequenz/3D-Bild

Wie beim Laden eines 3D/Sequenzbildes wird zuerst ein Wurzelname in der üblichen Windows-"Save-File"-Dialogbox definiert, dann wird in einer weiteren Dialogbox die genaue Namenskonvention definiert, d. h. Länge des Wurzelnamenanteils und des Nummernanteils. Im Unterschied zur weiter oben angesprochenen Namens-Dialogbox zum Laden erscheint beim Filenamen-Setup lediglich der eingegebene Wurzelname (incl. Pfad und ausgewählter Type-Kennung). Außerdem kann ein Bereich der Sequenz oder des 3D-Bildes bestimmt werden, der abgespeichert werden soll. Die Nummern im Filenamen müssen nicht notwendigerweise den Nummern des Schnittbildes im Sequenzspeicher entsprechen.

Bildkompression bei der Abspeicherung
Im Unterschied zu üblichen Multi-Media-Systemen erfolgt beim picCOLOR-Programm die Abspeicherung im Arbeitsspeicher unkomprimiert, damit die Bilder nach der Aufnahme zur direkten und schnellen Verarbeitung zur Verfügung stehen. Beim Speichern auf die Festplatte können die Bilder natürlich komprimiert werden - mit dem JPEG-Verfahren leicht bis auf 20% oder sogar 10% der ursprünglichen Größe. Wenn jedoch die Bilder später quantitativ ausgewertet werden sollen, so sollte man vor der Komprimierung genau prüfen, ob nicht wichtige Meßwerte, z. B. Objektkanten, durch die Kompression verändert werden und so nach dem Dekomprimieren zu Meßfehlern führen. Besonders bei Subpixelauswertungen ist eine Kompression auf keinen Fall anzuraten.
Eine noch weitergehende Kompression bis zu einem Faktor von 100 kann durch Abspeicherung als MPEG-Video erreicht werden. Dann läßt jedoch die Qualität der Bilder deutlich nach und eine meßtechnische Auswertung ist nicht mehr anzuraten. MPEG-Kodierprogramme können auf dem Internet gefunden werden. Recht ordentlich und außerdem frei zugänglich ist z. B. das Programm "mpeg_enc.exe" (oder komplett mit Beschreibung und Beispiel "ENC11DOS.ZIP") der MPEG Society (Info: MPEG-L@netcom.com oder Download: ftp.netcom.com:/pub/cfogg/mpeg2), das auch von Phade Software (phade@tu-berlin.de oder phade@contrib.de) gepflegt wird. Leider ist dieses Programm jedoch ein DOS-Programm. Das "mpeg_enc.exe"-Programm verlangt als Eingabe Bilder im ".PPM"-Format. Dies ist ein in der Unix-Gemeinde häufig verwendetes sehr einfaches Bildformat, das auch vom picCOLOR-Programm zur Verfügung gestellt wird. In der implementierten Form ist es für Farbbilder gedacht, Schwarz/Weiß-Bilder werden bei gleichen RGB-Farbwerten auf das 3-fache aufgebläht. Es ist daher sinnvoll, die PPM-Bilder nach der MPEG-Umwandlung zu löschen.

Seit kurzer Zeit kann man nun auch AVI-Files mit picCOLOR abspeichern. Allerdings ist hier noch kein Kompressionsverfahren implementiert. Es werden 24Bit-Farbsequenzen abgespeichert, d. h. normale Grauwert-Sequenzen werden um den Faktor 3 aufgebläht. Dafür ist dann allerdings die Umwandlung in andere Formate oder die Kompression sehr einfach, z. B. mit Freeware-Programmen wie VirtualDub, das man auf dem Internet leicht findet. Achtung, da in der Funktion zur AVI-Speicherung intern noch 32-Bit Integer benutzt werden, liegt die maximale Filegröße bei 2GB. Längere Videosequenzen müssen in Teilen gespeichert werden und können dann mit VirtualDub beim Komprimieren wieder zusammengefügt werden. Es ist geplant, in das picCOLOR-Programm auch Filter für die unter Windows implementierten Codecs zu implementieren. Dann wird es möglich sein, direkt vom picCOLOR-Programm aus hochkomprimierte MPEG-Sequenzen abzuspeichern. Da man im picCOLOR-Programm in der Regel mit speziellen Kameras arbeitet, die sehr unterschiedliche Frameraten aufweisen können, kann man hier in der Dialogbox die gewünschte Framerate einstellen. Die Einstellung kann in bestimmten Fällen automatisch geschehen, wenn nämlich dem Programm die Framerate der Kamera über den Hochgeschwindigkeits-Timer oder einen anderen Zeitstempel der Bilder bekannt ist.

Laden eines Video-Streams von der Festplatte

Mit der Video-Stream-Funktion abgespeicherte Bildsequenzen können über die "Load Stream"-Funktion wieder eingelesen werden. Da der Stream ja in der Regel länger als ein intern definierter Bildsequenzspeicher ist, kann hierbei ausgewählt werden, wieviele Bilder des Streams und ab welcher Bildnummer des Streams eingelesen werden soll. Während des Einlesens kann die komplette Sequenz vom ersten Bild der Sequenz bis zum letzten eingelesenen Bild angezeigt werden. Hierbei wird die laufende Bildnummer in der Statuszeile angezeigt, um auf diese Weise zumindest in etwa bestimmte Sequenzbereiche finden zu können. Video-Streams, die vom picCOLOR-Programm erzeugt worden sind, werden an einem bestimmten Header automatisch erkannt (siehe Sequenzaufnahme als Video-Stream direkt auf Disk). Wenn kein gültiger picCOLOR-Header existiert, aber der Video-Stream in einem einfachen Format gespeichert ist, d. h. aus einem Header bestimmter Länge besteht und wenn dann die Bilddaten in einfacher Reihenfolge ohne weitere Header aneinandergereiht sind, so kann solch ein Stream ebenfalls eingelesen werden. Automatisch wird die RAW-File-Parameter-Dialogbox auf den Bildschirm gebracht, in der man Breite und Höhe des Bildes sowie Bittiefe und die Headerlänge (nur für einen globalen Header) einstellen kann. Die File-Extension für Video-Streams muß jedoch auf jeden Fall .VID lauten. Wenn dies bei einem fremden Format nicht der Fall ist, muß man dem Video-File diese Endung ausdrücklich geben. Wenn das Ende eines Video-Stream-Files erreicht worden ist, wird automatisch nach einem Folge-File im gleichen Verzeichnis gesucht, dabei wird nach dem gleichen File-Namen gesucht, jedoch mit der Extension .V00, dann .V01, .V02, usw., bis .V99. Diese Folge-Files haben keinen Header. Dies ermöglicht, längere Videosequenzen abzulegen und einzulesen, die durch Betriebssystem-bedingte Einschränkungen bestimmte File-Größen überschreiten. Bei der Standard-Einstellung von 1GB File-Länge kann man so also Sequenzen von 101GB abspeichern. Es können auch Stereo-Bildsequenzen eingelesen werden. Hierbei müssen die Bilder abwechselnd für die linke und die rechte Kamera im File gespeichert sein.


7.11.7. 3D-Processing

7.11.7. / 7.12.7. Verarbeitung von 3D/Sequenz-Bildern
Während die Definition und Speicherung von Sequenzen und 3D-Bildern im picCOLOR-Program gleich ist und auch die Darstellung in Einzelbildern der Sequenz oder Schnittbildern des 3D-Bildes immerhin sehr ähnlich, ist die Verarbeitung von 3D-Bildern grundsätzlich unterschiedlich. In Sequenzen liegen in der Regel zwei Ortsdimensionen vor und eine Zeitdimension, bei 3D-Bildern liegen drei gleichwertige Ortsdimensionen vor. Die Pixel werden hier Voxel genannt, entstanden aus "Volume Pixel Element".
In Sequenzen werden in der Regel Zuordnungen in aufeinanderfolgenden Zeitreihenbildern vorgenommen, z. B. zur Detektion einer Bewegung. In 3D-Bildern dagegen werden z. B. 3D-Filter angewandt oder Objekte im 3D-Raum gesucht. Dies bedeutet jedoch nicht, daß nicht doch einige der Funktionen für beide Anwendungen gleichermaßen sinnvoll eingesetzt werden können.
Da 3D/Sequenz-Bilder in der Regel viel Speicherplatz benötigen, wird eine UNDO-Funktion z. Zt. nicht zur Verfügung gestellt. Wenn man jedoch eine UNDO-Funktion benötigt und den hierfür notwendigen Speicherplatz etwa bei kleinem 3D-Bild bereitstellen kann, so sollte man ein zweites 3D-Bild definieren und vor jedem kritischen Verarbeitungsschritt das Bild in den zweiten 3D-Speicher durch einen Kopiervorgang retten. Natürlich ist es auch möglich, eine direkte Undo-Funktion einzubauen. Bei tatsächlichem Bedarf wenden Sie sich bitte an das Entwicklungsteam.

Wenn ein normaler 2D-Bildspeicher und damit das normale 2D-Bildspeicher-Hauptmenü aktiviert ist, so erhält man im Processing-Menü unter dem Eintrag 3D-Processing das folgende Menü, mit dem in erster Linie 3D-Schnittbilder in den 2D-Bildspeicher zur interaktiven Bearbeitung transferiert werden können. Hiermit können 3D-Bildschnitte interaktiv oder per MACRO-Programm im 2D-Bildspeicher verarbeitet werden und dann wieder in den 3D/Sequenzspeicher zurückkopiert werden. Per MACRO-Programm ist auch eine direkte zeitsparendere Verarbeitung im 3D/Sequenz-Speicher ohne den Transfer zum 2D-Bildspeicher und zurück möglich. Dabei gibt es jedoch gewisse Einschränkungen.

3D-Processing

--------------------------
-Active Buf. ->
-Second.Buf. ->

--------------------------
Copy ROI -> 3D (xy)
Pick 3D-Image to ROI

Copy 3D (xy) -> ROI
Copy 3D (zy) -> ROI
Copy 3D (xz) -> ROI

Hier findet man Funktionen zur Auswahl einzelner 3D/Sequenz-Schnittbilder und Funktionen zur Wahl des aktiven und bei dualen Funktionen auch des zweiten benutzten 3D-Bildspeichers.

Kopiere 3D-Schnittbild -> Bildspeicher (Diese Funktion ist nur vom normalen 2D-Bild aus erreichbar)
Während bei Sequenzen üblicherweise ein Bild nach dem anderen in den Bildspeicher übertragen wird und dort mit 2-dimensionalen Funktionen verarbeitet wird und dann wieder in den Sequenz-Speicher zurückkopiert wird, werden die meisten 3D-Verarbeitungsfunktionen direkt im 3D-Speicher ausgeführt. Für bestimmte Zwecke kann jedoch die Arbeit im 2-dimensionalen Bildspeicher sinnvoll sein. Dazu werden die Funktionen "Copy 3D->ROI" und "Copy ROI->3D" zur Verfügung gestellt. Die Kopierfunktionen vom 3D-Speicher in die aktuelle ROI existieren in drei verschiedenen Versionen: es können xy-Ebenen, yz-Ebenen und zx-Ebenen kopiert werden.

Wenn jedoch ein 3D/Sequenz-Speicher und damit das spezielle 3D/Sequenz-Hauptmenü aktiviert ist, so erhält man unter dem Hauptmenüpunkt "Processing" eine Menüstruktur, die der eines 2D-Bildspeichers sehr ähnlich ist, jedoch ausschließlich 3D- und Sequenzbearbeitungsfunktionen zur Verfügung stellt:

3D-Processing:

Sequence Processing ->
--------------------------

Select Active 3D/Seq.

Select Second 3D/Seq.

--------------------------

Copy 3D/Seq.
3D-Geometry ->
3D-Arithmetic ->
3D-Filters ->
3D-Frequency ->
3D-Binary ->
3D-Morphology ->

Dies sind hauptsächlich Funktionen zur Vorverarbeitung und Segmentierung von Sequenzen oder 3D-Bildern. Prinzipiell können jedoch beinahe alle Funktionen der 2-dimensionalen picCOLOR-Bibliothek auch als 3D-Funktionen geschrieben werden. Bei speziellen Wünschen bitte mit dem Entwicklungsteam Rücksprache halten.

3D-Arithmetik

Invert 3D
Add Const 3D
Mul Const 3D
Copy Active -> Second
.......

3D-Arithmetic: Arithmetische Funktionen für ein 3D-Bild oder für zwei 3D-Bilder:
- Löschen des 3D-Bildes (über "Clear 3D/Sequence"-Funktion im 3D/Sequenz-Menü)
- Invertieren (Jedes Voxel (von Volume Pixel Element) wird zu [255-Grauwert] gesetzt)
- Addieren oder Subtrahieren einer Konstanten
- Multiplizieren oder Dividieren einer Konstanten
- Skalieren: Subtrahieren einer Konstante und Multiplizieren mit einer Konstanten
- Quantifizieren
- Logische Funktionen zwischen zwei 3D-Bildern (AND, OR, XOR, NAND, Shift Left/Right)
- Arithmetische Funktionen mit zwei 3D-Bildern (MAX, MIN, ADD, SUB, usw.)
- Energiebestimmung
- Zyklisches Subtrahieren

E ine genauere Beschreibung der Funktionen findet man bei den normalen 2D-Funktionen (Kap. 7.3. Arithmetic).

3D-Filter

---- Seq. Processing ----

...

----- 3D Processing -----

Laplace Ultra
Sharpen Norm
Sharpen More
Sobel Hx
Sobel Hy
Sobel Hz
Average
Gauss
Median 3*3*3
Median 5*5*5
Rank 3*3*3
Rank 5*5*5

Dieses Menue ist aufgeteilt in Funktionen, die bevorzugt für Sequenzen benötigt werden und Funktionen, die eher für 3D-Bilder eingesetzt werden. Für das ausschließliche Bearbeiten von Sequenzen sind hier noch keine Funktionen implementiert, da hierzu ja in der Regel 2D-Funktionen in normalen Bildspeichern benutzt werden. Auf Wunsch können hier jedoch neue Funktionen implementiert werden.

3D-Filter: 3*3*3-Konvolutionen:
- Laplace
- Sharpen ist eine Bildverschärfung mit Addition von Originalbild und Laplage-Kantenbild
- Sobel (Sobel-Hx, Sobel-Hy, Sobel-Hz und Sobel-Betrag)
- Average
- Gauss
- Sharpen, Sharpen more (= Laplace + Originalbild)
- Median-Filter ist in der 3*3*3-würfelförmigen und in der 5*5*5-kugelförmigen Version implementiert
- Rank-Filter stehen als Funktionen mit 3*3*3-Würfel-Kernel und dem kugelförmigen 5*5*5-Kernel zur Verfügung.

3D-Frequenzraumverarbeitung

3D Fast Fourier Transform
Show Power Spektrum

Freq. Domain Inspection
--------------------------
Spectra ->
Filters ->
Arithmetics ->
--------------------------

Shift DC (FFT Buffer)

--------------------------
Set 3D-FFT Buffer Size
Allocate FFT Buffer
Free FFT Buffer

3D-Frequency: 3D-Fouriertransformation:
Im Unterschied zu den 2D-Bildspeicherfunktionen muß vor der Ausführung der 3D-FFT ein 3D-FFT-Speicher definiert werden. Hierzu muß die Kantenlänge des zu bearbeitenden Würfels eingegeben werden [16,32,64,128...]. Das zuvor definierte 3D-Bild muß in allen Dimensionen gleich oder größer als diese Kantenlänge sein. Wenn es größer ist, so wird die FFT im Sub-Bildwürfel ab der vorderen linken oberen Ecke berechnet. Für jeden definierten 3D-Bildspeicher kann ein 3D-FFT-Speicher eingerichtet werden. Folgende Parameter für die Transformation sind implementiert:

- 3D-FFT
- 3D-IFFT (inverse Transformation)
- Transformation mit oder ohne Hamming Window
- Transformation mit DC-Anteil in der Mitte oder in der vorderen linken oberen Ecke

3D Spectra

Power
Phase
Real
Imag
Re/Im -> Pwr/Phase

Pwr/Phas -> Re/Im

- Berechnung von Amplitudenspektrum, Phasenspektrum, Realteil oder Imaginärteil

3DFreqFilters

Low Pass 3D
High Pass 3D
Band Pass 3D

Gauss Smooth

Gauss Bandpass

Garbor Even/Odd

Difference of Gaussian

Inverse/Wiener Filter

- Tief-, Hoch- und Bandpassfilter

3D-Freq.Arithm.

Clear FFTBuffer
Add Compl.Const
Mul Compl.Const
Conj. -Complex
Invers Complex

Normalize Complex

---------------------

Copy Buffer
Add Act=Act+Dst
Sub Act=Act-Dst
Mul Act=Act*Dst
Div Act=Act/Dst
X-Correl.ActDst
AutoCorr.Active
PolynomOTF->Act

- Clear active Buffer
- Add(/Sub) Const.
- Mul(/Div) Const.
- Konjugiert Komplex
- Invers Komplex
- Active = Active + Second
- Active = Active - Second
- Active = Active * Second
- Active = Active / Second
- Auto correlation with Active Buffer
- Cross Correlation of active and second Buffer

Weiterhin gibt es eine Funktion zur Erzeugung einer theoretischen 3D-Polynom-OTF (Optische Transferfunktion). Ein defokussiertes Bild kann als scharfes Bild und dessen Konvolution mit der Punktverbreiterungsfunktion (Point Spread Function: PSF) des defokussierten Linsensystemes angesehen werden. Die Fouriertransformierte der PSF ist die Optische Transferfunktion (OTF). Da die Konvolution im Frequenzbereich der Multiplikation entspricht, kann das Bild gefiltert, d. h. korrigiert werden, indem man die Fouriertransformierte des Bildes mit dem Inversen der OTF multipliziert und dann in den Ortsbereich zurückwandelt (Inverse Filterung). Im 3-dimensionalen Raum ist dies besonders interessant, wenn teilweise durchsichtige Objekte unter dem Mikroskop als 3-dimensionale Schnittbilder aufgenommen werden sollen: auch wenn die Tiefenschärfe eines Mikroskopes sehr gering ist, enthält jeder fokussierte Schnitt durch das Objekt die unscharfe Information aller anderen nicht fokussierten Schnitte. Über die Multiplikation mit dem Inversen der OTF kann diese störende Information stark reduziert werden. Leider ist dieses Verfahren nur dann wirksam, wenn die tatsächliche OTF des Mikroskopes der theoretischen sehr nahe kommt. Es besteht allerdings auch die Möglichkeit, die tatsächliche OTF experimentell zu ermitteln. Hierzu muß jedoch ein bei der gewünschten Vergrößerung derart winziges Objekt aufgenommen werden, daß es nur etwa einen Pixel groß ist.

Einige weitere Funktionen zur 3D-Bildverarbeitung sind bereits als MACRO-Programme realisiert. Weitere können selbst erstellt werden oder auf Wunsch auch bereitgestellt werden.

- Shift-DC im Image Buffer über MACRO-Funktion: Verschiebe DC-Anteil von der linken oberen vorderen Ecke in die Mitte des 3D-Bildes. Bei einigen Funktionen im Frequenzbereich kann es aus mathematischen Gründen vorkommen, daß die einzelnen 3-dimensionalen Fourierkoeffizienten abwechselnd positiv und negativ sind. In diesem Fall verschiebt sich der Nullpunkt des Spektrums (der DC-Anteil) oder - nach der Rückwandlung - des Ortsbereiches um die halbe Fensterbreite, d. h. was vorher in der Mitte des 3D-Bildes war, befindet sich nach der Umrechnung über Routinen im Frequenzbereich in der vorderen linken oberen Ecke. Durch einfache Ortsverschiebung über ein MACRO-Programm kann dies rückgängig gemacht werden.

3D-Binärisierung

Bin.Thres.
Bin.Band

3D-Binary: 3D-Binärisierung:
- Threshold
- Band (lower and upper threshold)

3D-Morphologie

Erosion 3*3*3
Dilation 3*3*3
Erosion 5*5*5
Dilation 5*5*5

3D-Morphology: 3*3*3 oder 5*5*5
- Erosion/Dilataion
Die Erosions- und Dilatationsfilter werden mit den Rank-Filtern gebildet. Diese stehen als Funktionen mit 3*3*3-Würfel-Kernel und dem kugelförmigen 5*5*5-Kernel zur Verfügung.

3D/Sequence-Miscellaneous

Rotate Sequence Buffer
Average Sequence Buffer

Bei der Aufnahme von Bildsequenzen im Ring-Speicher kann die Aufnahme zu einem beliebigen Zeitpunkt gestartet und gestoppt werden. Daher ist nicht sichergestellt, daß die Sequenz beim ersten Bild des Sequenzspeichers beginnt. Mit der "Rotate Sequence Buffer" - Funktion werden die Inhalte des Ringspeichers verschoben, sodaß die Sequenz im ersten Bild beginnt.

Das Ergebnis einer Bildmittelung einer Sequenz wird in einen normalen 2D-Bildspeicher geschrieben, der zuvor ausgewählt werden muß.

3D-Measurement

Geometry
Statistics

2D/3D-Tracking

Neben den einfachen interaktiven Pixel (oder Voxel)-Vermessungen direkt im 3D/Sequenzbild oder der Histogrammbestimmung über einen Vektor in 3D-Tiefenrichtung können auch komplexe Vermessungen durchgeführt werden. Ganz wichtig ist hier die 2D/3D-Tracking-Funktion, die über das entsprechende Extension-Modul verfügbar ist. Weitere Funktionen können über MACRO-Programme durchgeführt werden. Ein Beispiel ist die 3D-Volumenvermessung nach erfolgter Segmentierung und Binärisierung:

-3D-Volumenbestimmung über MACRO-Funktion: Bestimmung der Objekt-Fläche (helle Objekte) in den Schnittbildern und Volumenbestimmung über die vorher einzugebende Schichtdicke ist als Beispiel-MACRO-Programm vorhanden.


7.12. Sequence Processing

*7.12. Sequence Processing (3D/Sequence-Zusatzmodul)

Funktionen zur Verarbeitung von Bildsequenzen sind als Zusatzmodul erhältlich. Es wird gebeten, sich mit dem Programmentwicklungs-Team in Verbindung zu setzen und die Anforderungen und Möglichkeiten der vorhandenen Routinen zu diskutieren. Bildsequenzen sind normalerweise Bewegungssequenzen, bei denen die Einzelbilder der Sequenz einen bestimmten zeitlichen Abstand haben (Zeitreihenbilder). Normalerweise werden hier dann die Bewegungen von Objekten untersucht. Dies wird üblicherweise in den 2-dimensionalen Einzelbildern der Sequenz vorgenommen, so daß hierzu alle vorhandenen 2-dimensional arbeitenden Funktionen benutzt werden können. Hierzu werden die Einzelbilder der Sequenz in den normalen Arbeitsspeicher kopiert, bearbeitet und bei Bedarf schließlich wieder in den Sequenzspeicher zurückkopiert. Das automatische Bearbeiten ganzer Sequenzen kann mit dem MACRO-Interpreter sehr stark vereinfacht werden. Hier ist es dann auch möglich, die Schnittbilder direkt im Sequenzspeicher zu bearbeiten und so die Zeit zum Umkopieren zu sparen. Es wird dann die im normalen Bildspeicher definierte ROI benutzt, die jedoch bei kleinerem Sequenzbild auf dessen Größe abgeschnitten wird. Wenn Bewegungen verfolgt werden sollen, so können auch die speziell hierfür entwickelten Funktionen des "Particle Image Velocimetry / Particle Tracking"-Zusatzmodules oder des "Echtzeit-Positionsverfolgungs"-Modules eingesetzt werden. In bestimmten Fällen ist es jedoch notwendig, Funktionen mit allen Bildern der Sequenz gleichzeitig auszuführen oder zumindest in Zwischenrechnungen die Information aller Bilder zur Verfügung zu haben. Ein gutes Beispiel hierfür ist das Mitteln aller Bilder einer Sequenz zur Hintergrundkorrektur bei Bewegungen. Dazu kommen noch Funktionen, bei denen durch spezielle Programmierung eine erhebliche Geschwindigkeitssteigerung z. B. mit den BitBlock-Transfer-Befehlen des Prozessors erzielt werden kann. Hierzu gehören z. B. Kopierfunktionen und bestimmte logische und arithmetische Funktionen.

*7.11.1. / 7.12.1. Einleitung 3D/Sequenz

(Unter diesem Link findet man genauere Erklärungen zur Philosophie von 3D-Bildern und Sequenzen im picCOLOR-Programm.)

*7.11.2. / 7.12.2 Funktionsübersicht:
Diese Funktionsübersicht für 3D-Funktionen sowie für Sequenzverarbeitungsfunktionen ist sicherlich nicht vollständig, da praktisch täglich neue Funktionen implementiert werden.

*7.12.3. Define Sequence-Image

Definieren einer Bildsequenz mit x- und y-Ausdehnung, der Sequenzlänge in Einzelbildern. Hierbei ist zu beachten, daß Bildsequenzen eine enorme Speichermenge benötigen können. So hat z. B. eine 10 Sekunden lange Bildsequenz bei einer normalen CCIR-Kamera (10 * 25 Bilder pro Sekunde) der Größe 768*512 Pixel einen Speicherbedarf von beinahe 100 MBytes. Es können mehrere Sequenzen definiert werden, die z. Zt. jedoch die gleiche Größe und Sequenzlänge aufweisen müssen.

*7.12.4. Display Sequence-Image

Anzeigen der Einzelbilder einer Bildsequenz oder Animation als Video-Clip. Folgende Hinweise gelten für die Auswahl eines Einzelbildes der Sequenz zur weiteren Bearbeitung. Ausgehend von einem normalen 2D-Bild erhält man unter dem Hauptmenüpunkt "Processing" das folgende "Sequence Processing"-Untermenü:

Set Active Sequence
Set Second Sequence
Get Seq.-Image
ROI -> Sequence (xy)
Seq. (xy) -> ROI
Seq. (xt) -> ROI
Seq. (yt) -> ROI

Hier findet man Funktionen zur Wahl des aktiven Sequenzspeichers (bei dualen Funktionen auch eines zweiten Sequenzspeichers). Ansonsten sind hier die Kopierfunktionen aufgeführt, mit denen man einzelne Schnittbilder der Sequenz auf den aktiven 2D-Bildspeicher kopieren kann, dort dann verarbeiten kann und schließlich wieder zurückkopieren kann. Wenn dabei Schnitte über Orts- und Zeitkoordinaten ausgewertet werden sollen (x/Zeit oder y/Zeit), so können die entsprechenden Funktionen Seq. (xt) -> ROI und Seq. (yt) -> ROI verwendet werden.

*7.12.5. Acquire Sequence Image

Einlesen der Sequenz (Video-Clip) mit Videokamera im Einzelbildverfahren oder in Video-Echtzeit. Hier stehen verschiedene Funktionen zur Verfügung, die unter anderem auch Teilbilder von mehreren Kameras gleichzeitig übernehmen können. In der Regel wird in den Sequenzbildspeicher übernommen. In bestimmten Fällen, wenn der Sequenzbildspeicher nicht groß genug für eine sehr lange Sequenz ist und ein sehr schnelles Festplattensystem zur Verfügung steht, kann eine Bildsequenz auch direkt auf die Festplatte gespeichert werden. Die hierzu benötigten Funktionen werden ebenfalls im Kapitel 7.12.5. erläutert.

*7.11.6. / 7.12.6. Ein- und Ausgabe auf Festplatte

Einlesen einer Sequenz von der Festplatte oder Abspeichern auf Festplatte, entweder als Sequenz von Einzelbildern oder als Video-Stream-File. Wenn Einzelbilder gespeichert werden, so wird ein Root-Name eingegeben und die Anzahl der Stellen einer laufenden Zahl angegeben, so daß alle Einzelbilder der Sequenz (oder die 2D-Schnitte des 3D-Bildes) in einem Verzeichnis mit laufender Nummer gespeichert werden. Für Bildsequenzen gibt es z. Zt. zwei Video-Stream-Formate, die von picCOLOR unterstützt werden. Dies ist erstens das picCOLOR-eigene Videoformat, das benutzt wird, wenn möglichst schnell, d. h. in Echtzeit, Bildsequenzen von der Kamera direkt auf die Festplatte gespeichert werden sollen. Hier darf, besonders bei modernen Hochgeschwindigkeitskameras, nichts Unnötiges getan werden. Immerhin kann schon eine einzige Kamera mit dem MT9M413 CMOS-Chip von Micron bis zu 660MB/s liefern! Und es sind heute RAID0-Systeme aufbaubar, die mit dieser Geschwindigkeit speichern können! Dieses Format ist in Kapitel 7.11.6. beschrieben. Weiterhin können im Speicher vorhandene Bildsequenzen oder 3D-Bilder im unkomprimierten AVI-Format gespeichert werden. Da mit 24Bit Farbe gespeichert wird, blähen sich die Files allerdings recht stark auf. Die maximale AVI-Sequenzlänge beträgt 2GB, da intern von der Funktion noch 32-Bit Integer benutzt werden.

*7.12.7. Sequence Processing

Hier sind spezielle Funktionen zur Sequenzbearbeitung aufgeführt, die nicht oder nur wesentlich zeitaufwendiger durch 2-dimensionale Funktionen simuliert werden können. Bei aktivem 3D/Sequenz-Bildspeicher und damit aktiviertem 3D/Sequence-Menü findet man unter dem Hauptmenüpunkt "Processing" die folgenden speziell optimierten Funktionen für die Sequenzverarbeitung.

  • Invert

  • Rotate Cyclic Sequence Buffer

  • Copy Active -> Destination Buffer

  • Average Sequence and Copy Result to Screen

Es können außerdem alle Funktionen zur 3D-Bildverarbeitung genutzt werden. Weitere Funktionen werden auf Wunsch implementiert.

Da Sequenzen sehr viel Speicherplatz benötigen, wird eine UNDO-Funktion z. Zt. nicht zur Verfügung gestellt. Wenn man jedoch eine UNDO-Funktion benötigt und den hierfür notwendigen Speicherplatz bereitstellen kann, z. B. bei kleinen und kurzen Sequenzen, so sollte man eine zweite Sequenz definieren und vor jedem Verarbeitungsschritt das Bild in den zweiten Sequenz-Speicher durch einen Kopiervorgang retten.

Invert
Mit der Invert-Funktion kann die komplette Sequenz nach Grauwerten invertiert werden. Weiß wird zu schwarz gesetzt und umgekehrt (Grauwert := 255 - Grauwert)

Rotate Ring Buffer
Wie oben bei der Sequenzbildaufnahme beschrieben, kann der Sequenzspeicher als Ringspeicher aufgefaßt werden. Dann wird eine Endlossequenz eingelesen, die mit einer Triggerbedingung (z. B. Maustaste oder ESC) zu beliebigem Zeitpunkt gestoppt werden kann. Auf diese Weise können z. B. einmalig auftretende Vorgänge gut erfaßt werden. Nach Beendigung der Bildaufnahme liegt die Sequenz im Ringspeicher mit irgendeinem Anfangspunkt vor, der dem System natürlich bekannt ist. Wenn die Funktion Rotate-Buffer mit der Defaulteinstellung gestartet wird, d. h. mit dem Parameter "-1", so wird die Sequenz im Sequenzspeicher solange verschoben, bis ihr Anfang auch am Anfang des Sequenzspeichers beginnt. Das System merkt sich den Sequenzstart solange, bis eine neue Sequenzbildaufnahme gestartet wird, d. h. man kann sich mit dem Verschieben Zeit lassen und z. B. die Sequenz zunächst ansehen, als Videoclip abspielen lassen oder auch einfache Bearbeitungen vornehmen.
In der allgemeinen Version der Funktion, mit positivem Parameter 1 < n < Sequenzlänge, kann eine beliebige Sequenz um beliebige Einzelbildpositionen verschoben werden, wobei der Sequenzspeicher wiederum als Ringspeicher aufgefaßt wird. Dabei wird rückwärts in Richtung Sequenzanfang geschoben, d. h. bei Parameter "2" wird Bild 2 nach 0 geschoben, Bild 3 nach 1 usw. und Bild 1 zum Ende des Sequenzspeichers.
Die Rotate-Funktion ist z. Zt. noch recht langsam, da hier tatsächlich Speicherinhalte verschoben werden, anstatt lediglich Pointer auf die Schnittbilder zu ändern.

Copy Active->Destination
Bei zuvor gesetzter aktiven Sequenz und Bestimmungssequenz (Second/Destination) wird der Inhalt der aktiven Sequenz in die Destination-Sequenz kopiert. Dies kann z. B. dazu benutzt werden, eine Undo-Funktion zu emulieren, d. h. eine Sequenz vor einer kritischen langwierigen Verarbeitung für eine spätere Restaurierung zwischenzuspeichern.

Average -> 2D-Image
Mit dieser Funktion kann der pixelbezogene Mittelwert der kompletten Sequenz oder eines Bereiches daraus bestimmt werden und auf den angegebenen normalen 2D-Bildspeicher gespeichert werden.

Sequenzverarbeitung mit MACRO-Programm

Übliche Verarbeitungen von Sequenzen werden über MACRO-Programme durchgeführt. Hierzu werden in der Regel zunächst interaktiv Einzelbilder der Sequenz auf den aktiven normalen 2D-Bildspeicher kopiert und es wird manuell die optimale Verarbeitungsprozedur erarbeitet bzw. entwickelt. Diese kann aus einem oder mehreren komplexen Verarbeitungsschritten bestehen. Es können auch, z. B. zur Bewegungserkennung, jeweils zwei oder mehrere Einzelbilder der Sequenz dazu notwendig sein, die dann in unterschiedliche 2D-Bildspeicher übertragen werden. Nach manuellem Austesten der notwendigen Verarbeitungsschritte kann die gesamte Sequenz dann mit einer MACRO-Funktion automatisch bearbeitet werden. Eine solche MACRO-Funktion kann mit einem beliebigen Text-Editor erstellt werden. Lediglich rudimentäre Programmierkenntnisse sind hierbei notwendig, z. B. die Kenntnis, daß Programme in Einzelschritten oder Einzelbefehlen ablaufen und Schleifen abarbeiten können, in denen etwa der Einzelbild-Filename durch Zusammenhängen des Wurzelnamens und der laufenden Nummer zusammengefügt wird. Im Lieferumfang des Sequenz/3D-Modules sind eine Reihe von MACRO-Funktionen enthalten (Files mit der Extension ".MCR"), die wie erwähnt auf einfachste Art vom Benutzer verändert werden können und an spezielle Anforderungen angepaßt werden können. Kopieren Sie einfach die Funktion, die der Gewünschten am nächsten kommt, auf einen File mit neuem Namen und editieren Sie den neuen .MCR-File mit einem beliebigen Texteditor. MACRO-Funktionen werden über das Hauptmenü (User-Menü), mit der entsprechenden Funktion der Tool-Box oder mit der Hot-Key-Taste "M" gestartet.

Als Beispiel wird im folgenden eine solche MACRO-Funktion vorgestellt. Sie prüft zuerst, ob überhaupt ein 3D/Sequenz-Bild definiert ist und paßt dann die aktuelle ROI der normalen 2D-Bildspeicher an die 3D/Sequenz-Größe an. Danach werden nacheinander alle Schnittbilder der Sequenz in die ROI übertragen, dort mit einfachen Funktionen, hier einer Binärisierung und einer anschließenden Umrandungsbestimmung, bearbeitet und anschließend wieder in den 3D/Sequenz-Speicher zurückgespeichert. Prinzipiell ist allerdings auch die schnellere Verarbeitung direkt im Sequenz-Speicher möglich. Dies würde dann die benötigte Zeit zur Übertragung in den 2D-Bildspeicher sparen. Hierbei gibt es jedoch einige Beschränkungen, sodaß man diese Möglichkeit mit Vorsicht benutzen sollte. Im folgenden Beispiel wird dann zum Schluß die alte ROI wieder restauriert. Nach Aufruf dieses MACRO-Programmes kann das geänderte Sequenzbild, in dem hier im Beispiel die Konturen der Objekte extrahiert worden sind, mit dem Video-Player angesehen werden. Für eine genaue Beschreibung aller MACRO-Kommandos lesen Sie bitte das MACRO-Handbuch.

/**************************************************************************\
* D3DWORK.MCR Beispiel für eine einfache Sequenz- oder 3D-Bildverarbeitung
\**************************************************************************/
DEFINT Length /* Sequenz-Länge: Integer Variable */
DEFINT Index /* Pointer to Sequence image */

transfer_to_undo -1 /* Setup UNDO-Buffer */
enable_undo 0 /* Do not change UNDO-Buffer any more */

get_roi /* get ROI coordinates and save them */
IVAR[40] := IVAR[10] /* ROI number */
IVAR[41] := IVAR[11] /* width */
IVAR[42] := IVAR[12] /* height */
IVAR[43] := IVAR[13] /* x1 */
IVAR[44] := IVAR[14] /* y1 */
get_3d_image /* get 3D/Sequence-image parameters */
IF IVAR[14] # 0 /* if at least one 3D/Sequence-image defined */
  Length := IVAR[12] /* Length in IVAR[12], save for later usage */
  roi_size IVAR[10] IVAR[11] 0 0 /* set ROI for sequence processing */
  Index := 0 /* start with 2D-slice number 0 */

  FOR Length /* for all 2D-slices of sequence image */
    d3d_to_roi (0,Index) /* copy 2D-xy-slice from sequence to image buffer */

    /* start image processing here */
    binary (3,128,0) /* processing example: binarization with threshold 128 */
    outline /* example: finds outlines=object contours */
    /* image processing ends here */

    roi_to_d3d (Index) /* transfer slice back to sequence image */
    Index++ /* point to next 2D-slice */
  ENDFOR
  roi_size IVAR[41] IVAR[42] IVAR[43] IVAR[44] /* restore ROI */
ELSE
  error_box "No 3D/Sequence image defined"
ENDIF
enable_undo 1 /* enable regular UNDO-function */

Beachten Sie beim Erstellen von MACRO-Funktionen, daß möglichst nur automatisch ablaufende Funktionen verwendet werden, die keinen Benutzereingriff erfordern. Viele prinzipiell automatisch ablaufende Funktionen können unter bestimmten Bedingungen mehr oder weniger wichtige Meldungen auf den Bildschirm bringen, die dann vom Benutzer akzeptiert werden müssen. Diese Meldungen kann man mit der MACRO-Funktion "msg_interactive 0" abschalten. Man sollte sich dabei jedoch im Klaren sein, daß auch wichtige Meldungen auf diese Weise abgeschaltet werden. Im Zweifelsfall sollte man dann vor der Funktion mit eventuell wichtiger Meldung die Ausgabe wieder einschalten (msg_interactive -1) oder zumindest auf eine bestimmte Zeitkonstante setzen (z. B. msg_interactive 10 für 10 Sekunden Anzeige und damit auch 10 Sekunden Eingriffs- oder Reaktionszeit).

Wenn Sequenzen bearbeitet werden sollen, die auf der Festplatte bereits in Form von Einzelbildern vorliegen, so empfiehlt es sich, dies direkt beim Hereinladen über ein erweitertes Lade-MACRO zu tun. Hierzu muß lediglich in die innere Schleife der Lade-Routine nach dem Laden des Bildes auf den Bildschirm, d. h. in den aktuellen Bildspeicher, die Bearbeitung mit der entsprechenden Funktion des picCOLOR-Programmes erfolgen, bevor das Bild dann in den Sequenzspeicher kopiert wird. Ein kommentiertes Beispiel dazu findet man im folgenden Lade-MACRO-Programm.

/********************************************************************\
* LOAD3DTF.MCR: Lade 3D oder Sequenz-Bild im TIF-Format:
\********************************************************************/
DEFINT Count /* Anzahl der Bilder der Sequenz (Schnitte des 3D-Bildes) */
DEFINT Index1 /* Laufende Nummer des Bildfiles */
DEFINT Index2 /* Index, zeigt auf das aktuelle Bild im Sequenzspeicher */

transfer_to_undo -1 /* Active Image -> Undo-Speicher */
enable_undo 0 /* Undo-Speicher nicht mehr verändern */

get_roi /* Zwischenspeicherung der aktuellen ROI */
IVAR[40] := IVAR[10]
IVAR[41] := IVAR[11]
IVAR[42] := IVAR[12]
IVAR[43] := IVAR[13]
IVAR[44] := IVAR[14]

get_3d_image /* Suche Information über ein definiertes 3D-Bild */

IF IVAR[14] # 0 /* Wenn 3D/Sequenz definiert, starte */
  roi_size IVAR[10] IVAR[11] 0 0 /* ROI auf die Größe der definierten Sequenz */

  string_input "Type 3D/sequence path name" /* Einfrage des Pfad-Namens */
  load_pathname STRING[1]
/* statt dessen kann hier vereinfacht auch direkt der Pfad eingegeben werden: */
/* load_pathname "d:\bilder" */

  string_input "Type 3D/sequence file name (Root name only)" /* Rumpfname */
  STRING[2] := STRING[1] /* daran wird laufende Nummer angefügt */

  long_input "How many images?" /* Wie viele Bilder hat Sequenz/3D-Bild */
  Count := IVAR[10]

  long_input "Start with image number (for filename)?" /* Startnummer */
  /* laufende Nummer für das erste Bild der Sequenz (normalerweise 0) */
  Index1 := IVAR[10]

  long_input "Start with image number (in sequence buffer)?"
  /* Ab welchem Bild des Sequenz-Speichers laden ? (normalerweise 0) */
  Index2 := IVAR[10]

  /* msg_interactive 0 */
  /* Dieser Befehl kann benutzt werden, um unwichtige Fehlermeldungen zu */
  /* unterdrücken, die auftreten, wenn TIFF-Bilder aus fremden Programmen */
  /* mit unbekannten und weniger wichtigen TIFF-Befehlen eingelesen werden. */

  FOR Count /* Schleife zum Hereinladen aller Bilder der Sequenz */
    STRING[1] := CONCAT (STRING[2], LTOA(Index1), 8)
    /* Erstelle Filenamen aus Rumpfnamen und laufender Nummer */
    /* mit der '8' wird die Filenamenlänge auf 8 festgelegt. Zwischen */
    /* Rumpfnamen und der laufenden Nummer werden Nullen aufgefüllt. */
    /* Wenn dies nicht gewünscht ist und die laufende Nummer direkt ohne */
    /* Nullen an den Rumpfnamen angehängt werden soll, so wird als */
    /* letzter Parameter der CONCAT-Funktion eine '-1' eingegeben. */

    load_filename STRING[1] /* Filenamen dem picCOLOR Programm mitteilen */
    load_tiff /* und Hereinladen des Files */

 /* laplace 6 3 */ /* Beipiel für Bildverarbeitung beim Laden: Laplace-Filter */

    roi_to_d3d (Index2) /* und Kopieren des Bildes in den Sequenz-Speicher */
    Index2++ /* Hochzählen der Indizes */
    Index1++
  ENDFOR

  roi_size IVAR[41] IVAR[42] IVAR[43] IVAR[44] /* restauriere die alte ROI */

ELSE /* kein 3D/Sequenz-Bild definiert, interaktiv oder MACRO-gesteuert definieren */

  user_message "Define 3D/sequence buffer!"

ENDIF

enable_undo 1 /* Undo wieder enablen, nun kann mit der Taste 'U' */
 /* der alte Stand des Arbeitsspeicher wieder restauriert werden. */

Benutzung der 3D-Funktionen für Sequenzverarbeitung

Die arithmetischen Funktionen und die Binärisierungsfunktionen des 3D-Modules arbeiten auf Einzelvoxelbasis - sie können daher auch für die Sequenzbearbeitung genutzt werden. Alle anderen 3D-Funktionen arbeiten mit Voxelnachbarschaften in allen 3 Dimensionen und machen daher normalerweise für eine Sequenz, bei der die Einzelbilder nicht räumlichen, sondern zeitlichen Zusammenhang haben, kaum einen Sinn. Es sind jedoch eine Reihe von Funktionen vorstellbar, die einen räumlichen Bezug ausnutzen könnten: Sie als Anwender sind gefragt, diese Funktionen zu definieren und dem Softwareentwickler mitzuteilen. Ein Beispiel wäre etwa eine Bewegungssequenz mit starken zeitlichen Helligkeitsschwankungen. Solche Helligkeitsschwankungen könnte man durch eine räumliche Mittelung verringern. Dabei besteht natürlich auch die Gefahr, daß bewegte Objekte weggemittelt werden, so daß es in diesem Fall sicherlich besser ist, eine Angleichung der Mittelwerte der Histogramme aller 2-dimensionalen Schnittbilder zu berechnen. Dies wiederum kann natürlich leicht mit einem MACRO-Programm ausgeführt werden. Bei Interesse wenden Sie sich an das Entwicklumsteam.


8. Measurement-Menu

Geometrics
Statistics
Vectorize
Edge Detection
Object Classification
Pattern Recognition
Stereometrics
2D/3D Tracking
Part. Image Vel. (PIV)
Part, Tracking (PTV)
Interferometry
FringeCorr (PGM)
OCR / OCV
BarCode
------------------------
Calibration
Show Calibration Bar

Camera Calibration

Polyn. Warping Params

------------------------
Gray Calibration
Show Color Bar

------------------------
Measurement Control
Data Recorder

Die Vorverarbeitung eines Bildes dient zur Kontrastverbesserung, zur geometrischen Entzerrung, zur Extraktion bestimmter Merkmale oder zur Segmentierung. Erst wenn diese Bearbeitungsschritte erfolgreich durchgeführt wurden, ist eine quantitative Weiterverarbeitung oder Vermessung des Bildes möglich. Dies kann eine geometrische oder statistische Vermessung sein. Es können Muster erkannt und verglichen werden, oder es können Bilder z. B. zur Qualitätskontrolle verglichen werden. Mehrere spezielle Zusatzmodule ermöglichen außerdem aufwendige Vermessungen wie z. B. eine komplette 3D-Oberflächenvermessung mit dem Interferenz-Modul, Bewegungsanalysen mit dem Objekt-Tracking-Modul, Geschwindigkeitsanalysen von technischen Strömungen mit dem Particle-Image-Velocimetry-Modul oder Stereometrische Vermessungen mit dem 3D-Tracking oder dem Stereo-Modul.


8.1. Geometrical Measure

Point
Find Maxima

Lines
Angle
Circle
Area
Single Object
Object Features

- Plot Overlay Contours

- Plot Variable Contours

- Plot Filled Objects

- Plot Object Seed Pixel
Ruler

Nach der Vorverarbeitung eines Bildes kann nun die quantitative Verarbeitung beginnen. Im einfachsten Falle können z. B. einzelne Punkte, Linien, Winkel und Flächen vermessen werden. Die geometrische Vermessung eines Bildes kann unkalibriert in Pixeldimensionen und kalibriert in einer metrischen oder einer beliebigen anderen Einheit vorgenommen werden. Die Messungen können interaktiv oder automatisch durchgeführt werden. Die Ergebnisdaten werden auf dem Bildschirm angezeigt. Wenn Sie vor der Messung mit der Funktion "Open Data File" eine Datei für die Ergebnisdaten anlegen, werden alle nachfolgenden Meßdaten in der Regel außerdem auch noch auf diese Datei geschrieben. In gleicher Weise kann natürlich auch die DDE- oder TCP/IP-Schnittstelle benutzt werden oder ein Serieller oder Paralleler Port. Auf diese Datei können Sie - in beliebiger Reihenfolge - die verschiedensten geometrischen Meßdaten schreiben: z. B. zuerst ein paar Einzelpunkte mit ihren Koordinaten, dann einige Abstände in metrischer Einheit, dann verschiedene Winkel zwischen gewählten Linien, dann komplette Vektorzüge usw. Denken Sie daran, die Datei nach Gebrauch auch wieder zu schließen. Beim Verlassen des picCOLOR-Programmes wird die Datei automatisch geschlossen. Der Koordinatenursprung für alle Messungen ist die linke obere Ecke des Bildschirmes. Positive x-Richtung ist nach rechts, positive y-Richtung nach unten. Der Koordinatenursprung und auch die Koordinatenachsen können jedoch auch verschoben werden (Kapitel 8.15.: Calibration). Achtung: Wenn Meßwerte am Bildschirm angezeigt werden, wird diese Ursprungsverschiebung jedoch z. Zt. noch nicht in allen Fällen angezeigt - es werden dann Pixelkoordinaten relativ zur linken oberen Ecke angezeigt.

8.1.1. Point
Nach Aufruf der "Point"-Funktion verschwindet der Mauszeiger und es erscheint ein großes (invertierendes) Fadenkreuz auf dem Bildschirm, dessen Koordinaten zusammen mit dem Pixelwert des aktuellen Bildpunktes in der Statuszeile angezeigt werden (bei einem Grauverlauf in der Farbtabelle entspricht dies dem Grauwert). Zur einfacheren pixelgenauen Anwahl von Bildpunkten wurde der Mittelpunkt des Fadenkreuzes freigelassen. Der Originalpixelwert kann damit - nicht durch das Fadenkreuz überdeckt - beurteilt werden. Anklicken der rechten Maustaste beendet diese Funktion. Diese Funktion ist damit sehr ähnlich der einfachen Bildvermessung, die im Bild-Modus automatisch aktiviert ist, wenn der Mauszeiger sich nicht in der Nähe einer ROI-Ecke befindet. Über die Schalter "Monochrome", "RGB", "Gray-Calibrated" im "Measurement Control"-Menü kann eingestellt werden, von welcher Art der dargestellte Pixelwert ist:

  • Monochrome: Im Normalfall ist dies der 8 Bit Grauwert des Pixels im Bereich [0..255].

  • TrueColor: Bei Einstellung von "TrueColor" werden die Pixelwerte der Rot-, Grün- und Blau-Bildspeicher als 8 Bit-Werte im Bereich [0..255] angezeigt.

  • Gray Calibrated: Bei Einstellung von "Gray Calibrated" wird der Grauwert des Pixels kalibriert dargestellt. Es werden die internen Variablen Color-Bar-Min und Color-Bar-Max als Grenzwerte für die Pixelwerte [0..255] benutzt. Dabei kann in einfachen Pixel-Längen oder Meter oder einer beliebigen anderen Einheit kalibriert werden. Interessant wäre z. B. die Kalibrierung in Grad Celsius, um ein Bild einer Infrarot-Wärmekamera auswerten zu können. Die Color-Bar-Min/Max-Variablen werden automatisch von einigen Vermessungsfunktionen gesetzt, die Grauwert-kodierte Flächen erzeugen, können jedoch im Calibration-Menü auch interaktiv gesetzt werden.

Wenn zuvor eine Datei mit der Funktion "Open Data File" im Data-File-Menü geöffnet wurde, so werden die aktuellen Bildpunktkoordinaten und der Pixelwert bei jedem Anklicken mit der linken Maustaste abgespeichert. Bei längerem Halten der linken Maustaste und gleichzeitigem Verschieben des Fadenkreuzes kann man hiermit ganze Vektorzüge mit der Vektorlänge "1" (ein Pixel) abspeichern: jede Änderung der Koordinaten wird auf die Datei geschrieben. Der gleiche Pixel kann nicht direkt mehrfach hintereinander angewählt werden und dabei abgespeichert werden. Wenn dies aus bestimmten Gründen notwendig erscheint, so muß man den Mauszeiger ohne ihn anzuklicken zwischendurch kurz verschieben, am besten mit den Cursortasten. Das Dateiformat ist dabei folgendermaßen:

*04*

x [Pixel]

x-Koordinate 1
x-Koordinate 2
usw...

y [Pixel]

y-Koordinate 1
y-Koordinate 2

pixel value

Pixelwert 1
Pixelwert2

Bei "TrueColor"-Einstellung ist das Datenformat:

*04*

x [Pixel]

x-Koordinate 1
x-Koordinate 2
usw...

y [Pixel]

y-Koordinate 1
y-Koordinate 2

R G B

Rot Grün Blau 1
Rot Grün Blau 2

Der Koordinatenursprung ist die linke obere Ecke des Bildes. Auch bei Kalibrierung des Systemes in einer metrischen Einheit werden die Pixelkoordinaten in Pixeleinheiten angegeben. Wenn hier eine metrische Einheit benötigt wird, so muß die Vektorisierungsfunktion benutzt werden, die dafür auch die Angabe eines neuen Koordinatenursprunges zuläßt.

8.1.2. Find Maxima

Mit dieser Funktion können über einstellbare Subpixelalgorithmen die Grauwert-Maxima innerhalb einer ROI gefunden werden. Dabei werden jedoch nur die 3 maximalen Bereiche ausgegeben. Um eine sichere Trennung vom Bildrauschen zu ermöglichen, kann der Wert "Sigma" gesetzt werden: nur Maxima, die heller sind als der mittlere Grauwert der ROI plus der Standardabweichung mal der eingegebenen Konstante werden berücksichtigt. Wenn sinnvolle Konstanten nicht bekannt sind, kann mit hohen Werten (z. B. 2.8) begonnen werden. Es wird dann intern bis zur unteren eingegebenen Grenze (z. B. 1.5) iteriert. Dies kann die Suchzeit etwas verlängern. Wenn im Grauwertmaximum ein Plateau vorliegt, d. h. wenn mehrere nebeneinander liegende Pixel den gleichen Grauwert haben, so wird der Flächenschwerpunkt dieser Maxima-Fläche bestimmt. Die Ergebnisse werden in einer kleinen Text-Box ausgegeben:

Für die Option, diese Daten auch auf den System-Datenfile abzuspeichern, erkundigen Sie sich bitte beim Entwicklungsteam. Es gibt zusätzlich einige weitere Optionen, die z. Zt. nur über ein Macro-Programm aufgerufen werden können. So können z. B. auch Maxima direkt an bzw. auf der ROI-Umrandung gefunden werden.

8.1.2. Lines

Row
Column
Line(Rubber)
Line(Crosshair)
----SubPixel-----
Edges on Line

Mit den "Line"-Funktionen können Linien in beliebiger Richtung vermessen werden. In einem Untermenü stehen dazu die Funktionen "Row", Column", "Line" und "Line (Crosshairs)" zur Verfügung. Bei den Punkten "Row", "Column" und "Line" handelt es sich um dieselbe Funktion, die jedoch jeweils auf Bewegungen in horizontaler (Row) oder vertikaler (Column) Richtung beschränkt ist. Außerdem stehen mit den "Edge"-Funktionen subpixelgenaue Algorithmen zur Verfügung, mit denen Abstände und Kanten sehr genau untersucht werden können.

8.1.2.1. Row / Column / Line
Nach Aufruf der Funktion erhält man ein einfaches Fadenkreuz, mit dem man den Anfang einer Linie definieren kann, indem Sie ihn mit der linken Maustaste anwählen. Danach ziehen Sie bei gedrückt gehaltener Maustaste eine Linie in horizontaler (Row), vertikaler (Column) oder beliebiger (Line) Richtung auf dem Bildschirm. Die Länge der Linie in Pixeldimensionen - oder nach einer Kalibrierung in der gewählten Einheit - wird nach Loslassen der linken Maustaste in einer Informationsbox zusammen mit den Pixelkoordinaten (immer in Pixeleinheiten) von Startpunkt und Endpunkt angegeben. Eine eventuell unterschiedliche Kalibrierung des Bildes in x- und y-Richtung wird von dieser Funktion berücksichtigt. Zusätzlich wird auch der Winkel relativ zur Horizontale in Radianten angegeben. Nach erneutem Druck auf die linke Maustaste ist das System bereit für die nächste Messung: Sie können nun mit der linken Maustaste einen neuen Nullpunkt wählen und eine neue Strecke vermessen. Die rechte Maustaste beendet die Funktion. Wenn zuvor ein Datenfile geöffnet wurde, wird bei jeder neuen Vermessung ein Datensatz auf diesen File geschrieben, der aus den Anfangs- und Endkoordinaten der Linie in Pixelkoordinaten und Pixeleinheiten, dem Abstand in der gewählten Einheit und dem Winkel in Radianten besteht. Das Datenformat (gilt für die Funktionen "Line", "Row" und "Column") sieht folgendermaßen aus:

*06* | x(start) | y/start) | x(end) | y(end) | dist. [pix] | angle [rad]
 | xa1 | ya1 | xe1 | ye1 | d1 | a1
 | xa2 | ya2 | xe2 | ye2 | d2 | a2
usw... |  |  |  |  |  |

8.1.2.2. Line (Crosshairs)
Bei der "Line (Crosshairs)"-Funktion können mit zwei Fadenkreuzen beliebig ausgerichtete Strecken im Bildes ausgemessen werden. Das Anwählen eines Fadenkreuzes geschieht durch Anklicken mit der linken Maustaste in der Nähe des gewünschten Fadenkreuzes. Fadenkreuz Nr. 1 ist durchgezogen, Fadenkreuz Nr. 2 ist grob gestrichelt dargestellt. Beide Fadenkreuze können auch gleichzeitig bewegt werden, indem man die mittlere und linke Maustaste gleichzeitig drückt (oder Shift-Taste und die linke Maustaste). Die vermessene Linie, d. h. die Verbindungslinie der beiden Fadenkreuze, kann durch Aktivieren der Funktion "Connect Crosshairs" des gleichen Menüs als kurz gestrichelte Linie hervorgehoben werden. Der Abstand der Fadenkreuze in Bildpunkten (Pixeleinheiten) sowie die Koordinaten beider Fadenkreuze werden solange angezeigt, wie die linke Maustaste gedrückt wird. Dabei wird der Abstand nach der Formel: Abstand = sqrt(dx*dx + dy*dy) ausgerechnet.
Da Bildpunkte rechteckige oder quadratische Gebilde sind, die in diagonaler Richtung eine größere Ausdehnung haben, gilt diese Berechnung in Pixeleinheiten streng genommen nur in exakt horizontaler oder vertikaler Richtung. Nach einer Kalibrierung wird der Abstand in einer metrischen oder anderen Einheit angezeigt. Da für bestimmte Zwecke auch nach Kalibrierung der Abstand in Pixellängen eingestellt werden muß, wird zusätzlich dx und dy immer in Pixeleinheiten angegeben. Dies ist z. B. wichtig, falls für eine Linien-Fouriertransformation Strecken mit der Länge 2**n ausgewählt werden sollen. Hierbei muß nämlich bedacht werden, daß auch eine schräg verlaufende Linie mit größerer geometrischer Länge aufgrund der quadratischen oder rechteckigen Form der Pixel nicht unbedingt mehr Pixel aufweist. Wenn sichergestellt werden soll, daß eine Linie exakt eine Länge von n Pixeln haben soll, so muß die größere Ausdehnung (x oder y) diese Länge n haben.
Zusätzlich wird der Winkel der Strecke relativ zur Horizontalen in positiver x-Richtung in Radianten angezeigt. Eine eventuell unterschiedliche Kalibrierung in x- und y-Richtung wird berücksichtigt. Die Funktion wird mit der rechten Maustaste beendet.
Bei der Vermessung mit zwei Fadenkreuzen wirken alle ROI-Edit-Hotkey’s, d. h. die Tasten: 0..9 zur Wahl der Bildspeicher, R, G, B, H, S, I, H, S, V, V, I, Q zur Wahl der Farbbildspeicher, sowie P, C, A für spezielle Funktionen (siehe auch Kapitel 3.5: Hot-Key´s).
Bei vorher geöffnetem Datenfile wird von dieser Funktion jeweils nur der Endstand abgespeichert, d. h. die Koordinaten der beiden Fadenkreuze (in Pixeleinheiten), ihr Abstand in der gewählten Einheit und der Winkel ihrer Verbindungslinie in Radianten relativ zur positiven x-Achse bei Beendigung der Funktion mit der rechten Maustaste. Das Datenformat ist genau wie bei den Funktionen "Row", "Column" oder "Line" aufgebaut - mit dem Unterschied der Kennung *05* in der Kommentarzeile.

*05* | x(start) | y/start) | x(end) | y(end) | dist. [pix] | angle [rad]
 | xa | ya | xe | ye | d | a

Der Titelzeile folgt hier jedoch immer nur eine Datenzeile, da die Funktion nach dem Abspeichern jedesmal beendet wird und dann erneut aufgerufen werden muß.

8.1.2.3. Subpixel Edge Distance

Mit der Funktion "Edges on Line" können senkrecht zu einer eingegebenen Linie liegende Kanten subpixelgenau vermessen werden. Die Funktion arbeitet nach dem Prinzip der Erzeugung zusätzlicher Pixel durch Interpolation und wahlweise dann durch subpixelgenaue Suche des Maximums des Grauwertgradienten. Die Linie kann eine beliebige Dicke im Bereich [1..32] Pixel aufweisen. Es werden dann alle Punkte über der Linienbreite senkrecht zur Linie gemittelt, wodurch Störungen und Rauschen vermindert werden können. Wie bei der Line(Crosshair)-Funktion werden zwei Fadenkreuze zur Wahl der Linie zur Verfügung gestellt.
Die Genauigkeit oder Auflösung kann sehr hoch sein, z. B. bis zu 1/10 Pixel. Vor Anwendung der Funktion muß jedoch bedacht werden, daß die zusätzlich erzeugte Information nicht notwendigerweise tatsächlich im Bild steckt. Hier spielen die Optik der Kamera, die Analogtechnik der Kamera und des Frame Grabbers und weitere Faktoren eine wesentliche Rolle. So ist es z. B. nicht sinnvoll, die örtliche Verschiebung eines Objektes in Bildsequenzen in horizontaler Richtung auf 1/10 Pixel genau bestimmen zu wollen, wenn durch die analog-digital-Wandlung ein kleiner Bildversatz (Jitter) entsteht, der z. B. von einer Bildzeile zur nächsten oder von einem Bild zum nächsten einer Sequenz schon 1/4 Pixel beträgt. Die errechnete Auflösung hängt also nicht unbedingt mit der tatsächlichen Genauigkeit zusammen. Es empfiehlt sich hier immer, einige Probemessungen durchzuführen. Bei dem oben angedeuteten Pixel-Jitter kann z. B. eine Mittelung (Averaging) von mehreren Bildern während der Bildaufnahme zur wesentlichen Verbesserung führen.

Einstellung der Subpixel-Parameter im Parameter-Menü:
Die Interpolationsauflösung "Precision" kann zu 1, 2, 4, oder 8 gewählt werden. Bei Precision=1 wird nicht interpoliert, bei Precision=2 wird ein Pixel interpoliert, bei Precision=4 werden jeweils 3 Pixel zwischen je zwei Bildpunkten interpoliert. Damit wird die erzielbare Auflösung durch Interpolation zu 1/1, 1/2, 1/4 oder 1/8-Pixel eingestellt. Für die Art der Interpolation gibt es verschiedene Optionen: Es kann linear oder mit kubischen Splines interpoliert werden. Achtung: bei sehr starken Grauwertsprüngen (z. B. bei künstlich erzeugten Bildern) können die Splines überschwingen und dann zu sehr starken Fehlern führen. Daher sollte man die Spline-Interpolation nur für Kamerabilder benutzen.
Die subpixelgenaue Kante im interpolierten Bild kann nach der Interpolation der zusätzlichen Funktionswerte über die normale Grauwertschwelle bestimmt werden. Dazu müssen unter "Edge Search Method" die Schalter "Threshold/Max.Gradient" auf "Threshold" gestellt werden und es muß die Grauwertschwelle angegeben werden. Meistens ist es jedoch viel sinnvoller, den steilsten Grauwertgradienten als Objektkante zu definieren (Schalter auf "Max.Gradient"). In diesem Fall wird der steilste Gradient einer Objektkante gesucht, unabhängig vom lokalen Grauwert. Hierzu muß mit "Polynom-Size" die Anzahl der Stützpunkte des Polynoms eingestellt werden, mit dem der Grauwertverlauf im Kantenbereich approximiert wird. Mit diesem Polynom kann dann der steilste Gradient auf der Kante bestimmt werden. Das Polynom kann 3, 5, oder 7 Stützstellen haben. Zusätzlich kann die interpolierte Linie noch mit einem rekursiven Filter bearbeitet werden, um Rauschen, Überschwinger oder sonstige Störungen zu vermindern, die die Gradientensuche verfälschen könnten. Da die "Edge"-Funktion mehrere Kanten längs einer Linie suchen kann, muß zusätzlich bei Gradienteneinstellung auch noch ein sinnvoller Wert für den minimalen Gradienten "Min.Gradient" eingegeben werden. Es werden dann alle Kanten bestimmt, deren maximaler Gradient größer als der Wert "Min.Gradient" ist. Hierbei hat z. B. eine Grauwertkante mit dem Grauwertunterschied von 50 über den Pixelabstand von Eins den Gradienten 50. Es werden Absolutwerte benutzt.

Beispiel: Die Linie zur Gradientenbestimmung kreuzt ein Straßenbild

Liniengrauwerte bei 4-facher Auflösung (Precision = 4)

Steilheit der Gradienten

Es ist möglich, sich sowohl die interpolierte Linie als auch die ermittelten Gradienten graphisch anzeigen zu lassen. Hierzu muß der Schalter "Show Subpixel" eingeschaltet werden. Diese Anzeige ermöglicht die genaue Beurteilung aller Parametereinstellungen. Man kann sofort sehen, ob sinnvoll interpoliert wurde, ob nicht zu stark gefiltert wurde usw. Die Länge der graphisch dargestellten Linie ist lediglich 256 Pixel. Bei längeren Linien wird vom ersten Fadenkreuz (durchgezogenes) an dargestellt und der Rest einfach abgeschnitten.
Die gefundenen Kanten können in Tabellenform dargestellt werden. Es werden die Pixel-Koordinaten des ersten und des zweiten Fadenkreuzes angezeigt und dann alle gefundenen Kanten als Abstände relativ zu diesem Anfangspunkt, in Pixeleinheiten oder in kalibrierten Einheiten. Nach Einstellung des Schalters "First=Reference" werden alle Kanten in Bezug auf die erste Kante (von ersten Fadenkreuz aus gerechnet) angegeben, d. h. der Abstand (Fadenkreuz-1.Kante) wird von allen Kanten abgezogen. Die erste Kante liegt dann bei 0.0. So kann der Abstand zwischen zwei Kanten direkt bestimmt werden. Als Vorzeichen der Kante ist die Steigung des Grauwertgradienten bezeichnet: eine von hell nach dunkel gerichtete Kante hat ein negatives Vorzeichen.

8.1.3. Angle
Während der Winkel einer Linie zur Horizontalen schon mit der Funktion "Line" vermessen werden kann, erhalten Sie hier die Möglichkeit, den Winkel zwischen zwei beliebigen Linien zu vermessen. Hierzu können Sie zwei unabhängige Linien in beliebiger Ausrichtung in das Bild zeichnen, indem Sie den Anfangspunkt jeder Linie mit der linken Maustaste markieren und die Linie bei gedrückter Maustaste aufziehen. Nach Fertigstellung der zweiten Linie erscheinen in der Statuszeile am unteren Bildrand die Koordinaten der Linien und der Winkel in Radianten, den sie zueinander einnehmen. Das System ist nach einem weiteren Druck auf die linke Maustaste bereit für eine neue Vermessung. Die Funktion wird mit der rechten Maustaste abgebrochen.
Bei geöffnetem Datenfile wird von dieser Funktion der jeweilige Winkel (in Radianten) zwischen jeweils zwei eingegebenen Linien nach dem folgenden Datenformat abgespeichert:

*07*

Angle betw. 2 Lines [rad]
a1
a2
usw...

8.1.4. Circle

Nach Aufruf dieser Kreismeßfunktion wird zunächst ein Kreisursprung mit dem Fadenkreuz definiert. Dann werden zwei konzentrische Kreise auf dem Bildschirm gezeigt, die durch Anwählen und ziehen mit der linken Maustaste getrennt vergrößert und verkleinert werden können. Die Koordinaten werden in der Statuszeile angezeigt. Durch Anwahl des Zentrums kann auch nachträglich noch der Ursprung verschoben werden.

*16*

Circles: orgx orgy rad1 rad2 drad
x y radius1 radius2 deltarad
usw...

8.1.4. Area

Die Fläche eines bestimmten Bildausschnittes oder einer bestimmten Struktur oder eines bestimmten Objektes im Bild kann auf verschiedene Arten vermessen werden: Einfachster Fall wäre z. B., eine ROI um den Gegenstand zu legen und die Fläche der ROI zu berechnen. Bei nicht rechteckigen, beliebig ausgerichteten Objekten wird es dabei jedoch zu recht ungenauen Ergebnissen kommen. Es werden daher verschiedene Funktionen zur Verfügung gestellt, die zu vermessende Fläche genauer zu spezifizieren. So kann die Fläche mit einer Vektor- oder Freihandlinie umrahmt werden, oder es wird die Fläche aller Bildpunkte addiert, die einen bestimmten Pixelwert (Grauwert) oder Pixelwertbereich aufweisen.

8.1.4.1. Select by Vector
Mit der Funktion "Enclosed Area" im Vectorize-Menü oder auch mit der gleichwertigen Funktion "Select Area by Vectors" hier im Area-Menü wird die Fläche berechnet, die durch einen Vektorzug umfahren wurde. Hierzu muß der Vektorzug jedoch einige Bedingungen erfüllen:
- er darf keine Überkreuzungen aufweisen,
- er darf offen sein - er wird intern durch eine Gerade geschlossen,
- jeder Punkt des Vektorzuges muß vom Mittelpunkt des umschreibenden Rechtecks auf gerader Linie erreichbar sein, ohne daß diese gerade Linie das Innere der umfahrenen Fläche verläßt.
Die Flächenberechnung wird durch Triangulierung vom Mittelpunkt des umschreibenden Rechtecks aus ausgeführt. Das Ergebnis wird in Pixel-Flächen oder nach einer Kalibrierung in entsprechender Einheit ausgegeben. Die Überschriftzeile bei einer automatischen Abspeicherung (bei geöffnetem Datenfile) lautet: *12* Area [pix] (oder bei metrischer Kalibrierung: *12* Area [m*m])

8.1.4.2. Select by Freehand Line
Mit dieser Funktion können Sie das zu vermessende Gebiet mit einer beliebigen Freihandlinie umranden, indem Sie den Startpunkt der Linie durch Drücken der linken Maustaste wählen und dann bei gedrückter Maustaste einen beliebigen Linienzug zeichnen. Zur richtigen Berechnung der Fläche muß der Linienzug geschlossen sein. Diese Funktion ist noch nicht in direkter Form implementiert. Sie kann jedoch durch die Funktion "Select Area by Vectors" simuliert werden, indem sehr kurze Vektorstückchen verwendet werden. Eine weitere Möglichkeit zur Simulation ist auch die Benutzung der "Point"-Funktion, die Freihandlinien als Pixelkoordinaten abspeichern kann. Hier müßte man nur eine Koordinatenursprungszeile hinzufügen und eine 3. Spalte mit den z-Werten, alle "0". Diesen geänderten Datensatz kann man dann als Vektorzug einlesen und anschließend seine umschriebene Fläche ausmessen lassen.

8.1.4.3. Select Area by Point
Mit dieser Funktion kann der genaue prozentuale Anteil eines Pixelwertes an der Fläche des jeweiligen Bearbeitungsfensters angezeigt werden. Dazu muß ein Bildpunkt mit dem Fadenkreuz und der linken Maustaste angewählt werden. In einem Informationsfenster erscheinen dann die Angaben über den gewählten Pixelwert, nämlich sein Pixelwert [0..255] (entspricht normalerweise dem Grauwert), seine Gesamtfläche und der prozentuale Anteil dieses Pixelwertes an der Fläche des Bearbeitungsfensters. Wenn die Bandbreite einen von ‘1’ verschiedenen Wert hat, werden für die Berechnung des prozentualen Anteils auch Pixelwerte einbezogen, die in einem bestimmten ‘Bandbereich’ um den Pixelwert des angewählten Pixels liegen. Wenn z. B. die Bandbreite den Wert 5 hat und der angewählte Bildpunkt den Pixelwert 127, dann werden zur Berechnung alle Bildpunkte mit den Pixelwerten von 125 bis 129 berücksichtigt.
Hinweis: Wenn das Band breiter ist als der vorhandene Pixelwertbereich, d. h. wenn das Band über die obere Grenze von 255 oder unter die untere Grenze von 0 hinausreicht, wird es einfach abgeschnitten.
Die Behandlung des Pixelwertes "0" kann speziell gesteuert werden. Oft ist es sinnvoll, den Pixelwert "0" für eine Flächenberechnung nicht mitzuzählen; dies ist z. B. der Fall, wenn der Pixelwert "0" eindeutig als Hintergrundwert benutzt wird. Wenn dann ein Bildpunkt mit z. B. dem Pixelwert "3" bei einer Bandbreite von 7 untersucht wird, so würde die Bildfläche mit dem Pixelwert "0" normalerweise mitgerechnet. Je nachdem ob dies erwünscht ist, kann dies mit dem "Count ‘0’-Values"-Schalter oder "Don´t Count ‘0’" ein- oder abgeschaltet werden.
Wenn zuvor ein Datenfile geöffnet wurde, speichert die "Area by Point"-Funktion die errechneten Flächen nach jedem Mausklick im folgenden Datenformat ab:

*10*

Area by Point [% of ROI]
area1
area2
area3
usw...

Area [Unit]
area1
area2
area3

Die gewählte Einheit kann dabei in Pixeleinheiten oder in einer beliebigen anderen Einheit angegeben werden und wird durch die Kalibrierung bestimmt.
Mit der "Band Width"-Funktion kann die Bandbreite für die Errechnung des prozentualen Anteiles für die Funktion "Select Area by Point" gesteuert werden. Das Anklicken des Menüpunktes "Bandbreite ++" bewirkt jeweils eine Verbreiterung des Bandes um "2", d.h. einen Wert nach oben und einen nach unten. Ebenso bewirkt die Anwahl von "Bandbreite --" die Verringerung der Bandbreite um "2".

8.1.4.4. Select Area by LUT

Da die genaue Angabe des Pixelwertes (Grauwertes) eines Bildpunktes zur Errechnung des prozentualen Anteils im der Funktion "Select Area by Point" nicht möglich ist, da in vielen Fällen jedoch die genaue Angabe eines Bandbereiches, dessen prozentualer Anteil berechnet werden soll, unumgänglich ist, wird mit dieser Funktion ein vielseitiges Hilfsmittel zur Berechnung spezieller Pixelwert-Bandbereiche zur Verfügung gestellt. Nach Aufruf erscheint ein Dialogfenster mit einer Grauwert- oder Farbtabelle oder einem Farbenkreis. Mit Hilfe der drei Select-Felder für Bandstart, Bandbreite und Bandende oder auch durch direkte Anwahl mit der Maus in der Farbtabelle oder im Farbenkreis kann nun ein Pixelwert-Band definiert werden. Das Band wird dabei normalerweise in roter Farbe hervorgehoben. Gleichzeitig wird immer sofort nach einer Änderung des Bandes die prozentuale Fläche relativ zur Fläche der aktuellen ROI angegeben.

Da durch die Rot-Darstellung in der Look-up-Table auch die zugehörigen Bereiche im Bild rot erscheinen, kann die Bandbreite sehr genau auf den Bildinhalt abgestimmt werden. Wenn das Band über die Grenzwerte ‘0’ oder ‘255’ hinausgeschoben wird, erscheint es am gegenüberliegenden Ende. Das bedeutet, daß es sich hier um ein geschlossenes Ringsystem handelt. Diese Behandlung hat sich besonders für die Vermessung von Farbbildern (speziell des Hue-Anteiles eines Farbbildes) bewährt, da es im Farbenkreis sinnvollerweise keine Grenze gibt. Zur noch besseren Auswahl der Farbwerte im Farbenkreis kann die Farbgebung der Farbtabelle vor Aufruf der Funktion in eine HUE-Farbtabelle umgeändert werden. Hierbei wird das hervorgehobene Band dann in weißer Farbe oder als hellere Farbwerte dargestellt. Speziell für Bilder, die mittels der Objektklassifikation gewonnen wurden, kann auch eine Look-Up-Table-Belegung programmiert werden, die die ersten 16, dunkelsten Grauwerte auf gut unterscheidbare Farbwerte setzt - so kann man die einzelnen Klassen gut unterscheiden und einzeln anwählen (siehe Objektklassifikation).
Die Behandlung des Pixelwertes ‘0’ kann wiederum gesteuert werden. Speziell bei der Bearbeitung von Hue-Anteilbildern darf der Pixelwert ‘0’, der eine spezielle Bedeutung hat, nämlich das Fehlen jeglicher Farbe, nicht mitberücksichtigt werden und kann daher mit dem "Don´t Count ‘0’"-Schalter ausgeblendet werden. Dies wird im Dialogfenster neben dem Zahlenwert der berechneten relativen Fläche durch die Angabe "incl.0" oder "excl.0" zusätzlich angedeutet.
Wenn zuvor ein Datenfile geöffnet wurde, speichert die "Area by LUT"-Funktion die errechneten Flächen im folgenden Datenformat ab:

*11*

Area by LUT [% of ROI]
area_percent

Area [Unit]
area

Wenn eine Kalibrierung vorgenommen wurde, so wird der Flächenwert in der Einheit, z. B. [m*m] statt in [Pixel] gespeichert. Die Flächenvermessung mit der Look-Up-Table kann unabhängig für jeden Bildspeicher durchgeführt werden. Die dabei eingestellten Werte, d. h. die Bandgrenzen oder die Verschiebung bleiben dabei für jeden Bildspeicher getrennt erhalten.

8.1.5. Classify Objects

Die Suche und Klassifikation von Objekten im Bild finden Sie in einem eigenen Kapitel unter dem angegebenen Link.

8.1.6. Ruler
Diese Funktion ruft einen dreh- und verschiebbaren Maßstab auf den Bildschirm, der in zehn Abschnitte unterteilt ist. Seine Gesamtlänge und sein Winkel relativ zur positiven x-Achse (in Radianten) wird am rechten Ende des Maßstabes angezeigt. Der Maßstab kann mit der Maus oder den Kursortasten über den zu vermessenden Gegenstand im Bild geschoben werden und kann bei gedrückter linker Maustaste durch seitliches Verschieben der Maus oder mit den Kursortasten gedreht werden. Beim Drehen des Maßstabes verändert sich bei unterschiedlicher Kalibrierung in x- und y-Richtung seine Länge. Damit wird automatisch eine eventuelle unterschiedliche Kalibrierung in x- und y-Richtung berücksichtigt. Wenn keine Kalibrierung eingegeben wurde, wird die Maßstablänge in Pixeleinheiten angegeben.
Die absolute Länge des Maßstabes kann mit der Funktion "Set Length" grob im Bereich [20..600] Pixel eingestellt werden. Dabei stellt die tatsächliche Maßstablänge in Pixeln nach einer metrischen Kalibrierung nur die ungefähre angegebene Länge dar, da der Maßstab in der jeweils gewählten Kalibrierung immer dezimal geteilt ist. Mit einer Kalibrierung arbeitet die Ruler-Funktion z. Zt. nur in den Einheiten [pix, m, mm] einwandfrei, sonst erscheint der Schriftzug "undef."
Diese Funktion dient dazu, einen schnellen Überblick über die im Bild enthaltenen Größen zu erhalten. Es können keine Werte auf einen eventuell geöffneten Datenfile abgespeichert werden.


8.1.5. Objects

8.1.5. Object Features

Mit der Funktion "Object Features" können die verschiedensten Arten von Objekten im Bild detektiert und vermessen werden. Objekte sind hierbei immer entweder helle oder dunkle Bereiche im Bild, jeweils relativ zum Hintergrund gesehen. Wenn dunkle Objekte vermessen werden sollen, so kann natürlich auch das Bild vor der Objektsuche invertiert werden. Neben den Objekt-Suchfunktionen für Einzelobjekte oder Objektgruppen gibt es eine ganze Reihe von Zusatzfunktionen zur Darstellung der gefundenen Objekte, zum Training bestimmter Suchalgorithmen und zum Setzen der Suchparameter. Die Objektanalyse kann subpixelgenau durchgeführt werden. Dies gilt z. B. für den Flächenschwerpunkt oder die Objektfläche. Die Objektsuchfunktion ist sehr mächtig und vielseitig. So können z. B. auch kleinere Lücken in Objektumrandungen übersprungen werden oder es können bestimmte Objekte abhängig von ihrer Form oder Größe zurückgewiesen und damit klassifiziert werden. Die genaue Bedeutung der einzelnen Such-Parameter folgt weiter unten.

Hauptfunktionen:

  • Search Single Object

  • Search & Classify Objects

  • Calculate Subpixel Area

  • Show Objects

  • Show Single Object

  • Object Data Table

  • Save Object Data

  • Plot Object Contours / Plot Filled Objects

  • Calculate Parameter Histogram

  • Set Rejection Criteria

  • Rejection Criteria Training

  • Cut Touching Objects

  • Deallocate Object List

8.1.5.1. Search Single Object
Normalerweise sucht die Object-Funktion alle Objekte in der ROI. Es können jedoch auch manuell einzelne Objekte im Bild vermessen werden. Nach Aufruf der "Single Object"-Funktion werden die gewünschten Objekte in der aktuellen ROI mit der linken Maustaste angeklickt. Danach erscheinen in der Status-Anzeige die ermittelten Daten des gewählten Objektes. Wenn ein Datenfile geöffnet ist, so werden diese Daten dort abgespeichert. Wie auch in der allgemeinen Objekt-Suchfunktion müssen die Objekte entweder heller oder dunkler als die Umgebung sein, je nach Einstellung des "Dark Objects/Bright Objects"-Schalters. Alle Suchparameter müssen zuvor in der Dialogbox der normalen "Search Objects"-Funktion (siehe unten) eingestellt werden. Wenn die genaue Pixelfläche bestimmt werden soll, so muß z. B. voher der Schalter "Exact Pixel Area" eingeschaltet sein, was defaultmäßig der Fall ist.
In der "Single Object"-Funktion sind alle Zurückweisungskriterien (Rejection Criteria) abgeschaltet, da diese Funktion normalerweise dazu benutzt wird, auch Objekte zu finden oder an die Objektliste anzuhängen (mit Einschaltung des "Append Objects"-Schalters), die der automatische Algorithmus aus bestimmten Gründen zurückgewiesen hat.
Bei der Funktion "Single Object" kann statt der festen Grauwertschwelle "Gray Threshold" auch ein automatisches Verfahren zur Bestimmung der optimalen Schwelle benutzt werden. Damit ist es möglich, manuell auch in helligkeitsmäßig sehr unterschiedlichen Bereichen des Bildes Objekte zu finden. Hierzu wird der Grau-Mittelwert der quadratischen Umgebung der Größe "Threshold-Box" um den angewählten Pixel bestimmt und als Schwellwert genutzt. Diese Funktion ist aktiviert, wenn der Wert der Threshold-Box ungleich Null ist. Dieser Wert wird ebenfalls in der Dialogbox gesetzt.

8.1.5.2. Search Objects

Dies ist die Hauptfunktion zur automatischen Objektsuche und Klassifizierung. Vor der Anwendung sollten alle notwendigen Suchparameter und Zurückweisungskriterien eingestellt sein. Die Suche nach Objekten beginnt in der linken oberen Ecke der aktiven ROI. Zeilenweise wird das Bild mit der Grauwertgrenze "Gray Threshold" untersucht. Sobald ein Bildpunkt gefunden wird, der heller als die angegebene Grenze ist, wird untersucht, ob ein gültiges Objekt gefunden worden ist. Hierzu wird der Rand des Objektes im Uhrzeigersinn umfahren und verschiedene Objektparameter wie Konturlänge, Breite, Höhe usw. bestimmt. Wenn das gefundene Objekt einem der zuvor eingestellten Zurückweisungskriterien nicht entspricht, wird es nicht in die Objektliste aufgenomnen. Nach der Suche können die gefundenen Objekte z. B. mit der Funktion "Show Objects" angezeigt werden.

8.1.5.3. Show Objects / Show Single Object
Die gefundenen und klassifizierten Objekte können auf dem Bildschirm dargestellt werden. Hierzu wird jeweils eine bestimmte Kontur, z. B. eine rechteckige Umrandung der Objekte und die laufende Objektnummer dargestellt. Mit der Funktion "Show Single Object" können alle Objekte der Reihenfolge nach einzeln dargestellt werden. Dies kann sinnvoll sein, wenn die Objekte derart dicht liegen, daß man nicht mehr erkennen kann, welche Nummer zu welchem Objekt gehört. Die Funktion "Show Single Object" zeigt in der Statuszeile die wichtigsten Daten des jeweiligen Objektes.

8.1.5.4. Calculate Subpixel Area
In der normalen Ausführung der Objekt-Funktion wird die Fläche eines Objektes nur auf Pixelflächen genau bestimmt. Die Funktion "Calculate Subpixel Area" kann danach zur Berechnung der Fläche mit Subpixelgenauigkeit aufgerufen werden. Die subpixelgenaue Objektfläche wird in derselben Variablen abgespeichert wie die normal berechnete Objektfläche, d. h. sie überschreibt diese, und kann mit der Funktion "Object Data Table" inspiziert werden. "Subpixel"-Genauigkeit bedeutet hier, daß die Objektfläche in Bruchteilen einer Pixelfläche vermessen werden kann. Hierbei muß gewährleistet sein, daß der Grauwert eines Objektes an seiner Berandung keine beliebigen Sprünge aufweist sondern mehr oder weniger steile Grauwertgradienten, bei dessen Maximum die tatsächliche Objektkante liegt. Bei allen durch Videokamera oder auch durch einen Bild-Scanner aufgenommenen Bildern ist diese Bedingung erfüllt. Es ist eine sehr hohe Auflösung erzielbar, z. B. bis zu 1/16 Pixelfläche oder noch besser. Die Funktion arbeitet in zwei Schritten: zuerst werden durch Interpolation zusätzliche Bildpunkte erzeugt und danach wird über eine Polynomausgleichsrechnung das Maximum des Grauwertgradienten an der Objektkontur bestimmt. Hierbei muß jedoch bedacht werden, daß die zusätzlich erzeugte Information nicht notwendigerweise tatsächlich im Bild steckt. Hier spielen die Optik der Kamera, die Analogtechnik der Kamera und des Frame Grabbers und weitere Faktoren eine wesentliche Rolle. So macht es z. B. keinen Sinn, die Objektfläche auf 1/16 Pixelflächen genau bestimmen zu wollen, wenn durch die Ungenauigkeit der Kameraoptik schon Fehler von 1/8 Pixel hervorgerufen werden. Die erzielbare Auflösung hängt also nicht unbedingt mit der tatsächlichen Genauigkeit zusammen. Es empfiehlt sich hier immer, einige Probemessungen durchzuführen. Vor der Berechnung der subpixelgenauen Fläche der Objekte müssen folgende Parameter eingestellt werden:

  • - Set Interpolation Count (Precision)

  • - Interpolation Method: Linear / Cubic Splines

  • - Set Angular Discretization (Angular Precision)

  • - Edge Detection Method: Threshold / Maximum Gradient

  • - Polynom Size (for Gradient search)

  • - Recursive Filter applications after Interpolation

  • - Show Subpixel (Display interploated object with subpixel contour for verification)

Precision (=Interpolation Count): Die Interpolationsauflösung kann zu 1, 2, 4, 8 gewählt werden. Bei Precision=1 wird nicht interpoliert, bei Precision=2 wird ein zusätzlicher Pixel interpoliert, bei Precision=4 werden 3 zusätzliche Pixel zwischen je zwei Bildpunkten interpoliert. Damit wird - schon ohne Gradientensuche - die erzielbare Auflösung zu 1/1, 1/2, 1/4, oder 1/8-Pixel eingestellt. Defaultwert ist 2. Für die Art der Interpolation gibt es verschiedene Optionen: Es kann linear oder mit kubischen Splines interpoliert werden. Achtung: bei sehr starken Grauwertsprüngen (z. B. bei künstlich erzeugten Bildern) können die Splines überschwingen.
Angular Precision (=Discretization Angle): Ausgehend vom Mittelpunkt eines Objektes wird die Fläche kleiner Sektoren der Größe (Radius*Radius*DiscretizationAngle/2) bestimmt und aufaddiert. Radius ist hierbei der Abstand vom Objektmittelpunkt zur subpixelgenau bestimmten Kante des Objektes, "DiscretizationAngle" ist ein sehr kleiner Winkel, für den gilt: sin(angle)=angle. Hierbei ist DiscretizationAngle proportional zu (1/Eingabewinkel), wobei der Eingabewinkel die Werte 1, 2, 4, 8 annehmen kann. Der Eingabewinkel sollte immer gleich oder höher als der Interpol.-Count (Precision) sein, d. h. bei höherer Auflösung durch Interpolation sollten auch kleinere Winkelinkremente benutzt werden. Bei gleicher Einstellung von Interpol.-Count und Eingabewinkel ist die Breite der Sektoren etwa gleich einem Pixel (Radius*DiscretizationAngle=1 Pixel). Der Defaultwert ist 2.
Threshold/Max.Gradient: Statt über die Bestimmung des maximalen Gradienten kann die subpixelgenaue Kante im interpolierten Bild auch über eine einfache Grauwertschwelle bestimmt werden. Dazu müssen die Schalter "Threshold/Max.Gradient" auf "Threshold" gestellt werden und es muß die Grauwertschwelle angegeben werden. Normalerweise ist es jedoch viel sinnvoller, den steilsten Grauwertgradienten als Objektkante zu definieren (Schalter auf "Max.Gradient"). In diesem Fall wird der größte Grauwertgradient der Objektkante gesucht, unabhängig vom Grauwert. Hierzu muß mit "Polynom-Size" die Anzahl der Stützpunkte des Polynoms [3,5,7] eingestellt werden, mit dem die Grauwertkante angenähert wird und mit dem der Gradient bestimmt wird. Zusätzlich kann der interpolierte Sektor noch mit einem rekursiven Filter bearbeitet werden, um Rauschen, Überschwinger oder sonstige Störungen zu vermindern, die die Gradientensuche verfälschen könnten. Der Rekursiv-Filter kann auf 0 bis 5 Iterationen eingestellt werden.
Show Subpixel: Die Anwahl des "Show Subpixel"-Schalters bewirkt während der Messung eine Darstellung der Objekte in - durch die Interpolation - vergrößerter Form. Die detektierte Objektkontur wird als weiße Linie mit Interpolationsgenauigkeit angedeutet, d. h. mit 1/1, 1/2, 1/4 oder 1/8 Pixel. Diese Darstellung ermöglicht es, die idealen Parameter für eine eindeutige und stabile Objektvermessung festzulegen und zu überprüfen. Die Darstellung jedes Objektes wird mit einem Mausklick beendet. Die Funktion berechnet dann sofort die Fläche des nächsten Objektes.

Hinweis: Für die reine Objektsuche empfiehlt es sich, mit bearbeiteten Bildern zu arbeiten, z. B. mit extrahierten Kanten oder binärisierten Bildern. Für die subpixelgenaue Vermessung sollte jedoch immer mit dem Originalbild gearbeitet werden, da nur hier die Grauwertgradienten ungestört sind. Hierzu ordnet man das bearbeitete und das unbearbeitete Bild an exakt gleicher Stelle auf zwei verschiedenen Bildspeichern an (Funktion "Copy Screen to Image Buffer" aus der Toolbox) und schaltet vor der Objektsuche auf das bearbeitete Bild, vor der Flächenvermessung auf das unbearbeitete Bild um. Es versteht sich von selbst, daß die aktuelle ROI zwischen den einzelnen Bearbeitungsschritten nicht verändert werden darf.

8.1.5.5. Object Data Table
Mit der Funktion "Object Data Table" können die Daten der gefundenen Objekte angezeigt werden. Z. Zt. sind dies:

  • - Die laufende Nummer der Objekte in der Liste,

  • - Die Koordinaten des umschreibenden Rechtecks (Xa Ya Xe Ye),

  • - Mittelpunkt des umschreibenden Rechtecks (Xm Ym),

  • - Länge der Objektumrandung (Kontur) in Pixeleinheiten,

  • - Länge der Objektumrandung (Boundary) in x-, y- und Diagonal-Einheiten

  • - Die Fläche des umschreibenden Rechtecks,

  • - Die Fläche des Objektes (achteck-genau, pixelgenau oder subpixelgenau),

  • - Der Flächenschwerpunkt (Xcg Ycg: immer subpixelgenau),

  • - Parameter der umschreibenden Ellipse (Dmin, Dmax, Dratio, Area, Angle),

  • - Die Roundness (Rundheit) der Objekte

  • - Das Vorhandensein von Löchern im Objekt (0: Nein, 1: Ja),

  • - Der mittlere Grauwert.
  • - Die Standardabweichung vom mittleren Grauwert
  • - Die Objekt-Momente x2, y2, und xy

Welche dieser Parameter tatsächlich angezeigt werden, muß in der "Object Features for Display"-Dialogbox eingestellt werden. Weitere Parameter der Objekte können auf Wunsch ermittelt werden. Bitte wenden Sie sich dazu an das Entwicklungsteam.
Bei der Bestimmung der Länge der Objektkontur wird beim Abtasten unterschieden, ob es sich um horizontale, vertikale oder diagonale Nachbarpixel handelt. Diagonale Boundary-Elemente haben die Länge von 1.4142 Pixelabständen. Nach Smeulders (siehe Russ, Seite 518) erhält man genauere Ergebnisse für die Objektkonturlänge, wenn man die orthogonalen Elemente mit dem Faktor 0.948 und die diagonalen Elemente mit dem Faktor 1.340 multipliziert. Der mittlere Fehler soll dann unter 2.5% sein. Daher wird dieses Verfahren in picCOLOR genutzt. Bei einer Kalibrierung des Systems, z. B. in Metern, wird eine eventuell in x- und y-Richtung unterschiedliche Kalibrierung berücksichtigt. Es muß jedoch beachtet werden, daß auch diese aufwendigere Art der Berechnung zu erheblichen Fehlern führen kann. So erhält man z. B. für eine größere Kreisfläche mit dieser Art der Berechnung eine zu große Umrandung, da die Stufen in den horizontalen Bereichen oben und unten und in den vertikalen Bereichen links und rechts zu stark berücksichtigt werden. Hierdurch kommt es z. B. bei der Berechnung der Rundheit (Roundness) mit der Formel Area*4*pi/(Boundary*Boundary) bei großen Objekten zu kleineren Werten als erwartet, bei kleinen Objekten jedoch zu größeren Werten als erwartet. Nur bei mittleren Objekten ist diese Formel recht genau, besonders bei kleinen Objekten mit z. B. 4..20 Pixeln an Fläche sind die Fehler doch zu groß. Um diese Fehler zu kompensieren, wurde die neue Methode daher in picCOLOR in leicht abgeänderter Form implementiert, so daß die Fehler ziemlich gut minimiert werden:

roundness = (4*PI*area)/(boundary*boundary) * (1 / circle_roundness)

mit circle_roundness als: area / (area - sqrt(PI*area) + PI/4)

Der Flächenschwerpunkt von Objekten wird nur berechnet, wenn der Schalter "Exact Pixel Area" eingeschaltet ist. Andernfalls wird eine schnellere Funktion benutzt und der Flächenschwerpunkt zu "0.0" gesetzt und als Objektfläche die Fläche des umschreibenden Achtecks bestimmt. Wenn der "Exact Pixel Area"-Schalter eingeschaltet, aber der "Use Pixel Runs"-Schalter ausgeschaltet ist, wird auch der mittlere Grauwert von Objekten bestimmt. Der hierzu benutzte iterative Ansatz zur Flächenbestimmung ist jedoch wesentlich langsamer. Löcher (Holes) werden nur bestimmt, wenn der "Use Pixel Runs"-Schalter eingeschaltet ist. Es kann dabei nur bestimmt werden, ob Löcher im Objekt vorhanden sind oder nicht. Die Anzahl der Löcher kann z. Zt. noch nicht bestimmt werden. Es kann außerdem auch noch der Parameter Area/Box (Pixelfläche / Fläche des umschreibenden Rechtecks) mit Werten im Bereich [0.0...1.0] bestimmt werden. Das "Exact Pixel Area"-Flag muß hierzu gesetzt sein. Es werden folgende Parameter der umschreibenden Ellipse bestimmt:

  • - Dmin = kleine Achse der Ellipse

  • - Dmax = große Achse der Ellipse

  • - Dratio = Dmax / Dmin

  • - Darea = Pixelfläche der umgebenden Ellipse

  • - Dangle = Winkel der großen Achse der Ellipse zur positiven x-Achse

8.1.5.6. Save Object Data
Mit dem Schalter "Save Object Data" können alle Daten auf einen schon geöffneten Datenfile geschrieben werden. Hierbei wird das gleiche Format wie bei der "Object Data Table"-Funktion benutzt:

*14* | Nr. | Xa | Xe | Ya | Ye | Xm | Ym | Bound | RectAr | Area | Xcg | Ycg | Holes | Emin | Emax | Earea | Eratio | Eangle | Gray | usw...
 | 1 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
 | 2 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
 | usw. |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |

Wenn vorher eine Kalibrierung vorgenommen wurde, werden die Daten in der entsprechenden Einheit ausgegeben und abgespeichert. Für FloatingPoint-Werte wird immer eine Exponentialdarstellung verwendet. Wenn die Objektliste leer ist, wird die Meldung "*15* Object List Empty" abgespeichert. Die Objektmerkmale, die mit dieser Funktion abgespeichert werden sollen, müssen zuvor wie für die Objekt-Daten-Dialogbox in der "Select Features"-Dialogbox eingestellt werden.

8.1.5.7. Plot Object Contours (Overlay Contours or Variable Contours)
Die Funktion "Plot Overlay Contours" zeichnet die Konturen der gefundenen und akzeptierten Objekte auf den Bildschirm und in den aktuellen Bildspeicher. Die Farbe/Grauwert kann über die "Plot Color" eingestellt werden. Wenn für die "Plot Color" eine "-1" eingegeben wurde, dann werden die Konturen nur auf dem Bildschirm invertiert dargestellt und nach dem nächsten Mausklick verschwinden sie wieder. Unter bestimmten Umständen ist es auch möglich, die Konturen der gefundenen und zurückgewiesenen Objekte darzustellen. Über die Funktion "Plot Variable Contours" können alle Konturen gezeichnet werden, wie sie in der interaktiven Darstellung bei der Objektanzeige benutzt werden, z. B. umschreibendes Rechteck, kleinstes umschreibendes Rechteck, umschreibende Ellipse, u.a.

8.1.5.8. Plot Filled Objects
Diese Funktion zeichnet die ausgefüllten Objekte auf den Bildschirm und in den aktuellen Bildspeicher. Die Farbe/Grauwert kann über die "Plot Color" eingestellt werden. Wenn für die "Plot Color" eine "-1" eingegeben wurde, dann werden die Objekte nur auf dem Bildschirm invertiert dargestellt und nach dem nächsten Mausklick verschwinden sie wieder. Aus programmtechnischen Gründen müssen die Objekte beim Start dieser Funktion auf dem Bildschirm zu sehen sein, d. h. der Bildspeicher mit den Originalobjekten muß aktiv sein. Zum Plotten selbst kann dann später ein anderer Bildspeicher angegeben werden. Dieser wird vor dem Darstellen von der Funktion eingefragt.

8.1.5.9. Seed Objects
Wahlweise können auch lediglich die Mittelpunkte aller Objekte markiert werden, indem Einzelpixel mit dem Pixelwert 255 an Stelle der Xm/Ym-Koordinaten geplottet werden. Diese Funktion kann z. B. dafür benutzt werden, künstliche exakt begrenzte Objekte an Stelle der gefundenen Objekte zu erzeugen, indem die Einzelpixel mit morphologischen Verfahren vergrößert werden (Dilatation). Diese Funktion erlaubt es, nach der Objektbestimmung in einem anderen Bildspeicher die Mittelpunkte der Objekte zu markieren.

8.1.5.10 Parameter Histogramm

Es kann ein Histogramm über die Parameter aller gefundenen Objekte berechnet und graphisch angezeigt werden. Dabei sind z. Zt. folgende Parameter wählbar:

  • - Rect Area (umschreibendes Rechteck: Fläche in Pixel)

  • - Pixel Area (oder, wenn zuvor berechnet: Subpixel Area)

  • - Pixel Area / Boundary Length

  • - Max x-Size (des umschreibenden Rechteckes)

  • - Max y-Size

  • - Area / Box

  • - Ellipse Dmin (kleine Halbachse)

  • - Ellipse Dmax (große Halbachse)

  • - Ellipse Dmax/Dmin-Ratio (Verhältnis kleiner zur großer Halbachse)

  • - Ellipse Angle (zur Horizontalen)

  • - Ellipse Area (in Pixelflächen)

  • - Roundness (Area*4*pi/(Boundary*Boundary))
  • - Gray Mean Value
  • - Gray Sigma
  • - Xcg
  • - Ycg

Weitere Parameter sind auf Wunsch jederzeit kurzfristig implementierbar.

Links: Bild mit unterschiedlichen Objekten; Rechts: Parameterhistogram der Pixelfläche der gefundenen Objekte

Als Zusätzliche Besonderheit kann man bei den Parameters Xcg und Ycg, also den Koordinaten der Flächenschwerpunkte der Objekte, die Regressionsgerade und ihre Parameter bestimmen. Diese Funktion ist immer sinnvoll, wenn überprüft werden soll, ob mehrere Objekte (oder Punkte) auf einer horizontalen oder vertikalen Linie liegen. Dies ist z. B. sehr gut zu gebrauchen bei der Bestimmung von optischen Linsenverzerrungen mit auf einem regelmässigen Gitter liegenden Punkten, deren Abweichung von einer idealen Geraden - horizontal oder vertikal - gemessen wird.

8.1.5.11. Search Parameter

Folgende Parameter sollten vor Ausführung der Funktion gesetzt werden:

  • - Gray Threshold Value

  • - Threshold Box Size (nur für eine Single Object Suche)

  • - Method of Pixel Area Calculation (Exact Pixel Area / Iterative Method / Pixel Runs/Gray-Weighted CG)

  • - Save Freeman Contour (wird für nachfolgende Auswertungen benutzt)

  • - Append to Object List / Manual Search

  • - Use Contour Buffer (für absolut sichere Ausführung)

  • - Search Priority: Follow Contours / Jump and Connect

  • - Trace Search (nur für die Fehlersuche)

Threshold Value: Grauwert, über (oder unter) dem ein Bildpunkt als zu einem Objekt gehörend erkannt wird. Wenn die Objekte dunkler als die Umgebung sind, "Dark Objekts" anklicken. Defaultwert: Grauwert 127.

Dark/Bright Objects: Objekte können heller oder dunkler als der jeweilige Hintergrund sein.

Threshold Box (Nur für die Einzel-Objekt-Funktion): Einzelobjekte, die über ein Anklicken mit dem Mauszeiger ausgewählt werden, werden normalerweise auch über die eingegebene Grauwertschwelle bestimmt. Objekte in helligkeitsmäßig sehr unterschiedlichen Bereichen können jedoch auch mit automatischer Grauwertschwelle bestimmt werden. Hierzu wird innerhalb eines Fensters um den angewählten Punkt ein Histogramm berechnet und dessen Mittelwert als Grauwertschwelle benutzt. Das Fenster darf natürlich nicht zu groß sein, da sonst der Mittelwert dem Umgebungsgrauwert zu nahe kommt. Sinnvoll ist etwa die knapp 1.5-fache Größe des Objektes. Diese Funktion ist aktiviert, wenn der Wert der Threshold-Box ungleich Null ist.

Exact Pixel Area: Es gibt verschiedene Methoden der Flächenbestimmung. Wenn "Exact Pixel Area" ausgeschaltet ist, wird die genaue Pixelfläche nicht bestimmt und statt dessen die Fläche des umschreibenden Achtecks als Fläche eingetragen. Dies ist zwar nicht sehr genau, aber dafür schnell. Wenn "Exact Pixel Area" gesetzt ist, wird die genaue Pixelfläche bestimmt, entweder mit einem iterativen Verfahren ("Use Pixel Runs" ausgeschaltet) oder über die Vermessung horizontaler Linien des Objektes ("Use Pixel Runs" eingeschaltet). Der "Pixel Runs"-Ansatz ist wesentlich schneller als das iterative Verfahren. Deafultmäßig ist die Bestimmung mit "Pixel Runs" eingeschaltet. Dieses Verfahren kann jedoch zu Fehlern führen, wenn das gefundene Objekt mehr als ein Loch horizontal nebeneinander oder stark verschlungene oder konkave Löcher enthält. Der Algorithmus ist in der Lage, Löcher zu detektieren, z. Zt. jedoch noch nicht die Anzahl der Löcher. Vorsicht: Wenn ein Loch nur von 1-Pixel-breiten Stegen links und rechts begrenzt wird, so wird es nicht als Loch erkannt. Die Pixelfläche ist dann trotzdem richtig. Achtung: wenn mehrere Löcher horizontal nebeneinander liegen, wird die Pixelfläche, die zwischen je zwei Löchern liegt, nicht berücksichtigt. Dies kann auch zu fehlerhaften Flächenschwerpunktswerten Xcg, Ycg führen. Bei derartigen Objekten sollte man besser den iterativen Ansatz benutzen, indem "Use Pixel Runs" ausgeschaltet wird. Der Flächenschwerpunkt und der mittlere Grauwert des Objektes werden nur bei eingeschalteter "Exact Pixel Area" bestimmt. Der Flächenschwerpunkt kann auch grauwert-gewichtet werden. Hierzu muß das "CG Gray Weighted"-Flag eingeschaltet sein.

Use Contour Buffer: Die Benutzung eines 1-Bit-Konturspeichers (Overlay-Ebene) führt zu einer absolut sicheren Bestimmung aller Objekte. Daher ist dies die normale Einstellung. Wesentlich schneller ist es jedoch, statt des Konturspeichers einfach in der Objektliste nachzuschauen, ob das neue Objekt bereits gefunden wurde. Hierbei wird entschieden, daß es sich um ein neues Objekt handelt, wenn es sich nicht innerhalb des umschreibenden Achteck eines bereits gefundenen Objektes befindet. Es kann dabei jedoch vorkommen, daß kleinere Objekte, die sich in der achteckigen Umgebung von großen Objekten "verstecken", nicht gefunden werden. Wenn dies aufgrund der Form der Objekte nicht vorkommen kann, so kann die Geschwindigkeit der Funktion durch Abschalten des "Use Contour Buffer"-Schalters erhöht werden. Der "Contour Buffer" wird nach Beendigung der Suchfunktion nicht gelöscht, da er z. B. für das Darstellen der Objektkonturen noch benötigt wird. Er kann später manuell mit der Funktion "Dealloc Contour Buffer" gelöscht und entfernt werden. Es empfiehlt sich, diesen automatisch angelegten Buffer nach Gebrauch wieder freizugeben. Geschieht dies nicht und wird versucht, einen höher liegenden Buffer freizugeben (z. B. einen vorher angelegten FFT-Buffer), so erscheint eine Fehlermeldung. Der "Fast ROI Mode" kann gewählt werden, wenn im Laufe der Arbeiten nicht außerhalb der einmal gewählten ROI nach Objekten gesucht wird. Hierbei wird eine deutliche Geschwindigkeitssteigerung erzielt, indem der interne Maskenspeicher, der normalerweise die gleiche Größe wie der Bildspeicher hat, bei einer neuen Objektsuche nur im Bereich der ROI gelöscht wird. Hierdurch können dann intern abgelegte Objektkonturen stehen bleiben.

CG Gray Weighted: Mit diesem Schalter kann ausgewählt werden, ob ein bestimmter Flächenmittelpunkt nur anhand der Pixelfläche oder mit Berücksichtigung der Grauwerte des Objektes (linear gewichtet) bestimmt werden soll.

CG Use Peak Finder: Zur genaueren Suche der Objektmittelpunkte kann ein spezieller Peak-Finder eingesetzt werden, wie er z. B. zur Maxima-Suche beim Particle Image Velocimetry-Verfahren oder bei der Pattern-Verschiebe-Messung während der Korrelationspeakbestimmung verwendet wird. Dies macht allerdings nur bei sehr kleinen Objekten mit wenigen Pixeln Durchmesser Sinn und ebenfalls nur, wenn der Mittelpunkt tatsächlich die hellste Stelle des Objektes ist. Der benutzte Peak-Finder kann im Measurement-Control-Menü gewählt werden.

Save Freeman Contour: Die Freeman Contour (der Umgebungskode des Objektes) wird immer intern berechnet, nach der Bestimmung aller gewünschten Parameter jedoch normalerweise gelöscht. Für bestimmte Darstellungen kann es jedoch erwünscht sein, die Freeman Contour zu behalten. Ganz wichtig ist dies z. B. auch, wenn nachträglich bestimmte Berechnungen mit der Objektkontur durchgeführt werden sollen, z. B. eine Krümmungsbestimmung.

Minimize Smallest Rect.: Das kleinste umschreibende Rechteck wird in der Regel durch iterativen Ansatz genau bestimmt. Wenn dies nicht notwendig ist, kann eine etwas ungenauere aber schnellere Version der Funktion benutzt werden.

Surrounding/Equivalent Ellipse: Die Ellipsenparameter werden normalerweise mit der umschreibenden Ellipse bestimmt. Wahlweise kann hierzu auch die equivalente Ellipse benutzt werden. Dies ist die Ellipse mit den gleichen Momenten wie das Objekt.

Appent_to_List: Normalerweise wird die Objektliste vor einer erneuten Suche immer gelöscht. Bei gesetztem Schalter wird nicht gelöscht, sondern neu gefundene Objekte werden an die vorhandene Liste angehängt.

Manual_Search: Bei gesetzem Flag wird die Einzelobjektfunktion "Single Object" benutzt. Hiermit kann die Objektklassifizierung nun auch manuell durchgeführt werden. Jedes in die Liste aufzunehmende Objekt wird mit der Maus angeklickt. Bei gesetzem "Append_to_List"-Schalter wird die vorhandene Liste bei Funktionsaufruf nicht gelöscht, so daß man auch zu einer bereits vorhandenen Liste neue Objekte hinzufügen kann. Auf diese Weise lassen sich Objekte aufnehmen, die mit den implementierten und eingeschalteten Zurückweisungskriterien nicht klassifiziert werden können.

Suchstrategien:
Es wurden verschiedene Suchstrategien implementiert: So kann entweder der exakten Verfolgung der Kontur eines Objekts der Vorzug gegeben werden oder dem Versuch, ein Objekt auch dann zu bestimmen, wenn es z. B. offen oder nicht zusammenhängend ist. Für diese spezielle Art der Suche müssen die folgenden Parameter eingestellt werden:

Follow Contours: Dies ist die normale Objektsuchfunktion. Es wird nach benachbarten Pixeln gesucht, die im Winkelbereich von -90 Grad bis +180 Grad im Uhrzeigersinn liegen. Hierbei wird die gesamte lückenlose Kontur eines Objektes umfahren.

Jump and Connect: Sind Lücken in der Objektumrandung, d. h. entweder sehr scharfe Ecken oder, wenn der Objekt nur als Umrandung dargestellt ist (z. B. nach einer Sobel-Filterung), wirkliche Lücken vorhanden, so kann die Suchfunkion diese überspringen. Hierzu ein kleines Beispiel:

 |  |  | x | x | x | x |  | x | x | x | x | x |  |  |
 | x | x | x | x | x |  |  | x | x | x | x | x | x |  |
x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x
x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x
 | x | x | x | x | x | x | x | x | x | x | x | x | x | x |
 |  | x | x | x | x | x | x | x | x | x | x | x | x |  |
 |  |  |  |  | x | x | x | x | x | x |  |  |  |  |

Beispiel-Objekt mit Lücke im oberen Randbereich

Die Lücke im oberen Teil des Objektes könnte hier durch ein Problem bei der Binärisierung entstanden und würde damit nicht die tatsächliche Objektumrandung darstellen: sie sollte übersprungen werden. Wenn man nun die Abtastung links oben beginnt, würde es bei der Suche des fünften Umrandungspixels einen Suchwinkelwinkel von 135 Grad bedeuten, um in die Bucht hineinzufahren. Durch Beschränken des Suchwinkels und sinnvolle Angabe einer vorausschauenden Suchweite kann dieses Problem gelöst werden.
Hier wird normalerweise nur noch im eingeschränkten Winkelbereich von -45 bis 90 Grad relativ zur bisherigen Kantenrichtung gesucht. Wenn in diesem Bereich kein zugelassener Objektpunkt gefunden wird, so wird in größerem Pixelabstand gesucht. Maximaler Abstand ist die einzugebende "Search Distance". Hier gibt es eine Besonderheit: Bis zum Suchabstand "3" wird normal im Winkelbereich -45 bis +90 Grad gesucht. Wird hier nichts gefunden, dann tastet sich der Algorithmus einen Bildpunkt in Richtung des bisherigen Kantenverlaufes vor und sucht erneut mit den Suchabständen 1, 2 und 3 die [-45..90]-Grad-Umgebung ab. Dieses Vortasten wird weitergeführt, bis der maximale eingegebene Suchabstand "Jump Distance" erreicht ist. Wird dann immer nocht nichts gefunden, so wird im größeren Winkelbereich von -90 bis 180 Grad gesucht, so daß dann die Kontur verfolgt wird.

Jump Distance: Suchabstand bei Schalterstellung "Jump and Connect". Bei den Werten "1", "2" und "3" wird im Bildpunktabstand "1, "2 und "3" im Winkelbereich -45 bis +90 Grad gesucht. Bei Werten größer 3 kann sich der Algorithmus "blind" in die Richtung des bisherigen Kantenverlaufes vortasten und sucht dann vom neuen Ort erneut im -45 bis 90 Grad Winkelbereich. Vortastweite ist ("Jump Distance" - 3), d. h. erst bei Eingabe von "4" beginnt das Programm, sich blind vorzutasten. Mit anderen Worten: Es werden bei "Jump Distance"-Stellung "1" nur direkte Nachbarn gesucht, in Stellung "2" kann ein Pixel übersprungen werden, in Stellung "3" können 2 Pixel übersprungen werden. Wenn hierbei immer noch kein sinnvoller, zum Objekt gehörender Pixel gefunden wurde, so kann bei Eingaben größer 3 "blind" in die bisherige Suchrichtung "weitervorgefühlt" werden, d. h. der Algorithmus tastet sich einfach bis zur angegebenen ("Jump Distance" - 3)-Grenze vor und sucht jeweils in bis zu drei Schritten den Winkelbereich ab.

Trace Search: Der Schalter "Trace Search" bewirkt, daß man die Suche nach den Objekten auf dem Bildschirm mitverfolgen kann. Dies ist nur zum Zweck der Kontrolle der Funktion gedacht und sollte normalerweise nicht benutzt werden. Dabei wird zerstörerisch auf dem Bildschirm gezeichnet, jedoch nicht im Bildspeicher.

8.1.5.12. Object Classification Training
Es können sogenannte Zurückweisungskriterien eingestellt werden. In diesem Fall können die Objekte nach bestimmten Objektparametern klassifiziert werden, z. B. Größe, Komplexheit, Rundheit, Umfang, Winkel zur Horizontalen usw. Die einstellbaren Kriterien sind weiter unten beschrieben. Nach Einstellung der gewünschten Kriterien mit minimaler und maximaler Klassifikationsgrenze kann die Objektsuche gestartet werden. Es ist jedoch auch möglich, ohne genaue Angabe der Zurückweisungskriterien die richtigen Werte zu finden. Dies geschieht über ein Klassifizierungstraining. Hierbei werden einfach alle gewünschten Objekttypen mit der Maus angeklickt. Das Programm bestimmt alle notwendigen Objektparameter und errechnet sich hieraus die jeweiligen minimalen und maximalen Zurückweisungskriterien. Diese können auch im "Rejection Criteria"-Menü abgefragt und eventuell noch geändert werden. Für die Größen: PixelArea, Area/Box, Roundness und EllipseRatio werden die minimalen und maximalen Werte jeweils um 1% verkleinert oder vergrößert, um nicht durch Rundungsfehler erwünschte Objekte zu verlieren. Hinweis: aus programmtechnischen Gründen wird für die Konturlänge (Boundary) noch die einfache Konturlänge benutzt, d. h. Diagonalelemente haben hier die Länge 1.

8.1.5.13. Rejection Criteria

Zur Klassifikation der Objekte sind verschiedene Kriterien wählbar, nach denen ein Objekt angenommen oder zurückgewiesen werden kann:

  • - Boundary (Konturlänge)

  • - Rectangle Area

  • - Pixel Area (nicht subpixelgenau)

  • - Max X-Size

  • - Max Y-Size

  • - Area/Box

  • - Roundness (PixelArea*4*PI / (boundary*boundary))

  • - Gray Mean Value

  • - Gray Sigma

  • - Earea (Fläche der umschreibenden Ellipse)

  • - Emin (kleine Achse der umschreibenden Ellipse)

  • - Emax (große Achse der umschreibenden Ellipse)

  • - Eratio (Verhältnis von großer zu kleiner Achse der umschreibendenEllipse)

  • - Eangle (Winkel der großen Achse der umschreibenden Ellipse relativ zur positiven x-Achse)

Die jeweiligen Minimum und Maximum-Werte für die gewählten Kriterien können im unteren Teil der Dialogbox genau eingestellt werden oder - nach einem automatischen Training - auch inspiziert oder angepaßt werden.

Der Parameter "Boundary Length" dient dabei zusätzlich noch dazu, Endlosschleifen zu vermeiden, die bei bestimmten 1-pixel breiten und nur in der 8-er Nachbarschaft verbundenen Formen von Objekten auftreten können.

8.1.5.14. Freeman Contours
Während der Objektbestimmung werden auch die Freeman-Konturen berechnet. Diese können in der jetzigen Version jedoch noch nicht ausgegeben werden, sondern werden nur intern benutzt. Auf Wunsch wird diese Möglichkeit jedoch gerne implementiert. Mit Hilfe der Freeman Konturdaten können recht komplexe Analysen durchgeführt werden, z. B. das unten beschriebene Schneiden zusammenhängender Partikel oder eine Krümmungsauswertung.

8.1.5.15. Cut Overlapping Objects

Mit dieser Funktion kann eine Objekt-Trennung über die Auswertung der Konturkrümmung erzielt werden. Dieses Verfahren ist wesentlich schneller als die zeit- und speicheraufwendige Watershed-Segmentierung. Hierbei wird ausgenutzt, daß die Kontur berührender Objekte an den Berührungsstellen oder Überlappungsstellen eine konkave Krümmung aufweist. Wenn diese Krümmung einen bestimmten Wert überschreitet, so werden Trennlinien zwischen den jeweils nächstliegenden gefundenen Krümmungsextremitäten gezeichnet. Dieses Trennen geschieht direkt während der Objektsuche nach der kompletten Umfahrung der Kontur mit Hilfe der Freeman-Konturdaten. Die Trennlinien werden graphisch ins Bild eingetragen. Danach muß der Objektsuchvorgang nocheinmal gestartet werden und bezieht sich nun auf die getrennten Objekte. Die automatische Trennung erfolgt, wenn im Parameter-Menü der Schalter "Cut Objects" angeklickt wird. Die Objekte werden in der 8er Nachbarschaft getrennt. Ein "Undo" der gezeichneten Trennungslinien ist nach der Ausführung möglich. Es müssen zusätzlich einige Parameter eingestellt werden:

Distance: Zur Krümmungsbestimmung der Kontur werden 3 Konturpunkte verwendet. der Abstand dieser Punkte kann eingestellt werden. Sinnvoll ist ein Abstand von 2 oder 3 Punkten.
Minimum Triangle Area: Minimale Dreiecksfläche der konkaven Kontur, gebildet durch die 3 Punkte im Abstand "Distance", die als Objektberührungskontur gefunden wird. Dieser Wert ist von der Variable "Distance" abhängig. Bei (Distance=2 oder 3) sind Werte von 1 bis 4 sinnvoll.
Max. Cut Length: maximale Länge der gezeichneten Trennungslinie, d. h. maximaler Abstand zweier konkaven Konturkrümmungen auf gegenüberliegenden Seiten des Objektes, die als zusammengehörig erkannt werden.
Cut Color: Farbe, mit der die Trennungslinien gezeichnet werden.

8.1.5.16. Contour Check (Convexities/Concavities)
Mit den Freeman Konturdaten kann eine Untersuchung der Konturkrümmungen eines Objektes durchgeführt werden. Diese Funktionen stehen zunächst noch nicht interaktiv zur Verfügung, nur über MACRO-Funktionen. Auf Wunsch kann jedoch auch eine interaktive Funktion implementiert werden.

8.1.5.17. Deallocate Object List
Mit der Funktion "Deallocate Object List" kann der interne Speicherbereich, der für eine Objektliste angelegt wurde, wieder freigegeben werden, wenn er für andere Zwecke benötigt wird. Dies wird im Normalfall nicht notwendig sein, da beim Berechnen einer neuen Liste die alte automatisch nach einer Sicherheitsabfrage gelöscht wird.


8.2. Statistical Measure

Point Statistic
Row Luminance
Col. Luminance
Line Lumin/Hist.
- LineWidth
- FFT w/Hamming
- Dealloc Data
Area Histogram
- Exception Val
2-Channel Hist.
- Second Source
Coocurrence ->

In diesem Kapitel geht es um die Messung und Auswertung der statistischen Verteilung der Grauwerte eines Bildes. Sie können hier Histogramme einer Punkteschar, von Linien im Bild, von Bildausschnitten oder sogar "mehrdimensional" von mehrkanaligen Bildern ermitteln. Sicherlich ist die Aufteilung in geometrische und statistische Vermessungen nicht in allen Fällen absolut eindeutig: ausgehend vom Histogramm eines Bildes oder mehrerer Bilder werden z. B. auch wieder neue Methoden der geometrischen Flächenbestimmung ermöglicht.
Ergebnisdaten dieser Funktionen können wie üblich auf einen Datenfile abgespeichert werden. Bei Ausführung der einzelnen Funktionen werden die Daten automatisch - je nach Art der anfallenden Daten - in der Regel in ASCII-Form auf die zuvor geöffnete Datei geschrieben.

8.2.1. Point
Mit dieser Funktion können statistische Angaben über eine Schar anzuwählender Bildpunkte bestimmt werden. Der Mauszeiger wandelt sich in ein Fadenkreuz um, in der Statuszeile werden die folgenden Parameter angezeigt:

  • - Koordinaten des angewählten Pixel,

  • - Grauwert (Pixelwert),

  • - Gesamtanzahl der angewählten Pixel,

  • - Mittelwert aller angewählten Pixelwerte (Grauwerte),

  • - Streuung der Pixelwerte (Varianz),

  • - Standardabweichung der Pixelwerte (StdDev).

Das Fadenkreuz kann mit der Maus verschoben werden. Bei Anklicken eines Punktes mit der linken Maustaste, der Returntaste oder der "+"(=plus)-Taste wird dieser für die statistische Berechnung aufgenommen. Es können beliebig viele Punkte aufgenommen werden. Die statistischen Angaben über die Punkteschar werden bei jedem neuen Punkt automatisch aktualisiert. Ein Druck auf die linke Maustaste bei gleichzeitig gehaltener "Shift"-Taste oder einfach die "-"(=minus)-Taste löscht den zuletzt eingegebenen Bildpunkt der Serie. Die Funktion wird mit der rechten Maustaste abgebrochen. Wenn ein Datenfile geöffnet ist, so wird bei Beendigung der Funktion der letzte Stand der Werte für die eingegebene Punkteschar auf der zuvor geöffneten Datei in der folgenden Reihenfolge abgelegt:

*54* | Anzahl | Min | Max | Mittelwert | Varianz | Standard-Abweichung
 | n | g_min | g_max | g_mean | g_variance | g_sigma

Bei nichtinteraktiver Funktion (nur aus einem MACRO-Programm) können mit dieser Funktion übrigens auch beliebige floatingpoint-Werte eingegeben werden.

8.2.2. Row / Column
Es wird der Grauwert- (Pixelwert-) Verlauf einer Bildzeile oder Bildspalte, jeweils innerhalb der aktiven ROI, ausgegeben. Die Zeile/Spalte, angedeutet durch eine invertierte Linie, kann dabei mit der Maus nach oben/unten bzw. nach links/rechts verschoben werden. Der Grauwertverlauf wird bei Drücken der linken Maustaste als invertierte Graphik in Echtzeit im Bild dargestellt. Hierbei entspricht der Grauwert Null bei der Row-Funktion der unteren Bildkante, bei der Column-Funktion der linken Bildkante. Wenn ein Datenfile geöffnet ist, werden nach Druck auf die "Shift"-Taste und die linke Maustaste nach einer Sicherheitsabfrage die folgenden statistischen Angaben der aktuellen Bildzeile/Bildspalte (jeweils nur innerhalb der aktuellen ROI) auf den File geschrieben, und zwar für eine Zeile (Row):

*55*

*56*

Row/Column Statistic

Row:Y

Min

Max

Mittelwert

Std.-Abw.

Entropy

und für eine Spalte (Column):

*55*

*57*

Row/Column Statistic

Column: X

Min

Max

Mittelwert

Std.-Abw.

Entropy

Wird die Sicherheitsabfrage mit der rechten Maustaste beantwortet, so werden zusätzlich alle Grauwerte der Zeile/Spalte innerhalb der aktuellen ROI abgespeichert. Dies geschieht im folgenden Format, beginnend bei x=ROI-x-left (Row) oder y=ROI-y-top (Column):

*58*

Row/Column Luminance
g0
g1
g2
usw.

Achtung: je nach Länge der Linie (z. B. 1024 Bildpunkte) können dies leicht 5kB werden! Mit der rechten Maustaste wird die Funktion beendet.

8.2.3. Line Histogram
Während die Funktionen "Row" und "Column" auf die Bestimmung des Grauwerteverlaufes und einfacher Parameter von gesamten Zeilen und Spalten des Bildes beschränkt waren, kann mit der Funktion "Line Histogramm" der Grauwert- (Pixelwert-) Verlauf und weitere Parameter über eine beliebige Schnittlinie im Bild angezeigt werden. Neben den schon bekannten einfachen Parametern (Min, Max, Mittelwert, Standardabweichung, Varianz, Entropie) können außerdem die Grauwertverteilung der Linie (Line Luminanz), das Grauwert-Histogramm, verschiedene 1-dimensionale Fourierspektren sowie die Regressionsgeraden des Grauwertverlaufes der Linie berechnet und dargestellt werden.
Die Definition der Linie wird durch Anwahl des Anfangs- und Endpunktes mittels zweier Fadenkreuze ermöglicht. Durch Anklicken mit der linken Maustaste wird das dem Mauszeiger am nächsten liegende Fadenkreuz angewählt, der Mauszeiger springt auf das angewählte Fadenkreuz und außerdem werden die Pixel-Koordinaten beider Fadenkreuze sowie ihr Abstand voneinander angezeigt. Bei gehaltener Maustaste kann das angewählte Fadenkreuz verschoben werden. Bei zusätzlich gehaltener Shift-Taste (oder mittlerer Maustaste) können beide Fadenkreuze gleichzeitig verschoben werden. Beide Fadenkreuze sind durch eine kurz gestrichelte Linie verbunden. Das Fadenkreuz Nr. 1, d. h. der Anfangspunkt der Linie, ist durchgezogen gezeichnet, das Fadenkreuz Nr. 2, der Endpunkt der Linie, ist grob gestrichelt gezeichnet. Die Linie kann eine Breite [1..15] Pixel aufweisen, wobei alle Pixelwerte quer über die Breite (senkrecht zur Linienlänge) für die Berechnung der Werte gemittelt werden.
Nach erfolgter Einstellung beider Fadenkreuze (und damit der eigentlich gewünschten Verbindungslinie) kann die Berechnung der statistischen Werte durch Anklicken der rechten Maustaste gestartet werden. Hierbei öffnet sich eine Dialogbox mit mehreren Schaltflächen. Man kann zwischen drei verschiedenen Darstellungen wählen: Linien-Luminanz, Grauwert-Histogramm und Frequenzspektrum.

Bildausschnitt mit sinusförmigem Grauwertverlauf, gestört durch Gauss-förmiges Rauschen

Luminanz-Profil über das obige Grauwertprofil

Linien-Luminanz: Im Graphikfenster der Dialogbox wird hierbei der gesamte Grauwertverlauf der gewählten Linie vom Start der Linie bei Fadenkreuz Nr. 1 bis zum Ende der Linie beim Fadenkreuz Nr. 2 dargestellt. Die Breite des Graphikfensters beträgt immer 256 Pixel, so daß längere Linien-Histogramme gestaucht werden, kürzere gedehnt. Beim Stauchen kann es vorkommen, daß einzelne Pixelwerte im Grauwerteverlauf nicht angezeigt werden. Wenn der pixelgenaue Grauwerteverlauf beurteilt werden soll, kann man über den Schalter "Show All" auf nicht gestreckte oder gestauchte Darstellung umschalten: bei Linien, die die Länge von 256 Bildpunkten überschreiten, wird nun jedoch nur ein Ausschnitt des Grauwerteverlaufes dargestellt. Dieser Ausschnitt kann mit der Verschiebeleiste am unteren Bildrand eingestellt werden (diese Funktion ist allerdings noch nicht implementiert). Einzelne Pixelwerte können durch Anklicken im Diagramm inspiziert werden. Ihr Pixelwert (Grauwert) wird dann im unteren Teil der Dialogbox angezeigt.
Zusätzlich werden die Gleichungen der Regressionsgeraden durch die Grauwerte der Linie dargestellt, und zwar als y=f(r)=ar+b und als r=f(y)=cy+d. Dabei ist r die Länge auf dem Vektorstrahl, definiert durch die Fadenkreuze 0 und 1. Der Wert Rho ist die Güte der Regressionsanpassung. Ein Wert von 1 bedeutet perfekte lineare Abhängigkeit, ein Wert von -1 eine perfekte negative lineare Abhängigkeit. Wichtig ist hier folgendes: wenn eine Linie gleicher Grauwerte untersucht wird, d. h. also bei diner Steigung a=0.0, dann ist Rho ebenfalls Null. Das wird klar, wenn man bedenkt, daß hier keine lineare Abhängigkeit des Grauwertes vom Ort besteht. In diesem Fall kann also leider Rho nicht dafür benutzt werden, die Güte der Regressionsgeraden zu bestimmen. Für solche Fälle mit sehr kleiner Steigung "a" (siehe dazu auch das obige Bild mit dem sinusförmigen Verlauf) muß man also andere Kriterien finden. Wichtig ist hier auch noch die Anmerkung, daß "c", also die Steigung der invertierten Abhängigkeit r=f(z) nur bei sehr guter Regression genau die Invertierte von "a" ist. Bei kleinerem Rho wird "c" immer mehr vom Wert "1/a" abweichen, da die Fehlerquadrate in die andere Richtung gewertet werden. Eine eventuelle Kalibrierung der x- und y-Koordinaten wird bei der Regression berücksichtigt. Ebenfalls wird eine eventuelle Einstellung kalibrierter Grauwerte im Measurement-Control-Menü von der Linien-Luminanz-Funktion berücksichtigt. Dabei wird dann auch die Regressionsgeradengleichung mit kalibrierten Grauwerten berechnet. (Die Anzeige von 16-Bit-Grauwerten ist ebenfalls möglich, jedoch noch nicht freigegeben.)

Flächen-Histogramm des Gauss-Rauschens (ohne den Sinus aus dem obigen Bild)

Grauwert-Histogramm: Bei Betätigung des Histogram-Schalters wird das Linienhistogramm angezeigt und es werden einige statistische Werte eingeblendet (Min, Max, Mittelwert, Varianz, Entropie). Mit dem Cursor kann innerhalb des Graphikfensters jeder Wert angeklickt werden. Links unten in der Dialogbox werden dann interaktiv der Grauwert/Pixelwert und der zugehörige Histogrammwert im Bereich [0..1] angezeigt. Die Skalierung der Ordinate kann mit den Schaltern "*2" und "/2" eingestellt werden.

Amplituden-Spektrum der Sinus-Schwingung

Frequenzspektrum: Der dritte Punkt in dieser Dialogbox ist die Frequenzdarstellung. Wenn diese angewählt wird, wird defaultmäßig das Amplitudenspektrum der Linie angezeigt. Es kann jedoch auch auf die Phase oder den Real- oder Imaginärwert der Fourierkoeffizienten umgeschaltet werden. Mit dem Cursor können wieder alle Werte angewählt werden. Die angewählte Harmonische und der zugehörige Zahlenwert werden wieder unten links angezeigt. Der Gleichanteil (DC) befindet sich am linken Ende der Skala. Da die hier implementierte Version der FFT nur mit Linien der Länge 2**m (z. B. ..., 64, 128, 256, ...) arbeitet, wird die definierte Linie auf einen Wert (2**m <= Linienlänge) abgeschnitten. Der Arbeitsspeicher zur Ablage der Koeffizienten wird nach Verlassen der Funktion nicht automatisch freigegeben, da es notwendig sein kann, diese später über ein Macro-Programm noch abzufragen. Daher kann der Speicherbereich manuell über das Menü freigegeben werden. Die Koeffizienten werden nur auf speziellen Wunsch (Schalter im Menü) berechnet.
Zusätzlich zu den Fourierkoeffizienten wird die Frequenz der ersten deutlich hervortretenden Harmonischen im Amplitudenspektrum bestimmt. Diese ist definiert als das erste Maximum nach dem ersten Minimum, vom Gleichanteil ausgehend. Die Frequenz dieses Maximum wird subpixelgenau berechnet, indem über die drei diskreten Frequenzen um das ermittelte Maximum herum mittels einer Polynom- oder Gauss-Kurvenanpassung das tatsächliche Maximum gesucht wird. Das Gauss-Verfahren ist dann sinnvoll, wenn im Originalbild auch eine Gauss-förmige Grauwertverteilung vorhanden war. Die Einstellung geschieht im "Measurement Control"-Menü. Die Fourierkoeffizienten können auch nach Überlagerung eines Hamming-Fensters bestimmt werden. Dies muß vor Funktionsausführung im Menü eingestellt werden.

Abspeichern der Resultate:
Bei Betätigung der Schaltfläche "Save" wird der Grauwertverlauf, das Histogramm, die statistischen Größen Min, Max, Mittelwert, Standardabweichung und Entropie und eventuell auch die Fourierkoeffizienten auf dem geöffneten Datenfile abgelegt. Wenn kein Datenfile geöffnet ist, läßt das System die Erstellung eines Datenfiles zu, der in diesem Fall nach Benutzung sofort wieder geschlossen wird. Ein Datensatz hat die Größe von etwa 2 bis mehreren kB, je nach Länge der Linie. Das Format des Datensatzes ist:

*59* Line Statistic
*60*

*61* Line Gray Level

*62* Line Stat.

*63* Line Hist.

*64* Line Freq.

x(start)
x1
Gray Level
g1
g2
usw. (Anzahl =
MAX(x2-x1+1, y2-y1+1))
Grau_min
g_min
Value
p[0]
p[1]
...
p[255]

Real-Part
real
...

y(start)
y1

Grau_max
g_max

Imag-Part
imag
...

x(end)
x2

Mittelwert
g_mean

Power
power
...

y(end)
y2

Std.-Abw.
g_variance

Phase
phase
...

distance
d

Entropie
g_entropy

angle
a

mit den Grauwertanteilen p[i] der Grauwerte i im Bereich [0..1]. Die Funktion wird über die Ok-Taste oder über die Exit-Fläche rechts oben in der Dialogbox beendet.

8.2.4. Area Histogram

Berechnung eines Histogrammes über alle Pixelwerte (Grauwerte) der Fläche des aktuellen Bildausschnittes (ROI). In einer Dialogbox werden minimaler Pixelwert, maximaler Pixelwert, mittlerer Pixelwert, die Varianz und der Wert für die Entropie des Bildes ausgegeben. Entropie ist hierbei ein Maß für den Informationsgehalt eines Bildes. Bei Grauwertbildern mit 8 Bit Pixeltiefe ist der Wert 8.0 der Maximalwert für die Entropie und sagt in etwa aus, daß man tatsächlich alle 8 Bit benötigt, um das Bild zu kodieren. Ein Entropiewert von 2.0 bedeutet einen niedrigeren Informationsgehalt; das Bild könnte verlustfrei auf ein Viertel der ursprünglichen Datenmenge komprimiert werden. Zusätzlich wird in einer einfachen Graphik die Pixelwertverteilung des Bildausschnittes angezeigt. Dabei ist die Abszisse in die verschiedenen Pixelwerte (von 0 bis 255) eingeteilt, die Ordinate in den prozentualen Anteil des jeweiligen Pixelwertes von 0 bis 100%. Über die Schaltflächen "*1", "*2", "*4", usw. kann die Kalibrierung der Ordinate geändert werden. Hiermit können auch sehr geringe Pixelwertvorkommen beurteilt werden. Mit dem Mauszeiger im Graphikfeld kann das Histogramm inspiziert werden. Über die "Exclude Color"-Einstellung, die vor der Ausführung der Funktion angeboten wird, kann ein bestimmter Pixelwert aus der Histogrammbestimmung ausgeschlossen werden. Dies kann z. B. der Wert "0" als Hintergrundwert sein, wenn prozentuale Flächenanteile verschiedener Objekte oder Texturen unabhängig von Flächenanteil des Hintergrundes bestimmt werden sollen. Mit dem "Filter"-Schalter wird das Grauwert-Histogramm mittels eines rekursiven Filters geglättet. Die Auswirkung kann direkt in der Graphik beobachtet werden. Es gibt jedoch keine Auswirkung auf das Originalbild. Die gefilterte Histogrammtabelle kann auf File abgespeichert werden oder über ein MACRO-Programm einzeln abgefragt werden.
Durch Anklicken der "Save"-Schaltfläche kann das gesamte Histogramm auf einem ASCII-Datenfile abgelegt werden. Wenn kein allgemeiner Datenfile geöffnet ist, wird dazu ein Filename eingefragt. Diesem wird automatisch die Extension ".HST" an den Namen angehängt. Das Format des Datensatzes ist:

*64* Area Statistic
*65*

*62* Area Stat.

*63* Area Hist.

x(start)
x1
Grau_min
g_min
Value
p[0]
p[1]
...
p[255]

y(start)
y1
Grau_max
g_max

x(end)
x2
Mittelwert
g_mean

y(end)
y2
Std.-Abw.
g_variance

area
f
Entropie
g_entropy

mit x1,y1 als linker oberer Ecke der ROI und x2,y2 als rechter unterer Ecke der ROI, f als Fläche der ROI in Pixelflächen (bei gesetzter "Exclude Color" nur die Fläche aller für die Histogrammberechnung tatsächlich benutzter Pixel) und p[i] als Pixelwertanteilen des Pixelwertes i im Bereich [0..1]. Die Funktion wird über die Ok-Taste oder über die Exit-Fläche links oben in der Dialogbox beendet.

8.2.5. 2D Histogram (2-kanaliges Histogramm)

Die Funktion "2D-Histogramm" berechnet ein zweikanaliges Histogramm, d. h. über die Information zwei verschiedener Bilder. Hierzu muß - neben der Einstellung des ersten, aktiven Bildes zuvor mit der Funktion "Set Second Source" definiert werden, welches Bild als zweites Bild für die Berechnung genommen werden soll. Nach Aufruf der Funktion erscheint ein Dialogfenster mit einem 256*256 Pixel großem Ergebnisfenster, einer kleinen Rasterfläche und den Schaltflächen: "Cancel", "Accept", "Save" und "Load".
Die große Ergebnisfläche zeigt nach Anwahl der "Accept"-Funktion das 2-dimensionale Histogramm an. Aufgetragen sind links an der Ordinate die Grauwertverteilung des ersten Bildes und oben die Grauwertverteilung des zweiten Bildes - jeweils im Wertebereich [0..255]. In der rechten unteren Ecke des Dialogfensters sind beide Bilder mit ihrer Arbeitsspeicher-Nummer und einem eventuellen Attribut (z. B. (R) für den Rot-Anteil eines Farbbildes) angedeutet.
Mit den Funktionen "Save" und "Load" kann der Inhalt der Histogramm-Matrix auf der Festplatte zur weiteren Verarbeitung abgelegt werden oder auch von Festplatte hereingeladen werden. Abweichend von der Abspeicherung anderer statistischer Daten wird hier nicht im ASCII-Format, sondern direkt binär abgespeichert. Damit erhält man bei der Abspeicherung der Werte als "short"-Werte mit 16 Bit Datenbreite Datenfiles der Größe 128 kB statt etwa 400 kB bei der ASCII-Speicherung. Die Werte werden im INTEL-Format abgelegt, d. h. das niederwertige Byte steht vorne, das höherwertige Byte hinten in einem 16 Bit Datenwort. Dem eingefragten Filenamen wird automatisch die Extension ".H2D" angehängt. Die Reihenfolge der Werte des abgespeicherten Feldes ist das übliche für die Abspeicherung eines zweidimensionalen Feldes benutzte Format:

M(0,0) | M(0,1) | M(0,2) | ... | M(0,255)
M(1,0) | M(1,1) | M(1,2) | ... | M(1,255)
... | ... | ... | ... | ...
M(255,0) | M(255,1) | M(255,2) | ... | M(255,255)

Die Rasterfläche erlaubt es, beide Bilder (oder Bildausschnitte) bei der Berechnung des Histogrammes in bestimmten Grenzen gegeneinander zu verschieben. Die genaue Benutzung dieser Verschiebungsfläche ist bei der Funktion "Coocurrence Matrix" erklärt, da sie dort eine wesentlich wichtigere Funktion besitzt.
Wenn nach Anwahl der "Accept"-Schaltfläche ein 2D-Histogramm berechnet und angezeigt worden ist, kann man im Ergebnisfeld durch Aufziehen eines Rechtecks mit der Maus eine Pixelwertmenge mit je einer Bandbreite in den beiden Bildkanälen definieren. Damit kann die Fläche im Bild vermessen werden, deren Pixelwerte der Definition entsprechen. Hierzu muß ein Eckpunkt der zu vermessenden Histogrammfläche mit der Maus durch Drücken der linken Maustaste angewählt werden. Bei gedrückt gehaltener Maustaste kann das Rechteck aufgezogen werden. Nach Lösen der Maustaste erscheint dann unten im Dialogfenster der prozentuale Anteil der Fläche des jeweiligen Bildausschnittes (ROI), der durch die angewählten Merkmale gekennzeichnet ist. Hiermit lassen sich Klassifizierungen durchführen, die mit einem einzigen Bild nicht möglich sind. Dies ist etwa der Fall, wenn sich z. B. verschiedene Merkmale bei gleichen Grauwerten überlagern und erst durch die 2-dimensionale Auftragung getrennt dargestellt werden. Für eine noch leistungsfähigere Klassifikation sind verschiedene Funktionen im "Object Classification"-Menü aufgeführt.

Hinweis: Randpixel sind für diese Flächenvermessung recht schwierig zu positionieren. Dies kann mit dem folgenden Trick vereinfacht werden: durch kurzes Anklicken der linken Maustaste im Ergebnisfeld wandelt sich der Mauszeiger in ein kleines Fadenkreuz um. Dieses kann das Ergebnisfeld nicht mehr verlassen und man kann die Randpixel einfach erreichen. Dann drückt man erst die Maustaste erneut und zieht das gewünschte Rechteck auf.

Bei Verlassen der Dialogbox durch Anwahl der Cancel-Fläche wird der ursprüngliche Wert der Verschiebung der zwei Bilder gegeneinander bei der Berechnung des Histogrammes wiederhergestellt, der bei Eintritt in die Funktion vorlag. Wenn der Verschiebewert für weitere Vermessungen beibehalten werden soll, muß die Dialogbox über den OK-Taster verlassen werden. Wenn bei Start der Funktion ein Datenfile geöffnet war, so werden die Ergebnisse jeder interaktiven prozentualen Flächenberechnung auf diesem File im ASCII-Format nach folgender Art abgelegt:

*68* Rel. Area in 2D-Hist.
*69* Image Buffers

*70*

First Buffer
Imagebuf n
gn(start)
gn1

Second Buffer
Imagebuf m
gn(end)
gn2

gm(start)
gm1

gm(end)
gm2

rel. area
f_rel

Hier sind [gn1..gn2] und [gm1..gm2] die gewählten Grauwertbänder im jeweiligen 1-dimensionalen Histogram der beiden Bilder. Die relative Fläche wird in Prozent der gesamten Fläche der ROI angegeben.

8.2.6. Coocurrence Matrix

Die Coocurrence-Matrix (Grauwertematrix) ist ein wichtiges Hilfsmittel zur Beschreibung von Bildeigenschaften (Texturerkennung). Sie ist die 2-dimensionale Auftragung der Grauwerte (Pixelwerte) eines Bildausschnittes bezüglich einer bestimmten Relation, z. B. der Verschiebung des Bildausschnittes nach rechts um eine Pixelbreite. In diesem Beispiel wird dann jeder Bildpunkt mit seinem rechten Nachbarn verknüpft. Das Ergebnis dieser Verknüpfung, d. h. der Grauwert g1 and der Stelle (x,y) und der Grauwert g2 and der Stelle (x+1,y) werden in die 2-dimensionale Matrix an der Position (g1,g2) eingetragen (durch Addition von 1). Nach Abarbeitung aller Bildpunkte des Bildausschnittes wird die Coocurrence Matrix auf dem Bildschirm dargestellt. Die Werte der Matrix werden dabei als Grauwerte kodiert. Zur Darstellung auch weniger häufig auftretender Grauwertkombinationen wird eine logarithmische Darstellung der Matrixwerte gewählt. Intern hat die Matrix einen Werteumfang von 16 Bit. Es können also 65535 gleiche Grauwertkombinationen vorkommen, bevor ein Überlauf eintritt.
Bei Aufruf der Funktion öffnet sich ein Dialogfenster mit einer 256*256 Pixel großen Ergebnisfläche für die Darstellung der Coocurrence Matrix und einer kleineren Rasterfläche zur Einstellung der gewünschten Relation (es ist dem Dialogfenster der 2D-Histogrammfunktion sehr ähnlich). Als Relation ist hier z. Zt. nur die Verschiebung der Bildausschnitte um die Faktoren dx und dy zulässig. Diese Verschiebung kann nach rechts, nach oben und nach unten jeweils bis zu 32 Pixel betragen. Es können damit z. B. regelmäßig wiederkehrende Muster oder Texturen mit einer Periode von bis zu 32 Pixeln erkannt werden. Den Originalabstand der Verschiebung kann man im kleinen Fenster unter der Rasterfläche beurteilen: hier ist der Ausgangspunkt in der Mitte der linken Seite und der verschobene Punkt - jeweils als deutlich sichtbarer schwarzer Punkt - dargestellt. Die obere Rasterfläche stellt sozusagen eine Vergrößerung dieses 32*64 Pixel großen Bildbereiches dar. Das Raster kann mit dem Verschiebebalken vertikal verschoben werden.
Pauschal gesehen stellen die Hauptdiagonalelemente der Ergebnismatrix bei der als Beispiel genommenen Relation (rechter Nachbar) die ungefähre Größe der homogenen Bildbereiche des jeweiligen Grauwertes dar. Ein Element in der Position (g1,g2) mit g1 ungleich g2 gibt die ungefähre Länge aller Grenzen zwischen den Bereichen mit dem Grauwert g1 und dem Grauwert g2 an.
Bei Anwahl der "Accept"-Schaltfläche wird die Coocurrence Matrix mit der vorher eingestellten Relation berechnet und dargestellt. Bei Verlassen der Funktion mit der "Cancel"-Schaltfläche werden die ursprünglichen Werte für die Verschiebung dx, dy restauriert. Wenn diese Werte beibehalten werden sollen, da man sie z. B. für die Auswertung anderer Bildausschnitte benötigt, so muß die Dialogbox über den OK-Taster verlassen werden.
Die Coocurrence Matrix kann mit der Funktion "Save" auf eine Datei abgespeichert werden. Hierzu wird ein binärer Datenfile mit der Extension ".COC" angelegt. Die Matrixwerte werden in üblicher Speicherweise für Matrizen als 16 Bit "short integer"-Werte im INTEL-Format abgespeichert:

M(0,0) | M(0,1) | M(0,2) | ... | M(0,255)
M(1,0) | M(1,1) | M(1,2) | ... | M(1,255)
... | ... | ... | ... | ...
M(255,0) | M(255,1) | M(255,2) | ... | M(255,255)

8.2.7. Regressionsrechnung
Für bestimmte statistische Untersuchungen ist es sinnvoll, eine Regressionsanalyse anzuwenden. Die Regressionsanalyse wird von der Linien-Luminanz-Funktion, einigen Mustererkennungsalgorithmen sowie einigen Funktionen in Zusatzmodulen benutzt. Weiterhin ist diese Funktion aus einem MACRO-Programm verfügbar. Vorgehensweise ist folgendermaßen: Zuerst wird eine (intern gespeicherte) Liste mit bestimmter Größe definiert, dann werden einzelne Wertepaare im Floating-Point-Format eingegeben, und schließlich kann eine Regressionsanalyse durchgeführt werden, bei der der Regressionskoeffizient rho und die Koeffizienten der beiden Regressionsgeraden bestimmt werden (y=ax+b und x=cy+d). Die Analyse kann jederzeit ausgeführt werden, auch wenn die Liste noch nicht vollbesetzt ist. Eine genaue Beschreibung finden Sie im MACRO-Handbuch.


8.3. Vectorize (2D/3D)

8.3. Vectorize (2D/3D) (3D nur mit Zusatzmodul)

2D Vectorize (x,y)

3D Vectorize (x,y,z)
Save Vectors
Load Vectors

3D-Tracking Data -> Vectors

Vectors -> 3D-Tracking Data
Data Table

2D Vector Plot/Edit

3D Vector Plot
-----------------------------------
2D Enclosed Area
-----------------------------------
Dealloc Vectors

8.3.1. 2D Vectorize (x,y)

Die Funktion "Vectorize" dient zur einfachen 2-dimensionalen Vektorisierung eines Linienzuges. Die Ausgabe der vektorisierten Daten erfolgt in Pixeleinheiten oder nach vorheriger Kalibrierung des Systemes in der gewählten Einheit. Der Koordinatenursprung ist defaultmäßig immer auf 0,0 eingestellt. Der Vektorzug wird durch fortlaufendes Anklicken von Bildpunkten mit der linken Maustaste definiert. Der Vektorzug wird auf dem Bildschirm graphisch angezeigt. Bei Wahl eines neuen Koordinatenpaares mit der linken Maustaste werden die Koordinaten des neuen Punktes in der Statuszeile angezeigt, solange Sie die Maustaste gedrückt halten. Die Shift-Taste und die linke Maustaste löscht den zuletzt eingegebenen Punkt. Durch wiederholtes Eingeben von Shift und linker Maustaste kann der gesamte Vektorzug gelöscht werden. Ein Druck auf die rechte Maustaste beendet die Funktion. Der ursprüngliche Bildschirminhalt wird dann sofort restauriert, der Vektorzug verschwindet.
Intern werden 2-dimensionale Vektorzüge in 3-dimensionaler Form abgelegt. Hierdurch ist es möglich, die gleichen Routinen auch für 3-dimensionale Datensätze zu benutzen. Außerdem kann man die 2-dimensionalen Datensätze auch in 3-dimensionaler Form darstellen und z. B. im Raum drehen (nur bei installierten 3D- oder Stereo-Zusatzmodul). Die Koordinaten des Ursprungs werden immer in Pixeleinheiten relativ zur linken oberen Ecke des Bildes angegeben (0,0,0 mit z=0), die Vektordaten werden jedoch in der gewählten Einheit angegeben. Bei Pixeleinheiten ist die positive y-Richtung nach unten - gemäß der üblichen graphischen Bildschirmkonvention. Bei einer metrischen Einheit wird - gemäß der hierbei sinnvolleren mathematischen Konvention - die positive y-Richtung nach oben angenommen.
Wenn der Schalter "Show Coordinate System" in der "Plot Vectors"-Dialogbox eingeschaltet ist, wird das Koordinatensystem als großes Fadenkreuz ständig dargestellt und die aktuellen Mauskoordinaten werden ebenfalls ständig angezeigt.

Nach der 2D-Vektorisierung wird der aktuelle Koordinatenursprung auf eine spezielle interne Variable übertragen, so daß Vektordaten auch nach einer späteren Änderung des System-Ursprungs noch relativ zum alten Ursprung richtig sind. Mit der Funktion "Dealloc Vectors" wird die Vektorliste gelöscht und der Speicherplatz an das System zurückgegeben. Vor jedem Neueingeben eines Vektorzuges wird nach einer Sicherheitsabfrage der alte Vektorzug gelöscht. Das Anhängen von Vektoren an vorhandene Vektorlisten ist also nicht möglich. Wenn dies erwünscht ist, sollte man es über ein Abspeichern und Editieren des Daten-Files tun.

8.3.2. Vectorization 3D

Die 3-dimensionale Vektorisierung ist bei implementierten 3D-Zusatzmodul oder Stereo-Zusatzmodul möglich (siehe auch Kapitel 8.7).

8.3.3. Save / Load Vector Data

Abspeichern oder Laden eines 3D-Vektorzuges im FloatingPoint-Format. Dabei werden zuerst die Daten des Koordinatenursprunges abgespeichert (x,y,z), dann die Daten des Vektorzuges. Nach 2D-Vektorisierung sind alle z-Werte immer gleich 0.0. Z-Werte ungleich 0.0 können jedoch eingelesen werden und dann mit dem 3D-Zusatzmodul auch 3-dimensional oder stereometrisch dargestellt werden. Wenn bereits ein Systemdatenfile geöffnet ist, so werden die Daten dort abgespeichert. Wenn dies nicht der Fall ist, so wird ein Datenfilename interaktiv eingefragt. Dieser dann speziell für den 3D-Datensatz geöffnete File wird sofort nach dem Abspeichern geschlossen. Das Datenformat auf File (Extension .DAT) ist folgendermaßen:

*08*

*09*

x,y,z - Origin
0
x[Unit]
x1
x2
usw...

0
y[Unit]
y1
y2

0
z[Unit]
z1
z2

Hierbei sind die z-Koordinaten im 2-dimensionalen Fall normalerweise gleich 0.0. Die Daten können auch wieder eingelesen werden. Hierbei dürfen jedoch keine Header im File stehen! In der ersten Zeile muß der Koordinatenursprung mit x y z - Koordinaten stehen (normalerweise 0 0 0), in der zweiten Zeile folgen dann die 3-dimensionalen Vektordaten. Bei 2-dimensionalen Daten muß der z-Wert immer 0.0 sein. Falls der Datenfile mit Headern erzeugt wurde (siehe Measurement Control Menü), so müssen diese vor dem Wiedereinlesen mit einem beliebigen Texteditor entfernt werden. Wenn eine leere Vektorliste abgespeichert wird, so wird die Überschriftzeile "*16* Vector list empty" gespeichert. Dies wird jedoch vom Programm normalerweise verhindert.
Vor dem Laden oder Speichern kann eine Koordinatenursprungsverschiebung eingegeben werden. Hiermit können sehr große oder verschobene Datensätze auf dem Bildschirm justiert werden. Wenn Datensätze eingelesen, editiert und wieder abgespeichert werden sollen, so sollte man die eingestellte Ursprungsverschiebung zwischendurch nicht verändern. Beim Speichern wird die Verschiebung dann korrekt wieder abgezogen.

8.3.4. Transfer 3D-Tracking Data Fields -> Vectors

3D-Daten aus dem 2D/3D-Real-Time-Tracking-Extension-Modul können natürlich auch mit den Funktionen des Vector-Modules dargestellt und editiert werden. Hierzu müssen diese Daten jedoch zunächst in ein Vektorfeld überführt werden, da die interne Darstellung unterschiedlich ist. Vektorzüge sind in picCOLOR in Form von Listen abgelegt, 3D-Tracking-Daten in normalen Variablenfeldern. Mit den hier zur Verfügung gestellten Funktionen können die Daten in beide Richtungen übertragen werden. Selbstverständlich könnte man auch per Datenabspeicherung auf File, leichtes Editieren der Headerzeile und wieder Hereinladen im anderen Format den Transfer bewerkstelligen. Der Unterschied besteht nur in der Headerzeile: Tracking-Daten haben hier die Anzahl der folgenden 3D-Punkte, Vektor-Daten den Koordinatenursprung in 3 (x,y,z) Werten. Zusätzlich können dabei noch Textzeilen vorkommen.

8.3.5. Vector Data Table

Mit der Funktion "Vector Data Table" können die Vektordaten inspiziert werden. Sie werden im ähnlichen Format angezeigt, wie sie in einem Datenfile abgespeichert werden.

8.3.6. 2D Vector Plot/Edit

Zeichnen und/oder Editieren der Vektordaten. Beim Plotten wird mit der gewünschten Farbe "Plot Color" im Bereich [0..255] gezeichnet. Bei PlotColor=-1 wird der Bildschirminhalt durch die Vektoren lediglich invertiert. Erneutes Plotten durch Invertieren entfernt den Vektorzug wieder. Beim Editieren wird der Vektorzug invertiert und man kann dann durch Anklicken eines Vektoranfangs oder Vektorendes diesen mit der Maus verschieben.
Für die Darstellung der Vektorzüge gibt es drei Möglichkeiten: entweder können die Vektorpunkte einfach verbunden werden oder als Vektorpfeile gezeichnet oder noch einfacher als dicke (5 pixel Durchmesser) Punkte dargestellt werden (Schalter "Connect Vector / Vector Arrows / Dots"). Bei Arrow-Einstellung (Pfeile) werden dann die Punkte 0 und 1 als 1. Vektor aufgefaßt, dann die Punkte 2 und 3 als 2. Vektor, 4 und 5 als 3. Vektor, usw. Die Dicke der Punkte in der "Dot"-Darstellung kann prinzipiell geändert werden oder einstellbar gemacht werden, wenn dies gewünscht wird. "Plot Factor" ist ein multiplikativer Faktor zur Änderung der Größendarstellung des kompletten Vektorzuges.
Wenn das 3D-Zusatzmodul implementiert ist, kann ein 3-dimensionaler Datensatz als Projektion in der xy-Ebene, der yz-Ebene, oder der zx-Ebene dargestellt und so auch editiert werden. Die nicht dargestellte Koordinate wird jeweil nicht verändert.

*8.3.7. 3D-Vector Plot (im 3D- oder Stereo-Zusatzmodul)

Beispiel für 3D-Darstellung von Markierungen auf einem Flugzeugflügel incl. Koordinatensystem

2D- und 3D-Vektorfelder können als 3D-Projektion dargestellt werden, auch im Stereoverfahren. Ein interaktives Drehen des Vektorfeldes im Raum ist möglich. Hierbei wird der Datensatz in polarer Darstellung gedacht. Eine Mausbewegung nach links oder rechts ändert die Längengrade, nach oben oder unten die Breitengrade. Wenn zusätzlich zur Mausbewegung die linke Maustaste gedrückt wird, bewirkt eine Mausbewegung nach oben oder unten eine Änderung des Abstandes vom Beobachter zum Koordinatenursprung. Die rechte Maustaste beendet die Funktion. Die Funktion ist noch nicht geschwindigkeitsoptimiert und ist daher bei großen Vektorsätzen (z. B. 10000 Vektoren) möglicherweise nicht mehr flüssig in Echtzeit ausführbar.
Bei der 3D-Darstellung kann ebenfalls mit dem "Vector/Arrows/Dots"-Schalter eingestellt werden, ob die Vektoren einfach verbunden werden oder ob jeweils Vektor 1,2 dann 3,4 usw. als Vektorpfeile dargestellt werden oder ob einfach nur Punkte dargestellt werden. In der interaktiven Funktion werden dabei die Pfeilspitzen aus Geschwindigkeitsgründen weggelassen. Es ist sinnvoll, z. B. interaktiv den optimalen Blickwinkel auszuwählen, dann die interaktive Funktion abzuschalten und dann für die endgültige Darstellung die 3D-Graphik erneut nichtinteraktiv mit dem "Plot"-Schalter aufzurufen.

8.3.8. 2D Enclosed Vector Area

Berechnung der eingeschlossenen Fläche eines 2D-Vektorzuges. Hierzu darf der Vektorzug nur schwach konkav sein. Das bedeutet, vom Mittelpunkt des umschreibenden Rechtecks des Vektorzuges müssen alle Randpunkte mit gerader Linie erreichbar sein. Die Flächenberechnung wird dabei über die Aufintegration kleinster Sektoren durchgeführt. Der Vektorzug wird dabei automatisch mit einer Gerade geschlossen, falls dies nicht schon der Fall ist. Die durch den Vektorzug eingeschlossene Fläche wird in Pixelflächen oder nach Kalibrierung in der jeweiligen Einheit ausgegeben.


8.4. Hough Edge Detection

8.4.1. Hough Advanced

Hough Advanced
Draw Hough Objects

Es wurde eine neue Methode zur Hough-Kantendetektion implementiert. Diese ist im Menü als "Hough Advanced" gekennzeichnet. Hiermit können nicht nur Geraden gefunden werden, sondern auch Kreise und Ellipsen. Außerdem können die genauen Orte der Geraden, d. h. Lage und Länge eines Geradenstückes, bestimmt werden. Eine Beschreibung der neuen Funktionen folgt...

8.4.2. Hough Transform

Die alten, einfacheren Hough-Funktionen sind jedoch noch verfügbar:

Hough Transform
-Draw Maximum
-Plot Maximum
-Draw All Vectors
-Plot All Vectors
-Clip Vector
-Transfer Hough
-Phi Count
-Free Buffer

Mit der Hough-Transformation ist es möglich, Linien und Vektoren in einem Bild zu erkennen, auch wenn diese nicht exakt auf einer Geraden liegen oder unterbrochen sind, sogar wenn diese nur aus einer Anzahl von Einzelpunkten bestehen. Hierzu wird die Hessesche Normalform einer Geraden benutzt. Die Hough-Transformation ist in der einschlägigen Literatur gut beschrieben, so daß hier nur eine kurze Beschreibung folgt. Vor Ausführung der Hough-Transformation muß das Bild derart vorbearbeitet sein, daß alle Kanten oder Linien hervorgehoben und - ganz wichtig - binärisiert sind. Dies kann durch die Edge-Filter im Processing-Menü (Sobel, Marr-Hilldreth, Canny-Edge) und anschließende Binärisierung durchgeführt werden. Die Hough-Transformation transformiert alle von Null verschiedenen Bildpunkte der aktuellen ROI in den R-Phi-Raum, in dem der Winkel der Geraden zur positiven x-Achse und ihr Abstand vom Koordinatenursprung der ROI (linke obere Ecke der ROI) eingetragen wird. Für die Berechnung des R-Phi-Raumes wird ein interner Speicherbereich benutzt. Mit der Funktion "Transfer Hough" kann dieser in einen normalen Bildspeicher übertragen werden, so daß der R-Phi-Raum direkt sichtbar und auch bearbeitbar wird. Alle Stellen im R-Phi-Raum mit großen Werten deuten mehr oder weniger deutlich ausgeprägte Geraden im Originalbild an. Nach der Berechnung zeigt die Funktion "Draw Max. Hough-Vector" die am stärksten ausgeprägte Gerade der aktuellen ROI auf dem Bildschirm an. Mit der Funktion "Plot Max. Hough Vector" kann diese Gerade in einem beliebigen Grauwert geplottet werden. Mit der Funktion "Draw/Plot All Vectors" können alle ausgeprägten Punkte des R-Phi-Hough-Raumes ins Bild geplottet werden. Hierzu muß eine Schwelle angegeben werden, d. h. ab welcher Bestimmtheit (Pixelwert im R-Phi-Raum) die Punkte berücksichtigt werden sollen. Außerdem muß eine Farbe (oder Grauwert) zum Plotten gewählt werden. Die Angabe der Schwelle ist natürlich nicht trivial. (Es kann sinnvoll sein, vorher eine Filterung zur eindeutigeren Hervorhebung der ausgezeichneten Punkte vorzunehmen. Es eignet sich ein Laplace-Filter, der üblicherweise alle relevanten Punkte derart stark verstärkt, daß sie besser durch eine Schwelle detektiert werden. Dieser Laplace-Filter wird auf Wunsch mit der Funktion "Laplace R/Phi" für den 16-Bit tiefen R/Phi-Speicher zur Verfügung gestellt.) Der minimal detektierbare Winkel für gerade noch zu unterscheidende Geraden bei der Hough-Transformation wird mit der Funktion "Set Phi-Count" gesetzt. Hierbei wird die Anzahl der abgetesteten Winkel in 360 Grad eingestellt. 64 bedeutet damit 360/64=5.625 Grad, 128 bedeutet 2.8125 Grad, 256 bedeutet 1.4063 Grad, und 512 bedeutet 0.7031 Grad. Eine noch feinere Auflösung wird z. Zt. nicht unterstützt.


8.5. Object Classification

Min.Dist.Class.
Define Channels
Train Clusters
-Cntr: Min/Max
-Cntr: Average
-Dist: Min/Max
-Dist: Std.Dev

Neben den Klassifikationsmöglichkeiten für geometrische Formen und Objekte im Geometry-Menü und der 2D-Histogramm-Bestimmung für die Grauwert-Merkmal-Untersuchung bei zweikanaligen Bildern sind hier Funktionen implementiert, die mehrkanalige Bilder auch automatisch untersuchen können und die lernfähig sind.
Neben der automatischen oder trainierten Euclidian-Minimum-Distance Klassifikation kann die trainierte Parallel-Epiped-Klassifikation benutzt werden. Beide Verfahren können die Merkmale von bis zu vier Kanälen (Bildspeichern) verarbeiten. Der 2- und 3-dimensionale Merkmalsraum kann graphisch dargestellt und inspiziert werden (bei 3D auch als Animation). Bei 4-dimensionaler Merkmalsbestimmung ist eine Inspektion z. Zt. nicht möglich.
Die Theorie dieser Klassifizierung ist sehr gut bei Haberäcker [Digitale Bildverarbeitung] vorgestellt. Ein normaler Ablauf könnte etwa folgendermaßen aussehen: Mit der Funktion "Set Channels" aus dem Menü oder auch direkt in der Klassifizierungs-Dialogbox werden Anzahl und Nummern der Bildspeicher gewählt, die als Merkmale bei der Klassifizierung benutzt werden sollen. Es ist durchaus sinnvoll, beim ersten Versuch automatisch klassifizieren zu lassen. Bevor man die Dialogbox öffnet, muß der Bildspeicher aktiviert werden, in den das Klassifizierungsergebnis geschrieben werden soll. Außerdem sollte man eine sinnvolle Farbtabellenbelegung wählen, die die gefundenen Klassen deutlich voneinander unterscheidbar macht. Hierzu gibt es in der Look-Up-Table-Dialogbox die Funktion "First16", die den ersten 16 Pixelwerten gut unterscheidbare Farben zuweist. Damit lassen sich bis zu 16 verschiedene Klassen gut unterscheiden, da bei der Klassifizierung die Bildpunkte den Pixelwert der Klassennummer zugeteilt bekommen, d. h. ein Pixel, der der Klasse 7 zugeteilt wurde, erhält den Pixelwert "7".

Nach Öffnen der Klassifikations-Dialogbox werden die gewählten Kanäle (Bildspeicher) angezeigt. Wenn der Euklidian-Distance-Operator ausgewählt wurde, muß nun die Schwelle "Threshold" gewählt werden, die dem maximalen euklidischen Abstand zum Mittelpunkt einer Klasse im Merkmalsraum entspricht, damit ein Pixel noch zu dieser bestimmten Klasse gezählt wird. Wenn der Abstand größer ist als die eingestellte Schwelle, so wird im Automatic-Modus eine neue Klasse definiert, zu der dann dieser Pixel zählt. Dies setzt sich fort, bis alle zugelassenen Klassen definiert sind. Ab jetzt werden Pixel, die nicht in eine Klasse fallen, zu derjenigen gezählt, der sie am nächsten liegen. Es lohnt, mit der Anzahl der Klassen und mit der Schwelle zu experimentieren. Der Merkmalsraum wird nach der Berechnung dargestellt, wenn er 2- oder 3-dimensional ist. Der 3-dimensionale Merkmalsraum wird normalerweise als Schnittbildsatz mit 16 Schnittbildern in Tiefenrichtung von links oben nach rechts unten dargestellt. Es ist jedoch auch möglich, den 3-dimensionalen Merkmalsraum als 3D-Animation perspektivisch simuliert ablaufen zu lassen. Hierzu werden 2MByte freier Speicher benötigt. Durch Ansicht des Merkmalsraumes kann normalerweise gut beurteilt werden, ob das Ergebnis der Klassifizierung sinnvoll ist. Es bilden sich dann (bei sinnvoller Look-Up-Table-Belegung) farblich unterschiedlich abgestimmte Punktwolken aus, nämlich die Merkmalsklassen. Wenn eine Punktwolke an der dicksten Stelle die Farbe wechselt, d. h. zu unterschiedlichen Klassen gezählt wird, so ist die Klassifizierung normalerweise nicht sehr sinnvoll.
Wenn das automatische Verfahren nicht zum Ziel führt, kann der Klassifikator mit der Funktion "Train Min.Dist" anhand eines Beispielbildes trainiert werden. Die Anzahl der erwarteten Klassen wird eingefragt; dann können für jede dieser Klassen mit der linken Maustaste Pixel angewählt werden, die zu der jeweiligen Klasse gehören sollen. Durch Aufziehen eines Rechtecks mit der gedrückten Maustaste können auch größere Bildbereiche als zu einer Klasse gehörend definiert werden. Vorsicht: es können keine Pixel zurückgenommen werden - ein falsch eingegebener Pixel kann eine sinnvolle Klassifizierung möglicherweise vollständig verhindern. Aus den angeklickten Bildpunkten werden nach einem wählbaren Verfahren die Zentren der Klassen im Merkmalsraum berechnet. Nach Umschalten von "Automatic Class." auf "Trained Class." kann nun erneut die Klassifizierungs-Dialogbox geöffnet werden und der Klassifizierungsvorgang gestartet werden. Hier kann nun nur noch die Schwelle variiert werden. Die Klassen liegen durch das Trainieren fest. Punkte, die für alle Klassen außerhalb der Schwelle fallen, werden als nicht klassifizierbar eingestuft und bekommen den Pixelwert "0" für keine Klassenzugehörigkeit.
Für die Bestimmung des Bereiches der Trainingswerte (Center und Max.Distance) kann der Absolutwert der eingegebenen Trainingswerte oder ein sinnvollerer statistischer Ansatz gewählt werden. Im ersten Fall wäre dies für das Klassenzentrum die Mitte zwischen kleinstem und größtem Trainingswert (Zentrum=(Min+Max)/2). Als maximaler Abstand eines Bildpunktes vom Cluster-Zentrum wird der Wert (Max-Min)/2 genommen. Bei diesem Verfahren ist die Fehlermöglichkeit durch falsch angewählte Punkte sehr hoch. Im statistischen Ansatz wird für den Mittelpunkt der Cluster der Mittelwert aller Trainingswerte genommen, für die Clustergröße die Standardabweichung oder ein Vielfaches hiervon. Hier kann später in der Dialogbox ein multiplikativer Distance-Faktor gewählt werden, sodaß man z. B. Punkte bis zur 2-fachen Standardabweichung zulassen kann. Einzelne Fehlpunkte stören bei dieser Art des Clustertraining nicht mehr. Die Angabe des Abstandes ist nur für die Parallel-Epiped-Methode sinnvoll, für die Euclidian-Distance-Methode werden kreis-, kugel- oder hyperkugelförmige Bereiche mit wählbarer Größe (Threshold in der Dialogbox) angenommen.
Einer der Kanäle (der Merkmale) darf zyklisch sein, d. h. ein Cluster kann den Grauwert 255 überschreiten und geht dann bei 0 weiter. Dies ist z. B. beim HUE-Bildspeicher für Echtfarbverarbeitungen der Fall, wo der Rotbereich sich von etwa 220 über 255 und 1 bis etwa 30 erstreckt. Rote Objekte, die teilweise Werte von 220 bis 255 und Werte von 1 bis 30 aufweisen könnten mit anderen Verfahren nicht klassifiziert werden. Da im HUE-Kanal der Nullwert "0" für Pixel benutzt wird, die überhaupt keine Farbe besitzen, kann man diesen Nullwert ausklammern. Dies wird bei der Cluster-Eingabe abgefragt.
Nach erfolgreicher Klassifizierung kann der Parametersatz (Merkmale, Klassen, Klassenzentren usw.) auf einen File mit der Extension .OCP abgespeichert werden. Wenn später andere Bilder mit dem gleichen Parametersatz klassifiziert werden sollen, so muß nur dieser Parametersatz erneut geladen werden. Der .OCP-File ist ein Binär-File im 32-Bit-Integer-Format mit folgenden Werten:

  • mode [1=autom.Euclid, 2=trained Euclid, 3=trained Parallel Epiped]

  • dimension [1..4]

  • maximum number of cluster [20]

  • actual number of cluster [1..20]

  • threshold (euclidian distance, used only with mode = 1 or mode=2)

  • multiplicative factor for parallel epiped distance

  • channel-buffer1, channel-buffer2, channel-buffer3, channel-buffer4

  • cyclic-buffer-flag1, cyclic-buffer-flag2, cyclic-buffer-flag3, cyclic-buffer-flag4

  • 4 * 20 * [cluster in cyclic channel is on 255-0-border]-flag

  • 4 * 20 * [center of cluster]

  • 4 * 20 * [max. distance of cluster for mode=3 (parallel epiped classification)]

  • 20 * threshold (not used)

  • 20 * zz [internal value for cluster distances]

Das "cyclic-buffer-flag" ist normalerweise "0". Bei zyklischem Kanal wird es zu "1" gesetzt, wenn der Nullwert mitbenutzt werden soll, zu "2", wenn der Nullwert nicht berücksichtigt werden soll. Mit der Schaltfläche "Save" kann die komplette Matrix des Merkmalsraumes abgespeichert werden, falls diese mit anderen Programmen weiterverarbeitet werden soll.
Der einfachste Weg zur Weiterverarbeitung der klassifizierten Bilder im aktiven Bildspeicher ist ein Area-Histogramm, das die Flächenanteile der Cluster direkt berechnen kann, eventuell unter Weglassen des nicht klassifizierten Bereiches mit dem Pixelwert "0" (Exclude 0 beim Histogramm).

Hier im Bild ist ein Beispiel gezeigt, in dem 4 Cluster erkannt und voneinander getrennt werden können.


8.6. Pattern Recognition

Regress.Analysis Local

X-Correlation Local
-------------------------------------

X-Correlation Global

Rotation Inv Pattern Matching
-------------------------------------Find 3 Max.Peaks

Show Last 3 Results

Die Erkennung und Lagebestimmung von bestimmten Mustern kann über die Kreuzkorrelation im Frequenzbereich oder über eine Regressionsanalyse geschehen. Beide Methoden haben ihre Vor- und Nachteile. Die Korrelationsmethode ist in der Regel schneller, außer bei sehr kleinen Mustern. Die Regressionsanalyse kann über beliebige ROI-Größen durchgeführt werden, die Korrelation zumindest momentan nur über quadratische oder rechteckige ROI‘s mit der Seitenlänge 2**n mal 2**m. Bei beiden Funktionen kann ein Grauwertbild erzeugt werden, das durch helle Grauwerte die Orte des Auftretens des gewünschten Musters anzeigt. Eine Binärisierung mit bestimmter, meist hoher Grauwertschwelle muß anschließend noch durchgeführt werden. Danach können dann z. B. mit der Objektsuchfunktion alle gefundenen Orte bestimmt werden.

In einer globalen Version der Funktionen können diese auch zur Verschiebungsbestimmung bestimmter Muster in Bildsequenzen benutzt werden. Hierzu kann mit der Kreuzkorrelationsfunktion direkt ein Verschiebevektor subpixelgenau bestimmt werden. Weiterhin wurde eine Möglichkeit implementiert, Muster rotationsinvariant und skalierungsinvarient zu bestimmen. Dieses Verfahren ist allerdings aufwendig und nicht immer sehr genau...

8.6.1. Pattern Matching mit Regressionsanalyse (Local)

Die Regressionsanalyse hat gegenüber der Korrelationsanalyse den Vorteil, daß man beliebige ROI´s einsetzen kann. Die Referenz-ROI muß aus Geschwindigkeitsgründen möglichst klein sein und sollte gerade eben exakt das gesuchte Muster umschließen. Achtung: bei ROI-Größen über 10*10 Pixeln kann es zu recht hohen Rechenzeiten kommen! Das durchsuchte Bild befindet sich in der aktuellen ROI, die nicht gleich der Referenz-ROI sein darf. Bei einer Schrittweite von 2 (step=2) wird horizontal und vertikal nur für jeden zweiten Pixel eine Regressionsanalyse durchgeführt. Daher läuft die Suche 4mal so schnell ab. Dafür ist natürlich auch die Erkennungsgenauigkeit nicht so hoch. Daher bitte nur als Vorschau (preview) benutzen. Wie bei der Korrelationsfunktion (siehe unten) erhält man ein Grauwertbild, in dem helle Peaks Stellen eines mehr oder weniger deutlichen Auftretens des gesuchten Musters darstellen. Über den Schalter "Find Inverted" können auch schwarz/weiß-invertierte Muster gefunden werden, d. h. es wird der Absolutwert des Korrelationskoeffizienten benutzt.

8.6.2. Pattern Matching mit Kreuzkorrelation (Local)

Es werden alle Stellen in der aktuellen Such-ROI hell gesetzt, an denen eine mehr oder weniger gute Übereinstimmung mit einem Referenzmuster auftritt. Da die Fouriertransformation benutzt wird, müssen aktuelle und Referenz-ROI quadratisch oder rechteckig und von der Größe 2**n mal 2**m sein. Die Referenz-ROI darf gleich der aktuellen ROI sein. Der Referenz-Bildspeicher ist der Bildspeicher, in dem sich das gewünschte, d. h. gesuchte Muster befindet. Dies kann der gleiche Bildspeicher sein, in dem auch das zu überprüfende Muster vorliegt. Der definierte Mittelpunkt des Referenz-Musters sollte sich genau in der Mitte der Referenz-ROI befinden, sonst wird eine zusätzliche Verschiebung zum ROI-Mittelpunkt ermittelt. Wenn die ROI-Größen nicht den Kriterien entsprechen, wird bei der Such-ROI zentrisch die nächstkleinere ROI benutzt, die die Kriterien (2**n mal 2**m) erfüllt. Die Referenz-ROI dagegen wird dann an die aktuelle Such-ROI angepaßt. Dabei wird das Muster entweder abgeschnitten oder durch schwarzen Hintergrund erweitert. Dies ist tatsächlich der übliche Fall, daß nämlich ein kleines Referenz-Muster in der größeren Such-ROI bestimmt werden soll. Dann wird das Muster genau mit der Referenz-ROI eingerahmt. Es ist dabei sehr auf die Grauwerte am Rand des Referenz-Musters zu achten: Da defaultmäßig mit schwarzem Hintergrund erweitert wird, können hier leicht starke Grauwertgradienten (Kanten) entstehen, die natürlich im Frequenzbereich zu starken hochfrequenten Harmonischen führen und das Ergebnis negativ beeinflussen können. Besser kann es da sein, mit einem Mittelwert des Grauwertes der Referenz-ROI zu erweitern.
Im Normalfall erhält man nach Beendigung der Funktion ein Grauwertbild, in dem Stellen, an denen das gesuchte Muster auftritt, als helle Punkte dargestellt sind. Wenn das Muster gut übereinstimmt, haben diese Punkte in der Regel den Grauwert 255 oder liegen zumindest sehr nahe daran. Die Breite oder Diffusität der Punkte sagt auch etwas über die Übereinstimmungsgüte der gefundenen Muster aus: ein dünner scharfer Peak besagt, daß das Muster sehr genau wiederholt wurde. Ein diffuser Peak besagt, daß das gefundene Muster nicht exakt mit dem gesuchten übereinstimmt. Dieses Grauwertbild kann nun mit einer geeigneten Grauwertschwelle (z. B. 250) binärisiert werden und die übrigbleibenden Punkte sind die Orte, an denen das gesuchte Muster auftritt. Man kann auch die Funktion "Find 3 Max Peaks" benutzen, die automatisch die 3 größten Peaks aufsucht und auf dem Bildschirm hervorhebt sowie die Orte relativ zum ROI-Mittelpunkt, also dem Nullpunkt des Referenzmusters, als Zahlenwerte ausgibt. Diese Funktion arbeitet subpixelgenau über eine Polynom- oder Gausskurvenapproximation der Korrelationspeaks (einstellbar im Measurement-Control-Menü). Eine genauere Beschreibung dieser Funktion findet man weiter unten. Wenn mehr als 3 Peaks auf diese Art subpixelgenau gesucht werden sollen, so müssen nach der Suche der drei ersten Peaks diese graphisch gelöscht werden und die Suche erneut gestartet werden.

8.6.3. Pattern Matching with Cross-Correlation (Global)

Ähnlich wie bei der oben beschriebene Funktion zur Suche von Mustern im Bild funktioniert auch diese Mustersuche. Allerdings wird hier global gesucht, d. h. die gesamte ROI (die hier wegen der benutzten schnellen Fouriertransformation ebenfalls die Größe 2**n mal 2**m haben muß) wird als Muster genommen und es wird ermittelt, ob das Muster dem Referenzmuster entspricht (kann anhand des Korrelationskoeffizienten bestimmt werden - 1.0 ist exakte Übereinstimmung) und welche Verschiebung es relativ zum Ort des Referenzbildes hat.

Eine wichtige Anwendung dieser Funktion ist die Verschiebungsbestimmung in zeitlich aufeinanderfolgenden Bildern einer Videosequenz zur Bewegungsanalyse. In diesem Fall wird also nur ein Korrelationspeak gesucht, nämlich der Verschiebevektor, dieser jedoch mit höchster Genauigkeit. Die Funktion bestimmt die drei höchsten Korrelationspeaks, wobei der höchste normalerweise der Verschiebung des Musters entspricht. Nur in Fällen, wenn sich das Muster von einem Bild zum nächsten stark verändert hat, kann es vorkommen, das der zweite oder der dritte Peak dem Verschiebungsort entspricht. Es bleibt dem Benutzer überlassen, dies zu berücksichtigen und entsprechend auszuwerten, eventuell zusammen mit den Korrelationskoeffizienten der drei Maxima. Wie schon erwähnt, arbeitet die Funktion mit Subpixelgenauigkeit. Diese beträgt im Normalfall etwa 1/10 Pixel oder noch weniger, je nach Übereinstimmung der Muster und Größe der Verschiebung. Der letzte Punkt wird verständlich, wenn man sich vorstellt, daß sich der in der ROI befindliche Teil des Musters natürlich ändert, wenn es sich aus der ROI herausschiebt. Hier bietet sich daher die Möglichkeit an, die Genauigkeit in einer Iteration zu verbessern. Man verschiebt in einem zweiten Durchlauf (Second Pass) die ROI um die gefundene Verschiebung (pixelgenau gerundet) und tastet sich damit bis auf besser als einen halben Pixel an das verschobene Muster heran. Bei erneuter Korrelation wird nur noch eine Restverschiebung von weniger als einem halben Pixel bestimmt, diese jedoch mit höchster Genauigkeit von besser als 1/10 Pixel, da das Muster bis auf diesen einen Pixel genau in der verschobenen ROI liegt. Diese Iterationsfunktion wird mit dem "Two Passes"-Schalter eingeschaltet. Wenn im zweiten Paß der Korrelationspeak um mehr als zwei Pixel verschoben ist, deutet dies eine fehlerhafte Bestimmung an. Der Algorithmus versucht dann, den zweiten Korrelationspeak des ersten Passes weiterzuverfolgen und schließlich auch den dritten Peak. Wenn bei einem dieser Peaks die Verschiebung im zweiten Paß kleiner als 2 Pixel ist, so wird dieser Wert als richtig angenommen. Bei einer 2-Paß-Ausführung wird schließlich nur ein Ergebnis ausgegeben, da die weiteren Verschiebungen im letzten benutzten Korrelationsfenster keine sinnvollen Werte mehr darstellen. Durch die 2-Pixel-Verschiebegrenze im "Second Pass" ist diese Version der Funktion sehr viel sicherer und gleichzeitig genauer als die "Single Pass"-Funktion.
Die Verschiebeergebnisse, nämlich die drei größten Peaks bei 1-Pass- oder der einzige Verschiebewert bei 2-Pass-Ausführung werden in der Dialogbox angezeigt, können aber auch nachträglich mit der Funktion "Show Last 3 Results" inspiziert und ausgegeben werden.
Die statistischen Werte sigma_max und sigma_min dienen dazu, nur sinnvolle Peaks zur Bestimmung zuzulassen und Bildrauschen auszuschließen. Sie sind in der Funktion "Find Max Peaks" beschrieben. Default-Werte sind 2.8, bei geringerer Musterübereinstimmung kann es sinnvoll sein, den Min-Sigma-Wert bis auf 1.0 zu reduzieren.

8.6.4. Rotation Invariant Pattern Matching (Global)

Um die Erkennung eines beliebig gedrehten und dazu eventuell noch skalierten Musters zu ermöglichen, wurde diese aufwendige Funktion implementiert. Die Vorgehensweise der Funktion ist folgende: zunächst werden Referenzmuster und Suchmuster in die Fourierdomain umgerechnet. Hier ist die komplette Bildinformation als Gleichanteil (DC) im Bildmittelpunkt sowie die Harmonischen im mehr oder weniger großen Abstand zu diesem Mittelpunkt abgelegt. Nun werden beide Frequenzspektren abgerollt, so daß die Rotation eine Verschiebung in x-Richtung wird und die Skalierung eine einfache Skalierung in y-Achsenrichtung. Hier wird nun mit einer Kreuzkorrelation in einer weiteren Stufe nach erneuter Bestimmung der Fouriertransformation mit verschiedenen Vergrößerungsstufen des abgerollten Originalbildes der ersten Fouriertransformation die x-Verschiebung gesucht. Bei größtem Korrelationskoeffizienten ist eine optimale Übereinstimmung der Muster gefunden und damit sowohl die Skalierung als auch die Rotation bestimmt. Die Skalierung wird dabei nur in bestimmten Abstufungen ermittelt, da es eine recht langsame iterative Funktion ist. Die Rotationserkennung arbeitet jedoch recht genau und bestimmt Winkel von etwa 0.5 Grad.

8.6.5. Find Max Peaks

Mit der "Find Max Peaks"-Funktion können die 3 hellsten Grauwert-Maxima innerhalb einer ROI gesucht werden. Dies sind die Orte der größten Musterübereinstimmung. Diese Funktion wird innerhalb der Pattern Matching-Funktion automatisch aufgerufen. Wenn sie hier jedoch separat aufgerufen wird, werden die drei gefundenen Maxima durch Kreise angezeigt (größter Kreis = größter Peak) und ihre Lage als Verschiebung relativ zur ROI-Mitte in Pixeleinheiten subpixelgenau angegeben.
Zur Bestimmung der Maxima muß intern irgendwie festgestellt werden, ob ein Maximum so signifikant ist, daß es aus dem Bildrauschen herausfällt, ob zwei Maxima entweder sehr eng nebeneinander liegen und daher nur als ein einziger Peak gezählt werden soll oder ob Maxima aus anderen Gründen nicht gelten sollen. So besteht z. B. eine gewisse Unsicherheit, ob im Falle einer Fläche (hier als Beispiel eindimensionalen Linie) mit den Grauwerten: ...,230,231,233,233,233,234,235,237,... das Plateau von 233 als nur sehr schwach geneigte Fläche angesehen werden soll oder ob der erste Wert mit 233 ein, wenn auch sehr gering ausgeprägtes, lokales Maximum darstellt. Dies könnte z. B. dadurch genauer bestimmt werden, daß man eine größere Nachbarschaft untersucht. Im Programm wird z. Zt. jedoch lediglich innerhalb einer 3*3-Nachbarschaft untersucht. Hierduch bleibt die Zweideutigkeit bestehen. Mit dem Wert "Sigma" hat man nun eine gewisse Möglichkeit zum Beeinflussen der Ergebnisse. Nur Peaks, die größer (d. h. heller) als der Graumittelwert der Such-ROI plus dem x-fachen der Standardabweichung sind, sollen als gültige Peaks benutzt werden. Standardwert für diesen Faktor ist 2.8, bei sehr diffusen Maxima ist es sinnvoll, den Wert bis auf ca 2.0 oder sogar herunter bis 1.0 zu verringern. Wenn man nicht weiß, ob die Korrelationspeaks deutlich und scharf sind, kann man hier einen Startwert für "Sigma" eingeben: "Sigma (Start)" und dann einen Minimalwert eingeben ("Sigma (Min)"). Im Programm wird mit dem Startwert begonnen. Wenn kein Peak gefunden wird, wird iterativ Sigma um 0.05 verringert und eine erneute Suche gestartet, bis entweder ein Peak gefunden wird oder bis "Sigma (Min)" erreicht wird.

8.6.6. Show Max Peaks
Es werden die letzten gefundenen Maxima einer Korrelationspeak-Suche ausgegeben, die entweder mit einer der Kreuzkorrelations-"Pattern-Matching"-Funktionen oder direkt mit der "Find 3 Max Peaks"-Funktion bestimmt worden sind.


8.7. Stereometry

*8.7. Stereometry/StereoDisplay (Zusatzmodul)

Funktionen zur stereometrischen Bildverarbeitung und Darstellung sind als picCOLOR Zusatzmodul erhältlich. Zur Zeit verfügbar sind Routinen zur 3-dimensionalen Vektorisierung und Rekonstruktion von Stereobildpaaren, die unter einem Winkel von 90 Grad aufgenommen wurden. Routinen für beliebige Stereowinkel sind in Vorbereitung. Weiterhin beinhaltet das Modul die Darstellung von räumlichen Vektordaten und von stereometrisch aufgenommenen Bildern mit verschiedenen Verfahren (Rot/Grün-Brille oder LCD-Shutter-Brille). Weitere Stereo-Funktionen findet man im 3D-Object-Tracking-Zusatzmodul. Hier werden die räumlichen Koordinaten von Markern oder Objekten mit zwei Kameras verfolgt und über eine stereometrische Rekonstruktion ermittelt.

*8.7.1. 3D Vectorization

Hier werden die Funktionen zur Verfügung gestellt, die für eine 3-dimensionale Rekonstruktion von stereometrisch aufgenommenen Bildpaaren notwendig sind. Dies sind Funktionen zur geometrischen Entzerrung und Anordnung auf dem Bildschirm, Funktionen zur Definition der Koordinatenursprünge in den jeweils zusammengehörenden Bildteilen eines Orthogonal- oder Stereobildpaares und schließlich Funktionen zur 3-dimensionalen Vektorisierung der Daten. Diese Funktionen sind im 3D-Vectorization-Menü im Measurement-Menü angeordnet.
Z. Zt. können Bilder, die von zwei orthogonal angeordneten Kameras unter einem Winkel von 90 Grad aufgenommen wurden, vermessen und interaktiv vektorisiert werden. Als Ergebnis erhält man 3-dimensionale Vektordatensätze, die als Eingabewerte für weiterführende Programme verwendet werden können (z. B. Volumenvermessung, Übertragung in 3-dimensional arbeitende CAD-Programme). Anwendungsgebiete sind die Architektur, die Industrieanlagenvermessung, das Bauingenieurwesen und die Vermessung 3-dimensionaler visualisierter Strömungen in Wasser und Luft. Ein Beispiel soll den Ablauf einer solchen Auswertung verdeutlichen:

  • Aufnahme der orthogonalen Bilder nacheinander mit Videokamera oder Photoapparat oder bei bewegten Vorgängen die gleichzeitige Aufnahme mit zwei Kameras;

  • Bei Verwendung von Photographien folgt das Einlesen der Bilder mittels Frame Grabber und Videokamera oder mit Scanner;

  • Skalierung und Entzerrung der Bilder;

  • Wahl der Koordinatensysteme in den stereometrischen Bildern und Anordnung auf dem Bildschirm in Form von orthogonalen Zweitafelprojektionen mit Grund- und Aufrißebene;

  • Interaktive Vektorisierung von Gegenständen in Grundriß- und Aufrißebene und Erzeugung eines 3- dimensionalen Datenfiles mit x,y,z-Vektorkoordinaten;

  • Räumliche Darstellung der Vektordaten als 2-dimensionale Projektion aus beliebigen Ansichtsrichtungen (Drahtmodell).

*8.7.2. 3D-Surface-Plot

Mit dieser Dialogbox sind unterschiedliche Darstellungen von 3D-Inhalten möglich: Darstellung eines Grauwertbildes in perspektivischer 3-dimensionaler Form als Grauwertgebirge. Der Pixelwert jedes Punktes wird dabei als Höhenwert angesehen. Mit der Eingabe des Beobachterstandpunktes (Eye Point) in x,y,z-Koordinaten kann ein beliebiger Blickwinkel ausgewählt werden. Referenzpunkt, d. h. Blickpunkt oder "Center of Interest" ist die linke obere Ecke der aktiven ROI. Über die z-Magnification kann die Höhendarstellung des Pixelwertes skaliert werden. Das Ergebnis der Funktion wird im normalen Bildspeicher abgelegt und überschreibt das Originalbild. Die Funktion kann auch stereometrische Rot/Grün- oder LCD-Shutter-Bilder erzeugen, wenn ein Farbspeicher oder ein Stereobildspeicher definiert ist. Hierzu muß der Schalter "Stereo" in der Dialogbox eingeschaltet sein und außerdem der Abstand zwischen Betrachter und Bildschirm in Pixelgrößen eingegeben werden. Wenn Links/Rechts-Bildspeicher im Stereo-Menü definiert worden sind, so werden die Bilder für das linke und rechte Auge dort hineingeschrieben. Andernfalls werden, falls definiert, die Rot/Grün-Bildspeicher eines True-Color-Bildspeichers benutzt. Mit einer LCD-Shutter-Brille oder gegebenenfalls mit einer Rot/Grün-Brille betrachtet, erscheint das Objekt dann an der vom Benutzer eingestellten Stelle zwischen Betrachter und Bildschirm oder auch hinter dem Bildschirm. Der Abstand des Objektes vom Betrachter errechnet sich als Wurzel aus der Summe der Quadrate des gewählten Augenpunktes. Eine vergrößerte Darstellung ist möglich, indem der Bildschirmabstand und der Objektabstand verkleinert wird.
Statt der normalen Helligkeitsgebung mit dem jeweils ursprünglichen Grauwert kann die Helligkeit auch durch eine Lichtquelle simuliert werden. Der Grauwert wird dann nach wie vor als Höhenwert interpretiert, die aktuell dargestellte Helligkeit hängt jedoch vom Winkel relativ zur definierten Lichtquelle ab. Z. Zt. kann die Lichtquelle nur in der x=0-Ebene gesetzt werden. Der Winkel der Lichtquelle bezgl. der x-Achse kann 0..180 Grad betragen. Der Abstand der Lichtquelle ist unendlich groß. Wenn eine Lichtquelle abseits der x=0-Ebene gewünscht wird, so muß das Objekt (das Bild) mit Funktionen aus dem Processing-Geometry-Menü (Kap. 7.1.) gedreht werden.

Über die Gitterweite "Grid Width" kann der interne Rechenaufwand deutlich verringert werden, so daß bei größerer Gitterweite auch eine animierte live-Darstellung möglich ist, die mit der Maus kontrolliert werden kann, wie das schon mit Vektorzügen möglich ist und im Vektor-Modul (Kap. 8.3.) beschrieben ist.

Die Darstellung von 3D-Vektorfeldern ist ebenfalls hier implementiert - es handelt sich nur um einen um die Stereo-Darstellung erweiterten Funktionsumfang des Vektor-Modules.

*8.7.3. Stereo Display

Ob es sich nun um räumliche Vektordaten handelt, d. h. Ergebnisse einer stereometrischen Vermessung, oder um beliebige stereometrisch aufgenommene Grauwert- oder Farb-Bilder, oder um einfache einzelne Grauwert-Bilder, die als Funktionen zweier Veränderlicher aufgefaßt werden können und die derart dargestellt werden, daß der Grauwert eines Bildpunktes als Höhe in einem Grauwertgebirge aufgetragen wird und sich damit reliefartige Bilddarstellungen ergeben - alle diese Darstellungsarten können als Stereobild mit Hilfe einer Spezialbrille räumlich dargestellt werden.

Eine Stereodarstellung ist über Rot/Grün-Brille oder über LCD-Shutterbrille möglich. Für das Rot/Grün-Verfahren ist außer der einfachen Rot/Grün-Brille keinerlei weitere Hardware erforderlich. Es können jedoch nur Grauwertbilder mit diesem Verfahren dargestellt werden. Will man Farbbilder darstellen und/oder auch einen noch realistischeren Stereoeffekt erzielen, steht das Shutter-Verfahren mit einer LCD-Shutterbrille zur Verfügung. Hierzu wird der Videospeicher in zwei Seiten eingeteilt und die beiden Stereoansichten für linkes und rechtes Auge in diese Seiten geschrieben. Dann werden die beiden Bilder in schnellem Wechsel auf dem Bildschirm dargestellt. Dies geschieht mit mindestens 120 Hz oder besser 140 Hz Vertikalfrequenz. Die LCD-Brille selektiert nun durch Opak- oder Transparentschalten das richtige Bild für das jeweilige Auge. Damit entsteht für jedes Auge ein beinahe flickerfreies 60 Hz oder 70 Hz-Bild. Damit sind in der Regel alle normalen LCD-Monitore nicht geeignet und man wird entweder auf die älteren CRT-Monitore ausweichen oder auf die neu vorgestellten 120Hz-LCD-3D-Monitore oder stereofähige DLP-Projektoren. Die Umschaltung der LCD-Brille geschieht über einen Infrarotsender, der nach einer kleinen Hardwareänderung bei bestimmten Graphikkarten oder auch bei bestimmten Bildverarbeitungskarten (z. B. CORECO F64) oder auch über digitale I/O-Karten angesteuert werden kann. Auch Stereo-Video-Clips können auf diese Art betrachtet werden, wenn die Stereo-Bildsequenzen in zwei getrennte Sequenzbildspeicher geladen werden. Über die Umwandlung von RGB-Farbbildern in geditherte Farbbilder und korrekte Look-Up-Table-Einstellung können auch Farbbilder oder Farbsequenzen in Stereo betrachtet werden.
Wenn definiert und eingeschaltet, werden üblicherweise die Left/Right-Bildspeicher für das Stereobild verwendet. Sonst werden, falls diese definiert sind, Rot- und Grün-Speicher des Farbbildspeichers verwendet und danach ein mit der Rot/Grün-Brille betrachtbares Bild erzeugt. Wenn weder Farbbildspeicher noch Stereospeicher definiert sind, wird eine Fehlermeldung ausgegeben.
Das Einschalten des Stereo-Modus bewirkt zusätzlich, daß die picCOLOR-Software versucht, bei der Bildübernahme ein Stereobild mittels zweier richtig ausgerichteter Kameras zu übernehmen. Hierzu muß dem FrameGrabber jedoch noch zusätzlich bekannt sein, ob es sich um ein Split-Screen-Stereobild oder um zwei getrennte Bildspeicher handelt. Dies kann in der Kamera-Auswahl-Dialogbox (Kap. 6.5) eingestellt werden.

Der Display kann in einem Window oder in der Full-Screen Darstellung erfolgen. Hierbei ist die Bildfrequenz wählbar. Dies ist nicht die Darstellungsfrequenz auf dem Bildschirm, die ja immer möglichst hoch sein sollte, mindestens aber 120Hz, sondern die Ablaufgeschwindigkeit einer Bildsequenz. Da hierbei intern der Windows-Timer mit 16ms zur Taktung benutzt wird, kann die Frequenz jedoch nur ungefähr eingestellt werden. Wählbare Bildfrequenzen sind: 62.5Hz, 31.125Hz, 20.8Hz, 15.6Hz, 12.5Hz, 10.4Hz, ... Die Dauer der Darstellung kann im Stereo-Control-Menue eingestellt werden. Man kann jedoch immer mit der ESC-Taste die Darstellung abbrechen. Zur Darstellung von Farbbildsequenzen müssen RGB-Bilder zunächst gedithert werden und in den Sequenzbildspeicher übertragen werden. Dann muss im Sequenzbildspeicher die korrekte LUT gesetzt werden (Dither-LUT), dann kann die Farbsequenz abgespielt werden. MACRO-Programme zur Umrechnung können geliefert werden.

Man kann einen Soundfile mitabspielen lassen, sofern unter Windows der zugehörige CODEC implementiert ist. Hierbei scheint es jedoch aus unbekannten Gründen noch Längenbeschränkungen zu geben: Soundfiles von mehreren Minuten Länge werden leider nicht wiedergegeben.

*8.7.4. Stereo Bildübernahme

Die Stereo-Bildübernahme wird in Kapitel 6.5. behandelt.


8.8. 2D/3D-Object Tracking

*8.8. 2D/3D-Object Tracking (Zusatzmodul)

Mit diesem Zusatzmodul werden Funktionen zur Verfolgung und 3-dimensionalen Auswertung von Objekten oder Markern im Videobild zur Verfügung gestellt, die in Zusammenhang mit dem RealTime-Zusatzmodul auch in Echtzeit ausgeführt werden können. Die 3D-Rekonstruktion kann über die Eingabe der genauen Kamerapositionen oder auch über die Kalibrierung über 6 oder mehr bekannte Referenzpunkten im Raum ohne Kenntnis der Kamerapositionen geschehen. Die Auswertung wird subpixelgenau vorgenommen. Ein wichtiges Beispiel zur Objektverfolgung ist die Vermessung von Dummy-Bewegungen im Automobil-Crash-Test oder die Verbiegungsmessung von Flugzeugflügeln im Windkanal. Ein spezielles Handbuch ist als PDF-Datei verfügbar.


8.9. Particle Image Velocimetry

*8.9. Particle Image Velocimetry / Particle Tracking Velocimetry (Zusatzmodul)

Mit diesem Zusatzmodul werden Verfahren zur Verfügung gestellt, bewegte Objekte zu vermessen oder 2- und 3-dimensionale Strömungsfelder zu untersuchen. Technische Strömungsvorgänge, z. B. Luftströmungen an Flugzeugen oder Automobilen oder auch industrielle Rohrströmungen, werden durch Zugabe von kleinsten Partikeln und Anstrahlen mit einer geeigneten Lichtquelle sichtbar gemacht. Es kommen verschiedene Verfahren zur Anwendung, bei denen entweder eine gepulste Lichtquelle zur Visualisierung verwendet wird oder durch längere Belichtung "Partikelspuren" erzeugt werden. Das Zusatzmodul für Particle Image Velocimetry und Particle Tracking enthält z. Zt. folgende Hauptgebiete:

*8.9.1. Particle Image Velocimetry mit Autokorrelation
Die Autokorrelation dient zur Bestimmung der Verschiebevektoren in einzelnen Partikelbildern mit Doppelbelichtung bei hoher Partikeldichte. Wegen der Autokorrelationsfunktion ist eine Zweideutigkeit in der Bewegungsrichtung nur über zusätzliche Tricks zu vermeiden.

*8.9.2. Particle Image Velocimetry mit Kreuzkorrelation
Die Kreuzkorrelation dient zur Bestimmung der Verschiebevektoren in zeitlich aufeinanderfolgenden Partikelbildern mit hoher Partikeldichte. Neben den Verschiebevektorfeldern kann auch z. B. die Drehung der Strömung, d. h. die Zirkulationsverteilung berechnet werden.

*8.9.3. Particle Tracking Velocimetry
In zeitlich aufeinanderfolgenden Bildern werden Partikel, Marker oder sonstige beliebige Objekte gesucht, zugeordnet und der Verschiebevektor bestimmt. Diese Funktion ist gut einsetzbar für Bilder mit niedriger Partikeldichte, bei denen die Partikel eindeutig bestimmt und zugeordnet werden können.

*8.9.4. Orientierungsanalyse über das Trägheitstensormodell
Bei längeren Partikelspuren - z. B. über eine längere Belichtung von Partikeln in einer Strömung - kann die Orientierung, d. h. der Winkel gegenüber der x-Achse berechnet werden.


8.10 Interferometry

*8.10 Interferometry (Zusatzmodul)

Mit Verfahren der Interferometrie oder auch der einfachen Streifenprojektion können 3-dimensionale Oberflächen und 3-dimensionale Gegenstände vermessen werden. Dabei wird die Interferometrie eher für Aufgaben mit sehr hoher Auflösungsforderung eingesetzt, die Streifenprojektion für geringere Auflösungen und größere Objekte. Das grundsätzliche Prinzip ist ähnlich: Die interferometrisch oder durch Projektion erzeugten hell/dunkel-Streifen werden auf einer 3-dimensional gekrümmten oder verformten Oberfläche eine bestimmte Verschiebung, Dehnung oder Stauchung erfahren, die subpixelgenau ausgewertet werden kann. Die erzielbare Auflösung ist erstaunlich: 1/10 eines Pixels ist bei perfektem Versuchsaufbau durchaus möglich. Es gibt verschiedene Methoden zur Auswertung, die sich in ihrer Anwendbarkeit bzgl. feststehender oder bewegter Objekte, der theoretisch erzielbaren Auflösung, der Empfindlichkeit gegenüber Bildrauschen, in der Ausführungsgeschwindigkeit und in anderen Eigenschaften unterscheiden. Es ist eine spezielle Informationsschrift als PDF-Datei verfügbar, in der alle möglichen Methoden verglichen sind. Die z. Zt. verfügbaren Methoden sind folgende:

*8.10.1. Fourier Method
Diese Methode ist anfällig gegenüber Bildrauschen, hat gewisse Ambiguitäten bezgl. der 3-dimensionalen Oberflächengradienten, benötigt jedoch nur ein einziges Bild zur Auswertung und kann daher für bewegte Vorgänge verwendet werden.

*8.10.2. Phase Shift Method
Diese Methode ist weniger anfällig gegenüber Bildrauschen, benötigt jedoch 3 oder 4 Bilder für die Auswertung und kann daher für bewegte Oberflächen nicht benutzt werden.

*8.10.3. Pseudo Phase Shift Method
Diese Methode arbeitet ähnlich wie die Phase Shift Methode, benötigt jedoch nur ein einziges Bild zur Auswertung, allerdings auf Kosten der Auflösung.


8.11. Fringe Correlation Method

*8.11. Fringe Correlation Method (FCM) (Zusatzmodul)

Neben den Methoden des Interferometrie-Zusatzmodules gibt es auch noch andere Verfahren zur Bestimmung 3-dimensionaler Oberflächenverbiegungen. Die Fringe-Correlation-Method wurde speziell für die Untersuchung schnell bewegter Oberflächen (z. B. drehender Hubschrauberrotoren) entwickelt. Sie basiert auf der Projektion bestimmer Streifenmuster auf die Oberfläche, ähnlich wie bei der Interferometrie, und auf der 1-dimensionalen Kreuzkorrelation zwischen einem Referenzbild und dem Bild der verschobenen Oberfläche. Eine Reihe von Funktionen zur Kalibrierung der Werte und zur Darstellung der Ergebnisse sind implementiert. Ein Handbuch in Form einer PDF-Datei ist verfügbar.


8.12. Real Time Image Processing

*8.12. Real Time Image Processing (Zusatzmodul)

"Echtzeit" ist ein häufig benutzes Schlagwort beim Einsatz moderner schneller Rechner. Was bedeutet eine "Echtzeit"-Berechnung? Bedeutet es, eine Berechnung besonders schnell durchzuführen, oder besonders schnelle Vorgänge zu analysieren? Nein: Echtzeit bedeutet grundsätzlich, einen Vorgang in genau der Geschwindigkeit auszuwerten oder zu analysieren, in der er tatsächlich stattfindet und damit die Möglichkeit zu haben, regelnd auf diesen Vorgang einwirken zu können. Das kann sehr schnell, aber auch beliebig langsam sein. Hier muß also grundsätzlich geprüft werden, wie schnell ein Vorgang abläuft und ausgewertet werden muß. Eine oft verwendete Definition ist z. B. die Video-Echtzeit. Wenn wir hier einmal spezielle Hochgeschwindigkeitskameras außer Acht lassen, so können wir annehmen, daß Video-Frequenzen 25 oder 30 Bilder pro Sekunde aufweisen. Wenn ein Vorgang zeitlich in Video-Echtzeit von der Kamera nicht mehr aufgelöst werden kann, so haben wir natürlich auch keine Chance, diesen dann später mit dem Rechnersystem zu analysieren. Dagegen kann es auch oft sein, daß ein nicht ganz so schnell ablaufender Vorgang mit z. B. nur halber Videofrequenz oder noch langsamer aufgelöst und analysiert werden muß. Auch dann ist dies immer noch eine Echtzeit-Bildverarbeitung. In der Regel erfordern Echtzeitberechnungen bei hohen Bildfrequenzen jedoch immer eine recht hohe Rechenleistung und eine optimale Programmierung und genaue Anpassung an die entsprechende Aufgabe. Ein Verschenken von Rechenleistung mit zusätzlichen, unnötigen Berechnungen ist nicht mehr möglich. Aus diesem Grund gibt es im "Real-Time"-Zusatzmodul nur recht wenige Funktionen - alle Funktionen werden speziell für bestimmte Aufgaben programmiert und optimiert und normalerweise nicht im allgemeinen picCOLOR-Programm aufgeführt. Bitte wenden Sie sich daher bei speziellen Problemstellungen an das picCOLOR-Entwicklungsteam. Einige relativ allgemeine Funktionen sind im Echtzeit-Zusatzmodul standardmäßig enthalten und sind im folgenden kurz erwähnt.

*8.12.1. Real Time Position Measurement
Verschiedene Funktionen zur Echtzeitbildverarbeitung sind möglich. Da diese Funktionen aus Geschwindigkeitsgründen immer projektspezifisch angepaßt und optimiert sind, können hier keine allgemeinen Funktionen implementiert werden. Getestetes Beispiel ist etwa das Bestimmen des Minimums einer Videozeile oder einer Grauwertkante in Echtzeit. Dieses Problem stellt sich z. B. beim Bestimmen der Position einer kontinuierlichen Substanz auf einem schnell bewegten Fließband. Mit speziellen Kameras, z. B. der digitalen Pulnix TM6710 oder der analogen JAI CV-M30, können hier Hochgeschwindigkeitsauswertungen bis zu 360 Hz durchgeführt werden. Noch höhere Geschwindigkeiten bis 500kHz sind mit teilauslesbaren CMOS-Kameras oder mit Zeilenkameras möglich. Die Ergebnisse, d. h. die bestimmte Position der Substanz, kann kontinuierlich auf Festplatte oder auf eine beliebige Rechnerschnittstelle ausgegeben werden.

*8.12.2. Real Time 2D- and 3D-Position Measurement
Bereits vollständig implementiert ist die Marker- oder Objektsuche im Videobild. Hierbei kann die Objektlage je nach eingesetzter Kamera (oder Stereo-Kameras für eine 3-dimensionale Auswertung und Rekonstruktion) ohne weiteres bis zu 1000 mal pro Sekunde in x-, y- und z-Koordinaten bestimmt und ausgegeben werden.


8.13. OCR

*8.13. Optical Character Reading (OCR) and Verification (OCV) (OCR Extension Module)

Bitte fragen Sie nach dem speziellen OCR/OCV Handbuch.


8.14. BarCode

*8.14. BarCode (BarCode Extension Module)

Mit den Funktionen des BarCode-Modules können verschiedene 1D- und 2D-Barcodes gefunden und gelesen werden. Es gibt jeweils zwei Arten des Funktionsaufrufes: entweder wird nur ein einziger Barcode gesucht, oder es werden alle im Bild vorkommenden Barcodes gleichen Typs gesucht. Wenn gleichzeitig verschiedene Typen in einem Bild vorkommen, so muß die Funktion mehrfach hintereinander für die gewünschten Typen aufgerufen werden.

Die Funktionen sind sehr stark optimiert und es können auch sehr kleine Barcodes gefunden werden, deren schmale Linien (weiß oder schwarz) dünner als 2 Pixel sind.

8.14.1. 1D BarCode

8.14.1.1. EAN13, EAN8

8.14.1.2. UPC-A, UPC-E

8.14.1.3. 2 of 5 Interleave

8.14.1.4. Code39

8.14.2. 2D BarCode

8.14.2.1. PDF214 Code


8.15. Calibration

Ein Bild, welches über eine Kamera oder über einen Scanner eingelesen wurde und im Bildspeicher abgelegt ist, ist immer in Pixeln aufgebaut. Üblicherweise interessiert bei geometrischen Vermessungen jedoch nicht z. B. ein Abstand oder eine Fläche in Pixeleinheiten, sondern in einer metrischen oder sonstigen anderen Einheit. Hierzu muß das System kalibriert werden, z. B. in Pixel pro Meter oder in Pixel pro Inch. Dies kann durch direkte Angabe der Kalibrierfaktoren geschehen, wenn diese bekannt sind. Da dies üblicherweise nicht der Fall ist, wird die Möglichkeit gegeben, die Kalibrierfaktoren in x- und y-Richtung anhand bekannter Strecken im Bild zu definieren. Die Kalibrierung kann dabei in x- und y-Richtung unterschiedlich sein, da nicht immer sichergestellt sein kann, daß eingelesene Pixel exakt quadratisch sind. Oft erhält man bei speziellen Kameras rechteckige Bildpunkte. Bei analogen Bildeinlesekarten (Frame Grabber) mit stufenlos einstellbarer Abtastfrequenz des Videosignales kann man jedoch in der Regel mehr oder weniger quadratische Bildpunkte einstellen. Bei bestimmten Bildeinlesekarten kann dies mit der Funktion "Square Pixel" in "Aquire Image"-Menü über die genaue Frequenzwahl bei der Bildübernahme erzielt werden. Bei digitalen Kameras und Frame Grabbern sollte geprüft werden, ob die Kamera quadratische Pixel hat und wenn ja, ob dies ein Problem bei der Auswertung darstellen könnte, da hier keine Einstellmöglichkeit mehr existiert.
Bei Abspeicherung von TIFF-Bildern wird die Kalibrierung mitgespeichert, wenn die Einheit vom System erkannt wird. Dabei wird intern jedoch immer in "inch" umgerechnet. Wenn die Einheit nicht erkannt wird, wird keine Kalibrierung gespeichert. Beim Laden eines TIFF-Bildes wird eine im Bild gespeicherte Kalibrierung nur auf Wunsch geladen. Dabei wird die Kalibrierung immer in "m" umgerechnet. Wenn eine andere Einheit gewünscht wird, so kann diese mit "Set Unit" nachträglich eingegeben werden. Die Umrechnung der Kalibrierung geschieht dann automatisch, wenn die neu eingegebene Einheit erkannt wird. Die dem System bekannten Einheiten findet man im folgenden Kapitel 8.15.1. Eine Rotation der Koordinatenachsen oder auch die Richtung der Y-Achse (nach oben oder unten) kann im TIF-File jedoch nicht gespeichert werden. Hier sollte dann die komplette Kalibration als *.CAL-File zusätzlich, z. B. unter dem gleichen Namen gespeichert werden.

8.15.1. Unit
Bevor man das picCOLOR-System kalibriert, sollte man sich für eine Einheit entscheiden. Diese Entscheidung kann allerdings auch später getroffen werden. In diesem Fall muß man jedoch die Definitionsreihenfolge sorgfältig einhalten, da das System sonst eventuell eine automatische Einheitenumrechnung vornimmt. Es sind beliebige Einheiten zugelassen, das Einheiten-Kürzel kann bis zu drei Buchstaben lang sein. Die tatsächliche Kalibrierung der gewählten Einheit wird in der Regel nach der Eingabe der Einheit vorgenommen. Bestimmte Einheiten sind dem System bekannt. Z. Zt. sind dies folgende metrische Einheiten: [nm, um, mm, cm, dm, m, km] und folgende andere Einheiten: [in, ft, mi]. Das System rechnet automatisch zwischen diesen Einheiten um. Wenn das System z. B. in "mm" zu 1000 Pixel/mm kalibriert wurde, so wird bei Änderung der Einheit in "m" intern automatisch der Kalibrierfaktor auf 1000000 Pixel/m geändert, bei "in" auf 25400 Pixel/inch. Wenn die eingegebene neue Einheit dem System nicht bekannt ist, so wird nicht umgerechnet. Ebenfalls wird nicht umgerechnet, wenn eine der Einheiten (alte oder neueingegebene) "pix" für Pixel ist. Auf diese Art kann man auch eine beliebige andere systembekannte Einheit einstellen, ohne die Kalibrierfaktoren zu ändern: man ändert zuerst von der alten Einheit auf Pixel, dann von Pixel auf die neue Einheit. Dabei bleiben die Kalibrierfaktoren erhalten. Wenn bei der Eingabe der Einheit eine der Einheiten (die Alte oder die Neue) nicht bekannt sind, so wird eine kurze Warnmeldung ausgegeben.

8.15.2. Kalibrierung mit Fadenkreuzen
Mit Hilfe zweier Fadenkreuze werden zwei der Länge nach bekannte Strecken im Bild - zuerst in x-Richtung und dann in y-Richtung - angewählt. Dazu muß natürlich ein geeignetes Bild auf dem Bildschirm zu sehen sein, das z. B. einen Maßstab enthält oder bestimmte Objekte bekannter Größe oder Paßpunkte in bekanntem Abstand. Die Verschiebung und Justage der Fadenkreuze wird durch die rechte Maustaste beendet. Für jede der beiden angewählten Strecken kann dann eine Länge in Metern oder einer beliebigen anderen Einheit angegeben werden, so daß sich das System die Kalibrierfaktoren in x- und y-Richtung errechnen kann. Wenn die Kalibrierung in x- und y-Richtung gleich ist, d. h. bei exakt quadratischer Abbildung der Bildpunkte, dann kann man nach Eingabe der x-Skalierung die y-Skalierung der x-Skalierung durch drücken der rechten Maustaste gleichsetzen. Wenn noch keine Einheit definiert wurde, so wird in Pixel/Unit eingefragt. Danach sollte dann allerdings eine sinnvolle Einheit eingegeben werden, da sonst kalibrierte Werte in Pixel/Pixel ausgegeben werden. Die Kalibrierung kann mit der Funktion "Calibrate" jederzeit geändert werden oder auch mit der Funktion "Reset Calibration" gelöscht werden. In diesem Fall werden Strecken und Flächen wieder in Pixelbreiten und Pixelflächen angegeben. Die Kalibrierung wird auf den eventuell geöffneten Datenfile abgelegt. Das Datenformat ist dabei folgendermaßen:

*02* Scalex: xxx.xxxx [pixel/unit] - Scaley: yyy.yyyy [pixel/unit]

[unit] ist dabei die zuvor definierte Einheit.

8.15.3. Numerische Kalibrierung
Wenn die Kalibrierfaktoren bekannt sind, z. B. aus einer früheren Vermessung oder weil mehrere Bilder mit gleichem Maßstab ausgewertet werden und die Kalibrierung zwischenzeitlich geändert wurde, so kann diese direkt numerisch in der Dialogbox eingegeben werden.

8.15.4. Reset Calibration
Löschen der Kalibrierung. Danach ist das System wieder in Pixeleinheiten kalibriert.

8.15.5. Save/Load Calibration/Origin
Diese Funktion speichert und läd die Einheit (Unit), die Kalibrierung und den Koordinatenursprung (Origin). Es wird interaktiv ein Datenfile eingefragt, der automatisch die Extension .CAL erhält.

8.15.6. Set Origin
Setzen eines Koordinatenursprungs. Normalerweise ist der Ursprung die linke obere Ecke des Bildschirms. Mit einem Fadenkreuz kann der Ursprung auf jede beliebige Stelle des Bildschirmes (d. h. des Bildspeichers) gesetzt werden. Zusätzlich besteht auch die Möglichkeit einer numerische Eingabe. Diese erlaubt auch die Eingabe von Ursprungskoordinaten, die nicht mit dem Fadenkreuz erreichbar sind, z. B. negative Koordinaten. Die Ursprungskoordinaten werden dabei immer in Pixeleinheiten relativ zur linken oberen Ecke des Bildspeichers angegeben, die Bildspeicher-Y-Richtung ist immer nach unten gerichtet.
Wenn der Koordinatenursprung nicht sichtbar ist, jedoch ein anderer bekannter Referenzpunkt angefahren werden kann, so ist es möglich, diesen Punkt als Referenzpunkt in die Eingabefelder in der Mitte der rechten Seite der Dialogbox einzugeben. Wenn dann eine interaktive Ursprungseingabe vorgenommen wird, so wird der tatsächliche Ursprung anhand des eingegebenen Punktes bestimmt. Hierzu muß natürlich eine sinnvolle Systemkalibrierung (siehe linke Seite der Dialogbox) gesetzt sein. Ein Beispiel: wenn der tatsächliche Ursprung rechts aus dem Bildschirm herausgeschoben liegt, jedoch z. B. der Punkt [-100,0] mit dem Fadenkreuz angefahren werden kann, so werden die Koordinaten dieses Punktes [-100,0] in die Eingabefelder für den "Set Ref.(non-visible origin)" eingegeben und dann interaktiv der angegebene Punkt mit dem Fadenkreuz angewählt. Als Ergenis erhält man dann den Ursprung in tatsächlichen Pixelkoordinaten, relativ zur linken oberen Ecke.

8.15.7. Reset Origin
Setzen des Ursprungs auf die linke obere Ecke des Bildspeichers.

8.15.8. Rotation of Coordinate System
Das Koordinatensystem kann auch um den Ursprung rotiert sein. Der Rotationswinkel wird in Grad eingegeben. Alle nachfolgenden Messungen oder Datenausgaben werden auf dieses rotierte System umgerechnet. Eine Rotation von -90.0..90.0 Grad ist zulässig. Die Kalibrierfaktoren in x- und y-Richtung sind jedoch von der Rotation unabhängig, da davon ausgegangen wird, daß eine unterschiedliche Kalibrierung in x- un y-Richtung nur von der Kameraaufnahme herkommen kann (nicht-quadratische Pixel). Dies orientiert sich jedoch immer an der horizontalen oder vertikalen Achse des Bildspeichers.

8.15.9. Y-Coordinate Up/Down
Die Y-Koordinate des Bildspeichers ist nach unten als positiv definiert. Bei der Datenausgabe oder bei Messungen kann das Meßkoordinatensystem jedoch so eingestellt werden, daß die y-Koordinate nach oben zeigt, so daß ein mathematisch richtiges Koordinatensystem entsteht.

8.15.10. Calibrated Line/Vector Box

Oft ist es wünschenswert, eine kleine kalibrierte Teststrecke ins Bild zu zeichnen, um andere Längen damit vergleichen zu können. Mit dieser Funktion kann dies durchgeführt werden. Dabei wird die Vergleichsstrecke in einer kleinen Box mit Längenbezeichnung und aktueller Einheit dargestellt. Die Box kann ins Bild projiziert werden, indem sie mit der Kombination "Alt-Druck" in die Zwischenablage kopiert wird und von dort mit dem "Paste"-Befehl in die aktuelle ROI übernommen wird. Mit der Box können übrigens auch Geschwindigkeiten dargestellt werden. Dies wird durch die Anzeige eines kleinen Vergleichsvektors statt der Strecke und durch die an die Einheit angehängte Bezeichnung "/s" für "pro Sekunde" angedeutet. Diese Funktion wird automatisch bei der Darstellung von Vektorfeldern aufgerufen, kann jedoch mit zusätzlichen Parametern auch über ein MACRO-Programm aufgerufen werden.

8.15.11. Gray Calibrated Color Bar

Im picCOLOR System können nicht nur Strecken in einer Längeneinheit kalibriert werden, sondern es ist auch möglich, Grauwerte zu kalibrieren. Mit den Funktionen der Dialogbox kann ein kalibrierter Farbbalken ins Bild gezeichnet werden. Dies kann ein horizontal oder vertikal ausgerichteter Balken sein. Er besitzt eine Grauwertskala (oder Farbwertskala bei LUT-Einstellung) und eine Numerierung. Diese Numerierung kann automatisch oder manuell gewählt werden. Bei manueller Eingabe muß der Minimal- und der Maximalwert eingegeben werden. Der Balken wird in 10 Abschnitte unterteilt, von denen 5 bezeichnet werden. Alle Werte sind Floating Point-Zahlen, die bei der horizontalen Kalibrationsbalkendarstellung aus Platzgründen nicht größer als (+/-) 9999.0 sein können. Die automatische Wahl der Grauwert-Kalibrierung wird durch bestimmte Funktionen vorgegeben. Z. Zt. wird dies durch Funktionen aus dem PIV/PTV-Modul, aus dem Fringe-Correlation-Modul und aus dem Interferometrie-Modul benutzt. Hierbei werden Geschwindigkeiten, Pixelverschiebewerte oder Höhenwerte als Grauwerte dargestellt. Beim automatischem Plotten des Farbbalkens in den genannten Funktionen werden die Meßwerte den Grauwerten zugeordnet.
Für die Darstellung der unterschiedlichen Einheiten (Verschiebung, Geschwindigkeit, Zirkulation) werden normalerweise automatisch sinnvolle zusammengesetzte Einheiten gebildet. Hierbei wird immer die "normale" Längenkalibrierung als Ausgangsbasis gewählt. Wenn also z. B. die im Kalibrationsmenü eingestellte Längeneinheit [m] ist, so wird eine Geschwindigkeit als [m/s] ausgegeben, eine Zirkulation als [m2/s]. Dies kann jedoch auch manuell eingestellt werden. Hierbei stehen folgende physikalische Einheiten zur Verfügung: keine Einheit [-], Längeneinheit [m], Geschwindigkeit [m/s], Beschleunigung [m/s2] und Zirkulation [m2/s]. Die jeweilige Längeneinheit [m] kann natürlich durch jede andere maximal 3 Zeichen lange Zeichenkette ersetzt werden. Es ist zu beachten, daß bei Einstellung dieser Spezialeinheiten auch alle x/y-Koordinaten in dieser Einheit ausgegeben werden. Die z. Zt. einzige Möglichkeit dies zu umgehen und in der Graukalibrierung völlig andere Einheiten als in der Längenkalibrierung zu benutzen, ist die Auswahl des "No Unit or Gray Cal. Unit". Hier kann dann eine eigene Einheit eingegeben werden. Diese Implementierung ist allerdings noch ein vorläufiger Versuch - diese spezielle Einheit ist noch nicht in allen internen Verknüpfungen und Datenausgaben eingebaut. Dies kann in Zukunft implementiert werden, wenn genügend Nachfrage besteht. Andererseits scheint diese Möglichkeit nicht absolut notwendig zu sein, da ja nacheinander z. B. zuerst in einer Längeneinheit kalibriert werden kann und danach in einer anderen Einheit, z. B. Temperatur, kalibriert werden kann.

Wie auch bei der oben beschriebenen Scale-Funktion werden die Kalibrationsbalken in einer Dialogbox dargestellt, die über die Zwischenablage (Befehl: Alt-Druck) ins Bild (aktuelle ROI) kopiert werden kann, wenn der Balken z. B. mit dem Bild abgespeichert werden soll. Jeder Bildspeicher besitzt eine eigene Farbbalkeneinstellung oder -kalibrierung. Man kann also unterschiedliche Kalibrierungen auf verschiedenen Bildspeichern bestimmen oder festlegen. Die Parameter in der Dialogbox zeigen die jeweiligen Einstellungen für den aktuellen Bildspeicher. Bei der "Undo"-Funktion werden auch die Werte des kalibrierten Farbbalkens restauriert. Die Einheit ist jedoch für das gesamte System festgelegt, nicht für jeden einzelnen Bildspeicher.

8.15.12. Camera Calibration

Dies ist die gleiche Dialogbox, wie man sie auch im Processing/ Geometry-Menü findet. Allerdings ist hier die Funktion zur Bildentzerrung gesperrt, dafür sind jedoch die Funktionen zur Bestimmung aller Entzerrungsparameter zugelassen. Zur Bildentzerrung mit dem Pin-Hole-Kameramodell von Tsai gibt es eine Menge an Informationen im Internet. Daher wird hier im picCOLOR-Handbuch bis auf einen kurzen Einschub nicht weiter darauf eingegangen. Hier sollen lediglich Bedienungsanweisungen zur Benutzung der Funktionen erfolgen.

Tsai's camera model is based on the pin hole model of perspective projection. Given the position of a point in 3D world coordinates the model predicts the position of the point's image in 2D pixel coordinates. The model has 11 parameters: five internal (also called intrinsic or interior) parameters,

  • f - effective focal length of the pin hole camera,
  • kappa1 - 1st order radial lens distortion coefficient,
  • Cx, Cy - coordinates of center of radial lens distortion -and- the piercing point of the camera coordinate frame's Z axis with the camera's sensor plane,
  • sx - scale factor to account for any uncertainty due to framegrabber horizontal scanline resampling,
and six external (also called extrinsic or exterior) parameters,
  • Rx, Ry, Rz - rotation angles for the transform between the world and camera coordinate frames, and
  • Tx, Ty, Tz - translational components for the transform between the world and camera coordinate frames.
Calibration data for the model consists of 3D (x,y,z) world coordinates of a feature point (in mm) and corresponding 2D coordinates (Xf,Yf) (in pixels) of the feature point in the image. Two types of calibration are possible:
  • coplanar - the calibration points lie in a single plane in 3D, and
  • non-coplanar - the calibration points do not lie in a single plane in 3D.

An explanation of the basic calibration algorithms and descriptions of the variables can be found in several publications, including:

"An Efficient and Accurate Camera Calibration Technique for 3D Machine Vision", Roger Y. Tsai, Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, Miami Beach, FL, 1986, pages 364-374,
and
"A versatile Camera Calibration Technique for High-Accuracy 3D Machine Vision Metrology Using Off-the-Shelf TV Cameras and Lenses", Roger Y. Tsai, IEEE Journal of Robotics and Automation, Vol. RA-3, No. 4, August 1987, pages 323-344.

Vor einer Kalibrierung sollte eine Initialisierung aller Werte vorgenommen werden (Schalter "Initialize Const."). Dies setzt z. B. sinnvolle Center-Koordinaten. Grundsätzlich müssen für eine Kalibrierung mehrere Punkte in ihren 3D-Koordinaten bezüglich eines sogenannten "Weltkoordinatensystemes" bekannt sein. Diese Punkte können auf einer Ebene liegen (co-planar), wobei die Ebene bei der Bildaufnahme dann allerdings nicht senkrecht auf der optischen Achse stehen darf. Besser ist es jedoch, wenn diese Punkte gut im 3D-Raum verteilt sind. Diese Art der Punkteverteilung muß dem System über die Coplanar/Non-Coplanar-Schalter mitgeteilt werden. Der nächste Schritt ist dann der Transfer der 3D-Punktkoordinaten und der entsprechenden 2D-Bildkoordinaten auf die entsprechenden internen Variablen. Dies geschieht mit dem Schalter "Transfer Mk[]". Hierzu muessen natürlich alle gewünschten Marker mit den Funktionen des Echtzeit-Tracking-Extensionmodules definiert und bestimmt worden sein. Ebenfalls müssen die 3D-Koordinaten dieser Marker dem System mitgeteilt worden sein. Mit den hier beschriebenen Funktionen wird jeweils nur eine Kamera kalibriert, nämlich diejenige, deren Bildspeicher beim Aufruf der Dialogbox aktiv war. Wenn eine Stereo-Meßanordnung aufgebaut ist, d. h. mit zwei Kameras gearbeitet wird, so müssen beide Kameras nacheinander kalibriert werden. Dazu werden dann alle Marker in beiden Stereoansichten benutzt. Zur Stereo-Kalibrierung wird das jeweilige Bild für linke oder rechte Kamera vor dem Öffnen der CameraCalibration-Dialogbox aktiviert. Mit Betätigung des "Transfer Mk[]" Schalters werden dann automatisch die richtigen 2D-Markerorte für die jeweilige Kamera übertragen, sofern die Stereo-Bildspeicher richtig definiert wurden.

Wenn genügend Raumpunkte zur Verfügung stehen (mindestens 11 sowohl für coplanar als auch für non-coplanar), kann eine "Full Camera Calibration" vorgenommen werden, die deutlich genauer ist als die einfache Kalibrierung, die allerdings schon mit 5 (coplanar) oder 7 (non-coplanar) bekannten Punkten vorgenommen werden kann.

Die Werte Tx, Ty, Tz, und Rx, Ry, Rz (Camera Space -> World Space) sind die Verschiebungen und Verdrehungen, um von der Kamera zum Koordinatensystem zu gelangen, in dem die 3D-Punkte definiert wurden. Rechts daneben werden auch die Verschiebungen und Winkel dargestellt, mit denen man vom Weltkoordinatensystem zum Kamerakoordinatensystem gelangen kann (World Space -> Camera Space). Hier ist zu beachten, daß die Winkel im aktuell benutzten Drehungsmodell bestimmt werden. Wenn kein Drehungsmodell eingestellt ist, wird das Yaw,Pitch,Roll-Modell genommen.

Über den "Project 3D->2d"-Schalter kann eine Überprüfung der gefunden Kalibrierung vorgenommen werden: hierbei werden alle Raumpunkte auf das 2D-Bild projiziert und müssen exakt auf den vorgegebenen Markern liegen. Dabei werden die Punkte als kleine Kreisscheiben oder Kreisringe invertiert dargestellt, d. h. ein zweiter Klick auf den Schalter entfernt die Markierungen wieder.

Wenn eine Stereomessung eingestellt war, so müssen alle Kalibriervariablen z. Zt. noch manuell in die entsprechenden Felder in der Stereo-Camera-Calibration-Dialogbox eingetragen werden. Dies wird in einer zukünftigen Version automatisch geschehen.

Mit dem "Transfer Camera"-Schalter können die gefundenen Kamera-Verschiebungen und Drehungen in die Variablen für die 3D-Tracking-Parameter übertragen. Von dort aus kann z. B. eine neue 3D-Kalibrierung durchgeführt werden.


8.16. Measurement Control

Im "Measurement Control"-Menü befinden sich Einstellmöglichkeiten zur räumlichen Kalibrierung und Bildentzerrung für Ergebnisdaten. Außerdem findet man hier die Möglichkeit, Subpixelbestimmungsparameter und die Art einer einfachen Pixelinspektion einzustellen.

8.16.1. Gray Level / Gray-Calibrated / RGB Pixel Measuring
Einfache Pixelvermessungen sind im ROI-Edit-Modus oder mit der Point-Funktion im Geometry-Menü durchführbar. Im Normalfall genügt es dabei, den Pixelwert als Grauwert im Bereich [0..255] anzugeben. Dies kann jedoch für die Inspektion von Echtfarbbildern oder von grauwertkalibrierten Bildern geändert werden:

Gray Level: Dies ist die normale Einstellung, bei der der 8-Bit-Pixel mit einem Pixelwert im Bereich [0..255] angegeben wird, der normalerweise dem Grauwert entspricht.
Gray-Calibrated: Das picCOLOR-System kann auch grauwertkalibriert arbeiten. Dies ist z. B. sinnvoll, wenn der Grauwert eines Bildpunktes eine Kodierung in einer anderen Maßeinheit als einfach nur dem Grauwert darstellt, z. B. eine Höhe, eine Geschwindigkeit, eine Verschiebung oder eine Temperatur. Zur Kalibrierung existieren programmintern zwei Variablen, die dem minimalen und maximalen Pixelwert entsprechen. Sie werden z. B. über die Programmierung der Min/Max-Werte des Farbbalkens eingegeben (Kapitel 8.15.11. Gray Calibrated Color Bar). Bei bestimmten Funktionen, z. B. im PIV- oder Fringe-Correlation-Zusatzmodul wird eine Kalibrierung automatisch vorgenommen.
True-Color: Beim picCOLOR-System ist ein True-Color-24-Bit-Bildspeicher z. B. als Rot/Grün/Blau-Speicher mit jeweils 8 Bit definiert. Wenn im True-Color-Speicher gearbeitet wird. so können bei Pixelvermessungen die Rot/Grün/Blau-Werte gleichzeitig angezeigt werden. Achtung: Bei Einschalten dieses Schalters erhält man z. Zt. immer die RGB-Werte aus dem aktiven RGB-Speicher, unabhängig davon, welcher Bildspeicher gerade aktuell aktiviert und angezeigt ist.

8.16.2. Subpixel Curve Fitting Type
Die Bestimmung von Peaks im Korrelationsspektrum zur Verschiebungsmessung und Mustererkennung kann mit sehr hoher Genauigkeit über eine Anpassungsfunktion durchgeführt werden. Auf diese Weise ist es möglich, subpixel-Auflösungen von 1/10 Pixel oder noch bessere Auflösung zu erreichen. Hierbei ist es sehr wichtig, für das jeweilige Problem die jeweils sinnvollste Funktion zu verwenden. Folgende Funktionen stehen zur Verfügung:
- Subpixelbestimmung über den grauwertgewichteten Flächenschwerpunkt innerhalb der 3*3-Nachbarschaft um den pixelgenauen gefundenen Maximalwert im Korrelationsspektrum.
- Subpixelbestimmung über eine genaue Analyse der 3*3-Nachbarschaft um den Maximalpixel: hier werden die jeweiligen Maxima der drei Zeilen und drei Spalten der 3*3-Nachbarschaft bestimmt. Aus diesen lokalen Maxima werden zwei Kreisgleichungen bestimmt. Der Schnittpunkt dieser Kreise ist dann das absolute Maximum. Dieses Verfahren ist in der Regel sehr viel genauer als die einfache grauwertgewichtete Flächenschwerpunktermittelung. Wenn die lokalen Maxima auf einer Linie liegen und keine Kreise bestimmt werden können, so werden statt dessen Geraden zum Schnitt gebracht. Zur Suche der lokalen Maxima der jeweils drei Pixel langen Zeilen oder Spalten wird eine Anpassungsfunktion verwendet. Dies kann ein einfaches Polynom sein oder eine Gausskurve. Diese Anpassungsfunktion muß vor der Bestimmung sinnvoll ausgewählt werden. Wenn z. B. im Originalbild gaussförmige Partikel vorhanden sind (bei Particle Image Velocimetry) so werden die Korrelationspeaks auch gaussförmig sein und man sollte ein "Gauss-Fitting" verwenden. Für beliebige andere Objekte ist eine Anpassung mit Polynomen sinnvoller.

Damit ein Grauwertmaximum überhaupt als Peak erkannt wird, muß ein bestimmter Grauwert überschritten werden. Für die meisten Funktionen im picCOLOR-Programm wird dabei ein statistischer Ansatz benutzt: nur wenn der Grauwertpeak um die x-fache Standardabweichung der Grauwerte der ROI größer ist als seine Nachbarschaft, wird er als Peak gewertet. Hiermit kann ausgeschlossen werden, daß einfache Spitzen durch Bildrauschen zu Fehlinterpretationen führen. Der Faktor kann hier im Menü eingegeben werden. Defaultwert ist 2.8*sigma. Dieser Wert kann für sehr schwache diffuse Maxima bis auf den Wert 1.0*sigma verkleinert werden. Für den Fall der automatischen Maximasuche bei bestimmten Funktionen wie z. B. der Patternsuche kann ein Startwert und ein Minimalwert eingegeben werden. Wenn der Minimalwert kleiner als der Startwert eingegeben wird, so wird solange iterativ nach Maxima gesucht und jeweils dabei der Sigma-Faktor verringert, bis entweder ein Maximum gefunden wird oder der Minimalwert erreicht wird.

8.16.3. Spatial Calibration Parameters
Wenn eine Kalibrierung in Längeneinheiten vorgenommen wurde, so werden in der Regel alle Ergebnisdaten in diese Einheit umgerechnet, bevor sie angezeigt, dargestellt oder auf File abgespeichert werden. Weitere Möglichkeiten zur Bild- oder Datenkalibrierung ist z. B. eine Korrektur über bestimmte Entzerrungsparameter. Hierbei wird zwischen Linsenverzerrungen (Kamerakalibrierung) und beliebigen Polynom-Verzerrungen unterschieden. Wenn diese Parameter sinnvoll gesetzt sind, so werden alle nach außen, also zum Benutzer gegebenen Daten, d. h. in der Status-Zeile angezeigten, in Dialogboxen dargestellten oder auf File abgespeicherten Daten über die jeweiligen internen Korrekturfunktionen angepaßt oder entzerrt. Programmintern werden jedoch weiterhin ungeaenderte Original-Pixelkoordinaten benutzt.


8.17. Data Recorder

Mit dem Datenrekorder können alle Meßergebnisse des picCOLOR-Programmes auf File oder über ein MACRO-Programm auch auf die DDE-Schnittstelle, die TCP/IP-Schnittstelle oder einen Communication-Port (Parallel oder Seriel: LPTn/COMn) ausgegeben werden.

8.17.1. Open Data File
Mit dieser Funktion können Sie eine Datei öffnen, auf die alle nachfolgenden Daten von Vermessungen oder Auswertungen geschrieben werden. Sie werden nach einem Dateinamen (Filenamen) gefragt und haben die Möglichkeit, auch eine Textzeile als Erläuterung der nachfolgend abgespeicherten Daten einzugeben. Wenn diese Möglichkeit mit direktem Return (CR) beantwortet wird und Daten-Header (Kopfzeilen) eingeschaltet sind, so wird eine Standardzeile eingefügt. Die Datei erhält automatisch die Extension ".DAT". Alle Daten werden im ASCII-Format auf der Datei abgelegt. Wenn das System nicht kalibriert ist, werden die Punktdaten in der Regel in Pixeleinheiten als Integer-Zahlen abgelegt, sonst in der gewählten Einheit als Floating-Point-Zahlen. Winkel werden immer als Floating-Point-Zahl in Radianten abgelegt. Daten werden durch Leerzeichen getrennt. Auf diese Weise sind die Daten kompatibel zu Spread-Sheet-Programmen wie Lotus123 oder Excel und können dort leicht eingelesen werden. Als Anzeige dafür, daß ein File angelegt wurde, erscheint eine Meldung in der kleinen Statusanzeige unter den jeweiligen Schaltern. Ein geöffneter Datenfile wird nur explizit auf Wunsch geschlossen. Daher sollten Sie nach der jeweiligen Messung die Datei durch Aufrufen des Befehles "Close Data File" wieder schließen. Bei Programmende (Quit picCOLOR) wird die Datei jedoch automatisch geschlossen. Geöffnete Files können von anderen Programmen gleichzeitig zum Lesen geöffnet werden. Ein versehentliches Überschreiben vorhandener Files wird durch eine Sicherheitsabfrage verhindert. Mit dem Befehl "Open Data File" kann immer nur ein allgemeiner Meß-Datenfile geöffnet werden, nämlich der sogenannte "System-Datenfile". Wenn Sie einen zweiten allgemeinen Meß-Datenfile öffnen wollen, so müssen Sie den ersten zuvor schließen. Spezielle systembedingte Datenfiles sind hiervon natürlich unabhängig. Wenn aus irgendeinem Grund mehrere allgemeine Meß-Datenfiles gleichzeitig benutzt werden sollen, so muß dies über ein MACRO-Programm geschehen.
Wenn die Option "Use Header Line" eingeschaltet ist, dann schreibt jede Funktion, die Daten auf dem File speichert, als erstes eine Überschriftszeile auf den File. Damit wird eine Zuordnung der Daten zu der erzeugenden Funktion und zu den jeweils angesprochenen Werten (x, y, distance, angle usw.) ermöglicht. Es ist zu beachten, daß die zugehörenden Datenwerte nicht unbedingt genau unter den jeweiligen Erklärungsdatentypen der Überschriftzeile zu liegen kommen. Dies würde durch zusätzliche Leer- oder Tabulatorzeichen nur den Speicherplatzbedarf der Datei erhöhen. Zur einfacheren Auswertung der Dateien von anderen Programmen beginnt jede Überschriftszeile mit einer in zwei Asterisken (*) eingefaßten Kontrollkodierung. Auch die Überschrift des Meß-Datenfiles erhält einen solchen Kontrollkode, nämlich "*01*". Im folgenden sind die Kontrollkodierungen für alle z. Zt. definierten Messungen aufgelistet.

*01* Überschrift Daten-File
*02* Skalierung in Pixel/Unit für x- und y-Richtung
*03* frei
*04* Pixelkoordinaten für Punktvermessung (immer Pixel-Einheiten)
*05* Streckenmessung mit zwei Fadenkreuzen
*06* Streckenmessung mit der Line-, Row- oder Column-Funktion
*07* Winkelmessung mit zwei Linien
*08* Koordinatenursprung bei der Vektorisierung (immer Pixel-Einheiten)
*09* Vektordaten bei der Vektorisierung
*10* Fläche, durch die Funktion "Select by Point" gemessen
*11* Fläche, durch die Funktion "Select by LUT" gemessen
*12* Fläche, durch Vektorzüge mittels Triangulation gemessen
*13* frei
*14* Objektdaten
*15* Objekt Liste leer
*16* Object Statistics (Type)
*17* Min Max Mean Variance Entropy
*18* Object Histogram
*19* frei
*20* PIV/PTV/FCM: cal_x, cal_y, org_x, org_y, rotation, y_down
*21* FCM: Alpha, Cam.Dist, Beta, Proj.Dist
*22* PIV/PTV/FCM: ROI: x1, y1, x2, y2
*23* FCM: ord, gradx, grady (calibration plane), ord, gx, gy (pos), ord, gx, gy (basic shift)
*24* PIV/PTV/FCM: parameters (step size, time step, ...)
*25* PIV/PTV/FCM: nx, ny
*26* PIV/PTV/FCM: PIV/FCM: x1, y1, dx, dy; PTV: count, dx, dy, x1, y1, x2, y2, match
*27* PIV/PTV/FCM: No PIV/PTV/FCM Data
*28* FCM Angle of Attack

*29* frei
*30* frei
*31* 3D-Position: Point, x, y, z
*32* 3D-Position: x, y, z, yaw, pitch, roll (oder theta psi phi, oder alpha beta gamma)
*33* frei
*34* frei
*35* Pos Tracking Start: Start Time...
*36* Pos Tracking: x0, y0, x1, y1, x2, y2, ....., Error Mask
*37* Pos Tracking Atop: End Time...
*38* Real Time Tracking: WorstErrorCode RingDelay IOStatus TimeCode
*39* Enable Tracking at "Time" (after sending Hotkey 0x8a)
*40* frei

*41* circle/ellpse: orgx orgy rad1 rad2 drad

*42* Vector List Empty

*43* frei

*44* frei

*45* frei

*46* frei

*47* frei

*48* frei

*49* frei
*50* Frequency Histrogram
*51* frei
*52* OCR Characters: n x[pix] y[pix] char1 aff1
*53* frei
*54* Statistische Punktwerte
*55* Gesamtüberschrift der statistischen Werte für Zeile/Spalte (Row/Column)
*56* Zeilenluminanzstatistik (Row)
*57* Spaltenluminanzstatistik (Column)
*58* Zeilen/Spaltenluminanzwerte
*59* Allgemeine Linienluminanz: Überschrift
*60* dito: Koordinaten der Linie
*61* dito: Grauwerte der Linie
*62* dito: statistische Werte der Linie
*63* dito: Histogramm der Linie
*64* dito: Fourierkoeffizienten
*65* Flächenhistogramm: Überschrift
*66* dito: Koordinaten der Fläche
*67* dito: Statistische Angaben der Fläche
*68* dito: Histogramm der Fläche
*69* Rel. Flächenbestimmung beim 2-Channel-Histogramm: Überschrift
*70* dito: Verwendete Bildspeicher
*71* dito: Koordinaten im 2-Channel-Histogramm und rel. Fläche
*72* frei
*73* frei
*74* frei
*75* Edges on Line: Count Firstref Width xs ys xe ye lendst ang
*76* Edges on Line: Radius[] Direction
*77* frei
*78* frei
*79* frei
*80* MACRO Function Call Return Values
*81* frei
*82* Hello from picCOLOR (TCP/IP Begrüssung)
*83* TCP/IP String No. # (TCP/IP Timer String)
*84* frei
*85* frei

*3D* n (3D Data sent by TCP/IP)

*2D* 2n (2D Data sent by TCP/IP)

Hinweis: Beachten Sie, daß verschiedene Funktionen, z. B. "Line Histogram" und "Area Histogram", eine Datei auch während der Ausführung dieser Funktionen erstellen können, wenn kein allgemeiner Meß-Datenfile geöffnet ist. Diese speziell geöffnete Datei wird dann jedoch sofort nach Beendigung der jeweiligen Funktion wieder geschlossen, so daß keine nachfolgend aufgerufenen Funktionen weitere (eventuell störende) Daten auf diesen File schreiben können. Wenn jedoch vor Ausführung dieser Funktionen ein Meß-Datenfile geöffnet war, so bleibt dieser auch nach Beendigung der Funktionen geöffnet und alle nachfolgend aufgerufenen Funktionen können diesen File benutzen.

Hinweis: Beim Abspeichern der Matrix-Daten der Funktionen "2-Channel-Histogram" und "Coocurrence" wird aus Speicherersparnis ein - eventuell zusätzlich zum bereits geöffneten Meß-Datenfile vorhandener - Binär-File mit 16-Bit Integer-Daten geöffnet. Eine Speicherung in ASCII-Daten würde den notwendigen Speicherplatz zu sehr beanspruchen.

Mit den Flags zum "Cache"-Handling kann bestimmt werden, auf welche Art WINDOWS die Datenfiles öffnet. Normalerweise sollte man hier nichts ändern, sondern die "Normal File"-Einstellung benutzen. Nur in speziellen Fällen kann es sinnvoll sein, z. B. die Cache-Zwischenspeicherung zu verhindern, indem etwa das "Write Through"-Flag gesetzt wird. Eine sehr hohe Steigerung der Festplattenschreibgeschwindigkeit kann unter Umständen erzielt werden, wenn beim Öffnen des Files die "Sequential-Scan" und "No_Buffering"-Flags gesetzt werden. Dies ist jedoch nur dann erlaubt, wenn die Filegröße exakt den Clustergrößen auf der Festplatte entsprechen, in der Regel Modulo 4kByte. Bei Bildspeichern mit nicht allzu krummen Dimensionen ist das in der Regel gegeben, so daß diese Möglichkeit zum schnelleren Bildabspeichern benutzt werden kann. Defaultmäßig ist dies für das Abspeichern von Video-Streams eingestellt. Es kann jedoch abgeschaltet werden, falls die Bildspeichergrößen diese Anforderungen nicht erfüllen. So hat z. B. der Bildspeicher bei einer Spezial-Hochgeschwindigkeitskamera mit der Auflösung von 648*484 Pixeln die Größe 313632 Bytes. Geteilt durch 4096 ergibt das 76.57 Blöcke der Größe 4K. Dies kann nicht mit den "Sequential-Scan" und "No_Buffering"-Flags abgespeichert werden.

8.17.2. Close Data File
Schließen des Measurement-Datenfiles. Es ist sehr wichtig, das Öffnen und Schließen von Datenfiles sehr sorgfältig vorzunehmen. Wenn man den Inhalt eines Datenfiles ansehen will, so empfiehlt es sich, diesen vorher zu schließen und dann erst mit anderen Programmen, z. B. einem Texteditor, wieder zum Lesen zu öffnen. Wenn der File nicht vorher im picCOLOR-Programm geschlossen wird, und man löscht ihn nach erfolgter Ansicht im Dateneditor, so ist dies dem picCOLOR-Programm nicht bekannt und es kann z. B. passieren, daß das picCOLOR-Programm weiterhin versucht, Daten auf diesen File zu schreiben, was natürlich zu Fehlern führen kann.
Der Datenfile wird automatisch nach einer Mitteilung geschlossen, wenn man das picCOLOR-Programm über die "Quit picCOLOR"-Funktion im Exit-Menü verläßt. Datenfiles, die in einem MACRO-Programm geöffnet wurden und nicht explizit geschlossen wurden, werden bei Beendigung des MACRO-Programmes nach Mitteilung geschlossen.

8.17.3. Open/Close StdOut / DDE / TCP/IP
Statt eines Datenfiles, der auf Diskette oder Festplatte gespeichert ist oder wird, kann wahlweise auch die Standard-Output-Schnittstelle, die DDE-Schnittstelle oder das TCP/IP-Protokoll zum Ablegen oder zum Einlesen von Daten benutzt werden. DDE (Dynamic Data Exchange) ist ein zwar schon etwas veraltetes Dateninterface von MicroSoft, es ist jedoch immer noch sehr gut geeignet, Daten zwischen verschiedenen Programmen auszutauschen. Mehr über die DDE-Schnittstelle finden Sie bei Charles Petzold: Programming Windows. Bei einer TCP/IP-Übertragung muß das Protokoll natürlich sinnvoll definiert werden. So muß z. B. TCP oder UDP Protokoll eingestellt werden und ein Socket muß geöffnet werden. Sowohl bei der Datenübertragung mit dem DDE-Protokoll als auch beim TCP/IP-Protokoll muß in der jeweiligen Dialogbox (DDE, TCP/IP) die Datenübertragung auch enabled werden, für Schreiben ist dies das jeweilige File-Transfer-Flag, für das Empfangen von Daten oder Befehlen das jeweilige "Read From DDE" oder "Read From TCP/IP"-Flag. Wichtig ist es, hier anzumerken, daß Daten nicht gleichzeitig auf File und auf StdOut, DDE und TCP/IP ausgegeben werden können. Es ist jedoch möglich, gleichzeitig auf StdOut, DDE und TCP/IP auszugeben. Für Echtzeitdaten, bei denen es oft notwendig ist, gleichzeitig auf File und eine andere Schnittstelle auszugeben, wurde diese Möglichkeit über spezielle Parameter geschaffen, die in der jeweiligen DDE- oder TCP/IP-Dialogbox eingestellt werden können. Z. Zt. sind dies 2D-, 3D-, Winkel- und Status-Daten aus dem REal-Time-Tracking-Extension-Modul.

8.17.4. Open/Close Communication (LPT/COM)

Daten können auch über die PC-eigenen parallelen oder seriellen Schnittstellen übertragen werden, z. B. an andere Computer, an Drucker oder andere steuerbare Geräte. Hierzu muß zunächst die gewünschte Schnittstelle ausgewählt werden. Z. Zt. stehen hier folgende Schnittstellen zur Verfügung: COM1, COM2, COM3, COM4, LPT1, LPT2. Danach kann die gewählte Schnittstelle geöffnet werden. Ob dann jeweils geschrieben oder gelesen wird, hängt von den benutzten Funktionen ab.

8.17.5. Print Data Headers
Üblicherweise werden für alle Daten, die auf einen Datenfile abgespeichert werden, Überschriftzeilen mitgespeichert, die im Klartext die Art der Daten angeben und damit beim Lesen der Daten zu einem leichteren Verständnis helfen. Wenn die Daten jedoch später automatisch durch andere Programme weiterverarbeitet werden sollen, so können diese Überschriften einem späteren Auswerteprogramm auch Probleme bereiten und sind daher mit dem hier gegebenen Schalter abschaltbar.

8.17.6. Data Format (Decimal Point, Delimiters)
Als Dezimalpunkt wird üblicherweise ein Punkt verwendet. Verschiedene Programme, z. B. einige deutsche Versionen von EXCEL, können Floating-Point-Zahlen jedoch nur mit Kommata als Dezimalpunkt einlesen. Daher kann unter bestimmten Bedingungen die Ausgabe von Kommata als Dezimalpunkt im picCOLOR-Programm gewählt werden. In dieser Einstellung ist dann auch das Einlesen von Datenfiles mit Kommata als Dezimalpunkt möglich. Dieses Spezialformat sollte jedoch nur im Notfall verwendet werden. Um immer daran zu erinnern, daß dieses spezielle Datenformat eingeschaltet ist, werden auch in der Bildschirmdarstellung alle Floating-Point-Zahlen mit Komma dargestellt und eine interaktive Dateneingabe, z. B. in einer Dialogbox, muß ebenfalls mit einem Komma statt eines Punktes erfolgen. Achtung: wenn die Ausgabe der Daten über den normalen System-Data-File durchgeführt wird, so wird intern die fprintf-Funktion verwendet, über die picCOLOR keinerlei Wahlmöglichkeit hat. Hier wird je nach Länder-Einstellung des Computersystemes immer die vordefinierte Ausgabeart verwendet. Wenn Floating-Point-Daten gezielt mit Punkt oder Komma gespeichert werden sollen, so muß dies über die write-Funktionen im MACRO-Programm erfolgen.
In MACRO-Programmen wird das Komma als Delimiter zwischen Funktions-Parametern verwendet. Hier ist eine Umdefinition nicht möglich. Das führt eventuell zu Einlesefehlern. In diesem Fall sollte man als Delimiter keine Kommata, sondern einfache Blanks (Leerzeichen) verwenden.
Auf ASCII-Files werden die Daten durch Blanks getrennt. Da dies ebenfalls bei bestimmten Programmen zu Problemen führen kann, ist geplant, hier auch Tabulator-Zeichen (TAB) wählen zu können. Dies wird in einer der nächsten Programmversionen anwählbar sein.

Achtung: Die Wahl des "Decimal Point" bestand beim alten picCOLOR-Programm. Unter Windows wird dieses Feature nicht direkt unterstützt, zumindest nicht in beliebigen Ausgaben. Unterstützt wird es z. Zt. bei der Ausgabe von FloatingPoint-Zahlen in Dialogboxen und bei der Ausgabe über die speziellen FloatingPoint-Ausgaberoutinen in einem MACRO-Programm. Alle internen Funktionen, die FloatingPoint-Zahlen ausgeben, benutzen die Standard-fprintf-Funktion, die leider nicht steuerbar ist. Auf Wunsch kann hier die alte steuerbare Funktion eingebaut werden, die jedoch einige Beschränkungen bei der Wahl der Ausgabeformate hat.

ASCII-Datenzeilen werden in gespeicherten Files immer mit CRLF (Carriage Return Line Feed) getrennt, so wie es unter WINDOWS üblich ist. Beim Einlesen von ASCII-Daten sollte dies auch eingehalten werden. Es wird immer eine 2 Byte lange Zeilentrennung erwartet. Wenn dies nicht der Fall ist, so wird in der derzeitigen Einleseroutine der dem Zeilentrennungszeichen folgende Charakter weggeworfen. Hier ist also Vorsicht geboten. Wenn also Datenzeilen nur mit CR oder LF getrennt sind, so darf auf keinen Fall das erste Zeichen einer neuen Zeile ein wichtiges Zeichen sein. Man kann es sich zur Regel machen, als erstes Zeichen jeder Zeile etwa ein Blank zu setzen, das dann in diesem Fall weggeworfen würde.

8.17.7. Data Editor (z.Zt. noch nicht verfügbar)
Ein Viewer und Editor für Meß-Datenfiles wird zur Verfügung gestellt. Er beinhaltet alle Editorfunktionen, die in der Edit-Funktion vom Betriebssystem (hier Windows) zur Verfügung gestellt werden. Es können beliebige ASCII-Files mit beliebigen Extensionen geladen und abgespeichert werden. Die Extension muß explizit angegeben werden. Achtung: Da der Editor z. Zt. nur ca 16kBytes an Daten Speichern kann, werden längere Datensätze einfach abgeschnitten. Es empfiehlt sich daher nicht, die eingelesenen Datensätze wieder abzuspeichern. Dieser Dateneditor ist nur zur einfachen Ansicht gedacht. Mit der "Ok"-Schaltfläche verlassen Sie den Editor, wobei sein Inhalt beibehalten wird. Die Schaltfläche "Cancel" löscht den Inhalt des Editors nach einer Sicherheitsabfrage.


9. User-Menu

Im User-Menü findet man die Möglichkeit, MACRO-Programme zu definieren und ablaufen zu lassen. Dies sind komplette Bearbeitungsabläufe, die durch einfachen Filenamen-Aufruf oder sogar durch Tastendruck gestartet werden können und komplexe Bildverarbeitungen mit vielen Zwischenschritten sehr vereinfachen können. Weiterhin findet man hier verschiedene benutzereigene Routinen, die entweder vom Benutzer oder durch das picCOLOR-Entwicklungsteam programmiert wurden. Mit dem "User"-Zusatzmodul, das sich in Planung befindet, erhalten Sie als Benutzer die Möglichkeit, das System vollständig auf Ihre Bedürfnisse einzustellen, neue Funktionen in der Programmiersprache "C" zu schreiben, die ganz speziell Ihre Probleme lösen. So kann z. B. eine eigene Benutzerführung verlangt sein, so daß ungeschultes Personal das System benutzen kann. Alle Funktionen des Systems können benutzt und eingebunden werden und es können vollständige verschachtelte Benutzermenüstrukturen entwickelt werden.

9.1. Macro Function

Record Macro
Macro Load & Start
-Single Step
-Show Only
-BatchMsgTime
-CopytoNote
----------------------
Edit Macro
Start from Edit
----------------------
Macro Function Table
- Macro Running...

----------------------

Send Macro Function

Show Macro Vars

----------------------

User Functions...

Das picCOLOR Programmsystem besitzt einen sehr leistungsfähigen Macro-Interpreter. Mit Hilfe dieses Interpreters können Bildbearbeitungsvorgänge, die aus mehreren verschiedenen Bearbeitungsschritten bestehen, völlig automatisch oder halbautomatisch, d. h. mit interaktiver Eingriffsmöglichkeit, ablaufen. Der Macro-Interpreter besteht aus einem Kommandointerpreter und einem Funktionsinterpreter. Die Kommandosprache setzt sich aus verschiedenen Strukturen zur Steuerung des Programmablaufes sowie aus Variablen-Zuweisungen zusammen. Der Funktionsinterpreter kann alle im picCOLOR Programm vorhandenen Funktionen ausführen. Es wird hierbei zwischen interaktiven Funktionen und sogenannten "Batch"-Funktionen, d. h. automatisch ohne Benutzereingriff ablaufenden Funktionen unterschieden. Einige Funktionen liegen in beiden Ausführungen vor: so kann z. B. zum Laden eines Bildes die Load-Dialogbox auf den Bildschirm gebracht werden, es kann jedoch auch direkt ein Lade-Kommando mit festem oder variablem Filenamen ausgeführt werden. Mit der Macrofunktion können nur Funktionen und Bearbeitungen ausgeführt werden, die im picCOLOR Programm (incl. den jeweils eingebundenen Zusatz-Modulen und dem USER-Modul) programmiert sind. Es können keine völlig neuen Funktionen definiert werden, außer es sind aus vorhandenen Funktionen zusammengesetzte Funktionsabläufe. Wenn völlig neue Funktionen benötigt werden, z. B. ein spezieller Konvolutionsfilter, so muß dieser vom Entwicklungsteam implementiert werden oder mit dem USER-Modul erstellt werden.
Der Kommando-Interpreter versteht folgende reservierte Namen: DEFINT, DEFFLT, IVAR, FVAR, STRING, FOR, ENDFOR, WHILE, ENDWHILE, IF, ELSE, ENDIF, CONCAT, LTOA, ITOA, FTOA, ETOA, SKIP, STOP, CALL, FUNCTION, RETURN, STRCMP, (GOTO), (LABEL).
Mit den im folgenden beschriebenen Funktionen kann ein Macro-Programm erstellt, geladen, getestet und ausgeführt werden. Eine genaue Beschreibung des Macro-Interpreters und aller verfügbaren Funktionen liegt mit dem speziellen MACRO-Handbuch im PDF-Format vor.

9.1.1. Record Macro
MACRO-Funktionen werden mit dem eingebauten Editor oder besser mit einem beliebigen Text-Editor geschrieben. Dies bringt den Vorteil mit sich, daß auch bestimmte Kontrollstrukturen (z. B. FOR-Loops und WHILE-Schleifen oder Entscheidungen mit IF-ELSE-ENDIF) programmiert werden können. Es muß beachtet werden, daß der MACRO-Funktionsfile die Extension "MCR" besitzt. Die Abspeicherung sollte im ASCII-Format erfolgen, wobei Zeilenumbrüche nach DOS/WINDOWS-Art oder UNIX-Art mit CRLF oder nur LF oder auch nur CR definiert sein dürfen. In zukünftigen Versionen ist geplant, einfache MACRO-Programme ohne Kontrollstrukturen auch automatisch während einer interaktiven Bildverarbeitungssitzung aufnehmen zu können. MACRO-Programme können praktisch beliebig lang sein (bis zur Grenze des internen Heap-Speichers). Z. Zt. wird jedoch beim Laden eines MACRO-Programmes nur 64 kBytes an Speicherplatz freigegeben. Dies kann auf Wunsch beliebig geändert werden.

9.1.2. Load & Start Macro
Hiermit kann ein MACRO-Programm in einer Dialogbox ausgewählt, von Disk geladen und gestartet werden. MACRO-Programme sind ASCII-Textfiles mit der Extension .MCR. Während des Einlesens werden MACRO-Programme teilweise vorkompiliert. Funktionsnamen werden durch kurze Bezeichnungen ersetzt, die direkt auf die Funktionen in einer internen Funktionstabelle verweisen und damit recht schnell ausgeführt werden können.

9.1.3. Show Only
Mit dem "Show Only"-Schalter kann der Ablauf eines MACRO-Programmes getestet werden. Es werden die Namen und Parameter aller Kommandos und Funktionen auf dem Bildschirm ausgegeben. Sie werden jedoch nicht ausgeführt. In bestimmten Fällen, wenn z. B. die Programmausführung von einer eingefragten Input-Variable oder vom Ergebnis einer Funktion abhängt, kann der Test natürlich nicht den wahren Macro-Ablauf wiedergeben. In diesem Fall sollte man das MACRO-Programm soweit wie möglich mit "Show Only" testen und debuggen und dann mit der "Single Step"-Funktion den tatsächlichen Funktionsablauf Schritt für Schritt testen.

9.1.4. Single Step
Bei Einschalten des "Single Step"-Schalters wird vor der Ausführung jedes Kommandos oder jeder Funktion zunächst wie bei der Funktion "Show Only" der Name und die Parameter angezeigt. Nach Bestätigung wird die Funktion dann ausgeführt.

9.1.5. Message-Time
Viele Funktionen geben kurze Meldungen zur Information des Benutzers über eine erfolgreiche oder nicht erfolgreiche Ausführung aus. Diese müssen normalerweise vom Benutzer mit Maus oder Tastatur bestätigt werden. Dies würde natürlich einen vollautomatischen Ablauf eines MACRO-Programmes stören. Daher kann eingestellt werden, daß die Meldungen automatisch nach bestimmter Zeit verschwinden und positiv, d. h. wie mit der linken Maustaste quittiert werden. Diese Funktion wird nur vom Macro aus zugelassen, indem die Macro-Funktion "msg_interactive time" aufgerufen wird. Die "time"-Variable gibt dabei die Zeit in Sekunden an, -1 ist unendlich.

9.1.6. Copy to Note
Wenn der "Copy_to_Note"-Schalter eingeschaltet ist, wird das eingelesene und vorkompilierte MACRO-Programm zur späteren Ansicht und Inspektion vor der Ausführung in den Notebook- (gleich dem MACRO- oder Meßdaten-Editor)-Speicher kopiert. Hierbei ist zu beachten, daß ein MACRO-Programm während des Ladens "vorkompiliert" wird, um einen wesentlich schnelleren Programmablauf zu gewährleisten. Hierbei werden die Funktionsnamen und eventuell auch die Kommando-Namen speziell kodiert. Alle Funktionsnamen erhalten eine Kurzbezeichnung mit dem Buchstaben "F" und daran anschließend einer laufenden Nummer, nämlich der Nummer in der Macro-Funktionstabelle. Vorsicht: da der Notebookspeicher z. Zt. in der Länge begrenzt ist, kann es sein, daß das Macro-Programm abgeschnitten wird und dann direkt aus dem Editor nicht mehr lauffähig ist. Diese Funktion dient eigentlich nur zur Entwicklung und Überprüfung des Macro-Interpreters für das Entwicklungsteam. Es stellte sich jedoch auch als sehr nützlich für die schnelle Entwicklung und den Test kurzer Macro-Programme heraus und wird daher in bestimmten Programmversionen allgemein zur Verfügung gestellt.

9.1.7. Edit Macro
Mit dem eingebauten Notebook-Editor des picCOLOR-Programmes kann ein Macro-Programm erstellt und editiert werden. Dieser Editor entspricht dem üblichen Edit-Fenster unter Windows. Die automatisch benutzte Extension für Macro-Programmfiles ist ".MCR". Sie braucht beim Laden oder Abspeichern nicht angegeben zu werden. Mit ^F (cntrl F oder Strg F auf deutschen Tastaturen) können Funktionsnamen, die zuvor aus der Macro-Funktionstabelle mit Doppelklick ausgewählt wurden, an die aktuelle Cursorposition eingefügt werden. Hierbei werden Platzhalter für die Funktionsparameter miteingetragen, die durch Werte oder Variable ersetzt werden müssen. Mit der Funktion "Start from Editor" kann die Funktion direkt getestet werden, ohne daß sie zuvor auf Festplatte abgespeichert werden muß. Achtung: diese Funktion ist nicht in allen Versionen des picCOLOR-Programmes verfügbar!

9.1.8. Start from Editor
Ein im MACRO-Editor befindliches MACRO-Programm wird direkt gestartet. Dies kann auch ein vorkompiliertes Programm sein, das über den Befehl "Copy to Note" dort eingetragen worden ist. Achtung: diese Funktion ist nicht in allen Versionen des picCOLOR-Programmes verfügbar!

9.1.9. Macro-Funktionstabelle

Hier wird eine Tabelle gezeigt, in der alle verfügbaren Macro-Funktionen (z. Zt. nicht die Funktionen des USER-Modules), geordnet nach Themenbereichen, aufgeführt sind. Die Art und Anzahl ihrer Parameter wird durch die Abkürzungen "i1..i4, f1..f2, string1" und durch eine zusätzliche kurze Namensliste der Parameter angedeutet.

9.1.10. MACRO Running...

Im Multitasking Windows System können natürlich mehrere Prozesse gleichzeitig ablaufen. Dies gilt prinzipiell auch für MACRO-Programme. In der normalen Programm-Version ist dies jedoch nur mit Einschränkung zugelassen. Ebenso sollte man auch nicht während eines MACRO-Ablaufes andere Funktionen aufrufen. Das Ergebnis wäre nicht vorhersehbar. Im Zweifelsfall kann man unter diesem Menüppunkt nachsehen, ob noch ein MACRO aktiv ist, also im Hintergrund abläuft.

9.1.11. Send MACRO Function

Eine MACRO-Funktion kann hier interaktiv als Text-String eingegeben werden, inclusive aller Parameter. Nach Drücken der "OK"-Taste wird diese Funktion ausgeführt. Hiermit können Funktionen ausgeführt werden, die nicht über das interaktive Menü erreichbar sind.

9.1.12. Show MACRO Variables

In einer Dialogbox werden die Werte aller Funktionsrückgabewerte angezeigt. Dies ist nicht nur nach Ausführen des "Send MACRO Function"-Befehls gültig, sondern nach jeder beliebigen picCOLOR-Funktion, die interactiv, über ein Macro-Programm oder über die DDE- oder TCP/IP-Schnittstelle aufgerufen wurde, soweit diese irgendwelche Macro-Funktionswerte übergibt. Dies sind die 10 Integervariablen IVAR[10]..[19], die FloatingPoint-Werte FVAR[10]..[19] sowie der STRING[1]. Im String[0] steht bei Ausführung über DDE oder TCP/IP der Name der gesendeten Funktion. Andere Macro-Variable können von picCOLOR-Funktionen z. Zt. nicht verändert werden. Interaktive Funktionsaufrufe sowie laufende Macro-Programme setzen allerdings nicht alle Macro-Variablen für jede neue Funktion zurück, d. h. es werden immer nur die notwendigen Variablen überschrieben, alle anderen bleiben erhalten. Bei Aufruf über DDE oder TCP/IP werden jedoch alle Variable vor dem Funktionsaufruf zurückgesetzt.

*9.2. User Modul
Dieses Zusatzmodul ist in Planung begriffen. Es wird dem Benutzer ermöglichen, eigene Funktionen und Prozeduren in der Programmiersprache "C" zu schreiben und in das picCOLOR Programm einzubinden. Diese Funktionen verhalten sich dann ebenso wie die originalen picCOLOR-Funktionen, d. h. sie können in eigenen Menüstrukturen aufgeführt sein, sie können das eingebaute kontextsensitive Hilfesystem benutzen, sie können alle in picCOLOR vorhandenen Funktionen aufrufen und alle picCOLOR-Variablen und Speicherbereiche nutzen.
Das User Programming Modul besteht aus einer kompletten picCOLOR-Funktionsbibliothek mit Beschreibung aller Funktionen und ihrer Parameter, aus einer Beschreibung aller verwendbaren picCOLOR-Variablen sowie den notwendigen "Make"-Files zum Übersetzen ihrer in "C" geschriebenen Funktionen und zur Einbindung in das picCOLOR Programm.
Zusätzlich enthält das User Programming Modul eine Sammlung von Programmierbeispielen in Form von übersetzbaren und ausführbaren "Source-Code"-Fragmenten, die es dem Benutzer ermöglichen, sich schnell in die picCOLOR Programmierumgebung einzuarbeiten. Durch Kopieren dieser Programmierbeispiele und einfache Abwandlung ihrer Funktionskerne kann der Benutzer schnell eigene Funktionen erstellen und austesten. Folgende Programmierbeispiele werden geliefert:

  • - Einfache Veränderung von Bildpunkten im definierten Bildausschnitt (Region of Interest: ROI);

  • - Aufbau von Nachbarschaftsfunktionen (Konvolutionen) in der definierten ROI;

  • - Ausgabe von Meldungen auf dem Bildschirm;

  • - Ausgabe von Ergebnissen in Graphik-Fenstern;

  • - Ein- und Ausgabe von Funktionsparametern in Dialogfenstern;

  • - Benutzung der internen Bildspeicher und der Frequenzbereich-Datenfelder;

  • - Beispiele zur Benutzung des kontextsensitiven Hilfesystemes;

  • - Aufbau von Untermenüs usw.

Da die Programmierung eigener Funktionen sicherlich eine gewisse Einarbeitungszeit benötigt, sollte man auf jeden Fall zuvor beim picCOLOR-Entwicklungsteam anfragen. Oft ist die gewünschte Funktion bereits geplant und/oder kann in kurzer Zeit zu günstigen Konditionen implementiert werden.


10. Presentation Menu

10. Graphics Menu

ImagePaint
------------------------
Set Point Marker
Draw Line

Draw Circle

Draw Ellipse
Flood Fill Area
Stamp Tool
Retouch Pen Tool
Draw Text
Load Font
------------------------
Overlay Functions
3D Surface Plot
Stereo Display

Graphische Bildbearbeitung kann ein wichtiges Thema sein für die allgemeine Bildverarbeitung und Bildanalyse: dabei geht es nicht nur darum, fertige Resultate auf die beste Weise darzustellen und mit etwas Text zu erläutern, sondern es werden hier zusätzlich spezielle Funktionen zur graphischen Aufbearbeitung von Bildern gegeben, die, wie z. B. bei den Retuschierungsfunktionen und den Stempelfunktionen, erst eine sinnvolle Auswertung ermöglichen. Die Funktionen dieses Graphikmodules verändern den Bildspeicher - die Undo-Funktion ist aktiv.

Neben dem mächtigen Graphikmodul "ImagePaint" werden im Graphics-Menu einige wichtige Graphikfunktionen einzeln aufgeführt. Zusätzlich befinden sich hier verschiedene 3D-Darstellungsmethoden. Dies ist z. Zt. die 3D-Höhenbilddarstellung sowie die 3D-Darstellung von Vektorfeldern (siehe auch "Measurement/Geometry/Vectorize"-Menü). Weiterhin findet man unter Umständen auch noch Overlay-Funktionen, mit denen z. B. ein Gitter über den Bildspeicher gelegt werden kann, daß für eine einfache Bildbeurteilung sinnvoll sein kann.

10.1. ImagePaint

10.1.1. ImagePaint Toolbox

Mit dem Graphikmodul "ImagePaint" können Sie Farbgraphiken zeichnen oder editieren. Sie können wichtige Bildteile mit graphischen Elementen markieren oder hervorheben und Bilder mit Texten versehen. Z. Zt. ist dieses Modul in einer noch recht einfachen vorläufigen Version verfügbar. Wenn Funktionen benötigt werden, die noch nicht zur Verfügung gestellt wurden, kann das Bild alternativ über die Zwischenablage in das Windows-Paint-Programm oder ein anderes Graphikprogramm übertragen, dort bearbeitet, und von dort dann abgespeichert oder später wieder zurück ins picCOLOR-Programm zurück übertragen werden. Vorsicht: bei der Übertragung über die Zwischenablage kann es jedoch durch die erforderliche zweimalige Umwandlung zwischen unterschiedlichen Farbsystemen zu Grauwertfehlern kommen, die von der gewählten Bildschirmfarbtiefe abhängen. Wenn dies auf keinen Fall geschehen darf, sollte man das Bild besser als TIF-Bild abspeichern und so in ein anderes Bildbearbeitungsprogramm übertragen. ImagePaint erscheint als Dialogbox mit Buttons für die einzelnen Graphikfunktionen und der Einstellung der Vordergrund- und Hintergrundfarbe (Graustufe), jedoch nur, wenn keine andere Spezial-Toolbox geöffnet ist. Alle Funktionen des ImagePaint-Modules sind zusätzlich auch noch als einzeln aufrufbare Funktionen weiter unten im Menü aufgeführt. Damit sind dann alle Graphikfunktionen auch anwählbar, wenn eine Spezial-Toolbox auf dem Bildschirm ist.

10.1.2. Set Point Marker
Eine sehr wichtige Anwendung vor einer Vermessung ist das Einfügen von kleinen, gut sichtbaren Marken im Bild, die ein späteres punktgenaues Anfahren erleichtern. Ein Beispiel ist etwa das Markieren von Paßpunkten in zwei Bildern, wenn eine geometrische Entzerrung über Splines oder lineare Polynome vorgenommen werden soll. Es werden Einzelpunkte mit einem Pixelwert von [0..255] gesetzt. Diese Funktion unterscheidet sich von der Zeichenstiftfunktion des ImagePaint-Modules dadurch, daß sie Pixel-Koordinaten anzeigt. Mit dieser Funktion können auch Freihandlinien gezeichnet werden, die jedoch nicht notwendigerweise verbundene Linienzüge sind (je nach Mausbewegungsgeschwindigkeit).

10.1.3. Draw Line

Hier können Linien (oder Vektoren) mit beliebiger Graustufe und Breite gezogen werden. Dazu wird nach Eingabe von Graustufe und Breite ein Vektor in Gummiband-Technik aufgezogen und mit einem weiteren Mausklick akzeptiert. Während der Gummibanddefinition der Linie wird diese nur mit einem Pixel Breite dargestellt. Erst nach dem akzeptierenden Mausklick wird dann mit voller Breite gezeichnet. Breite Linien können unter bestimmten Winkeln aufgrund des Zeichenalgorithmus' Pixellöcher aufweisen. Mit der rechten Maustaste wird der letzte eingegebene Vektor nicht akzeptiert. Mit dieser Funktion können mehrere Vektoren nacheinander gezeichnet werden. Mit einem rechten Mausklick nach einem akzeptierten Vektor oder einem zweiten rechtem Mausklick nach einem nicht akzeptierten Vektor wird die Funktion beendet.

10.1.4. Draw Circle

Hier können Kreise und Ellipsen parallel zu den Hauptachsen gezeichnet werden. Hierzu wird zunächst eine Ecke des umschreibenden Rechecks mit einem Mausklick definiert, dann wird das komplette umschreibende Quadrat oder Rechteck aufgezogen. Danach erscheint sofort der Kreis oder die Ellipse auf dem Bildschirm.

10.1.5. Draw Ellipse

Hier können Ellipsen in beliebiger Lage gezeichnet werden. Hierzu wird zunächst der Mittelpunkt mit einem rechten Mausklick definiert, dann wird die große Halbachse per linker Maustaste in Gummibandtechnik an beliebiger Stelle des Bildes aufgezogen, dann anschließend die kleine Halbachse ebenfalls in Gummibandtechnik mit der linken Maustaste, und danach erscheint die Ellipse.

10.1.6. Flood Fill Area

Nach Angabe einer Graustufe zum Füllen (Foreground Color) wird ein Fadenkreuz auf den Bildschirm gebracht. Hiermit kann der Ausgangspunkt zum Füllen angegeben werden. Es wird jeweils bis zum Rand einer gleichmäßig gefärbten Fläche gefüllt, d. h. bis sich der Grauwert ändert. Mit anderen Worten werden alle zusammenhängenden Pixel mit gleichem Grauwert wie der Anfangswert gefüllt.

10.1.7. Stamp Tool

Ein weiteres Werkzeug ist der Stempel. Hiermit kann - sowohl mit scharfen als auch weichen Rändern - ein kreisrunder Bildbereich mit wählbarem Radius auf einen anderen kopiert (gestempelt) werden. Nach Funktionsanwahl verändert sich der Mauszeiger in einen kleinen Kreis mit etwa dem gewählten Stempeldurchmesser. Der Stempeldurchmesser kann bis zu 16 Pixel groß sein. Beim ersten Mausklick wird ein Ausgangs-Gebiet angewählt, beim zweiten Mausklick ein Ziel-Gebiet, in das der Inhalt des Augangsgebietes kopiert wird. Aus den Orten des ersten und des zweiten Mausklickes berechnet sich das System Abstand und Winkel der Stempelentfernung. Bei jedem weiteren Mausklick wird dieser Abstand und Winkel benutzt, um den Ort zu ermitteln, der als Kopiervorlage auf die angewählte Stelle gestempelt werden soll. Diese Funktion dient dazu, bestimmte gestörte Bildstellen mit ähnlichen Grauwerten aus der näheren Umgebung zu korrigieren. Interessant ist auch die Möglichkeit, hierbei von einem Bildspeicher in einen anderen zu stempeln. Hierbei ist es in der Regel allerdings nicht gewünscht, daß eine örtliche Verschiebung (Displacement) zwischen dem Stempeldefinitionsort und dem Stempelziel benutzt wird. Daher wird, wenn das System eine Verschiebung zwischen dem erstem Mausklick und dem zweiten Mausklick feststellt, nachgefragt, ob diese Verschiebung tatsächlich erwünscht ist. Wenn diese Frage (die in der Statuszeile gestellt wird) mit der rechten Maustaste negativ beantwortet wird, so wird die Verschiebung auf Null zurückgesetzt. Damit kann man dann pixelgenau von einem Bildspeicher in einen anderen Bildspeicher stempeln.

10.1.8. Retouch Tools

Hierbei können Sprühdosen- und Radiergummi-ähnliche Effekte erzeugt werden. Es wird immer in einem kreisrunden Bereich retouchiert. Der Radius kann zwischen 0 (1 Pixel wird geändert) und 16 gewählt werden. Die Ränder können scharf oder weich (1+cos-förmig) eingestellt werden. Es kann gelöscht, auf den Hintergrund aufaddiert oder davon subtrahiert werden und es kann auch mit dem Hintergrund multipliziert werden. Die Funktionen sind normalerweise (bei nicht zu großem Radius bis etwa 9) schnell genug, daß interaktiv und kontinuierlich retouchiert werden kann. So stellt man z. B. zum Aufhellen kleinerer Bildbereiche auf Multiplikation mit dem Hintergrund bei einem Multiplikationsfaktor von 1.1 und weichen Rändern ein. Jeder Mausklick auf eine Stelle im Bild erhellt diese Stelle um 10% (Faktor 1.1).

10.1.9. Draw Text

Alle Schriften des alten picCOLOR-Programmes (V3.3) wurden übernommen. Hiermit steht eine erstaunliche Vielzahl von Pixel-Fonts in unterschiedlichen Größen zur Verfügung. Der Text kann mit Angabe von Vordergrund- und Hintergrundgraustufe gezeichnet werden. Hierbei kann sowohl die Vordergrundfarbe als auch die Hintergrundfarbe als transparent angegeben werden. Hierzu muß "-1" als Farbe eingegeben werden. Dann wird mit einem Fadenkreuz der linke obere Ausgangspunkt des Textzuges bestimmt. Das Fadenkreuz wird mit der rechten Maustaste bestätigt. Schließlich wird der Text als ASCII-Characterzug eingegeben. Der Text wird im aktuellen Font erzeugt. Wenn noch kein Font geladen wurde, wird ein einfacher System-Font verwendet.

10.1.10. Load Font
Das Laden eines bestimmten Fonts wird z. Zt. noch über die Angabe des Font-Namens durchgeführt. In Zukunft wird es möglich sein, den Font aus einer Tabelle auszusuchen. Die Font-Filenamen finden Sie im PICCOLOR\PICCFONT-Verzeichnis. Die folgenden Text-Fonts sind z. Zt. verfügbar (die angegebenen Zahlen stellen die Fontgröße in Pixelhöhen dar):

Times Roman | 11, 14, 16, 18, 20, 22, 26, 30, 33, 38, 52, 78
Helvetica | 11, 15, 18, 20, 24, 28, 43, 54
System Font | 16, 24
Art Nouveau | 22, 28, 41, 54, 82
Bauhaus Medium | 11, 14, 17, 19, 22, 24, 28, 43, 56
Cloister Black | 27, 40
Dom Casual | 23, 25, 30, 42, 46
Park Avenue | 15, 18, 21, 23, 25, 28, 43, 54
Typ Writer Elite | 11, 14, 16, 18, 20, 22, 26, 38
Arrows | 25, 31
Austin | 11, 15, 20, 25, 38, 50
Corpus Christi | 15, 16, 26, 29, 49
Devons | 23, 28, 41
Fargo | 22, 26, 38
Galves | 12, 15, 21, 22, 28, 42
Houston | 14, 17, 20, 26, 38, 50
Lucken | 07
Math Symbols | 16, 19, 24, 32, 44, 64
Sanant | 22, 28, 40
Tampa | 18, 22, 30, 42

Der System Font ist ein vollständiger IBM-Zeichensatz mit vielen Sonderzeichen und Umlauten.
Die Fonts Math-Symbols und Arrows enthalten weitere Sonderzeichen und griechische Buchstaben.

*10.2. Overlay Functions (im Sequenz-Zusatzmodul)

Mit den Overlay-Funktionen können bestimmte Gittermuster über Bildbereiche gezogen werden, die nicht im Bildspeicher existieren, sondern nur auf dem Bildschirm sichtbar sind. Dies kann sehr sinnvoll sein, um Bildbereiche grob zu vermessen oder zu beurteilen, z. B. ob eine Teilchenverteilung in bestimmten Bildbereichen etwa gleichmäßig ist. Die Overlay-Funktionen sind z. Zt. nur für Sequenzen definiert.

*10.3. 3D-Surface Plot (im Stereo-Zusatzmodul)

Siehe Stereo-Zusatzmodul (Kapitel 8.7.)

*10.4. Stereo Display (im Stereo-Zusatzmodul)

Siehe Stereo-Zusatzmodul (Kapitel 8.7.)

*10.5. Stereo Control (im ControlPanel oder im Stereo-Zusatzmodul)

Siehe Stereo-Control-Menü (im Control Panel Kapitel 6.13.11.) oder Stereo-Zusatzmodul (Kapitel 8.7. oder Kapitel 14.)


11. Window Menu

Im "Windows"-Menü kann die Lage und Anordnung der definierten Bildspeicher auf dem Bildschirm im Hauptfenster geändert werden und außerdem ein Zoom-Modus eingestellt werden.

11.1. Arrange Actual Window

Da es schwierig sein kann, sehr große Bilder auf dem Bildschirm, d. h. im picCOLOR-Hauptfenster zu arrangieren, wurde die "Arrange Actual Window"-Funktion zur Verfügung gestellt. Hier kann in einer Dialogbox die genaue Lage und Größe des aktuellen Bildfensters und auch des picCOLOR-Hauptfensters eingestellt werden. In der Regel wird diese Funktion allerdings wohl eher für die automatische Fensteranordnung von MACRO-Programmen aus benutzt.

11.2 Fit Window Position

Hier kann die Lage eines Bildspeichers der eines anderen Bildspeichers angepaßt werden. Diese Bildspeicher liegen dann sozusagen direkt hintereinander und können damit beim Umschalten mit den Hot-Key-Tasten "1".."9" pixelgenau verglichen werden. Achtung: z. Zt. werden die Bildspeicher dabei jedoch noch auf maximale Größe gesetzt, d. h. eine Justage der Größe und ein eventuelles Panning oder Scrolling geht verloren.

11.3. Toggle Zoom Out Mode

Es wurde ein "ZoomOut"-Modus eingeführt, mit dem nach Umschaltung Bildinhalte in beliebiger verkleinerter Größe dargestellt werden können. Dies ist notwendig, um sehr große Bildspeicher komplett auch auf einem Bildschirm mit geringer Auflösung darstellen zu können. Solche großen Bildspeicher werden z. B. für moderne hochauflösende Kameras oder für hochauflösende Scannerbilder benötigt. Bei Einschalten des ZoomOut-Modus kann man entscheiden, das Seitenverhältnis der Bildspeicher bei Größenänderung beizubehalten (dies ist die Defaulteinstellung) oder auch eine beliebige Bildgröße einstellen zu können. Die nachfolgende Größeneinstellung wird dann mit der linken Maustaste durchgeführt, oder aber natürlich mit der oben beschriebenen Arrange Actual Window Funktion.

11.4. Maximize/Cascade/Tile/Arrange Icons

Wie in anderen Windows-Programmen sind dabei eine kaskadierte Darstellung (Cascade) der Bildfenster oder eine gekachelte Darstellung (Tile) möglich. Besonders die maximierte Darstellung ist bei der Bearbeitung mehrerer Bilder sinnvoll, da hierbei alle Bildfenster exakt übereinanderliegen und mit der Umschaltung über die Fensteranwahlfunktion oder über die Hot-Key-Tasten "1".."9" auch kleinste Änderungen oder Unterschiede in den einzelnen Bildern festgestellt und inspiziert werden können. Diese maximierte Darstellung erreicht man z. B. auch über einen Doppelklick auf die Titelleiste des Fensters. Hierbei werden dann automatisch alle definierten Bildfenster maximiert.

11.5. List of MDI Child Windows

Weiter unten im "Window"-Menü werden alle definierten Bildspeicher aufgeführt. Alle diese Bildspeicher sind als Child-Windows des Multiple-Document-HauptFensters definiert und können hier aktiviert werden. In einer Zusatzinformation wird hier auch der Status der Bildspeicher angezeigt. Das kann beim True Color Bild der aktuell angezeigte Farbanteil sein, oder es kann angezeigt werden, ob sich das Bild im Zoomout-Modus befindet.


12. Help Menu

About picCOLOR
-------------------------------

Debug Messages
Basic Help
Online Manual

-------------------------------

Toolbox

Bei einem komplexen Programm wie picCOLOR ist eine Hilfefunktion absolut notwendig. Neben der einfachen "Basic Help"-Funktion, die lediglich die grundsätzliche Handhabung des Programmes erklärt, ist mit dem "Online Manual", das entweder im Windows-Help-Format oder als HTML-Dokument zur Verfügung steht, das hier vorliegende komplette Referenz-Manual auf dem Bildschirm verfügbar und kann mit den normalen Windows-Funktionen oder, beim HTML-Help, mit einem normalen Internet-Browser eingesehen werden. Zusätzlich ist hier auch noch die häufig gebrauchte "Toolbox" aufrufbar, die einfacher jedoch im Bildmodus mit der rechten Maustaste hervorgebracht werden kann.

12.1. About picCOLOR

Es wird die Versionsnummer der Software und die Seriennummer Ihrer Softwareversion angezeigt. Weiter unten im Scroll-Fenster können Sie nachsehen, welche Software-Erweiterungsmodule implementiert sind und ob oder welche Bildeinlesekarten oder I/O-Karten von Ihrer Programmversion unterstützt werden. Der "www.fibus.org"-Schalter ruft den im System installierten Web-Browser auf und versucht, die FIBUS-Internet-Seiten zu öffnen.

12.2. Debug Messages
Einige Funktionen des picCOLOR-Programmes können auf Wunsch (in der Regel als Message-Boxen oder auch als Information in der Status-Zeile) zusätzliche Meldungen ausgeben, die bei der Fehlersuche hilfreich sein können.

12.3. Basic Help
Hier finden Sie eine sehr kurze Erklärung der Bedienung der graphischen Benutzeroberfläche des picCOLOR-Programmes und die Unterschiede zur üblichen Windows-GUI.

12.4. Online Manual
Mit dieser Funktion kann das vorliegende Referenz-Handbuch dargestellt und durchgeblättert werden. Je nach Lieferart ist dies entweder ein .CHM-File, der mit dem normalen WINDOWS-Help-System geöffnet wird, oder ein HTML-Dokument, das mit Hilfe eines Internet-Browsers geöffnet wird. Hier wird der im Windows-System defaultmäßig eingestellte Browser benutzt, also z. B. der Microsoft Internet Explorer, Opera, Netscape, Mozilla, oder FireFox. Zur Darstellung des Indexes und der Verzeichnisstruktur muß der Browser Java-fähig sein.

12.5. Toolbox

Die allgemeine Toolbox schließt wichtige Funktionen ein, die oft benötigt werden, z. B. Laden und Abspeichern von Bildern, Ändern der Look-Up-Table, ein Notebook, Region-Of-Interest (ROI) Änderungen und Definitionen, File-Informationen usw. Eine genauere Beschreibung findet man in Kapitel 13.


13. Toolbox

Information
Output LUT
Undo (U)
Notebook

----------------------------
Copy Image Buffer

Copy/Move Functions
Clear Image Buffer
Clear Functions
Define ROI

Image File Info
Save Image As

Load Image

----------------------------
Show All Buffers
Second Source
Pyramid Level
Meas. Control

----------------------------

Macro Load and Start

Mit der rechten Maustaste im Bild, d. h. wenn kein Menü geöffnet ist, erhält man eine Toolbox als Pop-Up-Menü mit einer Fülle von wichtigen, häufig benutzten Routinen. Wichtige Funktionen der Toolbox sind z. B. die Programmierung der Color-Look-Up-Table (Farbtabelle, LUT), Save- und Load-Kommandos, verschiedene Lösch- und Kopierbefehle, ein Notebook, usw. Es kann nicht garantiert werden, daß alle hier aufgeführten Funktionen tatsächlich in der Toolbox gefunden werden. Manche Funktionen werden, wenn sie z. B. nicht allzuoft gebraucht werden, aus der Toolbox in ein entsprechendes anderes Menü übertragen.

13.1. Information

Hier werden in einer Tabelle Informationen über das aktuelle Bild ausgegeben, z. B. Bildspeichergröße, Bit-Tiefe, Farbpaletteneinstellung usw.

13.2. Output LUT (Color Look-Up-Table)

Einstellung der Farbtabelle, um Falschfarben darzustellen.

13.3. Undo

Die "Undo"-Funktion ist z. Zt. nur für normale Bildspeicher implementiert, nicht jedoch für True-Color-Farbbilder oder Sequenzen bzw. 3D-Bilder.

13.4. ROI Definition

Hier sind verschiedene Funktionen zur Einstellung der Region of Interest (ROI) untergebracht.

13.5. Copy Image Buffer

Kopieren von ganzen Bildspeichern.

13.6. Copy/Move Functions

Kopieren und Verschieben von Bildausschnitten.

13.7. Clear Functions

Funktionen zum Löschen gesamter Bildinhalte oder bestimmter Bildausschnitte.

13.8. Load Image

Laden eines Bildes von der Festplatte oder von Diskette (siehe "Load Image" im "Image"-Menü).

13.9. Save Image As

Abspeichern eines Bildes oder eines Bildausschnittes auf Festplatte oder auf Diskette (siehe "Save Image" im "Image"-Menü).

13.10. Show All Images

Mit dieser Funktion können Sie eine Übersicht über alle definierten Bildspeicher erhalten. Dazu werden die Bildspeicher im verkleinerten Maßstab (in der Regel mit 1/4 der Originalgröße) zusammen mit ihrer Bildnummer auf dem Bildschirm angezeigt. Das erste Bild links oben ist der Undo-Buffer mit der Bildnummer "0". Das Ergebnisbild dieser Funktion ist ein "uneigentliches Bild". Nach Ausführen der Funktion ist kein normaler Bildspeicher aktiviert - bevor Sie weiterarbeiten, sollten Sie erst einen Bildspeicher von 1 bis N aktivieren. Dies kann durch Anklicken des gewünschten Bildspeichers im Übersichtsbild geschehen.

13.11. Set Second Source

Bei Bearbeitung von Bildern mit dualen Funktionen, d. h. Funktionen mit zwei Bildern, kann hiermit das zweite Bild definiert werden. Das erste Bild ist immer das aktuelle, angezeigte Bild. Solche Funktionen sind z. B. die Addition oder Subtraktion zweier Bilder oder das Erstellen eines 2-kanaligen Histogrammes. In Menüs, in denen das Setzen des "Second Source"-Bildes notwendig ist, ist diese Funktion üblicherweise zusätzlich aufgeführt, so daß zur Definition die Toolbox normalerweise nicht aufgerufen werden muß.

13.12. Pyramid Level

Wenn eine Bildpyramide erstellt wurde, so kann man hier die aktuelle ROI auf einen anderen Level, d. h. ein bestimmtes Teilbild der Pyramide zu setzen. Achtung: die aktuellen ROI-Koordinaten werden hierbei überschrieben. Hierzu gibt es z. Zt. noch keine Undo-Funktion.

13.13. Measurement Control

Im Measurement-Control-Menü können Funktionen und Einstellungen zur Pixelvermessung und Datenausgabe gewählt werden. Alle Funktionen des "Measurement-Control"-Menü sind ausführlich im Kapitel 8.16. beschrieben.

13.14. Notebook (mit Text-Editor)

Hier steht Ihnen ein (begrenzt leistungsfähiger) Textspeicher für kurze Notizen zur Verfügung. Dies können Ideen sein, die Sie hier zur späteren Verwendung eintragen können, es können jedoch auch kurze Erklärungstexte sein, die zu einem Bild gehören und mit dem Bild zusammen abgespeichert werden (siehe "Save"- und "Load"-Funktion). Beim Laden eines Bildes, das zusammen mit einem erklärenden Text im TIF-Format abgespeichert wurde, wird dieser Text in den Notebook-Speicher geschrieben und es wird eine Meldung ausgegeben, daß der Notebookspeicher nun die Bildbeschreibung enthält. Achtung: der vorherige Inhalt wird dabei normalerweise nicht gelöscht, sondern der neue Text wird einfach an den alten Text angehängt. Der Inhalt des Notebook-Speichers kann mit den Schaltflächen "Save" und "Load" direkt als ASCII-File auf der Festplatte abgespeichert werden oder von Festplatte hereingeladen werden. Es wird ein Filename eingefragt. Das System hängt automatisch die Extension ".TXT" an den Filenamen an. Mit der Schaltfläche "Ok" wird die Dialogbox normal geschlossen und der Text bleibt im Notebook-Speicher. Mit der Schaltfläche "Clear" wird der gesamte Speicher nach einer Sicherheitsabfrage gelöscht. Die Funktionen "Global Cut", "Global Copy" und "Global Paste" sind noch nicht endgültig definiert. Z. Zt. kann damit die normale, d. h. globale WINDOWS-Zwischenablage gesteuert werden.

Wenn Sie das picCOLOR Programm verlassen, werden Sie in dem Fall, daß der Notebook-Speicher nicht leer ist, darauf hingewiesen. Z. Zt. ist die Größe des Textes aus Speichergründen begrenzt.

Der Text Editor wird z. Zt. für die Funktionen "Edit Macro", "Note Book" und "Edit and View Data File" benutzt. Dabei benutzt der Text Editor für die Ausführung immer denselben Speicherblock. Sichern Sie also den Notebook-Inhalt, bevor Sie ihn mit einem Macro-Programm oder mit einem Datenfile überschreiben. Wenn Sie in den Macro-Editor oder in den Daten-Editor gehen, sehen Sie den Notebook-Inhalt. Wenn dieser nicht gelöscht werden soll, so beenden Sie diese Funktion und wechseln ins Notebook und speichern dort das Notebook mit der Extension ".TXT" ab (die Extension wird automatisch gesetzt). Dann erst gehen Sie in die gewünschte Editor-Funktion zurück. In Zukunft werden hier unterschiedliche Speicher dynamisch eingerichtet.

13.15. Image File Info

In diesem Menü kann Information über das zuletzt eingeladene Bild abgerufen werden. Dort findet man die Funktion: "Display Image Buffer Header". Hiermit können die aktuellen Daten des aktuellen Bildspeichers abgefragt werden z. B. Größe, Bittiefe, die komplette Look-Up-Table-Belegung, usw. Kennern fällt hier sicher auf, daß ein Bild im picCOLOR-Speicher im BMP-Format gespeichert ist. Allerdings ist die metrische Kalibrierung in dieser Tabelle nicht gültig, da diese Information im picCOLOR-System auf andere Art behandelt wird.

Weiterhin können mit der Funktion "Last Loaded Image Size" der Name und die Größe des zuletzt geladenen Bildes abgefragt werden. Wenn dieses Bild entweder ein TIFF-Bild oder ein BMP-Bild gewesen ist, kann dessen File-Header abgefragt werden. Wenn das Bild einen EXIF-Header besaß, so kann dieser ebenfalls dargestellt werden. Dies ist bei TIFF- und bei JPG-Bildern möglich. Für nachfolgend zu ladende TIFF-Bilder kann ein Flag gesetzt werden, daß TIFF-Fehler beim Hereinladen genau beschrieben werden. Und schließlich können mit der Funktion "Set Special File Params" die Parameter für das RAW-Bildformat eingestellt werden, wie Bildbreite und -höhe, Bittiefe und eventueller Bit-Shift und die Header-Länge.

13.16. MACRO Load and Start

Das Starten eines Macro-Programmes wird normalerweise aus dem User-Menü durchgeführt, ist jedoch zur Vereinfachung auch von hier in der Toolbox möglich. Genauso wirkt übrigens auch der Hot-Key "M".


13.2. Output LUT

13.2. Output LUT (Color Look-Up-Table)

In der Regel haben Bilder im picCOLOR-Programm eine interne Bildinformationstiefe von 8 Bit pro Bildpunkt (Pixel). Mittels einer 24 Bit tiefen Look-Up-Table ist damit eine Darstellung von 256 verschiedenen Farben aus einer Auswahl von 16.8 Millionen Farben möglich. Damit lassen sich allerdings trotzdem nur 256 Grauwerte darstellen, da hierfür die Rot/Grün/Blau-Werte gleich sein müssen. Jeder Bildspeicher kann eine eigene LUT-Einstellung haben. Beim Umschalten (Aktivieren) der Bildspeicher wird die bildeigene LUT-Einstellung dann geladen. Alle Bearbeitungen mit Hilfe der Look-up-Table (z. B. Flächenvermessungen, Binärisierungen, Verschieben der Farbtabelle usw.) können unabhängig für jeden Bildspeicher durchgeführt werden. Die dabei eingestellten Werte, d. h. die Bandgrenzen oder die Verschiebung bleiben dabei für jeden Bildspeicher erhalten.

picCOLOR Look-Up-Table Dialogbox

Windows Common Dialog Box zur Farbwahl, die über den "Choose Color"-Schalter aus der picCOLOR Look-Up-Table Dialogbox erreicht werden kann.

13.2.1. LUT-Einstellung für Einzelpixelwerte

Nach Aktivierung der Funktion "Output LUT" öffnet sich eine Dialog-Box mit einer Reihe von Auswahlfeldern, Schiebern und Schaltflächen. Grundsätzlich kann mit der Funktion "Output LUT" jeder Wert eines Bildpunktes (Pixelwert von 0 bis 255) mit einem beliebigen Farbwert belegt werden. Nach Auswahl des zu ändernden Pixelwertes wird dazu mit den drei Schiebern in der Mitte der Dialog-Box dessen Farbe getrennt für Rot, Grün und Blau eingestellt. Dabei erhält der Wert des Bildpunktes einen bestimmten Wert für den Rotanteil, einen bestimmten Wert für den Grünanteil und einen bestimmten Wert für den Blauanteil. Alle Anteile können 8-Bit-Werte sein, also zwischen 0 und 255 variieren, so daß sich die oben genannten 16.8 Millionen Farben ergeben. Der aktuelle Pixelwert wird in einer Box unter den Schiebern angezeigt. Es gibt verschiedene Möglichkeiten, einen Pixelwert auszuwählen:

  • - Auswahl mit der linken Maustaste im Farbbalken ganz oben in der Dialog-Box,

  • - Auswahl in der Farbpalette ganz unten in der Dialog-Box,

  • - Auswahl durch Anklicken eines Bildpunktes im Bild (noch nicht implementiert...)

  • - Auswahl über die offizielle von Windows bereitgestellte "Common"-Dialogbox

Die aktuelle Farbe des gewählten Wertes wird dann im Rechteck unter dem Farbbalken angezeigt und zusätzlich wird die dazugehörige Position der Farbschieber für die Anteile der Farben Rot, Grün und Blau automatisch eingestellt. Links von den Farbschiebern werden die jeweiligen Zahlenwerte für Rot- Grün- und Blauanteil angezeigt. Durch Anklicken der Farbpositionsschieber mit dem Mauszeiger und Verschieben bei gedrückter linker Maustaste kann der Schieber zu anderen Werten - und damit Farben - bewegt werden. Die aktuell angewählte Farbe ändert sich im Farbbalken, im Farbraster, im Beispielrechteck und auch auf dem restlichen Bild sofort mit. Wenn alles wie gewünscht programmiert ist, kann der neue Stand der Look-up-Table mit der linken Maustaste durch Aktivierung der "Exit"-Fläche links oben oder der "Accept"-Schaltfläche akzeptiert werden. Bei Anklicken der "Cancel"-Schaltfläche wird der alte Stand vor Aufruf der Dialogbox wieder restauriert.

Selbstverständlich können mühsam erstellte komplexe Farbverläufe auch auf eine Datei (mit der Extension .PAL) abgespeichert und zu einem späteren Zeitpunkt wieder hereingeladen werden. Dies geschieht über die Schaltflächen "Save" und "Load", die weiter unten beschrieben sind. Beachten Sie bitte auch, daß es möglich ist, Bilder im TIF-Format direkt zusammen mit ihrer zugehörigen Look-up-Table-Einstellung als Paletten-TIF-File abzuspeichern und hereinzuladen (siehe "Save Image"-Funktion).

13.2.2. Vordefinierte LUT-Einstellungen

Das Einzelsetzverfahren ist normalerweise recht umständlich. Daher wurde eine Sammlung häufig benötigter Einstellungen geschaffen, die über die Auswahlfläche rechts oben in der Dialogbox erreicht werden können:

Gray Level - Grauverlauf mit 256 Graustufen: Einfacher Grauwertverlauf: Pixelwert "0" wird schwarz dargestellt und Pixelwert "255" weiß. Alle anderen Grautöne liegen dazwischen. Rot-, Grün- und Blauanteile für jeden Pixelwert sind gleich.

Frame Grabbing LUT - Grauverlauf für Bildübernahme: Bei Bildübernahme ist normalerweise ein einfacher Grauwertverlauf sehr sinnvoll. Bildschärfe und -kontrast können am leichtesten beurteilt und justiert werden. Wenn jedoch sichergestellt werden soll, daß der gesamte Wertebereich von 0 bis 255 (8 Bit) ausgenutzt werden soll - schließlich kann eine spätere Bildbearbeitung nur so gut sein wie das übernommene Bild -, dann kann der kleine Trick hilfreich sein, den dunkelsten (Wert 0) und den hellsten Pixelwert (255) hervorzuheben. Dies geschieht hier durch eine spezielle Farbwahl, d. h. der Wert 0 wird blau statt schwarz dargestellt, der Wert 255 wird grün statt weiß dargestellt. Wenn dann das Bild bei der Bildübernahme zu gering ausgesteuert ist, sieht man weder blaue noch grüne Bereiche - d. h. die Werte 0=schwarz (blau dargestellt) und 255=weiß (grün dargestellt) kommen nicht vor - der Videospeicher ist schlecht ausgenutzt. Bei Übersteuerung nach oben sieht man größere grüne Bereiche, bei Untersteuerung blaue Bereiche. Bei normalem Grauverlauf wäre eine leichte Über- oder Untersteuerung nicht zu sehen. Eine schlechte Ausnutzung wäre auch nicht zu sehen, denn für das menschliche Auge wird es nicht viel Unterschied sein, ob das Bild den Wertebereich von 0 bis 255 ausnutzt oder nur den Bereich von z. B. 30 bis 220 - dann hätte man allerdings mehr als 25% des möglichen Wertebereichs verschenkt!

Correction Image - Grauverlauf für Korrekturbildübernahme: Korrekturbilder werden aufgenommen, um schlechte, ungleichmäßige Beleuchtungsverhältnisse zu korrigieren oder um Fehler in der Kamera zu vermindern. Solche Fehler zeigen sich durch dunklere oder hellere Bereiche, die immer an der gleichen Stelle im Bild liegen. So kann z. B. eine Beleuchtungsanlage eines Mikroskops immer an den Bildrändern etwas dunkler sein oder bei einer Röhrenkamera kann durch Überbeanspruchung (Einbrennen) ein relativ zu seiner Umgebung unempfindlicherer Fleck entstanden sein. Zur Abhilfe nimmt man ein gleichmäßig graues Korrekturbild auf, das am besten in etwa den mittleren Grauwert 127 besitzt. Hierzu ist ein Look-up-Table-Verlauf gegeben, der dem für Bildübernahme ähnlich ist, allerdings zusätzlich noch den mittleren Bereich von 125 bis 130 in Rot hervorhebt. Nun ist es einfach zu beurteilen, ob das übernommene Bild etwa den richtigen mittleren Grauwert besitzt. Fehlstellen werden heller als dieser mittlere Wertebereich oder dunkler erscheinen. Die Korrektur des Originalbildes geschieht dann durch einfache Division durch das Korrekturbild nach der Formel: "Korrigiertes Bild = Originalbild*128/Korrekturbild". Eine genauere Beschreibung von Bildkorrekturen finden Sie im Menüpunkt "Arithmetic" und "Background Filters".

True Color LUT - Einstellungen für die Echtfarbbearbeitung: In den nächsten 9 Funktionen finden Sie verschiedene Einstellungen, die bei der 24-Bit Echtfarbbildverarbeitung hilfreich sind. Soweit möglich und sinnvoll, werden sie beim Anzeigen der Farbbilder oder Farbauszüge automatisch gewählt. Diese Automatik läßt sich durch Schalten des "Automatic"-Schaltknopfes ein- und ausschalten.

True Color 332 - Echtfarbdarstellung RGB=332: Bei Echtfarbdarstellung wird üblicherweise die Dithermatrix-Darstellung gewählt, die imstande ist, alle etwa 16.8 Millionen möglichen Farben relativ farbgetreu darzustellen. Für bestimmte Anwendungen kann es jedoch erwünscht sein, die Gesamtzahl der möglichen Farbwerte zu verringern. Diese LUT-Belegung wird für eine direkte Echtfarbdarstellung mit 256 Farben benutzt, wodurch eine direkte, ungerasterte Darstellung mit den systembedingten 8 Bit möglich wird. Es werden 3 Bit für den Rotanteil, 3 Bit für den Grünanteil und 2 Bit für den Blauanteil genommen. Hierdurch wird auch gleichzeitig der Umstand berücksichtigt, daß das menschliche Auge im Blaubereich weniger empfindlich ist. Bilder in dieser Darstellung haben natürlich recht grobe Farbverläufe und ähneln ein wenig einer Comic-Darstellung. Anmerkung: Es reicht natürlich nicht aus, einfach nur die Look-up-Table mit diesem Farbverlauf zu belegen - vielmehr muß auch das 24-Bit-Farbbild auf 8-Bit (RGB=332) umgerechnet werden. Dies kann im "True Color"-Menü geschehen. Dort wird dann automatisch auch die richtige Look-up-Table-Einstellung geschaltet.

True Color Dither - Echtfarbdarstellung mit Dithermuster: Dies ist die normale Look-up-Table-Einstellung für die Darstellung von Echtfarbbildern mit einer Informationstiefe von 24 Bit (8 Bit für den Rotanteil, 8 Bit für den Grünanteil und 8 Bit für den Blauanteil). Es wird dabei mit einer 8*8-Dithermatrix gearbeitet. Die Einstellung der Look-up-Table ist derart gewählt, daß wiederum die Eigenart des menschlichen Auges, eine geringere Empfindlichkeit (oder Auflösung) für blaue Farben zu haben, berücksichtigt wird. Anmerkung: Es reicht natürlich nicht aus, einfach nur die Look-up-Table mit diesem Farbverlauf zu belegen - vielmehr muß auch das 24-Bit-Farbbild auf ein 8-Bit-Ditherbild umgerechnet werden. Dies kann im "True Color"-Menü oder über die Hot-Key-Taste "D" geschehen. Dort wird dann auch automatisch die richtige Look-up-Table-Einstellung gewählt und, wenn die Funktion zum erstenmal angewählt wird, auch die Dithertabelle vom Hostsystem von der Festplatte hereingeladen. Diese Dithertabelle ist notwendig zum Umrechnen des 24-Bit Farbbildes in ein gedithertes 8-Bit-Farbbild. Sie muß in der Datei C:\PICCOLOR\DITHTAB.SYS auf dem Hostsystem vorliegen.

Red Color - Rot-Verlauf: Hiermit wird ein gleichmäßiger Verlauf von Schwarz bis zu hellem Rot eingestellt, der zur Beurteilung des Rot-Auszuges eines 24-Bit Farbbildes geeignet ist.

Green Color - Grün-Verlauf: Hiermit wird ein gleichmäßiger Verlauf von Schwarz bis zu hellem Grün eingestellt, der zur Beurteilung des Grün-Auszuges eines 24-Bit Farbbildes geeignet ist.

Blue Color - Blau-Verlauf: Hiermit wird ein gleichmäßiger Verlauf von Schwarz bis zu hellem Blau eingestellt, der zur Beurteilung des Blau-Auszuges eines 24-Bit Farbbildes geeignet ist.

Cyan, Magenta, Blue-Verlauf

HUE Color - Hue-Verlauf: Dieser Farbverlauf stellt einen Farbenkreis dar, der von Rot über Gelb nach Grün, weiter nach Blaugrün bis Blau und dann über Violett wieder zurück nach Rot alle darstellbaren Farben anzeigt (mit jeweils voller Helligkeit). Er ergibt damit einen weichen Übergang auch vom Pixelwert 255 zum Pixelwert 0. Dieser Farbverlauf ist für die Darstellung des Farbdiagrammes bei der Anzeige des Hue-Anteiles im Hue, Lightness, Saturation-Farbmodell sehr gut geeignet.

Hinweis: Im regulären Hue-Verlauf ist nicht vorgesehen, daß ein Bildpunkt keinerlei Farbe hat, d. h. nur einen Grauwert hat. Aus diesem Grund wird bei der im picCOLOR-Programm vorliegenden speziellen Version des HSI- oder HLS-Farbraumes der Pixelwert "0" dem Fehlen jeglicher Farbe, d.h. allen reinen Grauwerten von Schwarz bis Weiß gleichgesetzt. Er wird normalerweise schwarz dargestellt. Der übrige Bereich von Pixelwerten zwischen 1 und 255 stellt den kompletten Farbenkreis von 0 Grad bis 360 Grad des HLS- oder HSI-Farbmodelles dar. Das bedeutet, daß der im HLS- und HSI-Farbmodell gegebene Farbverlauf von Rot = 0 Grad über Grün = 120 Grad, über Blau = 240 Grad bis zurück zu Rot bei 360 Grad im 8 Bit-System auf den Bereich [1..255] gestaucht ist.

Lightness - Helligkeits-Verlauf: Im HLS-Modell entspricht dies der Bildhelligkeit. Sie wird als normaler Grauverlauf von Schwarz bis Weiß dargestellt.

Saturation - Sättigungs-Verlauf: Im HSI- oder HLS-Modell entspricht dies der Sättigung des Bildes. Dabei bedeutet große Sättigung eine reine Farbe, geringe Sättigung ein geringer Farbanteil mit starkem zugemischten Weißanteil. Farben geringer Sättigung sehen verwaschen, matt und weniger brilliant aus. Es wird ebenfalls ein einfacher Grauverlauf zur Darstellung benutzt.

Intensity - Intensitäts-Verlauf: Im HSI-Farbmodell entspricht dieser Anteil der Intensität oder Helligkeit des Bildes. Dieser Anteil entspricht in etwa dem Grauwertverlauf, den eine normale Schwarz/Weiß-Kamera aufgenommen hätte. Auch hier wird ein normaler Grauverlauf benutzt.

Rainbow Color - Regenbogenähnlicher Farbverlauf: Rot - Grün - Blau: Mit dieser Tabellenbelegung erhält man einen regenbogenähnlichen Farbverlauf. Der Pixelwert 0 erhält den Farbanteil Rot = 255, alle anderen Farbanteile sind 0. Für steigende Pixelwerte fällt der rote Anteil kosinusförmig ab, bis er beim Pixelwert 127 den Wert 0 erreicht. Währenddessen steigt der Grünanteil sinusförmig zu seinem Maximalwert von 255 an, um dann bis zum Pixelwert 255 wieder auf 0 abzufallen. Der Blauanteil steigt vom Pixelwert 127 an bis auf seinen Maximalwert von 255 beim Pixelwert 255 an. Man erhält somit einen weichen Farbverlauf von Rot über Orange und Gelb nach Grün, Türkisfarben und schließlich Blau. Violett ist in dieser Farbpalette nicht enthalten.

Farbanteile im YIQ (YUV) Farbraum: I(U) oder Q(V): Hier erhält man Farbpaletten für die Ansicht des Gelb-Blau Anteiles oder des Grün-Magenta-Anteiles eines in den YUV-Farbraum umgewandelten Farbbildes.

Thermography (1, 2): Wenn Bilder einer Infrarotkamera aufgenommen werden, so ist eine Falschfarbendarstellung sinnvoll, die die Temperaturverläufe gut sichtbar macht. Blau-Violett gilt hier als kalter Bereich, rötlichere Tönungen zeigen wärmere Bereiche an und Weiß (bei 1 oder Rosa bei 2) ist als Maximalwert eingetragen.

First-16: Belegung der ersten 16 Pixelwerte mit gut unterscheidbaren Farben. Diese LUT-Belegung eignet sich sehr gut für die Objektklassifikation, bei der die Klassen mit dem Pixelwert ihrer Klassennummer gesetzt werden.

VGA: Belegung der ersten 16 Pixelwerte mit den im 4-Bit-VGA-Standard definierten Farben. Damit kann ein Bild nach Belieben eingefärbt werden und dann bei gleichbleibenden Farben auf die VGA-Karte im 4-Bit-Modus hinübergeladen werden.

Es folgen nun 5 Funktionen, die nicht nur einfache vorprogrammierte Belegungen der Farbpalette vornehmen, sondern auch gewisse Änderungen durch den Benutzer zulassen. Diese Funktionen schließen dazu automatisch die große Dialog-Box und öffnen eine kleine Box, die nur die gerasterte Farbpalette und einige Eingabe/Verschiebefelder enthält. Damit ist ein wesentlich größerer Bildbereich zu sehen, so daß das Ergebnis der Programmierung der Farbpalette direkt im Bild besser beurteilt werden kann:

Shift LUT-> - Inhalt der Farbtabelle verschieben: Üblicherweise sind die Pixelwerte 0 und 255 als Anfangs- und Endpunkte (z.B. schwarz und weiß) besonders ausgezeichnet. In einigen Fällen kann es sinnvoll sein, den Farbverlauf nicht beim normalen Anfang "0" zu beginnen, sondern irgendwo "mittendrin". Mit dieser Funktion kann ein spezieller, vorher eingestellter Farbverlauf verschoben werden. Der einfache Grauverlauf könnte z. B. so verschoben werden, daß sein Start bei irgendeinem Pixelwert beginnt, sagen wir z. B. beim Wert 40. Beim Pixelwert 255 erreicht nun der Grauverlauf erst den Grauwert 215 (255-40). Durch die Verschiebung erhält nun der Pixelwert 0 den nächsten Grauwert 216, der Pixelwert 1 den Grauwert 217 und so weiter bis zum Pixelwert 39, der endlich den hellsten Grauwert von 255 (Weiß) erhält. Der Start des Verlaufes kann mit der Maus und der Tastatur über die Schaltfläche, aber auch durch direktes Anklicken und Ziehen der Maus in der Palette gesteuert werden.

Color Band-> - Hervorheben eines Bandes: In Anwendungen, bei denen ein bestimmter Bereich von Pixelwerten, normalerweise ein Grauwertbereich, deutlich hervorgehoben werden soll, kann mit dieser Funktion ein solcher Bereich in roter Farbe dargestellt werden. mit den drei Band-Selektionsfeldern "Start", "Width" und "Shift" kann dieser Bereich vergrößert, verkleinert und verschoben werden. Mit Betätigung des "Width"-Feldes wird der Start nicht verändert, nur die Breite des Bandes und damit auch das Ende. Mit der Schaltfläche "Shift" werden Anfang und Ende gleichsinnig verschoben. Wenn ein bestimmtes Band eingegeben werden soll, so sollte man mit der Eingabe von "Shift" beginnen: hiermit wird das Ende festgelegt. Danach legt man mit "Start" den Anfang des Bandes fest.

Über eine Auswahlmöglichkeit im Measurement/Geometry/Area-Menü kann statt des Grauverlaufes mit rotem Band auch ein Hue-Verlauf mit hervorgehobenem weißem Band oder ein dunkler Hue-Verlauf mit hellem hervorgehobenen Band dargestellt werden. Für eine Auswertung mit der Objektklassifikation ist zusätzlich auch noch eine Darstellung mit der unten erläuterten First16-Tabelle möglich.

Binary Threshold-> / Band Threshold-> - Binäre Grenze / Binäres Band: Für sehr viele weiterführende Schritte der Bildverarbeitung oder der Bilderkennung muß die im Bild enthaltene Information auf ein Mindestmaß verringert werden. Für eine Kantenerkennung, Vektorisierung der Kanten und nachfolgende Mustererkennung ist das Arbeiten mit 256 Pixelwerten normalerweise nicht sinnvoll. Oft dagegen ist es vernünftig, das Bild in ein Schwarz/Weiß-Bild umzuwandeln und damit Hintergrund und Vordergrund zu segmentieren. Dies kann mit einer Binärisierung im "Binary"-Menü durchgeführt werden. Da die Binärisierungsfunktion jedoch viel leichter und auch wesentlich schneller und vor allen Dingen zerstörungsfrei, also ohne Änderung der Originaldaten im Bildspeicher, mit der richtigen Belegung der Look-up-Table vorgenommen werden kann, wird diese Funktion zur Vorschau für die Binärisierung benutzt. Zur schnellen Überprüfung der geeigneten und optimalen binären Grenze kann sie hier jedoch auch ohne die anschließende Binärisierung - nur zur Ansicht - verwendet werden. Dabei werden alle Pixelwerte bis zur jeweiligen Grenze durch den Wert 0 = schwarz dargestellt, alle übrigen Werte durch 255 = weiß. Achtung: Um Bandbreiten von 0 bis 256 zu ermöglichen, zeigt der Startwert den ersten weißen Pixelwert des Bandes an und der Endwert den ersten schwarzen Pixelwert nach dem Band an. Wenn beide Werte gleich sind, ist die Bandbreite 0 oder 256 - je nachdem, von welcher Seite man sich diesem Wert angenähert hat. Dies erklärt den Wert 0 für den Endwert bei der binären Grenze: hier geht das Band vom Startwert bis zum Ende der Tabelle beim Pixelwert 255.

Black/White Steps-> - Schwarz/Weiß-Stufen: Während beim Grauverlauf durch die große Anzahl von Graustufen (256 sind mehr als das menschliche Auge unterscheiden kann) weiche Grauübergänge dargestellt werden können, ist es oft sinnvoll, mit weniger Grauwerten zu arbeiten. Mit dieser Funktion können beliebige ganzzahlige Grauwertanzahlen eingestellt werden.

Zusätzliche Tabellenvorbelegungen: Weitere vordefinierte Farbtabellenverläufe können implementiert werden. Bitte wenden Sie sich dazu an des Entwicklungsteam.

13.2.3. LUT-Hilfsfunktionen

Unter dem Selektionsblock für vordefinierte LUT-Einstellungen befinden sich die folgenden Funktionen:

Save LUT: Das Abspeichern der Look-up-table in eine Datei geschieht durch das Aktivieren der "Save"-Schaltfläche: Es erscheint ein Textfenster, in das der Filename für die Look-up-Table eingegeben werden muß. Es darf keine Extension angegeben werden, da automatisch die Extension ".PAL" angehängt wird.

Anmerkung: Wenn eine Look-up-Table-Einstellung speziell für ein bestimmtes Bild erstellt wurde und immer zusammen mit diesem Bild hereingeladen werden soll, ist es sinnvoll, die Look-up-Table direkt zusammen mit dem Bild als TIF-File abzuspeichern. Die Vorgehensweise kann im Menüpunkt "Save Image" nachgelesen werden.

Load LUT: Das Laden der Look-up-table aus einer Datei geschieht ähnlich wie das Abspeichern: Wenn die "Load"-Schaltfläche aktiviert wird, erscheint ein Texteingabefenster, in das der Filename der Look-up-Table ohne Extension eingegeben wird. Es wird immer ".PAL" als Extension angenommen.

0 Black - 255 White: Alle Menütexte sind in den Pixelwerten 0 und 255 geschrieben, normalerweise 0 für die Schrift und 255 für den Hintergrund. Beim normalen Grauverlauf entspricht dies einer schwarzen Schrift auf weißem Hintergrund. Wenn nun der Grauverlauf wie oben beschrieben verschoben wird, d. h. der Pixelwert 0 erhält den Grauwert 216 und der Pixelwert 255 erhält den Grauwert 215, dann hätten wir eine Schrift mit dem Grauwert 216 auf einem Hintergrund mit dem Grauwert 215. Können Sie sich vorstellen, wie gut man eine solche Schrift lesen kann? -- Nun, aus diesem Grunde wurde eine Sicherungsüberprüfung in das Programm gebaut, die grundsätzlich nach jeder Neubelegung der Look-up-Table die Spezialwerte 0 und 255 neu mit schwarz und weiß belegt - so ist die Schrift immer lesbar. Da diese Sicherung für manche Anwendungen nicht erwünscht ist, kann mann sie abschalten. Dies kann über die Schalter "0Black" und "255White" geschehen. Wenn es dann passiert, daß kein weiteres Arbeiten mit dem System möglich ist, da man nichts mehr lesen kann, gibt es immer noch den Notbehelf der "Hot-Key"-Taste "P" (wie Palette), mit der in beinahe jeder Situation ein normaler Grauverlauf wiederhergestellt werden kann. Trotzdem ist es ratsam, die Schalter "0Black" und "255White" immer eingeschaltet zu lassen und mit der Hot-Key-Taste "C" (wie Color) nur kurzzeitig den wahren Inhalt der Look-Up-Tabelle incl. der 0/255-Werte darzustellen - nach Betätigung einer beliebigen Taste oder der rechten Maustaste werden die Werte 0 und 255 sofort wieder auf Schwarz und Weiß gesetzt. Wenn der Hot-Key "C" im Menü-Modus benutzt wird, verschwindet gleichzeitig das Menü, um das komplette Bild betrachten zu können.

Automatic Load - Automatisches Laden der Look-up-Table: Bei der Anzeige bestimmter Farbanteile von Farbbildern oder zur 16.8 Millionen Farben-Darstellung mittels der Dithermethode, jedoch auch in anderen Fällen, kann es sinnvoll sein, immer eine spezielle Look-up-Table-Einstellung automatisch zu erhalten. Dieser Menüpunkt ermöglicht es, für die voreingestellten Fälle dieses automatische Laden der Tabelle ein- oder auszuschalten.

Color Wheel: Die kleine Look-Up-Table-Dialogbox kann in bestimmten Modi auch mit einem Farbenkreis arbeiten, so daß zyklische Farbtabellen und Messungen damit sinnvoller angezeigt werden. Durch Anklicken der Farbtabelle oder des Farbkreises mit der linken Maustaste kann der Startwert und in bestimmten Fällen auch der Endwert gesetzt werden. Mit dem Schalter wird der Farbenkreis-Modus für die kleine Farbpalette eingestellt. Bei der Vermessung von Flächen mit der LUT wird je nach Art der LUT (bei HUE-Farben-LUT) automatisch immer der Farbenkreis gewählt.

13.2.4. Pixel Mask Register - Setze Masken-Register

Eine weitere, sehr hardware-nahe Funktion, das Setzen des Pixel-Masken-Registers der Look-up-Table, ist im "Control Panel" im Special-Function-Untermenü enthalten. Da sie jedoch thematisch in das Kapitel "Output LUT" gehört, ist sie hier beschrieben: Die meisten der verwendeten Farbpaletten-Bausteine besitzen ein Masken-Register, mit dessen Hilfe einzelne Bit-Ebenen von Änderungen oder von der Darstellung ausgeschlossen werden können. Das Pixelmaskenregister der Look-up-Table ist normalerweise mit 255 oder binär mit 11111111 vorbelegt. Dies bedeutet, daß alle 8 Bit eines Bildpunktes Einfluß auf die dargestellte Farbe haben. Damit wird für jeden der 256 Pixelwerte der zugehörige 24 Bit-Eintrag in der Look-up-Table gesucht und als Farbe dargestellt. Es können nun jedoch auch einzelne Bits des Pixelwertes ausgeblendet werden. Wenn z. B. das Pixelmaskenregister auf den Binärwert 11000000 oder 196 dezimal gesetzt wird, werden nur noch die beiden obersten Bit jedes Pixelwertes berücksichtigt. Alle anderen Bits werden sozusagen "abgerundet" - es existieren nur noch die Werte (0, 64, 128, 196). Bei einem normalen Grauverlauf erhielte man vier Graustufen, nämlich Schwarz, dunkles Grau, helles Grau und Weiß.

Mit dieser Funktion kann überprüft werden, ob z. B. ein verrauschtes Kamerasignal weniger als 8 Bit an Information enthalten hat. Durch Belegen des Pixelmaskenregisters mit dem Binaerwert 11111100 werden nur noch die obersten 6 Bit angezeigt. Wenn damit keine sichtbare Verschlechterung des Bildes eingetreten ist und wenn die in den letzten 2 Bit steckende, eventuell sehr verrauschte Information nicht für weitere Bildverarbeitungsschritte benötigt wird, kann man diese beiden Bits im Bildspeicher zu 0 setzen (Ausführung: Multiplikation mit 0.25 und anschließend Multiplikation mit 4.0) und erhält damit z. B. eine wesentlich verbesserte Kompressionsrate beim Abspeichern auf der Festplatte.


13.3. Undo

Nach jeder Funktion, die das aktuelle Bild und den aktuellen Bildspeicher verändert, haben Sie in der Regel die Möglichkeit, den ursprünglichen Zustand von Bild und Bildspeicher zu restaurieren. So können Sie eine fehlerhaft oder versehentlich aufgerufene Bildbearbeitungsfunktion korrigieren. Auf diese Weise läßt sich auch sehr leicht mit den Bildverarbeitungsfunktionen "experimentieren": Probieren Sie einfach die Funktionen aus, indem Sie sie auf das aktuelle Bild (aus Zeitersparnis oft besser auf einen kleineren Bildausschnitt ROI) anwenden. Nach Beurteilung des Ergebnisses wird die "Undo"-Funktion ausgeführt und das Bild ist bereit für den nächsten Test.

Die "Undo"-Funktion kann wieder zurückgenommen werden, d. h. man kann ein "Undo" des "Undo" vornehmen. Dies kann nützlich sein, wenn man nach "Undo" zur Überzeugung gekommen ist, daß der letzte Bearbeitungsschritt doch nicht so schlecht gewesen ist, hat jedoch zusätzlich noch eine wesentlich wichtigere Funktion:

Nach einer Bearbeitung des Bildes (z. B. einer Kontrastverstärkung) kann die Auswirkung der Funktion sehr genau beurteilt werden, indem man zwischen ursprünglichem Bild und dem bearbeiteten Bild schnell hin- und herschalten kann. Durch fortlaufendes Betätigen der "Undo"-Funktion wird dies ermöglicht: Das erste "Undo" restauriert das Bild, wie es vor der Bearbeitung gewesen ist, das zweite "Undo" zeigt wieder das bearbeitete Bild, usw.

Zur einfacheren und schnelleren Ausführung der "Undo"-Funktion kann sie auch mit der Hot-Key-Taste "U" von der Tastatur aufgerufen werden, ohne daß man erst in das Toolbox-Menü wechseln muß.

Die "Undo"-Funktion kann in der "Configuration"-Dialogbox im Control-Panel abgeschaltet werden.

In der aktuellen Version des picCOLOR-Programmes ist die "Undo"-Funktion allerdings nur für normale Bildspeicher implementiert, nicht jedoch für True-Color-Farbbilder oder Sequenzen bzw. 3D-Bilder. Für diese Bildarten kann die Undo-Funktion emuliert werden, indem man das Bild vor einer Bearbeitung in einen anderen Bildspeicher gleichen Typs kopiert.


13.4. ROI Definition

Fit last loaded Image
Copy ROI Definition
Maximize Actual ROI

ROI -> Visible Window
---------------------------
- X-ROI
- Y-ROI
- Z-ROI
- Show ROI
---------------------------
Save ROI Coords.
Load ROI Coords.

Der Bildausschnitt, der bearbeitet werden soll, wird durch eine Region of Interest (ROI) definiert. Üblicherweise wird diese ROI im Bild-Modus definiert und editiert. Die genaue Beschreibung dieses Vorgangs und auch der Auswahl der gewünschten (x-, y- oder z-ROI) ist in der Beschreibung des Bild-Modus in Kapitel 3.3. gegeben. Dieses Menü bietet einige zusätzliche Möglichkeiten zur Beeinflussung der ROI’s.

13.4.1. Edit ROI

Im Bild-Modus, in dem man sich defaultmäßig befindet, kann der Bildausschnitt (Region of Interest: ROI) gewählt und editiert werden. Dabei kann mit den Tasten "x", "y", "z" eine der drei möglichen ROI’s ausgewählt werden. Mit der Maus kann die ROI durch Anklicken einer Ecke, einer Seitenmitte oder des Mittenbereiches editiert und verschoben werden. Eine genauere Beschreibung finden Sie im Kapitel 3.3. (Bild-Modus). Hier folgt nur eine kurze Zusammenfassung der speziellen Funktionen der Funktion "Edit ROI" oder des Bild-Modus:
Bei Editieren einer Ecke der ROI:

  • Linke Maustaste, ‘ohne Vortaste’: ROI-Ecken können völlig frei verschoben werden.

  • Linke Maustaste und Shift: Das einmal gewählte Seiten-Verhältnis bleibt erhalten.

  • Linke Maustaste und Control: Die ROI wird quadratisch: Breite = Höhe

  • Linke Maustaste und Shift" und "Control": Die ROI wird quadratisch und kann nur die Größe 2**N, d. h. [..., 16, 32, 64, 128, 256, 512, 1024, ...] annehmen.

Bei der Verschiebung der Seitenmitten oder der gesamten ROI gibt es z. Zt. keine Sonderfunktion. Zusätzlich gibt es verschiedene einfache Bildvermessungs- und Bildbeurteilungsfunktionen, wenn der Mauszeiger sich nicht in der Nähe einer ROI-Umrandung befindet:

  • Linke Maustaste, ‘ohne Vortaste’: Es werden die Pixel-Koordinaten und der Pixelwert angezeigt, eventuell auch die RGB-Werte eines Farbbildes oder grauwertkalibrierte Werte.

  • Linke Maustaste und "Shift": Lupenfunktion mit einer 4-fachen Vergrößerung eines 32*32 Pixelbereiches.

Diese Funktionen können auch in der Nähe einer ROI ausgeführt werden, wenn der Mauszeiger mit gedrückter linker Maustaste über den Bildschirm verschoben wird.

Die Taste "W" bewirkt ein Ausschalten der Darstellung der ROI-Umrandung. Dies kann sinnvoll sein, wenn das Bild vom Bildschirm abphotographiert oder mit einem Videoprinter ausgedruckt werden soll, ohne daß eine störende ROI-Umrandung zu sehen sein soll.

13.4.2. Fit last loaded image

Nachdem ein Bild geladen wurde, entweder von Festplatte oder über eine andere Schnittstelle wie TWAIN, Clipboard, Frame Grabber oder Scanner, kann die aktuelle ROI mit dieser Funktion an die Größe des geladenen Bildes angepaßt werden.

13.4.3. Maximize ROI

Diese Funktion stellt eine vereinfachte Möglichkeit zur Verfügung, die aktuelle ROI auf maximale Größe zu setzen. Achtung: diese maximale ROI-Größe kann größer als die aktuell dargestellte Bildschirmgröße sein, wenn der Bildspeicher die Bildschirmauflösung überschreitet.

13.4.4. ROI -> Visible Window

Bei sehr großen Bildspeichern kann es recht mühsam sein, eine maximale ROI auf einen kleinen Bereich des dargestellten Bildausschnittes zu verkleinern. Hierzu kann mit dieser Funktion die aktuelle ROI auf eine kleinere Größe gesetzt werden, die auf jeden Fall in den dargestellten Bildbereich paßt.

13.4.5. Select ROI

ROI No.0 (x)
ROI No.1 (y)
ROI No.2 (z)

Nur der Vollständigkeit halber kann mit dieser Funktion eine Auswahl aus den drei ROI’s "x", "y" und "z" getroffen werden. Üblicherweise wird man die Hot-Key-Tasten "x", "y" und "z" benutzen. Ein Häckchen zeigt hier die aktive ROI an.

13.4.6. Show ROI (ROI Border On/Off)

Die Funktion schaltet die Darstellung der Umrandung der ROI aus und bei erneutem Aufruf wieder an. Diese Funktion kann dazu benutzt werden, die ROI im Bild aufzufinden, wenn sie durch die Art des Bildinhaltes kaum oder nur sehr schwer auszumachen ist. Hierzu muß kurz angemerkt werden, wie eine ROI-Umrandung auf dem Bildschirm dargestellt wird: es wird ein XOR (exclusive oder) des Pixelwertes hex(80) mit dem aktuellen Bildinhalt ausgeführt. Dies verspricht bei Grauwertbildern den besten Kontrast. Ein einfaches Invertieren würde z. B. bei mittleren Grauwerten nicht sichtbar sein. Bei Bildern mit spezieller Farbtabellenbelegung kann es jedoch sein, daß das XOR nicht die besten Resultate ergibt und daher eine ROI nur schwer zu erkennen ist. Durch mehrfaches Aus- und Einschalten wird man sie auf jeden Fall im Bild entdecken können. Zur schnelleren Ausführung kann die Funktion mit der Hot-Key-Taste "W" ausgeführt werden, ohne in die Toolbox wechseln zu müssen. Ein Häckchen vor der Funktion im Menü zeigt an, daß die Umrandung eingeschaltet ist, d. h. sichtbar ist.

Die Darstellung der ROI-Umrandung ist völlig unabhängig von ihrer Wirkung: auch wenn eine ROI nicht sichtbar ist, legt sie den Bildausschnitt fest. Im Bild-Modus erscheint die ROI-Umrandung immer, schließlich will man sie hier ja editieren. Für spezielle Fälle kann man sie jedoch auch hier, wenn auch nur für eine passive Betrachtung, mit dem Hot-Key "W" abschalten.

13.4.7. Copy ROI Definition

Mit dieser Hilfsfunktion können die Koordinaten der aktuellen ROI auf eine der anderen ROI’s (0,1,2 entspricht dabei x,y,z) kopiert werden.

13.4.8. Move ROI

Hier können statt einer interaktiven Verschiebung der aktiven ROI mit Maus oder Kursortasten direkt Verschiebungen in x- und y-Richtung eingegeben werden. Wenn eine Verschiebung eingegeben wird, die die ROI über den Bildrand hinaus verschieben würden, so wird eine Fehlermeldung ausgegeben und die Verschiebung nicht ausgeführt. (Diese Funktion ist z. Zt. nur als MACRO-Funktion verfügbar)

13.4.9. Save/Load-ROI

Die Koordinaten der drei ROI’s werden auf Disk abgespeichert oder von Disk eingelesen. Hierzu wird ein Filename eingefragt. Die Extension ".ROI" wird automatisch angefügt.

13.4.10. Backup/Restore-ROI

Die Koordinaten der drei ROI’s werden für späteren Gebrauch zwischengespeichert oder wieder restauriert. Dies ist z. B. sinnvoll, wenn man mit den vorhandenen drei ROI’s nicht auskommt. Diese Funktion ist z. Zt. nur als Macro-Funktion implementiert.


13.5. Copy/Move

13.5. Copy Image Buffer

Die hier beschriebene Copy-Routine für ein komplettes Bild wird sehr häufig gebraucht und wurde daher aus dem Copy-Menü heraus direkt in die oberste Ebene der Toolbox hineingenommen: Wenn Sie einen Bildschirminhalt z. B. nach einer komplexen Berechnung oder Filterung zwischenspeichern wollen, so können Sie dies mit der Funktion "Copy/Move ROI" nach Definition eines maximal großen ROI’s, des Zielbildspeichers und der logischen Operation durchführen. Da ein solcher Kopiervorgang allerdings recht häufig vorkommt, wurde mit der Funktion "Copy Image Buffer" ein wesentlich vereinfachtes Verfahren zur Verfügung gestellt. Hier müssen Sie einfach nur den gewünschten Zielbildspeicher anwählen - der Rest wird sofort automatisch erledigt. Auch eine eventuell vorhandene LUT-Einstellung wird hierbei kopiert. Der Inhalt des Undo-Buffers wird durch diese Funktion nicht geändert.

Vorsicht: Bei der Benutzung dieser Funktion sollten Sie sehr aufmerksam sein, da es leicht vorkommen kann, daß hiermit wichtige Bildinhalte unwiederbringlich zerstört werden. Aus bestimmten Gründen ist die Möglichkeit eines "Undo" nach diesem Kopiervorgang nicht vorgesehen: Eine übliche Anwendung dieser Funktion ist z. B. die folgende:

Nach einer aufwendigen Filterung stellt man fest, daß man eigentlich sehr gerne vor dieser Filterung noch einige andere Bearbeitungsschritte getestet hätte... Das Ergebnis der durchgeführten Filterung möchte man jedoch noch nicht wegwerfen. Lösungsweg: Man kopiert das Filterungsergebnis auf einen freien Bildspeicher, holt mit "Undo" das ursprüngliche Bild vor der Filterung aus dem Undo-Speicher zurück, kann nun eine neue Bearbeitungs-Testreihe starten und durch alternatives Darstellen des zwischengespeicherten gefilterten Bildes und der neueren Ergebnisse im aktuellen Bildspeicher sogar sehr einfach eine vergleichende Beurteilung vornehmen.

Eine andere wichtige Anwendung könnte folgendermaßen ablaufen: Es gibt eine Reihe von komplexeren Bildverarbeitungsvorgängen, bei denen Zwischenergebnisse später wieder benötigt werden, um z. B. bei dualen Funktionen miteinander verknüpft zu werden. Statt von mehreren Originalbildern in verschiedenen Bildspeichern ausgehen zu müssen und damit viele der Bearbeitungsschritte mehrfach ausführen zu müssen, kann mit der "Copy Image Buffer"-Funktion von einem einzigen Bild ausgegangen werden. Die Zwischenergebnisse werden dann jeweils auf freie Bildspeicher kopiert.

Durch den Kopiervorgang wird der aktuelle Bildspeicher nicht geändert und bleibt aktiv. Sie sollten sich nach einem Kopiervorgang ruhig testweise das Kopierergebnis anschauen (z. B. mit den Hot-Key’s "1" bis "9").

13.6. Copy/Move Functions

Copy Interactive
- Transparency
- Set Tranp.Mode
- PixProcOPer. ->
Copy Numerical
Copy 24-Bit-RGB
--Srce->Dest----
Copy ROI S.->D.
Move ROI S.->D.
Copy Mask S.->D.
Move Mask S.->D.
- Copy/Move Mask
- Def.Source ROI
- Def.Destin.ROI
- Dest.ImageBuf.

In diesem Menü finden Sie eine Sammlung von Funktionen zum Kopieren oder Verschieben von Bildausschnitten oder gesamten Bildspeicherinhalten.

Achtung: es sind noch nicht alle oben gezeigten Kopiermöglichkeiten des ursprünglichen TMS340C20 Processors implementiert, speziell noch nicht die Transparency-Methoden

13.6.1. Copy/Move ROI

Kopierfunktion zum Kopieren oder Verschieben von Bildausschnitten innerhalb eines Bildes oder zum Kopieren auf ein anderes Bild oder einen anderen Bildspeicher. Hierbei stehen 22 logische oder arithmetische Operationen, die sogenannten Pixel Processing Operation Codes zur Verfügung (AND, OR, XOR, NOR, MAX, MIN, ADD, SUB usw., siehe Arithmetik-Menü). Dies kann vor Ausführen der Kopierfunktion über den Menüpunkt "Logical Copy Parameter" geschehen oder auch während des Kopiervorganges. Diese interaktive Copy/Move-Funktion ist z. Zt. nur als Copy-Funktion implementiert: die Move-Funktion können Sie ausführen, indem Sie nach dem Kopiervorgang die alte Bildstelle mit "Clear ROI" löschen. Dies wird dadurch vereinfacht, daß sich die ROI beim Kopieren nicht verändert. Dieses Verfahren ist natürlich nicht anwendbar, wenn sich Source- und Destination überlappen. Die Move-Mask (siehe unten) wird von der Funktion nicht berücksichtigt.

Der Kopiervorgang beginnt mit dem Erscheinen einer Abfrage, ob der gewählte Bildausschnitt (aktuelle ROI) richtig ist. Diese Abfrage erscheint an einer Ecke der aktiven ROI. Nach Bestätigung wird gefragt, ob innerhalb des aktuellen Bildes kopiert werden soll oder auf ein anderes Bild. Mit der linken Maustaste wird auf dem aktuellen Bild kopiert, mit der rechten Maustaste erhalten Sie ein Menü zur Auswahl des gewünschten Zielbildes (Ziel-Bildspeicher). Schließlich wird noch der aktuelle Pixel-Processing-Operation-Code als Nummer im "Logical Copy Parameter"-Menü angezeigt (beginnend mit "0" für "Source"), den man mit der linken Maustaste bestätigen kann. Durch Anklicken der rechten Maustaste erhalten Sie statt dessen die Möglichkeit, diesen Code zu ändern. Es erscheint dann zur Auswahl das komplette "Logical Copy Parameter"-Menü.

Schließlich erhalten Sie die Möglichkeit, den zu kopierenden Bildausschnitt im Bild zu verschieben. Wenn ein anderes Zielbild gewählt wurde, wird automatisch auf diesen umgeschaltet. Sie können nun den zu kopierenden Bildausschnitt mit der Maus verschieben (dabei keine Maustaste drücken!). Dabei kann immer das jeweils aktuelle Kopierergebnis beurteilt werden. Nur bei schneller Bewegung der Maus erscheint das Resultat als rechteckiger Rahmen in der Größe des gewählten Bildausschnittes. Der Kopiervorgang wird mit der linken Maustaste akzeptiert und der kopierte Bildausschnitt fixiert. Bei Abbruch mit der rechten Maustaste wird der Ausgangszustand wieder hergestellt. Das gewählte Zielbild bleibt allerdings aktiv.

13.6.2. Logical Copy Parameter

Beim Kopieren eines Bildausschnittes können verschiedene logische oder arithmetische Parameter zur Verknüpfung des kopierten Bildausschnittes mit dem an der Zieladresse liegenden Hintergrund festgelegt werden. Diese 22 logischen und arithmetischen Operationen sind im Kapitel 7.3.14. (Im Arithmetik-Menü) beschrieben.

13.6.3. Transparency Mode

Beim Kopieren von Bildausschnitten können alle vom TMS34020-Prozessor beherrschten Transparency-Modes eingestellt werden (siehe auch Kapitel 7.3.16.). Standard ist der Mode ‘0’, er bewirkt Transparenz bei: Result=0, d. h. Ergebnis der Kopieraktion = 0. Das bedeutet, daß an allen Stellen, wo beim Kopieren mit der aktuellen logischen Funktion (PPOP-Code) der Pixelwert ‘0’ entsteht, der Hintergrund bestehen bleibt. Die anderen Modi sind 1: Transparency on Source=Hintergrundfarbe, 4: Transparency on Result=0, 5: Transparency on Destination=Hintergrundfarbe. Die aktuelle Hintergrundfarbe kann im ImagePaint-Programm eingestellt werden.

13.6.4. Copy Numerical

Häufig ist es notwendig, Bildausschnitte zur Anpassung an andere Bilder, die z. B. in anderen Bildspeichern liegen können, exakt um eine bestimmte Anzahl von Pixeln zu verschieben. Dies kann hier mit der Eingabe einer Verschiebung in x- und y-Richtung geschehen. Die eingegebenen Zahlen werden vom System nicht geändert, so daß mehrfach hintereinander mit den selben Werten kopiert werden kann.

13.6.5. Copy/Move Source-ROI -> Destination-ROI

Hier stehen nichtinteraktive Copy- und Move-Funktionen zur Verfügung, bei denen Source- und Destination-ROI vorher definiert werden müssen. Diese können sich überlappen. Zusätzlich muß hier der Destination-(Ziel-)Bildspeicher sinnvoll gesetzt sein. Damit kann auf einen anderen als den aktiven Bildspeicher kopiert oder verschoben werden. Beim Verschieben (Move) wird der Inhalt der Source-ROI im Source-Bildspeicher gelöscht. Wenn Source- und Destination-Bildspeicher unterschiedlich sind, kann ein "Undo" nur das Destination-Bild restaurieren - man beachte, daß es nur einen Undo-Speicher gibt. Für diese Funktion ist immer der Pixel-Operation-Code 0, d. h. "Replace Destination with Source" eingestellt.

13.6.6. Copy/Move ROI with Move-Mask

Weiterhin gibt es die Möglichkeit, eine "Move-Mask" zu setzen. Dies ist die im ImagePaint-Graphikmodul beschriebene Maske. Hiermit kann bestimmt werden, auf welche Pixelwerte des Grauwertebereichs von [0..255] die Copy- oder Move-Funktion wirken soll. Bei diesen Funktionen ist auch der zuvor eingestellte Pixel-Operation-Code sowie die Transparency wirksam.

13.6.7. Select Move Mask

Mit der Funktion "Select Move Mask" kann jeder einzelne Pixelwert für die Copy- oder Move-Funktion freigegeben oder gesperrt werden. Durch Aufziehen eines Rechtecks im Bild können auch alle im Rechteck vorkommenden Pixelwerte in die Move-Mask eingetragen werden. Zur einfacheren Bearbeitung sind die Schalter "All" und None" vorgesehen. Schließlich ist in der "Select Move Mask"-Dialogbox auch noch der Schalter "Transparency" untergebracht. Wenn die Transparency eingeschaltet ist, erscheint das Kopierte Bild an allen Stellen, an denen die jeweilige Operation den Wert Null ergibt, durchsichtig, d. h. man sieht dort den Hintergrund. Beispiel: Wenn der Pixel-Operation-Code "Replace"=0 eingestellt ist, d. h. wenn ganz einfach kopiert werden soll, so bleibt an allen Stellen, wo das kopierte Bild den Pixelwert Null besitzt, der alte Bildhintergrund stehen. Der Schalter ‘Transparency’ kann auch direkt vom Menü aus eingestellt werden. Der Transparency-Mode ist normalerweise immer der Modus ‘0’, der jedoch im Transparency-Menü gerändert werden kann.

13.6.8. Copy/Move RGB-ROI

Mit dieser Funktion können Sie Bildausschnitte eines 24 Bit RGB-Echtfarbbildes auf 8 Bit-Systemen kopieren oder verschieben. Eine genauere Beschreibung der Funktion finden Sie Kapitel "True Color".


13.7. Clear Functions

Clear Image

Clear ROI
Clear out of ROI

Clear ROI Border
Clear RGB Buffers
Clear HSI/HLS Buf
Clear All Buffers
--Mask Function--
Kill Mask ROI
- Copy/Move Mask

In diesem Menü sind alle vorhandenen Löschfunktionen zusammengefaßt. Einige dieser Funktionen finden Sie auch in anderen Menüs.

Achtung: es sind noch nicht alle oben gezeigten Löschmöglichkeiten des ursprünglichen TMS340C20 Processors implementiert, speziell noch nicht die Maskierungs-Methoden

13.7.1. Clear Image

Diese Funktion löscht das gesamte Bild und den aktuellen Bildspeicher (auch den nicht dargestellten Bereich des Bildschirmes bei höherer Speicher- als Bildschirmauflösung). Versehentliches Löschen kann durch die "Undo"-Funktion direkt nach dem Löschen rückgängig gemacht werden.

13.7.2. Clear ROI

Der durch die Region of Interest (ROI) definierte Bildbereich wird gelöscht, d. h. alle Bildpunkte werden zum Pixelwert "0" gesetzt.

13.7.3. Clear out of ROI

Die gesamte Umgebung einer ROI wird gelöscht, d. h. alle Bildpunkte ausserhalb der aktiven Region of Interest werden zum Pixelwert "0" gesetzt.

13.7.4. Clear ROI Border

Die Umrandung einer ROI wird gelöscht. Dies sind die Pixel, die direkt unter der ROI-Umrandung liegen.

13.7.5. Kill with Mask

Mit der Funktion "Kill Mask ROI" werden nur Pixel in der aktuellen ROI gelöscht, deren Pixelwerte in der "Move-Mask" gesetzt sind (mit "Select Move Mask" einstellen, siehe oben im Copy-Menü). Die Pixelwerte können beim Löschen auf einen bestimmten einzugebenen Grauwert gesetzt werden.

13.7.6. Clear RGB-Buffer

Mit dieser Funktion können Sie den Inhalt des 24 Bit-Echtfarbbuffers auf 8 Bit-Systemen löschen. Dieser besteht bekannterweise aus drei einzelnen 8 Bit-Bildspeichern. Die Ausführung dieser Funktion entspricht damit der nacheinanderfolgenden Ausführung der "Clear Image"-Funktion für Rot-, Grün- und Blauanteile des Echtfarbbildes. Ein "Undo" ist nach diesem Löschvorgang nicht möglich, da der Undo-Buffer nur einen einfachen Bildspeicher zwischenspeichern kann.

13.7.7. Clear HSI-(HLS-)-Buffer

Auch das in den HSI-, HLS- oder YIQ-Farbraum umgewandelte RGB-Echtfarbbild kann mit einem einzigen Befehl gelöscht werden. Je nach Art des aktuellen Farbmodelles (HSI, HLS, YIQ oder andere) werden die drei zugehörigen Speicher gelöscht. Auch hier ist ein "Undo" nicht möglich.

13.7.8. Clear All Buffers

Nach einer Sicherheitsabfrage werden die Inhalte aller definierten Bildspeicher gelöscht. Ein "Undo" restauriert nur den Inhalt des beim Aufruf der "Clear All Buffers"-Funktion aktuellen Bildes. Diese Funktion ist noch nicht implementiert.

13.7.9. New (Clear and Remove Buffers)

Mit dieser Funktion kann das System bei Beendigung einer Arbeit in einen definierten Anfangszustand versetzt werden: alle Bildspeicher werden gelöscht und der Speicher an das System zurückgegeben. Ebenso werden alle anderen Datenspeicher abgemeldet und an das System zurückgegeben (FFT-Buffer und andere). Es bleibt nur der Bildspeicher "0", d. h. der Undo-Buffer und der Bildspeicher "1" als minimale Arbeitsumgebung erhalten. Der Undo-Buffer enthält den Bildinhalt des bei Aufruf der "New"-Funktion aktuellen Bildes. Alle anderen Speicherinhalte sind unwiederbringlich gelöscht. Die ROI’s werden auf maximale Größe gesetzt. Systemeinstellungen, wie z. B. Bildschirm- und Bildspeicherauflösung und Bildwiederholfrequenz bleiben jedoch bestehen.

Diese Funktion wird angewendet, wenn die Arbeit an einem Bild beendet ist oder aus anderen Gründen abgebrochen werden soll. Eine Sicherheitsabfrage verhindert unbeabsichtigtes Ausführen dieser Funktion. Diese Funktion ist nicht implementiert.


*14. Zusatzmodule

Zusätzlich zu den in der Grundversion des picCOLOR Programmes enthaltenen Funktionen zur digitalen Bildverarbeitung gibt es eine Reihe von Zusatzmodulen, in denen recht komplexe und aufwendige weiterführende Funktionen enthalten sind. Diese Zusatzmodule können jederzeit bezogen und zum picCOLOR Programm hinzugefügt werden. Einige dieser Zusatzmodule sind in der Beschreibung der Funktionen der Grundversion (meist Kapitel 8, Measurement) schon kurz angedeutet worden. Hier soll ein kurzes Verzeichnis der z. Zt. erhältlichen oder geplanten Zusatzmodule angegeben werden. Die Zahl und Leistungsfähigkeit wird sich dabei laufend erhöhen. Eine aktuelle Liste der geplanten und verfügbaren Zusatzmodule kann jederzeit angefordert werden. Zur Diskussion spezieller kundenspezifischer Module wenden Sie sich bitte an den Hersteller der Software.

  • 3D / Sequenz Modul

  • Stereometry/StereoDisplay

  • 2D/3D Position Tracking (siehe auch in Real Time)

  • Particle Image Velocimetry / Particle Tracking Velocimetry (auch getrennt als DLL oder Library erhältlich)

  • Interferometry

  • Fringe Correlation Method (PGM / FCM)

  • Real Time Processing (siehe auch 2D/3D Position Tracking)

  • Optical Character Recognition

  • Bar-Code Reader

  • Extended True Color Function

  • Erweiterter Grauwertbereich (16 Bit) - Extended Gray Level Module

Ein bisher nicht erwähntes Modul ist das 16Bit-Zusatzmodul:

Während normalerweise die Verarbeitung von Bildern auf 8 Bit Grauwerte beschränkt ist, gibt es eine Reihe von Funktionen, in denen ein erweiterter Pixelwertebereich sinnvoll oder notwendig ist. So wird z. B. in der Fouriertransformation mit 32 Bit Floating Point Zahlen gearbeitet. Mit dem 16Bit-Modul wird durch die interne Bildpunktdarstellung mit 16 Bit die Möglichkeit gegeben, Bilder mit wesentlich mehr als den mit 8 Bit darstellbaren 256 Grauwerten zu bearbeiten. Wichtige Anwendung ist z. B. die Computertomographie (CT), bei der üblicherweise 12 Bit Daten anfallen. Dieses entspricht einem Umfang von 4096 Grauwerten. Mit dem Erscheinen von hochauflösenden CCD-Kameras mit mehr als 8 Bit Grauwertauflösung ist dieses Modul in der Lage, die gesamte von der Kamera übergebene Bildinformation auszuwerten. Einige Funktionen des picCOLOR-Programmes benötigen bereits intern einen 16Bit-Speicher und verwenden damit schon bestimmte Funktionen des 16Bit-Modules. Dies sind z. B. die Orientierungsanalyse mit der Tensorrechnung sowie die Hough-Transformation, deren r-phi-Raum ebenfalls 16 Bit tief ist. Das PIV-Extension-Modul ist auch schon in einer 16-Bit-Version verfügbar, da die üblichen PIV-fähigen Kameras (z. B. PCO-Sensicam) mit 12 Bit Grauwerten arbeiten.


15. Fehlerbehandlung

Eine gute Software reagiert sinnvoll auf Fehler eines Benutzers. Das ist bei einem so komplexen Programm wie dem picCOLOR-Programm mit hunderten von Funktionen und noch mehr Möglichkeiten, Funktionsparameter einzugeben, jedoch nicht immer leicht zu verwirklichen. Zumindest muß jedoch sichergestellt sein, daß sinnvolle Fehlermeldungen ausgegeben werden, an denen der Benutzer die Art des Fehlers erkennen kann und dann darauf z. B. durch erneute richtige Eingabe reagieren kann. Zusätzlich muß immer bedacht werden, daß es grundsätzlich keine Software ohne Fehler gibt. Der Benutzer muß daher immer sicherstellen, daß durch Fehlfunktionen des Programmes nicht wertvolle zeitaufwendige Arbeiten verloren gehen und nach Datenverlust mühevoll erneut durchgeführt werden müssen. Daher sind hier Möglichkeiten zur Datenrettung und -Sicherung angegeben. Im Einzelnen sind folgende Punkte behandelt:

  • - Fehlerhaftes Verhalten des picCOLOR Programmes selbst oder Probleme beim Initialisieren, Starten oder beim Programmablauf.

  • - Beschreibung der Fehlermeldungen vom picCOLOR Programm, die durch Aktionen des Benutzers hervorgerufen werden (Disk Full, File Not Found usw.).

  • - Möglichkeiten des Benutzers zur Datensicherung und zur Datenrestaurierung nach schweren Systemfehlern, Systemabstürzen oder nach Überschreiben der picCOLOR Software durch den Benutzer durch nachfolgend ausgeführte Programme.

15.1. Fehler bei Installation oder Programmstart
Während der Installation der Hardware, d. h. der Bildverarbeitungskarte, können Fehler auftreten. In einem solchen Fall sollten Sie sich, wenn der Fehler nach gründlichem Studium des Handbuches der Bildverarbeitungskarte nicht behoben werden kann, an den Hersteller der Bildeinlesekarte wenden. Üblicherweise sind dies Fehler in der Adressbelegung Ihres Personal Computers, d. h. es werden Adressen, Interrupts oder andere Resourcen von mehreren Einsteckkarten gleichzeitig genutzt. Dieses Problem läßt sich im Normalfall durch Umstecken einiger Jumper auf einer der Karten lösen und ist in den jeweiligen Hardwarebeschreibungen genau aufgeführt.
Nach einwandfreiem Funktionieren der Bildverarbeitungskarte sollte bei der Installation der picCOLOR Software eigentlich kein Problem auftreten. Falls Sie ein System mit Dongle haben und die Meldung "Dongle not Found" auftritt, sollten Sie den einwandfreien Sitz des z. B. in der parallelen Schnittstelle "LPT1" oder der USB-Schnittstelle steckenden Dongles überprüfen. Eventuell sollten Sie testen, ob der Rechner und die jeweilige Schnittstelle mit eingestecktem Dongle sonst einwandfrei funktioniert, d. h. ob Sie problemlos einen File auf dem am Dongle angeschlossenen Drucker ausdrucken können.

Bei Programmstart wird ein eventuell eingesetzter Frame Grabber (Bildeinlesekarte) initialisiert. Falls hierbei Fehler auftreten, werden entsprechende Meldungen ausgegeben. Der schlimmste Fehler ist natürlich der, daß die im picCOLOR-Programm fest eingestellt und daher erwartete FrameGrabber-Karte überhaupt nicht gefunden wird. In diesem Fall sollte man überprüfen, ob die Karte eventuell noch von einem anderen Programm in Anspruch genommen wird. Für weniger fatale Fehler sollen hier einige Beispiele gegeben werden:

CORECO F64P: Hier kann es z. B. vorkommen, daß keine Hostbuffer definierbar sind. Dies sind die Bildspeicher auf dem PC, die über DMA (Direct Memory Access) mit der F64P-Karte verbunden sein müssen, um eine schnelle Datentransferrate zu garantieren. Überprüfen Sie in diesem Falle mit dem "Oculus F64P Configuration"-Programm (siehe Kap. 2 Hardware-Installation), ob die Hostbuffer richtig initialisiert wurden. Wenn die F64P-Karte überhaupt nicht angesprochen werden kann, sollte man das System herunterfahren und einen System-Reset versuchen oder den Rechner einige Sekunden völlig ausschalten. Einen Software-Reset gibt es leider nicht. Die F64P-Karte kann immer nur von einem einzigen Programm genutzt werden. Bevor Sie also picCOLOR starten, muß jedes andere Programm, das die F64P benutzt, beendet sein.

CORECO VIPER/X64/Xcelera: Bei der VIPER-, X64- oder Xcelera-Kartenserie wird ebenfalls überprüft, ob noch ein anderes Programm bei der Karte angemeldet ist. In diesem Fall wird eine Fehlermeldung ausgegeben, die besagt, daß der Frame Grabber nicht genutzt werden kann. Das picCOLOR kann dann jedoch trotzdem benutzt werden, lediglich die Bildübernahme ist dann abgeschaltet. Wenn die Karte nicht richtig abgemeldet wurde, z. B. durch einen Programmabsturz, so wird beim nächsten Start eine Fehlermeldung ausgegeben. In diesem Fall muß über das von DALSA/CORECO mitgelieferte und installierte Programm "Digital Viewer" ein Reset ausgelöst werden. Dieser Vorgang dauert mehrere Sekunden. Danach ist die Karte wieder für picCOLOR oder andere Applikationen zugreifbar.

Silicon Software MicroEnable: Beim Start des picCOLOR-Programmes werden die FPGA's der Karte programmiert. Dies geschieht über das Laden bestimmter Files. Wenn hier ein Fehler auftritt, wenn z. B. diese Files nicht gefunden werden, so wird eine Meldung ausgegeben. Das picCOLOR Programm ist dann trotzdem lauffähig, jedoch ohne Zugriff auf den Frame Grabber.

Euresys GrabLink Value/Expert: Hier wird vor allem geprüft, ob die gewünschte Kartentopologie vorhanden und einstellbar ist, z. B. ob bei Stereobetrieb zwei Kameras angeschlossen werden können usw.

IDS Falcon/Eagle: Die Falcon/Eagle-Karten gibt es in unterschiedlichen Konfigurationen mit unterschiedlicher Anzahl von A/D-Wandlern, d. h. getrennten Grabbern auf dem Board. Hier kann es zu Fehlermeldungen kommen, wenn z. B. bei Stereoeinstellung nicht zwei getrennte Eingangskanäle gefunden werden.

15.2. Funktionsfehlermeldungen
Alle Fehlermeldungen des picCOLOR Programmes erscheinen als kleine Fenster mit der Fehlermeldung und einer Anweisung an den Benutzer, darauf zu reagieren. In den meisten Fällen erscheint hier ein "OK"-Schalter (eventuell auch mit einem "Cancel"-Schalter), oder auch eine rote "Mouse Click to Continue..."-Meldung in der Statuszeile. Hier kann der Benutzer lediglich die Meldung akzeptieren und muß danach die Entscheidung treffen, wie er weiter vorgeht. Manche Fehlermeldungen lassen dem Benutzer jedoch über die linke oder rechte Maustaste oder die "OK"- oder "Cancel"-Taste auch verschiedene Möglichkeiten, weiter vorzugehen. Viele der z. Zt. implementierten Fehlermeldungen des Basis-Programmes werden im folgenden aufgelistet. Die Fehlermeldungen des MACRO-Interpreters sind im speziellen MACRO-Handbuch aufgeführt. Neue Fehlermeldungen werden ohne weitere Ankündigung implementiert, wobei natürlich versucht wird, diese so aussagekräftig wie möglich zu gestalten. Unten findet man eine genauere Beschreibung der wichtigsten Meldungen und eventuell sinnvolle Reaktionen darauf, falls diese nicht schon selbstverständlich sind. Alle Fehlermeldungen sind, wie auch das komplette picCOLOR-Programm, in englischer Sprache gehalten.

Buffer and Initialization
"Video Memory Error!"
"Fatal Memory Error!"
"Please Check Security Hardware!"
"Status ‘n’ at Initialization"
"Mouse not found!"
"Not a valid address for Buffers 0 and 1"
"Not a valid system configuration!"
"Unrecoverable Error at initialization"
"Wrong version of .INI file. Create file with actual program version"
"No support for selected display type"
"Not enough video memory for this buffer configuration - will be cut to 512 lines"
"Horiz. res. of >1024 not supported." (GEMINI only)
"Not enough memory for selected buffer:, Use smaller buffer size!"
"Buffer Configuration not Available!"
"Free 3D/Sequence buffer before initialization"
"Too many Image buffers (max=15)"
"Free Color-buffer first"
"One Image-Buffer only - you will need it..."
"1 Color buffer only!"
"Undo not enabled"
"Image not defined"
"1 screen available only" (STEREO)
"Free regular Image-buffer first"
"No Color buffer defined"
"FFT buffer not defined"
"Temporary buffer already defined"
"Free Temporary Buffer ERROR!"
"No Temporary Buffer defined"
"Free FFT buffer (X) first!"
"Free FFT buffer (Y) first!"
"Free FFT buffer (Z) first!"
"Free Contour buffer first!"
"Free PixArea buffer first!"
"Free 3D buffer [n] first!"
"Free 3D-FFT buffer [n] first!"
"Free Color Dither buffer first!"
"There are other buffers to be deallocated first!"
"Error allocating overlay buffer"
"Overlay buffer already defined"
"Error deallocating overlay buffer"
"No overlay buffer defined"
"Not enough DRAM to execute this function"
"Memory allocation failure"
"ROI-Border Draw-Error"
"ROI-Border Remove-Error"
"‘.ROI’ load file could not be opened!"
"‘.ROI’ save file could not be opened!"
"Image[0] not valid! - ACTIVATE valid image in following menu or COPY actual SCREEN to image"
"Left Click: ACTIVATE | Right Click: COPY SCREEN"
"Secondary screens not enabled!"

DOS Errors, File Errors
"ASCII-File not created (exists?) !"
"ASCII-File not found!"
"Directory not found!"
"Error Creating Directory"
"Directory not found or not empty"
"Drive not found"
"Not a valid Drive"
"Can’t delete file!"
"DOS Error: Can’t execute command!"
"ERROR: Header Line Expected"
"Error reading directory"
" - File not created (may exist?)"
"Data file already open"
"ERROR closing data file"
"Requested data file does not exist"
" - File not found!"

Printer (Video-Printer)
"‘.PRN’-File not created!"
"VGA display frequency not available"
"CCIR display frequency not available"

LUT
"‘.PAL’ - File not created (exists?) !"
"‘.PAL’ - File not found!"

Dual Page Mode
"No dual page mode with true color"
"Does your system support dual page mode?"
"No memory for dual screen!"

Save/Load Image
"Not enough RAM for SAVE buffer: use smaller ROI!"
"Not enough memory to load complete image!"
"Transparency mask not impl."
"Separation Layer not impl."
"Pixel size not implemented"
"TiffClass-Error"
"No compression algorithm for RGB images!"
"TIFF-Command not known:"
"Wrong TIFF version number ($002a only)"
"Not a valid TIFF file!"
"Errors in TIFF header or unknown commands: Try display anyway?"
"No Image Buffer Activated: Please set Buffer"
"Error at RGB image"
"Photometric Interpretation Error"
"No compressed RGB images!"
"Compression algorithm not implemented"
"Image description too long - truncated!"
"PIC-Format for compatibility only! Do not use any more!"
"File not open for buffered input"
"File not open for buffered output"
"Error from JPEG function"
"Wrong Pixelsize"
"Not a valid JPEG file"

Frame Grabbing
"Use with external frame grabber only"
"Image will be grabbed automatically"
"for picCOLOR V2.17 frame grabber only"
"for picCOLOR or F/64(16bit) frame grabber only"
"ROI exceeds visible screen!"
"Set Video Standard from Frame Grabber Menu"
"Exit Frame Grabber Menu for Change"
"picCOLOR V2.17 is CCIR only"
"Internal Grabber Not Supported"
"Only CCIR supported for external grabber"
"No valid image buffer active: Please select in following menu"
"Error initializing grabber"
"Frame grabber is disabled"
"Error closing grabber"
"Image Buffer to Small!", (for 736 size at 512 buffer)
"Please Change Buffer with ‘Buffer Size’!"
"RGB acquire undo not possible"
"Stereo acquire undo not possible"
"Snapshot using 3 manually set filters? Are you kidding? :-)"
"Stereo in gray level only"
"No averaging with external grabber"
"Optimal setting found!"
"Image too dark: open lens!"
"Image too bright: close lens!"
"Too much contrast: close lens!"
"User abort... !"
"No automatic gain with RGB-camera"
"No automatic gain with color filters"
"No Automatic Gain/Offset with external grabber"
"Special mode picCOLOR 16bit/pix only"
"Sequence for B/W-camera only!"
"ROI too close to image bottom"
"Real time sequence for picCOLOR or F/64 frame grabber only"
"Allocate memory for sequence/3D-image"
"Sequence/3D-grabbing with Sequence-Module only"
"No Input-Look-up-table"
"RGB-Camera not supported"
"Not enough memory to load entire frame"
"Wrong Pixelsize"
"Not a valid frame grabber image"

Image Processing Functions, allgemein
"Sorry - Function not implemented"
"Ppop for picCOLOR or F64 only"
"Required image buffer not available" (ORIENTATION)
"Undo of destination image only!"
"Move mask in MONOCHROME mode only... (Transparency flag valid for MASK operations)"
"Step size not supported, using ‘2’"
"ROI too small"

Geometry
"Select smaller ROI" (COSINE DISTORT)
"No heap memory"
"Set stereo flag"
"ROI not quadratic"
"ROI too wide..."
"Transf. matrix singular"
"Spline distortion not supported"

True Color
"RGB image not valid (different color space?)"
"No valid RGB image"
"No valid RGB-image in color buffer"
"Image is converted to RGB space"
"Image is converted to HLS space"
"Image is converted to HSI space"
"Image is converted to YIQ space"
"Image is converted to UVW space"

"Image is converted to XYZ space"

"Image is converted to U*V*W* space"

"Image is converted to LAB space"

"Image is converted to YCBCR space"

"Image is converted to CMY space"

"image not in RGB space"
"Image not in HLS space"
"Image not in HSI space"
"Image not in YIQ space"
"Image not in UVW space"
"Image not in XYZ space"
"Image not in U*V*W* space"
"Image not in LAB space"
"Image not in YCBCR space"
"Image not in CMY space"
"Please load Dither table first!"
"Only YIQ implemented" (in color_space function)
"Not in HSI or HLS mode"
"System not in HLS mode"
"Not in YIQ or YUV mode"
"file ‘DITH_TBL.SYS’ not found!"
"Cannot allocate dither table"
"Dither table already allocated"
"No dither table for true color system!"
"No dither table"
"No color buffer defined!"
"Function cannot be executed!"
"Please define (DefineBuffer)!"

"RGB-Space Available Only"

"No copy within true color image"

"Warning: Image is not in requested color space"

"Need Bit Depth Of 8 For Palette Conversion"

"Unknown Color Space"

"Converting RGB to RGB, what for???"

"Use Special Function for HLS or HSI Conversions"

"Conversion from Special Color Space to RGB Not Yet Implemented"

"Unknown Color Space Requested"

"Image not in HLS or HSI Color Spacee"

"Unknown Color Space"

Fourier Transform
"Memory allocation failure"
"No memory for hamming window..."
"Function cannot be executed!"
"No valid FFT buffer defined!"
"Not enough memory for buffer!"
"Harmonic not available"
"Wrong ROI"
"ROI’s have different size"
"Function cannot be executed!"
"Freq.buffer contents not valid!"
"Please transform image (FFT)!"
"No FFT buffer defined!"
"System ERROR!"

Morphology
"Kernal size must be 3*3 or 5*5"
"ROI too small"
"User abort" (watershed)
"Memalloc failure (Queue)"
"Wait for memory release..."
"Memory alloc. failure"

Pyramid
"No Laplace Pyramid: Active==Second!"
"Select smaller ROI"

Vector Measurement
"No list active"
"Vector list 1 element only"
"Vector list empty"
"Vector list less than 3 elements"
"Vector list too short"
"Using RGB-color buffer"
"Define stereo or RGB-color buffer"
"No stereo drawing in interactive mode"

Object Search and Classification
"No memory for pixel runs"
"Object rejected"
"Pointer not on valid object"
"Wrong angle [-180..360]"
"Error: Search dist. < 0"
"Area buffer too small"
"Cannot allocate area buffer"
"PixelArea overlay buffer not defined"
"Searching within oversized object"
"Particle not valid"
"Y smaller than start"
"Particle crosses ROI-border"
"Boundary too large or not closed"
"Boundary too large", "Boundary too small"
"Ellipse area too large", "Ellipse area too small"
"Ellipse ratio too small", "Ellipse ratio too large"
"Ellipse angle too small", "Ellipse angle too small"
"Ellipse angle too small", "Ellipse angle too large"
"Particle area too small", "Particle area too large"
"Area/Box too small", "Area/Box too large"
"Roundness too small", "Roundness too large"
"Area==0: Obj. already tested"
"Area<0: Buffer Problem..."
"List empty!"
"Particle List Empty"
"No memory or Object too large!" (subpixarea)
"Edge List Empty"

Statistics
"No Line Freq. Data"
"No memory for Line-Freq.data"
"No memory for Hamming"
"No maximum found"
"Error deallocating Matrix space" (COOCURRENCE)
"No memory for Matrix [128kByte]"

Stereo
"Use 1024*512 or smaller buffer"
"Set stereo flag!"

Hough Transform
"No memory for sin/cos-table"
"Hough - 16 Bit transformation for picCOLOR V2.17 only"
"pixel stack overflowed"
"Define Edge Image Buffer"

Object Classification
"Select new working buffer: Active buffer must not be one of classification channels!"
"Error deallocating 3D-Matrix space"
"Error deallocating Matrix space"
"No memory for Matrix [64kByte]"
"First define clusters (by training or automatic)"
"Only one cyclic channel this version"
"Training area too large" (more than 16384 pixel)
"OCP-File not created (exists?) !"
"OCP-File not found!"
"Graphic for 2 or 3 channels only"
"Needs 2MBytes memory for 3D-buffer!"

Calibration
"Old unit not recognized"
"New unit not recognized"
"Keep old scale factors!"
"No scale factors set!"
"Wrong calibration, try again! Scale factors not defined"
"‘.CAL’ load file could not be opened!"
"‘.CAL’ save file could not be opened!"

Graphics
"Drawing gray values only"
"Add for RGB-images not yet implemented"
"No RGB Image active!"
"3D-Test not implemented"

3D/Sequence Processing
"Deallocate 3D/Sequence-buffer(s) first!" - Es wurde versucht, die Sequenzbildgröße zu verändern. Hierzu muß der Sequenzspeicher (oder die Speicher) zuerst freigegeben werden.
"Memory limit: select smaller 3d/sequence buffer" - Der Speicher reicht für die gewünschte Sequenzgröße nicht aus, entweder kleinere x- oder y-Ausdehnung einstellen oder geringere Anzahl einstellen.
"'n' 3d/sequence buffers only!" - Es kann nur eine Begrenzte Anzahl von (immer gleich großen) Sequenz/3D-Bildspeichern eingerichtet werden. Z. Zt. sind dies 256 Stück. Dabei kann jede Sequenz maximal 16000 Bilder haben.
"Size of 3d/sequence buffer must not be zero!" - Selbstverständlich darf keine der Dimensionen eines Sequenzbildes oder 3D-Bildes auf Null gesetzt sein.
"Memory limit: select smaller 3D FFT buffer!" - 3D-FFT-Speicher benötigen erheblichen Speicher: pro Pixel zwei 4 Byte floating-point-Werte, d. h. 8 Byte
"3D FFT buffer for active 3D image already allocated!" - Für jeden Sequenz/3D-Speicher kann ein einziger FFT-Speicher definiert werden.
"Size of 3D FFT buffer must not be zero!" - Keine Dimension des FFT-Speichers darf gleich Null sein
"Free 3D-FFT Buffers!" - oder
"Dealloc 3D FFT buffer(s) first" - Vor einer Änderung von 3D/Sequenz-Speichergrößen müssen sowohl die 3D/Sequenz-Speicher als auch die 3D-FFT-Speicher entfernt werden

Fehler bei Verarbeitung der 3D/Sequenzbilder
"x-plane not available" -Angewähltes Schnittbild ist nicht definiert.
"y-plane not available" -Angewähltes Schnittbild ist nicht definiert
"z-plane not available" -Angewähltes Schnittbild (3D) oder Einzelbild (Sequenz) ist nicht definiert
"No 3D/Sequence-Buffer Defined" - Es wurde eine 3D/Sequenz-Funktion aufgerufen, ohne daß ein 3D/Sequenzbild definiert ist.
"rank is out of range [1..n] or (-1,0,1)" - Falsche Eingabe bei der Rank-Funktion
"size must be 3, 5, .., n" - Falsche Eingabe bei verschiedenen Funktionen
"Two 3D-images must be defined" - Bei dualen Funktionen zwei 3D-Speicher definieren
"Active != Destin" - Kopieren kann z. B. nicht auf sich selbst erfolgen
"Function will destroy valid 3D-FFT data - ok?" - Gültiger Frequenzspeicher wird überschrieben
"3D-FFT data not valid - transform anyway?" - Es wurde zuvor keine Fourier-Transformation durchgeführt, das System weiß nicht, ob die Daten im aktuellen FFT-Speicher sinnvoll sind
"No memory for hamming window... Continue anyway? (Left Click)" - Die Hamming-Fensterfunktion benötigt einigen zusätzlichen Speicher. Wenn bei dieser Fehlermeldung trotzdem weitergearbeitet wird, so wird das Hammingfenster bei der FFT-Ausführung einfach weggelassen.
"Function cannot be executed! No 3D-FFT buffer defined!" - Vor Ausführung einer Funktion im Fourier-Speicher muß ein solcher definiert werden
"Requested 3D-FFT buffer not allocated" - Es wurde versucht, einen 3D-FFT-Speicher anzusprechen, der noch nicht definiert ist.
"3D-FFT buffer not defined!" - Vor Ausführung einer Funktion im 3D-Fourier-Raum muß natürlich ein 3D-FFT-Speicher definiert werden.

Es folgen nun genauere Beschreibungen verschiedener Fehlermeldungen und eventuell sinnvolle Reaktionen auf diese Meldungen.

15.3. Startup und Disk Errors
Buffer configuration not available:
Freestart Error at initialization:
Not a valid system configuration:
Unrecoverable Error at Initialization: Fehler beim Laden des "STARTUP.INI"-Files bei nicht kompatiblem Datensatz. Dies passiert normalerweise, wenn eine neue Programmversion eingesetzt wird. Abhilfe: Löschen Sie den STARTUP.INI-File im C:\PICCOLOR-Verzeichnis und erzeugen Sie nach erneutem Start des picCOLOR Programmes einen neuen Startup-File. Hinweis: das picCOLOR Programm versucht trotz der Fehlermeldung, mit einer sinnvollen Bildspeicher- und Bildschirmauflösung aufzustarten. Sie sollten sich jedoch nicht auf eine einwandfreie Funktion verlassen und sollten picCOLOR beenden und den falschen oder fehlerhaften STARTUP.INI-File löschen.
File "STARTUP.INI" not found: Dies ist kein schwerer Fehler: Sie können jederzeit einen "STARTUP.INI"-File erzeugen, indem Sie die Funktion "Save Status" im Configuration-Menü aufrufen. Der File muß im C:\PICCOLOR-Directory stehen.
File "DITH_TAB.SYS" not found: Wenn dieser File nicht im "C:\PICCOLOR" Directory gefunden wurde, kann keine Darstellung von Echtfarbbildern der Pixeltiefe 24 Bit auf 8 Bit-Graphikkarten erfolgen.
Write Error:
Read Error:
File Not Found:
Directory not found:
Disk Full:
Can’t delete file: Dies sind übliche DOS-Fehlermeldungen, die hier nicht im einzelnen erläutert werden. Beschreibungen finden Sie in den Unterlagen zum Betriebssystem Ihres Rechners.
Error Reading Directory: Bei der Eingabe eines Such-Pfades über die Directory-Selection-Box wurde ein File gewählt, der nicht als Directory lesbar ist. Diese Fehlermeldung kann z. Zt. noch auftreten, wenn Files ohne Extension vorhanden sind. Abhilfe: Es muß mit der Maus die Pfad-Eingabezeile aktiviert werden und ein kompletter neuer Pfad, beginnend mit der Laufwerksbezeichnung eingegeben werden. Diese Fehlermeldung kann unter bestimmten Umständen auch auftreten, wenn ein Directory-Pfad mit einer DOS-Funktion ohne Wissen des picCOLOR-Programmes geändert wurde und man eine File-Dialogbox (Load, Save, Macro) aufruft. Der Pfad, den sich das picCOLOR-System gemerkt hat, war dann in dieser Form nicht mehr verfügbar.
Path Not Found:
Not a valid Drive: Bei Eingabe eines Such-Pfades oder eines Drive-Namens kann der jeweilige Name nicht gefunden werden.
Disk Write Error (Disk Full?) - File Deleted: Beim Schreiben eines Bildes auf die Festplatte tritt ein Schreibfehler auf. Üblicherweise tritt dieser Fehler auf, wenn die Festplattenkapazitätsgrenze erreicht wurde. Der unvollständige File wird dann automatisch gelöscht.
File Not Created: Beim Anlegen eines neuen Files existiert der Filename schon, den Sie eingegeben haben. Es wird Ihnen die Möglichkeit gegeben, einen neuen Filenamen einzugeben. Es kann auch sein, daß Sie einen ungültigen Filenamen eingegeben haben, z. B. mit ungültigen Sonderzeichen.
.PAL-file not created (oder .HST, .H2D, .COC usw.):
.PAL-file not found (oder .HST, .H2D, .COC usw.):
Error opening data file:
Error closing data file:
Data file already open:
No data file open: Es tritt ein Fehler auf beim Anlegen, Einlesen oder Schließen eines Datenfiles. Die jeweils angegebene Extension gibt Auskunft über den Typ des fehlerhaften Files.

15.4. Eingabefehler
Bei fehlerhafter Bedienung oder falscher Befehlsreihenfolge können die folgenden Meldungen auftreten:
DOS Error - can’t execute command: Ein nicht ausführbares DOS-Kommando wurde eingegeben.
Error at RGB image:
Transparency mask not implemented:
Separation layer not implemented:
TiffClass Error:
No compression of RGB images:
Wrong TIFF-version: $002A only:
Not a valid TIFF file:
Fatal errors in TIFF header or unknown commands; Try anyway?: Fehler, die beim Einlesen eines Bildes im TIFF-Format auftreten können
Buffer too small, image could not be loaded completely:
Not enough DRAM for SAVE buffer: use smaller ROI!: Geben Sie Speicher frei und starten Sie den Ladevorgang erneut. Beim Speichern kann auch eine kleinere ROI gewählt werden.
No image buffer activated - please set buffer: Beim Einlesen eines Bildes von der Festplatte oder vor einer Bildverarbeitungsfunktion stellt das System fest, daß kein zulässiger Bildspeicher zum Ablegen des Bildes aktiviert wurde. (Ein "uneigentliches Bild" oder der Undo-Speicher ist nicht zulässig!) Es wird die Möglichkeit gegeben, die Wahl eines Bildspeichers nachzuholen.
RGB image not valid (system may be in different color space):
No valid RGB image in color buffer:
Sorry: system in HSI or HLS-mode:
Not yet converted to HSI or HLS-mode:
System in RGB-Mode: (oder HSI, HLS, YIQ, YUV):
Image is converted to RGB-mode: (oder HSI, HLS, YIQ, YUV):
Image not converted to RGB-mode: (oder HSI, HLS, YIQ, YUV):
Image already converted to RGB-mode: (oder HSI, HLS, YIQ, YUV): Fehler bei nicht sinngemäßer Benutzung der Echtfarb-Bildspeicher oder der Umwandlungen in die verschiedenen Farbräume.
Function cannot be executed! No FFT buffer defined! System Error: Bei der Initialisierung der Fouriertransformation konnte kein Speicher für die Fourierkoeffizienten angelegt werden.
Image Buffer Not Available: Es wurde versucht, über eine Hot-Key-Taste einen Bildspeicher anzuzeigen, der noch nicht definiert wurde.
Too Many Image Buffers (max 256): In der vorliegenden Version des Programmes werden maximal 256 Bildspeicher verwaltet. Ein Echtfarbspeicher belegt gleichzeitig drei einzelne Bildspeicher. Ein Farbspeicher für einen anderen Farbraum (HSI, HLS oder YUV) belegt bei genügend vorhandenem Arbeitsspeicher weitere drei Bildspeicher. Bei DRAM-Knappheit wird dafür der RGB-Speicher doppelt genutzt.
Image buffer smaller than screen:
Image buffer larger than screen: Dies ist eigentlich kein Fehler, da man mit picCOLOR nicht darauf festgelegt ist, daß Bildschirmspeicher und Bildspeicher im Hintergrund gleich groß sind. Zur Vermeidung von Fehlern ist es jedoch sehr sinnvoll, diese Speicher immer anzugleichen (Funktionen "Define Screensize" und "Define Buffer size").
No color buffer defined:
No RGB-Buffer Defined: Es wurde versucht, den noch nicht definierten RGB-Speicher zu benutzen. Der Speicher muß vor der ersten Benutzung mit der Funktion "Define Color Buffer" definiert werden. Dies kann jedoch mit Hilfe des "STARTUP.INI"-Files automatisch geschehen.
Color buffer already defined: Es kann z. Zt. nur ein einziger Echtfarbbuffer definiert werden.
RGB-Image not active: Nach der Definition eines RGB-Speichers ist darin natürlich noch kein sinnvolles Bild enthalten. Ein Versuch, den RGB-Speicher in diesem Fall mit der "D"-Taste anzuzeigen, wird daher nicht zugelassen. Erst nach Hereinladen eines RGB-Bildes ist der RGB-Speicher aktiv. Wenn der Speicher aus anderen Gründen trotzdem aktiviert werden soll, da man z. B. die RGB-Anteile einzeln geladen hat, muß das Bild mit "Activate RGB" aktiviert werden.
No 3D-Buffer Defined: Es wurde versucht, den noch nicht definierten Speicher für 3-dimensionale Bilder oder Sequenzen zu benutzen. Der Speicher muß vor der ersten Benutzung definiert werden. Dies kann bei Programmstart durch den STARTUP.INI- und den STARTUP.MCR-File getan werden.
ROI Too Small: Bei bestimmten Funktionen der Bildbearbeitung (z. B. bei größeren Nachbarschaftsoperationen) gibt es gewisse Mindestgrößen für die aktuelle ROI.

15.5. Bei MACRO-Funktionen auftretende Fehlermeldungen
Die Fehlermeldungen, die bei der Ausführung von MACRO-Programmen auftreten können, werden im MACRO-Handbuch vorgestellt und erläutert.

15.6. Bei Speichermangel auftretende Fehlermeldungen
Fatal Memory Error!: Diese Fehlermeldung zeigt an, daß die eingesetzte Graphik- oder Bildverarbeitungskarte zwar genug Speicher besitzt, um das picCOLOR Programm zu laden und auszuführen, daß aber kein weiterer Speicher für Bildspeicher und Undo-Speicher zur Verfügung steht.
Not Enough Memory to Execute This Function:
Not Enough Memory to Load TIFF-File:
Not Enough Memory to Save TIFF-File:
Not Enough Memory to Define Image Buffer:
Not Enough Memory for Frequency-Buffer:
Not Enough Memory for Screen-Saver: Bei Auftreten dieser Fehlermeldungen sollten Sie - wenn möglich - die Anzahl der definierten Bildspeicher verringern. Speichern Sie nicht mehr aktuell benötigte Bilder auf Festplatte ab und geben Sie den jeweils letzten Bildspeicher mit der Funktion "Free Image Buffer" frei.

15.7. Nicht implementierte Funktionen
Function not Implemented: dies sind in der Regel Funktionen, die in früheren Versionen von picCOLOR testweise implementiert worden waren, jedoch nicht gebraucht wurden oder nicht optimert wurden und daher von einer Benutzung ausgeschlossen wurden. Es können allerdings auch geplante Funktionen sein - fragen Sie daher nach, vielleicht existiert die gewünschte Funktion schon in einer neueren Programmversion!

15.8. System-Fehler des picCOLOR Programmes:
Please Check Dongle: Nur für "gedongelte" Programmversionen: Diese Fehlermeldung erscheint auf der DOS-Ebene, wenn das Dongle nicht gefunden werden konnte. Bitte überprüfen Sie in diesem Fall, ob das Dongle in der Printerschnittstelle LPT1 steckt und ob ein daran angeschlossener Drucker unter DOS normal funktioniert.

15.9. Interne Programmfehler des Systems
Diese Fehlermeldungen sollten Sie nie sehen... Wenn trotzdem einer dieser Systemfehler auftritt, sollten Sie versuchen, diesen zu reproduzieren und dann dem Softwarehersteller mitzuteilen.
ROI Draw Error:
ROI Remove Error: Vor jeder Bildoperation wird die ROI-Umrandung entfernt und nachher wieder gezeichnet. Wenn diese Fehlermeldungen erscheinen, wurde doppelt versucht, die ROI-Umrandung zu entfernen. Dies zeigt einen internen Programmierfehler an.

15.10. Fehler, die Entscheidungen erwarten
Neben den meisten Fehlermeldungen, die Sie nur durch Maus-Klick, z. B. auf die "OK"-Taste, akzeptieren können, gibt es andere Fehlermeldungen, die Ihnen gewisse Möglichkeiten der Entscheidung geben, auf welche Weise weiter vorgegangen werden soll. Dies sind z. B. Fehlermeldungen, die beim Einlesen von TIFF-Bildern auftreten. Wenn im TIFF-Header Kommandos auftreten, die vom System nicht erkannt werden oder nicht bearbeitet werden können, so haben Sie die Möglichkeit, den Ladevorgang mit der Cancel-Taste abzubrechen, oder Sie können auch dem System mitteilen, daß es versuchen soll, den File trotzdem auf dem Bildschirm darzustellen. Dies kann sinnvoll sein, wenn es sich um nicht so wichtige Kommandos handelt, die z. B. die Orientierung oder die absolute Größe des Bildes betreffen oder die Auskunft über zusätzliche Farbtabellen oder Bildkalibrierungen geben, die in der picCOLOR-TIFF-Implementierung nicht enthalten sind. Es kann z. B. auch sein, daß ein Bild eine nicht darstellbare Pixeltiefe besitzt (so haben etwa NMR-Bilder eine Pixeltiefe von 12 Bit). Das System muß dann wissen, ob es die Werte abschneiden darf.

15.11. Datensicherung und -rekonstruktion
Sie sollten immer bei wichtigen, langwierigen Bearbeitungen eines Bildes innerhalb bestimmter Zeitintervalle die Bildspeicher auf Festplatte abspeichern. Dies dauert nur ein paar Sekunden - die Arbeit an einem Bild kann jedoch Stunden dauern.


16. Literaturverzeichnis

  • Haberäcker, Peter: "Digitale Bildverarbeitung - Grundlagen und Anwendungen," Hanser Studien Bücher 1985 Carl Hanser Verlag München

  • Voss, K., Süße, H.: "Praktische Bildverarbeitung," Hanser Studien Bücher 1991 Carl Hanser Verlag München Wien

  • Jähne, B.: "Digitale Bildverarbeitung," Springer Verlag Berlin, Heidelberg 1989, (1993)

  • Russ, "The Image Processing Handbook," Second Edition, CRC

  • Cooley, J. W., Tukey, J. U.: "An Algorithm for the Machine Calculation of Complex Fourier Series," Math. of Comput., 4/1965

  • Müller, R.: "Die Fouriertransformation in der Bildverarbeitung," ELEKTRONIK Nr. 3 und 4, 1990

  • Söker, W.: "PCL Level V - Einführung in die Programmierung mit dem HP LaserJet III," Vieweg 1992

  • Adobe/Microsoft: "Tagged Image File Format TIFF"

  • Charles Petzold, "Programming Windows"