![]() |
![]() |
|---|---|
USB 2.0 USB 3.x GigE |
USB 2.0 USB 3.x GigE |
Syntax
INT is_Measure(HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)
Beschreibung
Die Funktion ermöglicht das Messen der Schärfe in einem definierten Bildausschnitt des aktuellen Bilds. Um einen Wert für die Schärfe zu erhalten, werden die Kanten des Bilds ausgewertet. Die Schärfe kann nur als relativer Wert angegeben werden, da diese von den Kanten im Bild abhängig ist. Ein Bild mit wenig Kanten kann daher nie den Schärfewert erreichen wie ein Bild mit vielen Kanten.
Je höher der Wert ist, desto besser die Schärfe. Der Wert kann in Vergleichsmessungen verwendet werden, um Veränderungen in der Aufnahmesituation desselben Motivs zu entdecken, z.B. durch verstellte Objektive.
Ü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 cbSizeOfParam angegeben.
Übergabeparameter
hCam |
Handle auf Kamera |
pParam |
Zeiger auf Funktionsparameter, der abhängig von nCommand unterschiedlich belegt ist. |
cbSizeOfParam |
Größe des Speicherbereichs in Byte, auf den pParam verweist. |
Inhalte der Struktur MEASURE_SHARPNESS_INFO
UINT |
u32NumberAOI |
ID der AOI |
UINT |
fSharpnessValue |
Relativer Wert der Schärfe in der angegebenen AOI |
IS_RECT |
rcAOI |
Position und Größe der AOI: •s32X: X-Position •s32Y: Y-Position •s32Width: AOI-Breite •s32Height: AOI-Höhe |
CHAR* |
pcImageMem |
Startadresse des Bildspeichers, der für die Berechnung verwendet werden soll •Ist pcImageMem gültig, wird der selektierte Speicher verwendet. Ist pcImageMem == NULL oder ungültig, wird der aktive Bildspeicher zur Berechnung verwendet. |
Inhalte der Enumeration MEASURE_SHARPNESS_AOI_PRESETS
IS_MEASURE_SHARPNESS_AOI_PRESET_1 |
Voreingestellte AOI für die Schärfemessung (5 AOIs, jeweils in den vier Bildecken und in der Mitte, jede der 5 AOIs hat eine Größe von 1/3 x "Gesamtbildbreite" und 1/3 x "Gesamtbildhöhe") |
Inhalte der Enumeration MEASURE_SHARPNESS_CALCULATION_ALGORITHM
IS_MEASURE_SHARPNESS_CALCULATION_ALGORITHM_TENENGRAD |
Tenengrad - kontrastbasierter Schärfealgorithmus (Faltung) |
IS_MEASURE_SHARPNESS_CALCULATION_ALGORITHM_MEAN_SCORE |
Mean Score - kontrastbasierter Schärfealgorithmus (Mittelwert) |
IS_MEASURE_SHARPNESS_CALCULATION_ALGORITHM_HISTOGRAM_VARIANCE |
Varianz - statistikbasierter Schärfealgorithmus |
IS_MEASURE_SHARPNESS_CALCULATION_ALGORITHM_SOBEL |
Sobel - kontrastbasierter Schärfealgorithmus (Faltung) / Defaulteinstellung |
Rückgabewert
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_NO_ACTIVE_IMG_MEM |
Kein aktivierter Bildspeicher vorhanden. Der Speicher muss mit der Funktion is_SetImageMem() aktiviert werden, oder es muss mit der Funktion is_AddToSequence() eine Sequenz aufgebaut werden. |
IS_NO_SUCCESS |
Allgemeine Fehlermeldung |
IS_NOT_SUPPORTED |
Das verwendete Kameramodell unterstützt diese Funktion oder Einstellung nicht. |
IS_SUCCESS |
Funktion erfolgreich |
INT nRet = IS_SUCCESS;
/* Create info object */
MEASURE_SHARPNESS_INFO measureSharpnessInfo;
/* Set values of AOI_0: The position and size of the AOI equals the whole image */
measureSharpnessInfo.u32NumberAOI = 0;
measureSharpnessInfo.rcAOI.s32X = 0;
measureSharpnessInfo.rcAOI.s32Y = 0;
measureSharpnessInfo.rcAOI.s32Width = m_s32MaxImageWidth;
measureSharpnessInfo.rcAOI.s32Height = m_s32MaxImageHeight;
/* Set AOI_0 */
nRet = is_Measure(m_hCam, IS_MEASURE_CMD_SHARPNESS_AOI_SET, (void*)&measureSharpnessInfo, sizeof(measureSharpnessInfo));
/* Set values of AOI_1 */
measureSharpnessInfo.u32NumberAOI = 1;
measureSharpnessInfo.rcAOI.s32X = 50;
measureSharpnessInfo.rcAOI.s32Y = 50;
measureSharpnessInfo.rcAOI.s32Width = 200;
measureSharpnessInfo.rcAOI.s32Height = 200;
/* Set AOI_1 */
nRet = is_Measure(m_hCam, IS_MEASURE_CMD_SHARPNESS_AOI_SET, (void*)&measureSharpnessInfo, sizeof(measureSharpnessInfo));
INT nRet = IS_SUCCESS;
/* Create algorithm info object */
MEASURE_SHARPNESS_CALCULATION_ALGORITHM measureSharpnessAlgorithm = IS_MEASURE_SHARPNESS_CALCULATION_ALGORITHM_HISTOGRAM_VARIANCE;
nRet = is_Measure(m_hCam, IS_MEASURE_CMD_SHARPNESS_CALCULATION_ALGORITHM_SET, (void*)&measureSharpnessAlgorithm, sizeof(measureSharpnessAlgorithm));
INT nRet = IS_SUCCESS;
/* Create info object */
MEASURE_SHARPNESS_INFO measureSharpnessInfo;
/* Get values of AOI_0 */
measureSharpnessInfo.u32NumberAOI = 0;
/* Get sharpness of active image memory */
measureSharpnessInfo.pcImageMem = NULL;
nRet = is_Measure(m_hCam, IS_MEASURE_CMD_SHARPNESS_AOI_INQUIRE, (void*)&measureSharpnessInfo, sizeof(measureSharpnessInfo));
if (nRet == IS_SUCCESS)
{
float fSharpness = measureSharpnessInfo.fSharpnessValue;
}
INT nRet = IS_SUCCESS;
/* Set preset */
UINT nPreset = IS_MEASURE_SHARPNESS_AOI_PRESET_1;
nRet = is_Measure(m_hCam, IS_MEASURE_CMD_SHARPNESS_AOI_SET_PRESET, (void*)&nPreset, sizeof(nPreset));