Hörn- och Blobdetektering
Hörndetektering
Hörndetektering används för att identifiera skarpa intensitetsförändringar där två kanter möts. Det är användbart vid funktionsmatchning, objektspårning och strukturigenkänning.
Populära metoder:
- Harris-hörndetektor (
cv2.cornerHarris
): detekterar hörn baserat på gradientförändringar;
# 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]
Parametrar:
src
: inmatad gråskalebild (måste varafloat32
);blockSize
: storlek på det lokala fönstret för gradientberäkning;ksize
: aperturstorlek för Sobeloperatorn (udda, t.ex.3
,5
,7
);k
: fri parameter för Harris-detektorn (typiska värden:0.04 - 0.06
).
- Shi-Tomasi-hörndetektor (
cv2.goodFeaturesToTrack
): väljer de starkaste hörnen i en bild;
# 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)
Parametrar:
image
: inmatad gråskalebild;maxCorners
: maximalt antal hörn att detektera;qualityLevel
: minsta kvalitet på detekterade hörn (intervall:0.01 - 0.1
);minDistance
: minsta avstånd mellan detekterade hörn.
Parametrar för metoden cv2.circle()
för att markera objekt:
image
: bilden där cirkeln ska ritas;center_coordinates
: cirkelns mittkoordinater, representerade som en tuppel med två värden: (X, Y);radius
: cirkelns radie;color
: färgen på cirkelns kant. I BGR-format, anges som en tuppel (t.ex.(255, 0, 0)
för blå);thickness
: tjockleken på cirkelns kant i pixlar. Värdet-1
fyller hela cirkeln med den angivna färgen.
Blobdetektering
Blobdetektering identifierar områden med liknande intensitet i en bild, användbart för objektdetektering och spårning.
En av de populära metoderna för blobdetektering är SimpleBlobDetector
cv2.SimpleBlobDetector
: detekterar nyckelpunkter som representerar blobbar baserat på storlek, form och 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)
Parametrar:
minThreshold
,maxThreshold
: intensitetsintervall för blob-detektering;filterByArea
: aktiverar filtrering baserat på blob-storlek;minArea
,maxArea
: anger storleksbegränsningar för detekterade blobbar;
filterByCircularity
: aktiverar filtrering baserat på rundhet;minCircularity
: lägre värden detekterar avlånga blobbar;
filterByConvexity
: aktiverar filtrering baserat på konvexitet;minConvexity
: lägre värden tillåter konkava former;
filterByInertia
: aktiverar filtrering baserat på utdragning;minInertiaRatio
: lägre värden detekterar avlånga blobbar.
Swipe to start coding
Du har fått bilder av en fabrik (factory
) och solrosor (sunflowers
):
- Konvertera bilden
factory
till gråskala och spara i variabelngray_factory
; - Konvertera bilden
sunflowers
till gråskala och spara i variabelngray_sunflowers
; - För Harrisdetektorn är det nödvändigt att konvertera bildmatrisen till
float32
, gör detta och spara igray_float
; - Applicera Harris hörndetektering och spara i
harris_corners
(rekommenderade parametrarblockSize=2, ksize=3, k=0.04
); - Använd
dilate()
för att förbättra synligheten avharris_corners
; - Applicera Shi-Tomasi hörndetektering på bilden och spara i
shi_tomasi_corners
(rekommenderade parametrargray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10
) - Skapa ett
SimpleBlobDetector_Params
-objekt för att initiera parametrarna och spara iparams
; - Skapa en blobdetektor med angivna parametrar och spara i
detector
; - Detektera blob-nyckelpunkter och spara i
keypoints
.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.45
Hörn- och Blobdetektering
Svep för att visa menyn
Hörndetektering
Hörndetektering används för att identifiera skarpa intensitetsförändringar där två kanter möts. Det är användbart vid funktionsmatchning, objektspårning och strukturigenkänning.
Populära metoder:
- Harris-hörndetektor (
cv2.cornerHarris
): detekterar hörn baserat på gradientförändringar;
# 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]
Parametrar:
src
: inmatad gråskalebild (måste varafloat32
);blockSize
: storlek på det lokala fönstret för gradientberäkning;ksize
: aperturstorlek för Sobeloperatorn (udda, t.ex.3
,5
,7
);k
: fri parameter för Harris-detektorn (typiska värden:0.04 - 0.06
).
- Shi-Tomasi-hörndetektor (
cv2.goodFeaturesToTrack
): väljer de starkaste hörnen i en bild;
# 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)
Parametrar:
image
: inmatad gråskalebild;maxCorners
: maximalt antal hörn att detektera;qualityLevel
: minsta kvalitet på detekterade hörn (intervall:0.01 - 0.1
);minDistance
: minsta avstånd mellan detekterade hörn.
Parametrar för metoden cv2.circle()
för att markera objekt:
image
: bilden där cirkeln ska ritas;center_coordinates
: cirkelns mittkoordinater, representerade som en tuppel med två värden: (X, Y);radius
: cirkelns radie;color
: färgen på cirkelns kant. I BGR-format, anges som en tuppel (t.ex.(255, 0, 0)
för blå);thickness
: tjockleken på cirkelns kant i pixlar. Värdet-1
fyller hela cirkeln med den angivna färgen.
Blobdetektering
Blobdetektering identifierar områden med liknande intensitet i en bild, användbart för objektdetektering och spårning.
En av de populära metoderna för blobdetektering är SimpleBlobDetector
cv2.SimpleBlobDetector
: detekterar nyckelpunkter som representerar blobbar baserat på storlek, form och 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)
Parametrar:
minThreshold
,maxThreshold
: intensitetsintervall för blob-detektering;filterByArea
: aktiverar filtrering baserat på blob-storlek;minArea
,maxArea
: anger storleksbegränsningar för detekterade blobbar;
filterByCircularity
: aktiverar filtrering baserat på rundhet;minCircularity
: lägre värden detekterar avlånga blobbar;
filterByConvexity
: aktiverar filtrering baserat på konvexitet;minConvexity
: lägre värden tillåter konkava former;
filterByInertia
: aktiverar filtrering baserat på utdragning;minInertiaRatio
: lägre värden detekterar avlånga blobbar.
Swipe to start coding
Du har fått bilder av en fabrik (factory
) och solrosor (sunflowers
):
- Konvertera bilden
factory
till gråskala och spara i variabelngray_factory
; - Konvertera bilden
sunflowers
till gråskala och spara i variabelngray_sunflowers
; - För Harrisdetektorn är det nödvändigt att konvertera bildmatrisen till
float32
, gör detta och spara igray_float
; - Applicera Harris hörndetektering och spara i
harris_corners
(rekommenderade parametrarblockSize=2, ksize=3, k=0.04
); - Använd
dilate()
för att förbättra synligheten avharris_corners
; - Applicera Shi-Tomasi hörndetektering på bilden och spara i
shi_tomasi_corners
(rekommenderade parametrargray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10
) - Skapa ett
SimpleBlobDetector_Params
-objekt för att initiera parametrarna och spara iparams
; - Skapa en blobdetektor med angivna parametrar och spara i
detector
; - Detektera blob-nyckelpunkter och spara i
keypoints
.
Lösning
Tack för dina kommentarer!
single