Segmentacja przez detekcje brzegów Lokalne zmiany jasności obrazu niosą istotną informację o granicach obszarów (obiektów) występujących w obrazie. Metody detekcji dużych, lokalnych zmian jasności w obrazie (tj. brzegów, konturów) należą do podstawowych technik segmentacji i detekcji obiektów w obrazach. Lokalne zmiany jasności w obrazach można podzielić na trzy podstawowe rodzaje: punkty, linie i brzegi.
Segmentacja przez detekcje brzegów 40 40 0 0 00 00 180 180 160 160 140 140 10 10 100 100 80 80 60 60 0 10 0 30 40 50 60 70 80 90 100 0 10 0 30 Distance 40 along 50 profile 60 70 80 90 100 Distance along profile
Detekcja linii Najprostszym sposobem detekcji prostych kształtów w obrazie (np. punktów, linii) jest wyznaczenie korelacji obrazu z maską detekcyjną (najczęściej stosuje się maski kwadratowe o wymiarach 3 3 i 5 5). Wielkość maski i wartości jej współczynników zależą od rodzaju kształtu podlegającego detekcji.
Maska detekcyjna Wynik korelacji punktów obrazu z i ze współczynnikami maski w i jest postaci: D = w z + w z + + w z = w z = 1 1 L N N N i=1 i i w T z W 1 W W 3 W 4 W 5 W 6 Maska detekcyjna 3 3 W 7 W 8 W 9
Maski detekcyjne linii linii poziomej linii pionowej linii ukośnej +45 linii ukośnej -45
Maski detekcyjne linii
Detekcja brzegów Brzegiem nazywamy granice pomiędzy dwoma obszarami o różnych jasnościach. Detekcja brzegów obszarów pozwala na identyfikację położenia obiektów w obrazie. Metody detekcji brzegów należą do najważniejszych metod przetwarzania i analizy obrazów. Większość metod detekcji brzegów bazuje na wyznaczaniu lokalnych pochodnych obrazu (tzw. operatorów gradientowych).
Detekcja brzegów 00 180 160 140 10? 100 80 60 0 10 0 30 40 50 60 70 80 90 100 Odległość w pixelach Przykładowy profil rozkładu jasności brzegu obrazu
v v O b b ra ra z z P P rz rz e e k k ró ró j j ja ja s s n n ości ości o o b b ra ra z z u u P P ie ie rw rw s s z z a p p o o c c h h o o d d n n a a Detekcja brzegów za pomocą operatorów gradientowych D D ru ru g g a a p p o o c c h h o o d d n n a a
Detekcja brzegów Podstawowe własności operatorów gradientowych: pierwsza pochodna obrazu może być wykorzystana do detekcji brzegu oraz jego kierunku, punkt zmiany znaku drugiej pochodnej, tj. jej miejsce zerowe (ang. zero crossing) obrazu może służyć do wyznaczenia miejsca wystąpienia brzegu. Wadą operatorów gradientowych jest uwypuklanie zakłóceń impulsowych w obrazach (może to powodować pogorszenie jakości obrazu lub detekcje fałszywych brzegów).
Gradient obrazu Gradient obrazu f(x,y) w punkcie (x,y) określa wektor: f = G G x y f = f x y Wektor gradientu wskazuje kierunek największej zmiany jasności obrazu. Długość tego wektora nazywamy wartością gradientu i obliczamy z zależności: 1/ ( ) [ ] f = Gx + Gy Gx Gy f = mag +
Gradient obrazu 0 18 16 14 1 10 8 6 4 5 10 15 0
Gradient obrazu Dla obrazów dyskretnych gradient jest aproksymowany różnicami jasności obrazów dla kierunku poziomego i pionowego: f z 1 z + z1 z3 lub też kierunków ukośnych: f z + 1 z4 z z3 Z 1 Z Z 3 Z 4 X Y
Przykłady masek gradientowych Maski Robertsa 1 0 0 1 0 0 h 1 h g(x,y) = h 1 **f(x,y) + h **f(x,y)
Przykłady masek gradientowych Maski Prewitta 0 1 0 0 0 0 1 1 1 1 0 1 h 1 h g(x,y) = h 1 **f(x,y) + h **f(x,y) g(x,y) = ([h 1 **f(x,y)] + [h **f(x,y)] ) 1/
Przykłady masek gradientowych Maski Sobela - 0 1 0 0 0-0 1 1 h 1 0 1 h g(x,y) = h 1 **f(x,y) + h **f(x,y) g(x,y) = ([h 1 **f(x,y)] + [h **f(x,y)] ) 1/
Roberts Oryginał Obrazy gradientowe Prewitt Sobel
Mapy gradientowe (obrazy binarne) Oryginał %MATLAB I = imread( cameraman.tif'); BW1 = edge(i, roberts'); BW = edge(i,'sobel'); BW3 = edge(i,'canny'); figure, imshow(bw1); figure, imshow(bw); figure, imshow(bw3); Roberts Sobel Canny
Procedura detekcji brzegu Punkt obrazu jest uważany za należący do brzegu jeżeli f(x,y) ma większą wartość od założonej wartości progowej T (którą można wyznaczyć na podstawie histogramu skumulowanego obrazu gradientowego). f(x,y) h 1 h=i h 1 I+I h I T Mapa brzegów h Progowanie Mapa brzegów jest obrazem binarnym zawierającym informacje o położeniu wykrytych brzegów.
Detekcja krawędzi Poziome Pionowe
Operator Laplace a y f x f f + = ( ) 8 6 4 5 4 z z z z z f + + + Laplacian funkcji dwuwymiarowej (obrazu) definiuje się jako drugą pochodną: którą dla dziedziny dyskretnej obrazu aproksymuje zależność:
Operator Laplace a 0 0 4 8 0 0 (a) (b) Przykładowa maski Laplace a o wymiarze 3 3 wyznaczone odpowiednio dla dwóch i czterech kierunków. Zauważmy, że suma współczynników masek Laplace a jest zero.
Operator Laplace a Korzystając z własności przekształcenia Fouriera funkcji pochodnej: I { n( )} ( ) n f x = jω F( ω ) Dla operatora Laplacea otrzymujemy: { } ( f = ω + ω ) F( ω ω ) I x y x, wnioskując o wzmocnieniu wyższych częstości obrazu. y
Operator Laplace a Operator Laplace a pełni drugorzędną rolę w detekcji brzegów ze względu na następujące jego właściwości: jest bardzo czuły na zakłócenia o dużych częstotliwościach, generuje podwójne kontury, nie pozwala wyznaczać kierunku brzegu.
Działanie operatorów gradientowych
Działanie operatorów gradientowych 8 %MATLAB output=filter(h,input); help fspecial 9
Operator Laplace a Właściwość operatora Laplace a, którą wykorzystuje się przy detekcji brzegów jest miejsce zerowe (ang. zero crossings). W celu stłumienia składowych dużej częstotliwości operator ten stosuje się wspólnie z filtrem Gaussowskim: h( x,y ) x + y exp σ = Podstawiając r =x +y filtracja Laplace a uzupełniona o filtr Gaussowski daje w wyniku odpowiedź impulsową: r σ = 4 σ exp σ r h %MATLAB h=fspecial( log );
Operator LoG (Laplacian of Gaussian) 1 0.5 Z 0 4 0 Y - -4-4 - X 0 4 Laplacian dwuwymiarowej funkcji gaussowskiej dla σ =1; jest to tzw. funkcja kapelusza meksykańskiego.
Operator LoG (Laplacian of Gaussian) %MATLAB I = imread('saturn.tif'); h = fspecial('log',[5 5], 0.); I = filter(h,i)/55; imshow(i), figure, imshow(i)
Operator LoG Obraz i jego przejścia przez zero po zastosowaniu filtru kapelusza meksykańskiego i progowania obrazu
Wyznaczanie granic tekstur M. Strzelecki