Aktivieren Sie JavaScript, um die Website anzuzeigen.

IDS Software Suite 4.96.1

Windows_Logo
Linux_Logo

USB 2.0

USB 3.x

GigE

USB 2.0

USB 3.x

GigE

Syntax

INT is_HotPixel (HIDS hCam, UINT nCommand, void* pParam, UINT nSizeOfParam)

Beschreibung

is_HotPixel() konfiguriert die Korrektur der Sensor-Hotpixel. Die Korrektur wird softwareseitig durchgeführt, die Hotpixelliste ist dabei im nicht-flüchtigen Kameraspeicher hinterlegt. Manche Sensormodelle bieten auch eine Korrektur der Hotpixel direkt im Sensor. Für weitere Informationen zur Hotpixelkorrektur siehe Grundlagen: Hotpixel.

Es gibt die folgenden, unterschiedlichen Hotpixellisten:

•*_SOFTWARE_USER_LIST: benutzerdefinierte Hotpixelliste im Computer

•*_CAMERA_FACTORY_LIST: werkseitige Hotpixelliste im nicht-flüchtigen Kameraspeicher

•*_CAMERA_USER_LIST: benutzerdefinierte Hotpixelliste im nicht-flüchtigen Kameraspeicher

•*_MERGED_CAMERA_LIST: werkseitige und benutzerdefinierte Hotpixelliste im nicht-flüchtigen Kameraspeicher (*_CAMERA_FACTORY_LIST und *_CAMERA_USER_LIST)

hint_info

Diese Funktion wird von folgenden Kameramodellen nicht unterstützt:

•UI-1007XS

hint_info

Die Korrektur funktioniert nicht bei eingeschaltetem Subsampling und bei Binning-Faktoren größer 2x.

Adaptive Hotpixelkorrektur

Mit Version 4.82 wird zusätzlich die adaptive Hotpixelkorrektur eingeführt. Die adaptive Hotpixelkorrektur kann im laufenden Bild Hotpixel dynamisch erkennen und adaptiv korrigieren. So können Hotpixel noch besser korrigiert werden, die z. B. durch eine erhöhte Temperatur entstehen. Zudem kann die adaptive Hotpixelkorrektur direkt im Live-Betrieb durchgeführt werden und erlaubt so eine bestmögliche Optimierung auf die Applikationsbedingungen.

hint_info

Hinweis zur adaptiven Hotpixelkorrektur

•Die adaptive Hotpixelkorrektur kann zusammen mit Subsampling, Binning oder Scaler verwendet werden.

•Die adaptive Hotpixelkorrektur kann derzeit nur mit Software- oder RAW-Farbformaten verwendet werden.

Über den Übergabeparameter nCommand wird dabei der Funktionsmodus gewählt. Der Übergabeparameter pParam ist abhängig vom Funktionsmodus unterschiedlich belegt; bei Funktionen zum Setzen oder Rücklesen eines Wertes enthält pParam einen Zeiger auf eine Variable vom Typ UINT. Die Größe des Speicherbereichs, auf den pParam verweist, wird im Übergabeparameter nSizeOfParam angegeben.

Übergabeparameter

hCam

Handle auf Kamera

pParam

Zeiger auf Funktionsparameter, der abhängig von nCommand unterschiedlich belegt ist.

nSizeOfParam

Größe des Speicherbereichs in Byte, auf den pParam verweist.

Modi der adaptiven Hotpixelkorrektur

IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_ONCE

Die Hotpixel werden einmal ermittelt und in einer Liste hinterlegt. Die adaptive Hotpixelkorrektur arbeitet mit dieser Liste. Dieser Modus ist passend für alle Anwendungen mit statischen Lichtverhältnissen, die keine dynamische Anpassung benötigen.

IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_DYNAMIC

Die Hotpixelliste wird dynamisch mit jedem Bild ermittelt. Dadurch kann auf sich ändernde Lichtverhältnisse besser reagiert werden. In diesem Modus kann unter Umständen nicht die volle Bildrate (Framerate) erzielt werden.

IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_ONCE_CLUSTER

Zusätzlich zu den oberen Modi kann eine adaptive Clusterkorrektur zugeschaltet werden, die auch zwei oder mehr benachbarte Hotpixel korrigiert. Die Hotpixel-Cluster werden einmalig ermittelt und in einer Clusterliste hinterlegt. Diese Clusterliste ist unabhängig von der Hotpixelliste.

