Sectie 1. Hoofdstuk 11
single
Hoek- en Blobdetectie
Veeg om het menu te tonen
Hoekdetectie
Hoekdetectie wordt gebruikt om scherpe veranderingen in intensiteit te identificeren waar twee randen samenkomen. Het ondersteunt 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]
Opmerking
Parameters:
src: invoer grijswaardenafbeelding (moetfloat32zijn);blockSize: grootte van het lokale venster voor het berekenen van gradiënten;ksize: apertuurgrootte van de Sobel-operator (oneven, bijv.3,5,7);k: vrije parameter van de Harris-detector (typische waarden: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)
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.
Meer Bestuderen
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-1vult de gehele cirkel met de opgegeven kleur.
Blobdetectie
Blobdetectie vindt gebieden met vergelijkbare 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)
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
factoryom naar grijswaarden en sla deze op in de variabelegray_factory; - Zet de afbeelding
sunflowersom naar grijswaarden en sla deze op in de variabelegray_sunflowers; - Voor de Harris Detector is het noodzakelijk om de afbeeldingsmatrix om te zetten naar
float32, doe dit en sla op ingray_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 vanharris_cornerste verbeteren; - Pas Shi-Tomasi-hoekdetectie toe op de afbeelding en sla het resultaat 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 dit op inparams; - Maak een blobdetector met de opgegeven parameters en sla deze op in
detector; - Detecteer blob keypoints en sla deze op in
keypoints.
Oplossing
Was alles duidelijk?
Bedankt voor je feedback!
Sectie 1. Hoofdstuk 11
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.