Kulma- ja Kohdetunnistus
Kulman tunnistus
Kulman tunnistusta käytetään voimakkaiden intensiteettimuutosten havaitsemiseen, joissa kaksi reunaa kohtaavat. Sitä hyödynnetään piirteiden yhdistämisessä, kohteiden seurannassa ja rakenteiden tunnistuksessa.
Suositut menetelmät:
- Harris-kulmantunnistin (
cv2.cornerHarris
): tunnistaa kulmat gradienttimuutosten perusteella;
# 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]
Parametrit:
src
: syöteharmaasävykuva (oltavafloat32
);blockSize
: paikallisen ikkunan koko gradienttien laskentaan;ksize
: Sobel-operaattorin aukon koko (pariton, esim.3
,5
,7
);k
: Harris-tunnistimen vapaa parametri (tyypillisesti:0.04 - 0.06
).
- Shi-Tomasi-kulmantunnistin (
cv2.goodFeaturesToTrack
): valitsee kuvan vahvimmat kulmat;
# 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)
Parametrit:
image
: syöteharmaasävykuva;maxCorners
: havaittavien kulmien enimmäismäärä;qualityLevel
: havaittujen kulmien vähimmäislaatu (alue:0.01 - 0.1
);minDistance
: havaittujen kulmien välinen vähimmäisetäisyys.
cv2.circle()
-menetelmän parametrit kohteiden korostamiseen:
image
: kuva, johon ympyrä piirretään;center_coordinates
: ympyrän keskipisteen koordinaatit, esitettynä kahden arvon tuplena: (X, Y);radius
: ympyrän säde;color
: ympyrän reunan väri. BGR-muodossa, annetaan tuplena (esim.(255, 0, 0)
siniselle);thickness
: ympyrän reunan paksuus pikseleinä. Arvo-1
täyttää koko ympyrän määritellyllä värillä.
Blob-havainnointi
Blob-havainnointi tunnistaa samankaltaisen intensiteetin alueet kuvasta, mikä on hyödyllistä kohteiden tunnistuksessa ja seurannassa.
Yksi suosituista blob-havainnoinnin menetelmistä on SimpleBlobDetector
cv2.SimpleBlobDetector
: tunnistaa avainpisteet, jotka edustavat blob-alueita koon, muodon ja intensiteetin perusteella.
# 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)
Parametrit:
minThreshold
,maxThreshold
: intensiteettialue kohteiden tunnistukseen;filterByArea
: mahdollistaa suodatuksen kohteen koon perusteella;minArea
,maxArea
: määrittää havaittujen kohteiden kokorajat;
filterByCircularity
: mahdollistaa suodatuksen pyöreyden perusteella;minCircularity
: pienemmät arvot tunnistavat pitkulaisia kohteita;
filterByConvexity
: mahdollistaa suodatuksen konveksisuuden perusteella;minConvexity
: pienemmät arvot sallivat kuperat muodot;
filterByInertia
: mahdollistaa suodatuksen pituussuhteen perusteella;minInertiaRatio
: pienemmät arvot tunnistavat pitkulaisia kohteita.
Swipe to start coding
Sinulle on annettu tehdaskuva (factory
) ja auringonkukkakuva (sunflowers
):
- Muunna
factory
-kuva harmaasävykuvaksi ja tallenna muuttujaangray_factory
; - Muunna
sunflowers
-kuva harmaasävykuvaksi ja tallenna muuttujaangray_sunflowers
; - Harris-detektoria varten kuvan matriisi tulee muuntaa muotoon
float32
, tee tämä ja tallenna muuttujaangray_float
; - Käytä Harris-kulmadetektoria ja tallenna tulos muuttujaan
harris_corners
(suositellut parametrit:blockSize=2, ksize=3, k=0.04
); - Paranna
dilate()
-tuloksen näkyvyyttä käyttämälläharris_corners
; - Käytä Shi-Tomasi -kulmadetektoria kuvaan ja tallenna tulos muuttujaan
shi_tomasi_corners
(suositellut parametrit:gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10
) - Luo
SimpleBlobDetector_Params
-olio parametrien alustamista varten ja tallenna muuttujaanparams
; - Luo blob-detektori määritellyillä parametreilla ja tallenna muuttujaan
detector
; - Tunnista blob-avaimet ja tallenna muuttujaan
keypoints
.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.45
Kulma- ja Kohdetunnistus
Pyyhkäise näyttääksesi valikon
Kulman tunnistus
Kulman tunnistusta käytetään voimakkaiden intensiteettimuutosten havaitsemiseen, joissa kaksi reunaa kohtaavat. Sitä hyödynnetään piirteiden yhdistämisessä, kohteiden seurannassa ja rakenteiden tunnistuksessa.
Suositut menetelmät:
- Harris-kulmantunnistin (
cv2.cornerHarris
): tunnistaa kulmat gradienttimuutosten perusteella;
# 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]
Parametrit:
src
: syöteharmaasävykuva (oltavafloat32
);blockSize
: paikallisen ikkunan koko gradienttien laskentaan;ksize
: Sobel-operaattorin aukon koko (pariton, esim.3
,5
,7
);k
: Harris-tunnistimen vapaa parametri (tyypillisesti:0.04 - 0.06
).
- Shi-Tomasi-kulmantunnistin (
cv2.goodFeaturesToTrack
): valitsee kuvan vahvimmat kulmat;
# 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)
Parametrit:
image
: syöteharmaasävykuva;maxCorners
: havaittavien kulmien enimmäismäärä;qualityLevel
: havaittujen kulmien vähimmäislaatu (alue:0.01 - 0.1
);minDistance
: havaittujen kulmien välinen vähimmäisetäisyys.
cv2.circle()
-menetelmän parametrit kohteiden korostamiseen:
image
: kuva, johon ympyrä piirretään;center_coordinates
: ympyrän keskipisteen koordinaatit, esitettynä kahden arvon tuplena: (X, Y);radius
: ympyrän säde;color
: ympyrän reunan väri. BGR-muodossa, annetaan tuplena (esim.(255, 0, 0)
siniselle);thickness
: ympyrän reunan paksuus pikseleinä. Arvo-1
täyttää koko ympyrän määritellyllä värillä.
Blob-havainnointi
Blob-havainnointi tunnistaa samankaltaisen intensiteetin alueet kuvasta, mikä on hyödyllistä kohteiden tunnistuksessa ja seurannassa.
Yksi suosituista blob-havainnoinnin menetelmistä on SimpleBlobDetector
cv2.SimpleBlobDetector
: tunnistaa avainpisteet, jotka edustavat blob-alueita koon, muodon ja intensiteetin perusteella.
# 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)
Parametrit:
minThreshold
,maxThreshold
: intensiteettialue kohteiden tunnistukseen;filterByArea
: mahdollistaa suodatuksen kohteen koon perusteella;minArea
,maxArea
: määrittää havaittujen kohteiden kokorajat;
filterByCircularity
: mahdollistaa suodatuksen pyöreyden perusteella;minCircularity
: pienemmät arvot tunnistavat pitkulaisia kohteita;
filterByConvexity
: mahdollistaa suodatuksen konveksisuuden perusteella;minConvexity
: pienemmät arvot sallivat kuperat muodot;
filterByInertia
: mahdollistaa suodatuksen pituussuhteen perusteella;minInertiaRatio
: pienemmät arvot tunnistavat pitkulaisia kohteita.
Swipe to start coding
Sinulle on annettu tehdaskuva (factory
) ja auringonkukkakuva (sunflowers
):
- Muunna
factory
-kuva harmaasävykuvaksi ja tallenna muuttujaangray_factory
; - Muunna
sunflowers
-kuva harmaasävykuvaksi ja tallenna muuttujaangray_sunflowers
; - Harris-detektoria varten kuvan matriisi tulee muuntaa muotoon
float32
, tee tämä ja tallenna muuttujaangray_float
; - Käytä Harris-kulmadetektoria ja tallenna tulos muuttujaan
harris_corners
(suositellut parametrit:blockSize=2, ksize=3, k=0.04
); - Paranna
dilate()
-tuloksen näkyvyyttä käyttämälläharris_corners
; - Käytä Shi-Tomasi -kulmadetektoria kuvaan ja tallenna tulos muuttujaan
shi_tomasi_corners
(suositellut parametrit:gray_factory, maxCorners=100, qualityLevel=0.01, minDistance=10
) - Luo
SimpleBlobDetector_Params
-olio parametrien alustamista varten ja tallenna muuttujaanparams
; - Luo blob-detektori määritellyillä parametreilla ja tallenna muuttujaan
detector
; - Tunnista blob-avaimet ja tallenna muuttujaan
keypoints
.
Ratkaisu
Kiitos palautteestasi!
single