Hoek- 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]
Parameters:
src
: input grayscale image (must befloat32
);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)
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.
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)
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.
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 variabelegray_factory
; - Zet de afbeelding
sunflowers
om 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_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 inparams
; - Maak een blobdetector met de opgegeven parameters en sla op in
detector
; - Detecteer blob keypoints en sla op in
keypoints
.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.45
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 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]
Parameters:
src
: input grayscale image (must befloat32
);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)
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.
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)
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.
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 variabelegray_factory
; - Zet de afbeelding
sunflowers
om 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_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 inparams
; - Maak een blobdetector met de opgegeven parameters en sla op in
detector
; - Detecteer blob keypoints en sla op in
keypoints
.
Oplossing
Bedankt voor je feedback!
single