OpenCV-Schwellenwert

Manav Narula 21 Juni 2023
  1. Schwellentechnik
  2. Verwenden Sie die cv.threshold()-Funktion für Threshold in OpenCV
  3. Abschluss
OpenCV-Schwellenwert

Dieses Tutorial befasst sich mit der Verwendung der Funktion cv2.threshold() in Python.

Schwellentechnik

Die Schwellenwertbildung ist eine Bildverarbeitungstechnik, die mit Schwarzweißbildern durchgeführt wird und nützlich ist, um das Rauschen zu entfernen und Pixel mit extremen Werten zu filtern. Hier verwenden wir ein vorhandenes Bild, um ein Binärbild zu erstellen, indem wir den Wert von Pixeln basierend auf einem bestimmten Schwellenwert anpassen.

Jeder Pixelwert wird mit dem gegebenen Schwellenwert verglichen. Wenn der Wert kleiner als ein Schwellenwert ist, wird er auf 0 gesetzt; andernfalls wird es auf Maximum (255) gesetzt.

Wir können die OpenCV-Bibliothek in Python verwenden, um Bilder für Computer-Vision-Techniken zu lesen und zu verarbeiten. Wir können die Funktion cv2.threshold() verwenden, um mit dieser Bibliothek ein Thresholding durchzuführen.

Verwenden Sie die cv.threshold()-Funktion für Threshold in OpenCV

Die Funktion cv2.threshold() implementiert die grundlegende binäre Schwellenwerttechnik für Bilder in Python. Es ersetzt den Pixelwert auf 0 oder maximal basierend auf seinem Vergleich mit dem gegebenen Schwellenwert und gibt den Schwellenwert mit dem verarbeiteten Bild als Tupel zurück.

Wir stellen das Bild zur Verarbeitung mit dem Parameter src bereit. Der Schwellwert für den Vergleich wird mit dem Parameter thresh angegeben.

Der Maximalwert kann mit dem Parameter maxval angegeben werden. Dies wird in Abhängigkeit von der Art der Schwellwerttechnik verwendet, die unten diskutiert wird.

Der mit dieser Funktion verbundene Hauptparameter ist der Parameter Typ. Dies bestimmt die Art der zu verwendenden binären Schwellenwertbildung.

Der Parameter type kann fünf Werte annehmen. Der erste Typ ist cv2.THRESH_BINARY, der den Grundlagen der binären Schwellenwertbildung folgt, indem er den Pixelwert 0 zuweist, wenn er kleiner als der Schwellenwert ist, und 255, wenn er größer ist.

Beispiel:

import cv2

i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 60, 255, cv2.THRESH_BINARY)

cv2.imshow("THRESH_BINARY", t)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ausgang:

THRESH_BINARY mit cv2.threshold

Wir verwenden die Funktion cv2.imread(), um das Bild im obigen Beispiel zu lesen. Konvertieren Sie es dann mit der Funktion cv2.cvtColor() in ein Graustufenbild, und dieser Vorgang bleibt auch für die anderen Typen gleich.

Dann wenden wir die Funktion cv2.threshold() an und geben die erforderlichen Parameter an. Der Schwellenwert ist 60, und wir wenden die Technik cv2.THRESH_BINARY an. Das Endergebnis wird in einem Fenster mit der Funktion cv2.imshow() angezeigt.

Die Funktionen cv2.waitKey() und cv2.destroyAllWindows() verhindern das sofortige Schließen des Fensters und schließen es, wenn der Benutzer eine beliebige Taste drückt. Lassen Sie uns die anderen Typen besprechen.

Wir haben den Typ cv2.THRESH_BINARY_INV, das Gegenteil des vorherigen Typs. Es weist einem Pixel den maximalen Wert zu, wenn es unter dem Schwellenwert liegt, und weist ihm 0 zu.

Beispiel:

import cv2

i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 60, 255, cv2.THRESH_BINARY_INV)

cv2.imshow("THRESH_BINARY_INV", t)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ausgang:

THRESH_BINARY_INV mit cv2.threshold

Wir verarbeiten die Threshold-Technik, indem wir den Typ cv2.THRESH_BINARY_INV in der Funktion cv2.threshold() verwenden. Das Verfahren ist ähnlich wie das letzte.

Der dritte Typ ist cv2.THRESH_TRUNC, wenn der Pixelwert als Schwellenwert zugewiesen wird, wenn er den Schwellenwert überschreitet.

Alle Pixel kleiner als der Schwellwert bleiben gleich.

Beispiel:

import cv2

i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 60, 255, cv2.THRESH_TRUNC)

cv2.imshow("THRESH_TRUNC", t)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ausgang:

THRESH_TRUNC mit cv2.threshold

Wir implementieren die Schwellwerttechnik cv2.THRESH_TRUNC mit der Funktion cv2.threshold() in Python.

Es gibt auch den Typ cv2.THRESH_TOZERO. Alle Pixelwerte, die kleiner als der Schwellenwert sind, werden auf Null geändert, während die verbleibenden unverändert bleiben.

Beispiel:

import cv2

i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 60, 255, cv2.THRESH_TOZERO)

cv2.imshow("THRESH_TOZERO", t)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ausgang:

cv2.THRESH_TOZERO mit cv2.threshold

Die Umkehrung des vorherigen Typs ist der Typ cv2.THRESH_TOZERO_INV, bei dem Pixelwerte, die größer als der Schwellenwert sind, auf Null geändert werden. Wir können es ähnlich verwenden.

Beispiel:

import cv2

i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
r, t = cv2.threshold(img, 120, 255, cv2.THRESH_TOZERO_INV)

cv2.imshow("THRESH_TOZERO_INV", t)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ausgang:

cv2.THRESH_TOZERO_INV mit cv2.threshold

Abschluss

Wir haben in diesem Artikel die Implementierung eines einfachen Schwellenwerts mit der Funktion cv2.threshold() besprochen. Schwellwertbildung ist die Technik zum Ändern des Pixelwerts im Vergleich zu einem bestimmten Schwellwert.

Wir haben die Verwendung der Funktion cv2.threshold() und ihrer Parameter besprochen. Damit sind fünf Arten von Schwellwerten möglich, indem verschiedene Werte für den Parameter Typ verwendet werden.

Es gibt auch adaptive Thresholding, die mit der OpenCV-Bibliothek erreicht werden kann.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Verwandter Artikel - Python OpenCV