Whatsapp Telegram Telegram Call Anrufen

Merkmalsdetektion (Feature Detection)


Die Merkmalsdetektion ist ein grundlegender Schritt in der Bildverarbeitung, der verwendet wird, um interessante Punkte in Bildern zu identifizieren. Diese Merkmale können Ecken, Kanten oder Konturen sein und dienen als Basis für viele weiterführende Bildverarbeitungs- und Computer Vision-Aufgaben wie Objektverfolgung, Bildregistrierung und Mustererkennung.

1. Ecken, Kanten und Konturen

Kanten: Kanten sind Orte im Bild, an denen die Helligkeit stark variiert. Die Kanten eines Objekts liefern wichtige Informationen über seine Form. In OpenCV kann die Kantenverfolgung mit dem Canny-Algorithmus durchgeführt werden.

1.2 Beispiel: Kanten mit Canny

import cv2
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg', 0)  # 0 für Graustufen

# Canny-Kantendetektion anwenden
kanten = cv2.Canny(bild, 100, 200)

# Originales und Kantendetektionsbild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild, cmap='gray')
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(kanten, cmap='gray')
plt.title('Canny-Kantendetektion')
plt.axis('off')

plt.show()

Ausgabe:

Kanten mit Canny opencv

Konturen: Konturen sind Kurven, die alle kontinuierlichen Punkte mit derselben Farbe oder Intensität verbinden. OpenCV bietet die Funktion cv2.findContours() zum Erkennen von Konturen.

1.2 Beispiel: Konturen finden und zeichnen

import cv2
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg', 0)  # 0 für Graustufen

# Bild binärschwellen
ret, thresh = cv2.threshold(bild, 127, 255, cv2.THRESH_BINARY)

# Konturen finden
konturen, hierarchie = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# Konturen auf dem Bild zeichnen
bild_konturen = cv2.cvtColor(bild, cv2.COLOR_GRAY2BGR)
cv2.drawContours(bild_konturen, konturen, -1, (0, 255, 0), 2)

# Originales und Konturenbild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild, cmap='gray')
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_konturen)
plt.title('Konturen gefunden')
plt.axis('off')

plt.show()

Ausgabe:

Konturen finden und zeichnen cv2.findContours()

2. Harris-Eckendetektor (Harris Corner Detection)

Der Harris-Eckendetektor ist ein bekannter Algorithmus zur Eckendetektion. Er erkennt Ecken basierend auf der Veränderung der Intensität in alle Richtungen.

Beispiel: Harris-Eckendetektion

Harris-Eckendetektion cv2.cornerHarris OpenCV

3. Shi-Tomasi-Eckendetektor (Shi-Tomasi Corner Detector)

Der Shi-Tomasi-Eckendetektor ist eine Verbesserung des Harris-Eckendetektors. Er verwendet das Minimum der Eigenwerte der Gradientenmatrix, um die Ecken zu bestimmen.

Beispiel: Shi-Tomasi-Eckendetektion

import cv2
from matplotlib import pyplot as plt
# Installieren Sie numpy, falls es noch nicht installiert ist.
import numpy as np

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')
grau = cv2.cvtColor(bild, cv2.COLOR_BGR2GRAY)

# Shi-Tomasi-Eckendetektion anwenden
ecken = cv2.goodFeaturesToTrack(grau, 25, 0.01, 10)
ecken = np.int0(ecken)

# Ecken auf dem Originalbild markieren
bild_markiert = bild.copy()
for ecke in ecken:
    x, y = ecke.ravel()
    cv2.circle(bild_markiert, (x, y), 3, (0, 255, 0), -1)

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_markiert_rgb = cv2.cvtColor(bild_markiert, cv2.COLOR_BGR2RGB)

# Originales und Eckendetektionsbild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_markiert_rgb)
plt.title('Shi-Tomasi-Eckendetektion')
plt.axis('off')

plt.show()

Ausgabe:

 Shi-Tomasi-Eckendetektor (Shi-Tomasi Corner Detector)  cv2.goodFeaturesToTrack



Diese Merkmalsdetektionsmethoden sind nützlich für viele Anwendungen in der Bildverarbeitung und Computer Vision, wie z.B. der Objekterkennung, Bewegungsverfolgung und 3D-Rekonstruktion. Indem Sie die grundlegenden Konzepte und Algorithmen verstehen und anwenden, können Sie robuste und effiziente Lösungen für verschiedene Bildverarbeitungsprobleme entwickeln.




CEO Image

Ali Ajjoub

info@ajjoub.com

Adresse 0049-15773651670

Adresse Jacob-winter-platz,1 01239 Dresden

Buchen Sie jetzt Ihren Termin für eine umfassende und individuelle Beratung.

Termin Buchen

Kontaktieren Sie uns

Lassen Sie uns K o n t a k t aufnehmen!