Beachten Sie, dass die Clusterdetektion auch größere Bildinhalte als Cluster erkennen könnte. Kalibrieren Sie in diesem Fall die Kamera vor einem kontrastärmeren Hintergrund oder dunkeln Sie die Kamera vor der Kalibrierung ab.

IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_DYNAMIC_CLUSTER

Die Clusterliste wird dynamisch mit jedem Bild ermittelt. Dadurch kann auf sich ändernde Lichtverhältnisse besser reagiert werden. In diesem Modus kann unter Umständen nicht die volle Bildrate (Framerate) erzielt werden.

Folgende Kombinationen aus adaptiver Hotpixel- und Clusterkorrektur sind zulässig:

•IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_ONCE

•IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_DYNAMIC

•IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_ONCE | IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_ONCE_CLUSTER

•IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_DYNAMIC | IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_ONCE_CLUSTER

•IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_DYNAMIC | IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_DYNAMIC_CLUSTER

hint_info

Hinweis zur adaptiven Hotpixelkorrektur

Werden die Hotpixel einmalig ermittelt, sollte für die Detektion LUT, Gamma und RGB-Verstärkung deaktiviert werden. Bei der dynamischen Ermittlung kann die Verwendung von LUT, Gamma und RGB-Verstärkung dazu führen, dass zu viele Hotpixel ermittelt und korrigiert werden. Dies kann eine hohen CPU-Last verursachen.

Rückgabewerte

IS_CANT_COMMUNICATE_WITH_DRIVER

Kommunikation mit dem Kameratreiber schlug fehl, weil kein Treiber geladen ist.

IS_CANT_OPEN_DEVICE

Ein Versuch die Kamera zu öffnen schlug fehl (Kamera nicht vorhanden oder Fehler beim Initialisieren).

IS_INVALID_CAMERA_TYPE

Kameratyp der .ini-Datei stimmt nicht mit dem aktuellen Kameramodell überein.

IS_INVALID_CAMERA_HANDLE

Ungültiges Kamera-Handle

IS_INVALID_PARAMETER

Einer der übergebenen Parameter ist außerhalb des gültigen Bereichs, oder für diesen Sensor nicht unterstützt, bzw. in diesem Modus nicht zugänglich.

IS_IO_REQUEST_FAILED

Eine IO Anforderung des uEye Treibers schlug fehl. Eventuell passen die Versionen der Dateien ueye_api.dll (API) und ueye_usb.sys bzw. ueye_eth.sys (Treiber) nicht zusammen.

IS_NO_SUCCESS

Allgemeine Fehlermeldung

IS_NOT_CALIBRATED

Die Kamera enthält keine Kalibrierungsdaten.

IS_NOT_SUPPORTED

Das verwendete Kameramodell unterstützt diese Funktion oder Einstellung nicht.

IS_NULL_POINTER

Ungültiges Array

IS_OUT_OF_MEMORY

Es konnte kein Speicher alloziert werden.

IS_SUCCESS

Funktion erfolgreich

IS_TIMED_OUT

Ein Timeout trat auf. Eine Bildaufnahme konnte nicht in der vorgeschriebenen Zeit beendet werden.

Beispiel 1

// Korrektur aktivieren/deaktivieren
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_DISABLE_CORRECTION, NULL, NULL);
 
nRet = is_HotPixel(hCam, IS_HOTPIXEL_ENABLE_CAMERA_CORRECTION, NULL, NULL);
nRet = is_HotPixel(hCam, IS_HOTPIXEL_ENABLE_SOFTWARE_USER_CORRECTION, NULL, NULL);
nRet = is_HotPixel(hCam, IS_HOTPIXEL_ENABLE_SENSOR_CORRECTION, NULL, NULL);
nRet = is_HotPixel(hCam, IS_HOTPIXEL_DISABLE_SENSOR_CORRECTION, NULL, NULL);

Beispiel 2

// Aktuellen Modus auslesen
INT nMode = 0;
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_GET_CORRECTION_MODE, (void*)&nMode, sizeof(nMode));
// Unterstützte Modi abfragen
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_GET_SUPPORTED_CORRECTION_MODES, (void*)&nMode, sizeof(nMode));

Beispiel 3

