Hjørne- og Blobdetektion
Hjørnedetektion
Hjørnedetektion bruges til at identificere skarpe ændringer i intensitet, hvor to kanter mødes. Det anvendes til feature matching, objektsporing og strukturgenkendelse.
Populære metoder:
- Harris-hjørnedetektor (
cv2.cornerHarris
): detekterer hjørner baseret på gradientændringer;
# 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]
Parametre:
src
: input gråtonebillede (skal værefloat32
);blockSize
: størrelse på det lokale vindue til beregning af gradienter;ksize
: aperturstørrelse for Sobel-operatoren (ulige, f.eks.3
,5
,7
);k
: Harris-detektorens frie parameter (typiske værdier:0.04 - 0.06
).
- Shi-Tomasi-hjørnedetektor (
cv2.goodFeaturesToTrack
): vælger de stærkeste hjørner i et billede;
# 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)
Parametre:
image
: input gråtonebillede;maxCorners
: maksimalt antal hjørner der skal detekteres;qualityLevel
: minimumskvalitet for detekterede hjørner (interval:0.01 - 0.1
);minDistance
: minimumsafstand mellem detekterede hjørner.
Parametre for cv2.circle()
-metoden til fremhævning af objekter:
image
: billedet, hvorpå cirklen skal tegnes;center_coordinates
: centrumkoordinaterne for cirklen, repræsenteret som et tuple med to værdier: (X, Y);radius
: cirklens radius;color
: farven på cirklens kant. I BGR-format, angivet som et tuple (f.eks.(255, 0, 0)
for blå);thickness
: tykkelsen på cirklens kant i pixels. En værdi på-1
udfylder hele cirklen med den angivne farve.
Blobdetektion
Blobdetektion finder områder med ensartet intensitet i et billede, hvilket er nyttigt til objektdetektion og -sporing.
En af de populære metoder til blobdetektion er SimpleBlobDetector
cv2.SimpleBlobDetector
: detekterer nøglepunkter, der repræsenterer blobs baseret på størrelse, form og intensitet.
# 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)
Parametre:
minThreshold
,maxThreshold
: intensitetsinterval for blob-detektion;filterByArea
: aktiverer filtrering baseret på blob-størrelse;minArea
,maxArea
: angiver størrelsesbegrænsninger for detekterede blobs;
filterByCircularity
: aktiverer filtrering baseret på rundhed;minCircularity
: lavere værdier detekterer aflange blobs;
filterByConvexity
: aktiverer filtrering baseret på konveksitet;minConvexity
: lavere værdier tillader konkave former;
filterByInertia
: aktiverer filtrering baseret på aflanghed;minInertiaRatio
: lavere værdier detekterer aflange blobs.
Swipe to start coding
Du får billederne af fabrikken (factory
) og solsikkerne (sunflowers
):
- Konverter
factory
-billedet til gråtoner og gem det i variablengray_factory
; - Konverter
sunflowers
-billedet til gråtoner og gem det i variablengray_sunflowers
; - Det er nødvendigt for Harris Detector at konvertere billedmatricen til
float32
, gør dette og gem igray_float
; - Anvend Harris hjørnedetektion og gem resultatet i
harris_corners
(anbefalede parametre:blockSize=2, ksize=3, k=0.04
); - Brug
dilate()
for at forbedre synligheden afharris_corners
; - Anvend Shi-Tomasi hjørnedetektion på billedet og gem resultatet i
shi_tomasi_corners
(anbefalede parametre:gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10
) - Opret et
SimpleBlobDetector_Params
-objekt for at initialisere parametrene og gem det iparams
; - Opret en blobdetektor med de angivne parametre og gem den i
detector
; - Detekter blob-nøglepunkter og gem dem i
keypoints
.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain the difference between Harris and Shi-Tomasi corner detectors?
How do I choose between corner detection and blob detection for my application?
Can you provide more details on tuning the parameters for SimpleBlobDetector?
Awesome!
Completion rate improved to 3.45
Hjørne- og Blobdetektion
Stryg for at vise menuen
Hjørnedetektion
Hjørnedetektion bruges til at identificere skarpe ændringer i intensitet, hvor to kanter mødes. Det anvendes til feature matching, objektsporing og strukturgenkendelse.
Populære metoder:
- Harris-hjørnedetektor (
cv2.cornerHarris
): detekterer hjørner baseret på gradientændringer;
# 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]
Parametre:
src
: input gråtonebillede (skal værefloat32
);blockSize
: størrelse på det lokale vindue til beregning af gradienter;ksize
: aperturstørrelse for Sobel-operatoren (ulige, f.eks.3
,5
,7
);k
: Harris-detektorens frie parameter (typiske værdier:0.04 - 0.06
).
- Shi-Tomasi-hjørnedetektor (
cv2.goodFeaturesToTrack
): vælger de stærkeste hjørner i et billede;
# 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)
Parametre:
image
: input gråtonebillede;maxCorners
: maksimalt antal hjørner der skal detekteres;qualityLevel
: minimumskvalitet for detekterede hjørner (interval:0.01 - 0.1
);minDistance
: minimumsafstand mellem detekterede hjørner.
Parametre for cv2.circle()
-metoden til fremhævning af objekter:
image
: billedet, hvorpå cirklen skal tegnes;center_coordinates
: centrumkoordinaterne for cirklen, repræsenteret som et tuple med to værdier: (X, Y);radius
: cirklens radius;color
: farven på cirklens kant. I BGR-format, angivet som et tuple (f.eks.(255, 0, 0)
for blå);thickness
: tykkelsen på cirklens kant i pixels. En værdi på-1
udfylder hele cirklen med den angivne farve.
Blobdetektion
Blobdetektion finder områder med ensartet intensitet i et billede, hvilket er nyttigt til objektdetektion og -sporing.
En af de populære metoder til blobdetektion er SimpleBlobDetector
cv2.SimpleBlobDetector
: detekterer nøglepunkter, der repræsenterer blobs baseret på størrelse, form og intensitet.
# 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)
Parametre:
minThreshold
,maxThreshold
: intensitetsinterval for blob-detektion;filterByArea
: aktiverer filtrering baseret på blob-størrelse;minArea
,maxArea
: angiver størrelsesbegrænsninger for detekterede blobs;
filterByCircularity
: aktiverer filtrering baseret på rundhed;minCircularity
: lavere værdier detekterer aflange blobs;
filterByConvexity
: aktiverer filtrering baseret på konveksitet;minConvexity
: lavere værdier tillader konkave former;
filterByInertia
: aktiverer filtrering baseret på aflanghed;minInertiaRatio
: lavere værdier detekterer aflange blobs.
Swipe to start coding
Du får billederne af fabrikken (factory
) og solsikkerne (sunflowers
):
- Konverter
factory
-billedet til gråtoner og gem det i variablengray_factory
; - Konverter
sunflowers
-billedet til gråtoner og gem det i variablengray_sunflowers
; - Det er nødvendigt for Harris Detector at konvertere billedmatricen til
float32
, gør dette og gem igray_float
; - Anvend Harris hjørnedetektion og gem resultatet i
harris_corners
(anbefalede parametre:blockSize=2, ksize=3, k=0.04
); - Brug
dilate()
for at forbedre synligheden afharris_corners
; - Anvend Shi-Tomasi hjørnedetektion på billedet og gem resultatet i
shi_tomasi_corners
(anbefalede parametre:gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10
) - Opret et
SimpleBlobDetector_Params
-objekt for at initialisere parametrene og gem det iparams
; - Opret en blobdetektor med de angivne parametre og gem den i
detector
; - Detekter blob-nøglepunkter og gem dem i
keypoints
.
Løsning
Tak for dine kommentarer!
single