Hjørne- og Blobdeteksjon
Hjørnedeteksjon
Hjørnedeteksjon brukes til å identifisere skarpe endringer i intensitet der to kanter møtes. Dette er nyttig for funksjonsmatching, objektsporing og strukturidentifikasjon.
Populære metoder:
- Harris hjørnedetektor (
cv2.cornerHarris
): detekterer hjørner basert på gradientendringer;
# 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]
Parametere:
src
: inngående gråtonebilde (må værefloat32
);blockSize
: størrelse på det lokale vinduet for beregning av gradienter;ksize
: aperturstørrelse for Sobel-operatoren (oddetall, f.eks.3
,5
,7
);k
: fri parameter for Harris-detektoren (typiske verdier:0.04 - 0.06
).
- Shi-Tomasi hjørnedetektor (
cv2.goodFeaturesToTrack
): velger de sterkeste hjørnene i et bilde;
# 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)
Parametere:
image
: inngående gråtonebilde;maxCorners
: maksimalt antall hjørner som skal oppdages;qualityLevel
: minimumskvalitet for oppdagede hjørner (område:0.01 - 0.1
);minDistance
: minste avstand mellom oppdagede hjørner.
Parametere for cv2.circle()
-metoden for å fremheve objekter:
image
: bildet hvor sirkelen skal tegnes;center_coordinates
: sentrumkoordinatene til sirkelen, representert som en tuple med to verdier: (X, Y);radius
: radiusen til sirkelen;color
: fargen på sirkelens kant. I BGR-format, gitt som en tuple (f.eks.(255, 0, 0)
for blå);thickness
: tykkelsen på sirkelens kant i piksler. En verdi på-1
fyller hele sirkelen med den angitte fargen.
Blob Detection
Blob-deteksjon finner områder med lik intensitet i et bilde, nyttig for objektdeteksjon og sporing.
En av de populære metodene for blob-deteksjon er SimpleBlobDetector
cv2.SimpleBlobDetector
: oppdager nøkkelpunkter som representerer blobs basert 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)
Parametere:
minThreshold
,maxThreshold
: intensitetsområde for blob-deteksjon;filterByArea
: aktiverer filtrering basert på blob-størrelse;minArea
,maxArea
: angir størrelsesbegrensninger for detekterte blobs;
filterByCircularity
: aktiverer filtrering basert på rundhet;minCircularity
: lavere verdier oppdager avlange blobs;
filterByConvexity
: aktiverer filtrering basert på konveksitet;minConvexity
: lavere verdier tillater konkave former;
filterByInertia
: aktiverer filtrering basert på avlanghet;minInertiaRatio
: lavere verdier oppdager avlange blobs.
Swipe to start coding
Du får bilder av fabrikk (factory
) og solsikker (sunflowers
):
- Konverter
factory
-bildet til gråtoner og lagre i variabelengray_factory
; - Konverter
sunflowers
-bildet til gråtoner og lagre i variabelengray_sunflowers
; - For Harris-detektoren må bildepikselmatrisen konverteres til
float32
, gjør dette og lagre igray_float
; - Bruk Harris hjørnedeteksjon og lagre i
harris_corners
(anbefalte parametere:blockSize=2, ksize=3, k=0.04
); - Bruk
dilate()
for å forbedre synligheten avharris_corners
; - Bruk Shi-Tomasi hjørnedeteksjon på bildet og lagre i
shi_tomasi_corners
(anbefalte parametere:gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10
) - Opprett et
SimpleBlobDetector_Params
-objekt for å initialisere parameterne og lagre iparams
; - Opprett en blob-detektor med de angitte parameterne og lagre i
detector
; - Oppdag blob-nøkkelpunkter og lagre i
keypoints
.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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 Blobdeteksjon
Sveip for å vise menyen
Hjørnedeteksjon
Hjørnedeteksjon brukes til å identifisere skarpe endringer i intensitet der to kanter møtes. Dette er nyttig for funksjonsmatching, objektsporing og strukturidentifikasjon.
Populære metoder:
- Harris hjørnedetektor (
cv2.cornerHarris
): detekterer hjørner basert på gradientendringer;
# 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]
Parametere:
src
: inngående gråtonebilde (må værefloat32
);blockSize
: størrelse på det lokale vinduet for beregning av gradienter;ksize
: aperturstørrelse for Sobel-operatoren (oddetall, f.eks.3
,5
,7
);k
: fri parameter for Harris-detektoren (typiske verdier:0.04 - 0.06
).
- Shi-Tomasi hjørnedetektor (
cv2.goodFeaturesToTrack
): velger de sterkeste hjørnene i et bilde;
# 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)
Parametere:
image
: inngående gråtonebilde;maxCorners
: maksimalt antall hjørner som skal oppdages;qualityLevel
: minimumskvalitet for oppdagede hjørner (område:0.01 - 0.1
);minDistance
: minste avstand mellom oppdagede hjørner.
Parametere for cv2.circle()
-metoden for å fremheve objekter:
image
: bildet hvor sirkelen skal tegnes;center_coordinates
: sentrumkoordinatene til sirkelen, representert som en tuple med to verdier: (X, Y);radius
: radiusen til sirkelen;color
: fargen på sirkelens kant. I BGR-format, gitt som en tuple (f.eks.(255, 0, 0)
for blå);thickness
: tykkelsen på sirkelens kant i piksler. En verdi på-1
fyller hele sirkelen med den angitte fargen.
Blob Detection
Blob-deteksjon finner områder med lik intensitet i et bilde, nyttig for objektdeteksjon og sporing.
En av de populære metodene for blob-deteksjon er SimpleBlobDetector
cv2.SimpleBlobDetector
: oppdager nøkkelpunkter som representerer blobs basert 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)
Parametere:
minThreshold
,maxThreshold
: intensitetsområde for blob-deteksjon;filterByArea
: aktiverer filtrering basert på blob-størrelse;minArea
,maxArea
: angir størrelsesbegrensninger for detekterte blobs;
filterByCircularity
: aktiverer filtrering basert på rundhet;minCircularity
: lavere verdier oppdager avlange blobs;
filterByConvexity
: aktiverer filtrering basert på konveksitet;minConvexity
: lavere verdier tillater konkave former;
filterByInertia
: aktiverer filtrering basert på avlanghet;minInertiaRatio
: lavere verdier oppdager avlange blobs.
Swipe to start coding
Du får bilder av fabrikk (factory
) og solsikker (sunflowers
):
- Konverter
factory
-bildet til gråtoner og lagre i variabelengray_factory
; - Konverter
sunflowers
-bildet til gråtoner og lagre i variabelengray_sunflowers
; - For Harris-detektoren må bildepikselmatrisen konverteres til
float32
, gjør dette og lagre igray_float
; - Bruk Harris hjørnedeteksjon og lagre i
harris_corners
(anbefalte parametere:blockSize=2, ksize=3, k=0.04
); - Bruk
dilate()
for å forbedre synligheten avharris_corners
; - Bruk Shi-Tomasi hjørnedeteksjon på bildet og lagre i
shi_tomasi_corners
(anbefalte parametere:gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10
) - Opprett et
SimpleBlobDetector_Params
-objekt for å initialisere parameterne og lagre iparams
; - Opprett en blob-detektor med de angitte parameterne og lagre i
detector
; - Oppdag blob-nøkkelpunkter og lagre i
keypoints
.
Løsning
Takk for tilbakemeldingene dine!
single