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-1tä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
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
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-1tä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