Metody Počítačového Vidění
3. cvičení
Ing. Lukáš Bureš
Plzeň, 10. října 2014
Metody Počítačového Vidění
3. cvičení
Obsah cvičení
1. Zadání 1. semestrální práce
2. Odevzdání testovací úlohy skrze SAKo
3. Harris Corner Detector
4. Canny Edge Detector
1
Zadání 1. semestrální práce
Konkrétní zadání 1. semestrální práce je možné nalézt na internetových stránkách MPV.
2
Odevzdání testovací úlohy skrze SAKo
Testovací úloha má za cíl studenta seznámit se Systémem Automatické Kontroly (SAKo).
Jde o jednoduchou, předvyplněnou úlohu výpočtu histogramu. V souboru submit.py je
nutné vyplnit vyplnit login a tajné heslo (budou zaslány e-mailem).
1
2
3
4
5
6
# Import modulu .
import SAKo
# SAKo . submit ( login , heslo , id_ulohy ,
# cesta k souboru se sem praci , nazev funkce )
SAKo . submit ( ’ test ’ , ’ test ’ , ’ test ’ , ’ ./ test_func . py ’ , ’ histogram ’)
Soubor test_func.py obsahuje funkci, kterou je nutné implementovat.
1 # Import modulu .
2 import cv2
3
4 def histogram ( img ) :
5
img = cv2 . cvtColor ( img , cv2 . cv . CV_RGB2GRAY )
6
hist = cv2 . calcHist ([ img ] , [0] , None , [256] , [0 ,256])
7
return hist
Verze 1.0.0, poslední úpravy: 10. října 2014
1
Metody Počítačového Vidění
3
3. cvičení
Harris Corner Detector
Předpokládejme, obrázek v odstínech šedi I. Dále mějme posuvné okénko w(x, y) (s posunem u ve směru x a v ve směru y) přes obrázek I. Můžeme vypočítat změnu intenzity
intenzity
X
E(u, v) =
w(x, y) [I(x + u, y + v) − I(x, y)]2 ,
(1)
x,y
kde w(x, y) je okénko na pozici (x, y), I(x, y) je intenzita na pozici (x, y) a I(x + u, y + v)
je intenzita na posuvném okénku (x + u, y + v).
Vzhledem k tomu, že hledáme taková okna s rohy, tedy hledáme okna s velkým rozdílem
v intenzitě
X
[I(x + u, y + v) − I(x, y)]2 ,
(2)
x,y
využijeme Taylorův rozvoj
E(u, v) ≈
X
[I(x, y) + uIx + vIy − I(x, y)]2 ,
(3)
x,y
kde Ix a Iy jsou derivace v jednotlivých směrech, úpravou získáme
E(u, v) ≈
X
u2 Ix2 + 2uvIx Iy + v 2 Iy2 .
(4)
x,y
Což můžeme zapsat maticově jako
E(u, v) ≈
h
u v
i
"
·
X
w(x, y)
x,y
Označme
"
M=
X
w(x, y)
x,y
Ix2 Ix Iy
Ix Iy Iy2
Ix2 Ix Iy
Ix Iy Iy2
#! "
·
u
v
#
.
(5)
#
,
(6)
tedy naše rovnice má nyní tvar
E(u, v) ≈
h
u v
i
"
M
u
v
#
.
(7)
Skóre R je vypočteno pro každé okénko, aby bylo zjištěno zda obsahuje roh
R = det(M ) − k · (trace(M ))2 ,
(8)
kde det(M ) = λ1 λ2 , trace(M ) = λ1 + λ2 a konstanta k je obvykle volena v rozmezí
0.04 − 0.06. Pokud je hodnota větší, než stanovený práh, tak je bod (x, y) vyhodnocen
jako roh.
Verze 1.0.0, poslední úpravy: 10. října 2014
2
Metody Počítačového Vidění
3. cvičení
Implementace pomocí OpenCV je velice jednoduchá, stačí pouze zavolat metodu cornerHarris a následně její výstup znormovat a naprahovat.
1
2
3
4
blockSize = 2;
apertureSize = 3;
k = 0.04;
HarrisImg = cv2 . cornerHarris ( ImgGS , blockSize , apertureSize , k ) ;
Obrázek 1: Vstupní obrázek.
Verze 1.0.0, poslední úpravy: 10. října 2014
Obrázek 2: Hodnoty skóre R.
3
Metody Počítačového Vidění
Obrázek 3: Nalezené vrcholy.
4
3. cvičení
Obrázek 4: Propojené vrcholy úsečkami.
Canny Edge Detector
Cannyho hranový detektor je operátor detekce hran, který využívá vícestupňový algoritmus pro detekci hran v obraze. Představil ho pan John F. Canny v roce 1986, který
vytvořil výpočetní teorii detekce hran s vysvětlením, proč tato technika funguje.
Cannyho detekce hran probíhá ve čtyřech krocích:
• Použije se gaussovské rozmazání, aby se odstranily skvrny a šum obrazu.
• Aplikuje se gradientní operátor pro získání intenzit gradientů a směru.
• Metoda potlačení nemaxim (Non-maximum suppression - viz 1. přednáška MPV)
určí kandidáty hran.
• Hystereze prahování zjistí, kde hrany začínají a kde končí.
Verze 1.0.0, poslední úpravy: 10. října 2014
4
Metody Počítačového Vidění
3. cvičení
Obrázek 5: Vstupní obrázek.
Obrázek 6: Nalezené hrany.
Obrázek 7: Vstupní obrázek.
Obrázek 8: Nalezené hrany.
Verze 1.0.0, poslední úpravy: 10. října 2014
5
Download

cvičení 03