Thresholding ist eine Technik in OpenCV, bei der Pixelwerte in Bezug auf den bereitgestellten Schwellenwert zugewiesen werden. Beim Schwellenwert wird jeder Pixelwert mit dem Schwellenwert verglichen. Wenn der Pixelwert kleiner als der Schwellenwert ist, wird er auf 0 gesetzt, andernfalls wird er auf einen Maximalwert gesetzt (im Allgemeinen 255). Thresholding ist eine sehr beliebte Segmentierungstechnik, mit der ein Objekt, das als Vordergrund betrachtet wird, von seinem Hintergrund getrennt wird. Ein Schwellenwert ist ein Wert, der auf beiden Seiten zwei Bereiche aufweist, dh unterhalb des Schwellenwerts oder oberhalb des Schwellenwerts.
In Computer Vision wird diese Technik der Schwellenwertbildung für Graustufenbilder durchgeführt. Daher muss das Bild zunächst in einen Graustufenfarbraum konvertiert werden.

Wenn f (x, y)> T.
   dann ist f (x, y) = 0
sonst
   f (x, y) = 255
wo
f (x, y) = Koordinatenpixelwert
T = Schwellenwert.

In OpenCV mit Python wird die Funktion cv2.threshold für die Schwellenwertbildung verwendet.

Syntax: cv2.threshold (Quelle, Schwellwert, maxVal, Schwellwerttechnik)

Parameter:
-> Quelle : Eingabebild-Array (muss in Graustufen vorliegen).
-> Schwellwert : Wert des Schwellenwerts, unter und über dem sich die Pixelwerte entsprechend ändern.
-> maxVal : Maximaler Wert, der einem Pixel zugewiesen werden kann.
-> Schwellwerttechnik : Die Art des anzuwendenden Schwellenwerts.

Einfache Schwelle

Die grundlegende Schwellenwerttechnik ist das binäre Schwellenwertverfahren. Für jedes Pixel wird der gleiche Schwellenwert angewendet. Wenn der Pixelwert kleiner als der Schwellenwert ist, wird er auf 0 gesetzt, andernfalls wird er auf einen Maximalwert gesetzt.



Die verschiedenen einfachen Schwellenwerttechniken sind:

  • cv2.THRESH_BINARY: Wenn die Pixelintensität größer als der eingestellte Schwellenwert ist, wird der Wert auf 255 und der Wert auf 0 (schwarz) gesetzt.
  • cv2.THRESH_BINARY_INV: Umgekehrter oder entgegengesetzter Fall von cv2.THRESH_BINARY.
  • cv.THRESH_TRUNC: Wenn der Pixelintensitätswert größer als der Schwellenwert ist, wird er auf den Schwellenwert abgeschnitten. Die Pixelwerte werden so eingestellt, dass sie dem Schwellenwert entsprechen. Alle anderen Werte bleiben gleich.
  • cv.THRESH_TOZERO: Die Pixelintensität wird für alle Pixelintensitäten auf 0 gesetzt, die unter dem Schwellenwert liegen.
  • cv.THRESH_TOZERO_INV: Umgekehrter oder entgegengesetzter Fall von cv2.THRESH_TOZERO.

Unten finden Sie den Python-Code, der verschiedene einfache Schwellenwerttechniken erklärt.

      
import cv2  
import numpy as np  
  
image1 = cv2.imread('input1.jpg'
  
img = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY) 
  
ret, thresh1 = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY) 
ret, thresh2 = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY_INV) 
ret, thresh3 = cv2.threshold(img, 120, 255, cv2.THRESH_TRUNC) 
ret, thresh4 = cv2.threshold(img, 120, 255, cv2.THRESH_TOZERO) 
ret, thresh5 = cv2.threshold(img, 120, 255, cv2.THRESH_TOZERO_INV) 
  
cv2.imshow('Binary Threshold', thresh1) 
cv2.imshow('Binary Threshold Inverted', thresh2) 
cv2.imshow('Truncated Threshold', thresh3) 
cv2.imshow('Set to 0', thresh4) 
cv2.imshow('Set to 0 Inverted', thresh5) 
    
if cv2.waitKey(0) & 0xff == 27
    cv2.destroyAllWindows()  

Eingabe: Ausgabe: