Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Hoek- en Blobdetectie | Beeldverwerking met OpenCV
Essentiële Computer Vision

bookHoek- en Blobdetectie

Hoekdetectie

Hoekdetectie wordt gebruikt om scherpe veranderingen in intensiteit te identificeren waar twee randen samenkomen. Het helpt bij kenmerkherkenning, objecttracking en structuurherkenning.

Populaire methoden:

  • Harris-hoekdetector (cv2.cornerHarris): detecteert hoeken op basis van gradiëntveranderingen;
# Load image and convert to grayscale
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Convert to float32
gray = np.float32(gray)

# Apply Harris Corner Detection
harris_corners = cv2.cornerHarris(gray, blockSize=2, ksize=3, k=0.04)
harris_corners = cv2.dilate(harris_corners, None)  # Improve visibility

# Mark detected corners in red
image[harris_corners > 0.01 * harris_corners.max()] = [0, 0, 255]
Note
Opmerking

Parameters:

  • src: input grayscale image (must be float32);
  • blockSize: size of the local window for computing gradients;
  • ksize: aperture size of the Sobel operator (odd, e.g., 3, 5, 7);
  • k: harris detector free parameter (typical values: 0.04 - 0.06).
  • Shi-Tomasi-hoekdetector (cv2.goodFeaturesToTrack): selecteert de sterkste hoeken in een afbeelding;
# Load image and convert to grayscale
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Detect corners
corners = cv2.goodFeaturesToTrack(gray, maxCorners=100, qualityLevel=0.01, minDistance=10)

# Draw detected corners in blue
for corner in corners:
    x, y = np.int32(corner[0])
    cv2.circle(image, (x, y), 5, (255, 0, 0), -1)
Note
Opmerking

Parameters:

  • image: invoer grijswaardenafbeelding;
  • maxCorners: maximaal aantal te detecteren hoeken;
  • qualityLevel: minimale kwaliteit van gedetecteerde hoeken (bereik: 0.01 - 0.1);
  • minDistance: minimale afstand tussen gedetecteerde hoeken.
Note
Meer Leren

Parameters van de cv2.circle()-methode voor het markeren van objecten:

  • image: de afbeelding waarop de cirkel wordt getekend;
  • center_coordinates: de coördinaten van het middelpunt van de cirkel, weergegeven als een tuple van twee waarden: (X, Y);
  • radius: de straal van de cirkel;
  • color: de kleur van de cirkelrand. In BGR-formaat, doorgegeven als een tuple (bijv. (255, 0, 0) voor blauw);
  • thickness: de dikte van de cirkelrand in pixels. Een waarde van -1 vult de gehele cirkel met de opgegeven kleur.

Blobdetectie

Blobdetectie vindt gebieden met gelijke intensiteit in een afbeelding, nuttig voor objectdetectie en tracking.

Een van de populaire methoden voor blobdetectie is SimpleBlobDetector

  • cv2.SimpleBlobDetector: detecteert keypoints die blobs vertegenwoordigen op basis van grootte, vorm en intensiteit.
# Set up SimpleBlobDetector parameters
params = cv2.SimpleBlobDetector_Params()

# Adjust parameters for better detection
params.minThreshold = 5
params.maxThreshold = 255
params.filterByArea = True
params.minArea = 100
params.maxArea = 5000
params.filterByCircularity = True
params.minCircularity = 0.02
params.filterByConvexity = True
params.minConvexity = 0.5
params.filterByInertia = True
params.minInertiaRatio = 0.001

# Create detector and detect blobs
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(gray)