// Benutzerdefinierte Hotpixelliste auslesen
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_GET_SOFTWARE_USER_LIST_EXISTS, NULL, NULL);
if (nRet == IS_SUCCESS)
{
// Anzahl der Hotpixel in der benutzerdefinierten Liste abfragen
INT nNumber = 0;
nRet = is_HotPixel(hCam, IS_HOTPIXEL_GET_SOFTWARE_USER_LIST_NUMBER, (void*)&nNumber, sizeof(nNumber));
if (nRet == IS_SUCCESS)
{
  // Ausreichend Speicher allozieren. Jeder Hotpixel benötigte einen zwei WORD großen
  // Speicher.
  // Je ein zusätzlicher Speicherplatz von einem WORD ist benötigt für die Nummerierung.
  UINT nListSize = 1 + 2 * nNumber;
  WORD *pList = new WORD[nListSize];
  nRet = is_HotPixel(hCam, IS_HOTPIXEL_GET_SOFTWARE_USER_LIST, (void*)pList, nListSize * sizeof(WORD));
 
  // Einen Wert ändern und die Liste speichern.
  // In pList[0] muss die Nummer des Hotpixel liegen
  pList[1] = 100;
  nRet = is_HotPixel(hCam, IS_HOTPIXEL_SET_SOFTWARE_USER_LIST, (void*)pList, nListSize * sizeof(WORD));
 
  // Nicht benötigte Liste löschen
  delete [] pList;
}
}

Beispiel 4

// Benutzerdefinierte Hotpixel-Liste im Computer in eine Datei speichern
// Die Liste wird zuvor mit IS_HOTPIXEL_SET_SOFTWARE_USER_LIST erzeugt.
char File1[100];
ZeroMemory(File1, sizeof(File1));
strcpy(File1, "c:\\test.txt");
 
nRet = is_HotPixel(hCam, IS_HOTPIXEL_LOAD_SOFTWARE_USER_LIST, (void*)File1, 0);
 
nRet = is_HotPixel(hCam, IS_HOTPIXEL_SAVE_SOFTWARE_USER_LIST, (void*)File1, 0);
 
// Unicode
wchar_t File2[100];
ZeroMemory(File2, sizeof(File2));
wcscpy(File2, L"c:\\test.txt");
 
nRet = is_HotPixel(hCam, IS_HOTPIXEL_LOAD_SOFTWARE_USER_LIST_UNICODE, (void*)File2, 0);
 
nRet = is_HotPixel(hCam, IS_HOTPIXEL_SAVE_SOFTWARE_USER_LIST_UNICODE, (void*)File2, 0);

Beispiel 5

// Benutzerdefinierte Hotpixel-Liste im nicht-flüchtigen Kameraspeicher speichern
// Abfragen, wie viele Hotpixel maximal im nichtflüchtigen Kameraspeicher gespeichert werden können
INT nMaxNumber = 0;
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_GET_CAMERA_USER_LIST_MAX_NUMBER, (void*)&nMaxNumber, sizeof(nMaxNumber));
if (nRet == IS_SUCCESS)
{
  // z. B. 24 Hotpixel in den Kameraspeicher schreiben
  UINT nNumber = 24; // wobei nNumber <= nMaxNumber
  // Ausreichend Speicher allozieren. Jeder Hotpixel benötigte einen zwei WORD großen Speicher.
  // Je ein zusätzlicher Speicherplatz von einem WORD wird für die Nummerierung benötigt
  UINT nListSize = 1 + 2 * nNumber;
  WORD *pList = new WORD[nListSize];
  pList[0] = nNumber;
  pList[1 + 2 * 0] = 10;     // Hotpixel 1 - x-Wert
  pList[2 + 2 * 0] = 103;     // Hotpixel 1 - y-Wert
  pList[1 + 2 * 1] = 100;     // Hotpixel 2 - x-Wert
  pList[2 + 2 * 1] = 345;     // Hotpixel 2 - y-Wert
  pList[1 + 2 * 2] = 123;     // Hotpixel 3 - x-Wert
  pList[2 + 2 * 2] = 3;       // Hotpixel 3 - y-Wert
  pList[1 + 2 * 3] = 235;     // Hotpixel 4 - x-Wert
  pList[2 + 2 * 3] = 10;     // Hotpixel 4 - y-Wert
  pList[1 + 2 * 4] = 355;     // Hotpixel 5 - x-Wert
  pList[2 + 2 * 4] = 629;     // Hotpixel 5 - y-Wert
  ...
  pList[1 + 2 * 23] = 1205;   // Hotpixel 24 - x-Wert
  pList[2 + 2 * 23] = 553;   // Hotpixel 24 - y-Wert
  nRet = is_HotPixel(hCam, IS_HOTPIXEL_SET_CAMERA_USER_LIST, (void*)pList, nListSize * sizeof(WORD));
  delete [] pList;
}
 
