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å-1fyller 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
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å-1fyller 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