# Draw blobs on the image
image_with_blobs = cv2.drawKeypoints(image, keypoints, None, (0, 255, 0),
                                     cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
Note
Opmerking

Parameters:

  • minThreshold, maxThreshold: intensiteitsbereik voor blobdetectie;
  • filterByArea: inschakelen van filtering op basis van blobgrootte;
    • minArea, maxArea: geeft de groottebeperkingen voor gedetecteerde blobs aan;
  • filterByCircularity: inschakelen van filtering op basis van rondheid;
    • minCircularity: lagere waarden detecteren langwerpige blobs;
  • filterByConvexity: inschakelen van filtering op basis van convexiteit;
    • minConvexity: lagere waarden staan concave vormen toe;
  • filterByInertia: inschakelen van filtering op basis van langgerektheid;
    • minInertiaRatio: lagere waarden detecteren langwerpige blobs.
Taak

Swipe to start coding

Je krijgt de afbeeldingen van een fabriek (factory) en zonnebloemen (sunflowers):

  • Zet de afbeelding factory om naar grijswaarden en sla deze op in de variabele gray_factory;
  • Zet de afbeelding sunflowers om naar grijswaarden en sla deze op in de variabele gray_sunflowers;
  • Voor de Harris Detector is het noodzakelijk om de afbeeldingsmatrix om te zetten naar float32, doe dit en sla op in gray_float;
  • Pas Harris-hoekdetectie toe en sla het resultaat op in harris_corners (aanbevolen parameters: blockSize=2, ksize=3, k=0.04);
  • Gebruik dilate() om de zichtbaarheid van harris_corners te verbeteren;
  • Pas Shi-Tomasi-hoekdetectie toe op de afbeelding en sla op in shi_tomasi_corners (aanbevolen parameters: gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10)
  • Maak een SimpleBlobDetector_Params object aan om de parameters te initialiseren en sla op in params;
  • Maak een blobdetector met de opgegeven parameters en sla op in detector;
  • Detecteer blob keypoints en sla op in keypoints.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 8
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

close

Awesome!

Completion rate improved to 3.45

bookHoek- en Blobdetectie

Veeg om het menu te tonen

Hoekdetectie

Hoekdetectie wordt gebruikt om scherpe veranderingen in intensiteit te identificeren waar twee randen samenkomen. Het helpt bij kenmerkherkenning, objecttracking en structuurherkenning.

Populaire methoden:

  • Harris-hoekdetector (cv2.cornerHarris): detecteert hoeken op basis van gradiëntveranderingen;
# Load image and convert to grayscale
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Convert to float32
gray = np.float32(gray)

# Apply Harris Corner Detection
harris_corners = cv2.cornerHarris(gray, blockSize=2, ksize=3, k=0.04)
harris_corners = cv2.dilate(harris_corners, None)  # Improve visibility

# Mark detected corners in red
image[harris_corners > 0.01 * harris_corners.max()] = [0, 0, 255]
Note
Opmerking

Parameters:

  • src: input grayscale image (must be float32);
  • blockSize: size of the local window for computing gradients;
  • ksize: aperture size of the Sobel operator (odd, e.g., 3, 5, 7);
  • k: harris detector free parameter (typical values: 0.04 - 0.06).
  • Shi-Tomasi-hoekdetector (cv2.goodFeaturesToTrack): selecteert de sterkste hoeken in een afbeelding;
# Load image and convert to grayscale
image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Detect corners
corners = cv2.goodFeaturesToTrack(gray, maxCorners=100, qualityLevel=0.01, minDistance=10)

# Draw detected corners in blue
for corner in corners:
    x, y = np.int32(corner[0])
    cv2.circle(image, (x, y), 5, (255, 0, 0), -1)
Note
Opmerking

Parameters:

  • image: invoer grijswaardenafbeelding;
  • maxCorners: maximaal aantal te detecteren hoeken;
  • qualityLevel: minimale kwaliteit van gedetecteerde hoeken (bereik: 0.01 - 0.1);
  • minDistance: minimale afstand tussen gedetecteerde hoeken.
Note
Meer Leren

Parameters van de cv2.circle()-methode voor het markeren van objecten:

  • image: de afbeelding waarop de cirkel wordt getekend;
  • center_coordinates: de coördinaten van het middelpunt van de cirkel, weergegeven als een tuple van twee waarden: (X, Y);
  • radius: de straal van de cirkel;
  • color: de kleur van de cirkelrand. In BGR-formaat, doorgegeven als een tuple (bijv. (255, 0, 0) voor blauw);
  • thickness: de dikte van de cirkelrand in pixels. Een waarde van -1 vult de gehele cirkel met de opgegeven kleur.

Blobdetectie

Blobdetectie vindt gebieden met gelijke intensiteit in een afbeelding, nuttig voor objectdetectie en tracking.

Een van de populaire methoden voor blobdetectie is SimpleBlobDetector

  • cv2.SimpleBlobDetector: detecteert keypoints die blobs vertegenwoordigen op basis van grootte, vorm en intensiteit.
# Set up SimpleBlobDetector parameters
params = cv2.SimpleBlobDetector_Params()

# Adjust parameters for better detection
params.minThreshold = 5
params.maxThreshold = 255
params.filterByArea = True
params.minArea = 100
params.maxArea = 5000
params.filterByCircularity = True
params.minCircularity = 0.02
params.filterByConvexity = True
params.minConvexity = 0.5
params.filterByInertia = True
params.minInertiaRatio = 0.001

# Create detector and detect blobs
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(gray)

# Draw blobs on the image
image_with_blobs = cv2.drawKeypoints(image, keypoints, None, (0, 255, 0),
                                     cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
Note
Opmerking

Parameters:

  • minThreshold, maxThreshold: intensiteitsbereik voor blobdetectie;
  • filterByArea: inschakelen van filtering op basis van blobgrootte;
    • minArea, maxArea: geeft de groottebeperkingen voor gedetecteerde blobs aan;
  • filterByCircularity: inschakelen van filtering op basis van rondheid;
    • minCircularity: lagere waarden detecteren langwerpige blobs;
  • filterByConvexity: inschakelen van filtering op basis van convexiteit;
    • minConvexity: lagere waarden staan concave vormen toe;
  • filterByInertia: inschakelen van filtering op basis van langgerektheid;
    • minInertiaRatio: lagere waarden detecteren langwerpige blobs.
Taak

Swipe to start coding

Je krijgt de afbeeldingen van een fabriek (factory) en zonnebloemen (sunflowers):

  • Zet de afbeelding factory om naar grijswaarden en sla deze op in de variabele gray_factory;
  • Zet de afbeelding sunflowers om naar grijswaarden en sla deze op in de variabele gray_sunflowers;
  • Voor de Harris Detector is het noodzakelijk om de afbeeldingsmatrix om te zetten naar float32, doe dit en sla op in gray_float;
  • Pas Harris-hoekdetectie toe en sla het resultaat op in harris_corners (aanbevolen parameters: blockSize=2, ksize=3, k=0.04);
  • Gebruik dilate() om de zichtbaarheid van harris_corners te verbeteren;
  • Pas Shi-Tomasi-hoekdetectie toe op de afbeelding en sla op in shi_tomasi_corners (aanbevolen parameters: gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10)
  • Maak een SimpleBlobDetector_Params object aan om de parameters te initialiseren en sla op in params;
  • Maak een blobdetector met de opgegeven parameters en sla op in detector;
  • Detecteer blob keypoints en sla op in keypoints.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 8
single

single

some-alt