Avsnitt 2. Kapitel 8
single
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]
Notering
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)
Notera
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.
Läs mer
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-1fyller 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)
Notering
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.
Uppgift
Swipe to start coding
Du har fått bilder av en fabrik (factory) och solrosor (sunflowers):
- Konvertera bilden
factorytill gråskala och spara i variabelngray_factory; - Konvertera bilden
sunflowerstill 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
Var allt tydligt?
Tack för dina kommentarer!
Avsnitt 2. Kapitel 8
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