// Benutzerdefinierte Hotpixel-Liste löschen
nRet = is_HotPixel(hCam, IS_HOTPIXEL_DELETE_CAMERA_USER_LIST, NULL, NULL);

Beispiel 6

// Kombinierte Liste zurückgeben
INT nNumber = 0;
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_GET_MERGED_CAMERA_LIST_NUMBER,
                      (void*)&nNumber , sizeof(nNumber));
if (nRet == IS_SUCCESS)
{
// Ausreichend Speicher allozieren. Jeder Hotpixel benötigte einen zwei WORD großen
// Speicher.
// Je ein zusätzlicher Speicherplatz von einem WORD ist benötigt für die Nummerierung.
UINT nListSize = 1 + 2 * nNumber;
WORD *pList = new WORD[nListSize];
nRet = is_HotPixel(hCam, IS_HOTPIXEL_GET_MERGED_CAMERA_LIST, (void*)pList, nListSize * sizeof(WORD));
 
// Nicht benötigte Liste löschen
delete [] pList;
}

Beispiel 7

INT nEnable = 0;
 
// Gibt den aktuellen Status der adaptiven Hotpixelkorrektur zurück
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_ENABLE, (void*)&nEnable, sizeof(nEnable));
if (IS_SUCCESS == nRet)
{
  if (IS_HOTPIXEL_ADAPTIVE_CORRECTION_DISABLE == nEnable)
  {
      // Die adaptive Hotpixelkorrektur ist deaktiviert
  }
  else if (IS_HOTPIXEL_ADAPTIVE_CORRECTION_ENABLE == nEnable)
  {
      // Die adaptive Hotpixelkorrektur ist aktiviert
  }
}
 
// Gibt die Standardeinstellung der adaptiven Hotpixelkorrektur zurück
nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_ENABLE_DEFAULT, (void*)&nEnable, sizeof(nEnable));
if (IS_SUCCESS == nRet)
{
  // Aktiviert die adaptive Hotpixelkorrektur
  nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_SET_ENABLE, (void*)&nEnable, sizeof(nEnable));
}

Beispiel 8

INT nMode = 0;
 
// Gibt den aktuellen Modus der adaptiven Hotpixelkorrektur zurück
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_MODE, (void*)&nMode, sizeof(nMode));
if (IS_SUCCESS == nRet)
{
  if (IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_ONCE == nMode)
  {
      // Die adaptive Hotpixelkorrektur wird einmalig ausgeführt
  }
  else if (IS_HOTPIXEL_ADAPTIVE_CORRECTION_DETECT_DYNAMIC == nMode)
  {
      // Die adaptive Hotpixelkorrektur wird dynamisch ausgeführt
  }
}
 
// Gibt die Standardeinstellung zurück
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_MODE_DEFAULT, (void*)&nMode, sizeof(nMode));
if (IS_SUCCESS == nRet)
{
  // Setzt eine neuen Modus für die adaptive Hotpixelkorrektur
  nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_SET_MODE, (void*)&nMode, sizeof(nMode));
}

Beispiel 9

INT nSensitivity = 0;
 
// Gibt den aktuellen Wert für die Empfindlichkeit zurück
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_SENSITIVITY, (void*)&nSensitivity, sizeof(nSensitivity));
 
// Gibt den Standardwert für die Empfindlichkeit zurück
nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_SENSITIVITY_DEFAULT, (void*)&nSensitivity, sizeof(nSensitivity));
 
// Gibt den Minimalwert für die Empfindlichkeit zurück
nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_SENSITIVITY_MIN, (void*)&nSensitivity, sizeof(nSensitivity));
 
// Gibt den Maximalwert für die Empfindlichkeit zurück
nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_SENSITIVITY_MAX, (void*)&nSensitivity, sizeof(nSensitivity));
if (IS_SUCCESS == nRet)
{
  // Setzt einen neuen Wert für die Empfindlichkeit
  nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_SET_SENSITIVITY, (void*)&nSensitivity, sizeof(nSensitivity));  
}

Beispiel 10

// Setzt die Liste der adaptiven Hotpixelkorrektur zurück
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_RESET_DETECTION, NULL, 0);
 
// Gibt die Anzahl der korrigierten Hotpixel des letzten Bildes zurück
INT nNumber = 0;
INT nRet = is_HotPixel(hCam, IS_HOTPIXEL_ADAPTIVE_CORRECTION_GET_NUMBER_DETECTED, (void*)&nNumber, sizeof(nNumber));