Top Banner
Sevdanur GENC - 135105008 Computer Vision 1 | Karinca Kolonisi Algoritmasi ile Kenar Tespit Yalova Universitesi Fen Bilimleri Enstitusu Bilgisayar Muhendisligi Ana Bilim Dali Bilgisayarli Gorme Dersi Sevdanur GENC - 135105008
23

Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Jan 16, 2023

Download

Documents

Mesut Çiçek
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

1 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

Yalova Universitesi Fen Bilimleri Enstitusu

Bilgisayar Muhendisligi Ana Bilim Dali

Bilgisayarli Gorme Dersi

Sevdanur GENC - 135105008

Page 2: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

2 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

Bilgisayarli Gorme - Donem Odevi Edge Detection By Ant Colony Algorithm - Term Paper

ICİNDEKİLER Giris Karinca Koloni Algoritmasi Nedir

o Feromon

o Karinca Koloni Algoritmasinin Adimlari

o Karincalarin Sezgisel ve Feromon Davranislari

o Karincalarin Sezgisel ve Feromon Davranislarinin Algoritmadaki Yeri

o Karinca Tur Kurallari

o Feromon Guncellemesi

Local Feromon Guncellemesi

Global Feromon Guncellemesi

Kenar Tespiti Nedir

Karinca Koloni Algoritmasi Yardimiyla Goruntu Islemede Kenar Tespit Yaklasimi

Karinca Koloni Algoritmasi Kullanilarak Goruntulerde Kenar Tespit Yontemi Kullanimi

Edge Detection By Ant Colony Algorithm Uygulamasinin Aciklamali Kodlari Edge Detection By Ant Colony Algorithm Uygulamasinin Ekran Goruntuleri

o Matlab Guide Tasarimi

o Uygulamanin Calistirilmis Hali

o Test Sonuclari

o Diger Kenar Tespit Algoritmalarindaki Goruntu Sonuclari Ile Kiyaslama

Page 3: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

3 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

GİRİS

Karincalar, yasadiklari populasyonlari icerisinde tek baslarina kucuk bir canli olsa dahi topluluk olarak incelenecek olursa buyuk bir karmasanin bireyleri olabilyorlar. Yasamlarini surdurebilmeleri icin kendi boyut ve agirliklarindan daha fazla yukleri tasiyabiliyorlar. Kendi iclerinde sezgisel bir sekilde iletisim agi kurup, kopru misali yollar tasarlayip yuklerini bu yollar uzerinden tasiyarak yuvalarina goturebiliyorlar. Karinca Algoritmasi, gercek karinca populasyonundan esinlenerek tasarlanmis olup bilim dunyasinda bu algoritma ile bir cok cozumde kullanilmistir. Karinca kolonisi algoritmasi ve diger tum sezgisel algoritmalarin kullanim alanlari en kisa mesafe problemleriyle sinirli degildir. En kisa zaman, en az kaynak, en hizli sonuclar gibi bir cok cozum yolu icin kullanilabilmektedir. Ornegin, bir arama motorunda karinca kolonisi optimizasyonu kullanilarak amac edilen sonuca en kisa zamanda ve en hizli sekilde ulasilabilir. Bu calismada, oncelikle karinca algoritmasindan bahsedilecektir. Bununla birlikte karincalarin sezgisel davranislarini matematigin olasilik formulleri ile incelenip, ilgili terimlerden bahsedilecektir. Sonrasinda Karinca algoritmasi ile goruntuler uzerinde kenar tespit islemleri yapilacaktir. Anahtar Kelimeler; Karinca kolonisi algoritmasi, Feromon guncellemesi, Kenar tespit, Karinca algoritmasi, Karinca kolonisi optimizasyonu. KARİNCA KOLONİ ALGORİTMASİ NEDİR? Karinca kolonisi algoritmasi (Ant Colony Algorithm - ACA), 1991 ylinda Marco Dorigo tarafindan tasarlanmis bir algoritmadir. Algoritmanin genel bakis acisi; gercek karinca kolonilerinde yasamlarini surduren karincilarin kendi sistemlerini surdurebilmeleri icin yiyeceklerini arastirip bulmalari gerekmektedir. Bunun icin yiyecekleri ile yuvalari arasindaki mesafeyi her zaman icin en kisa surede katetmeleri gerekmektedir. Bunun icinde yiyecekleri ve yuvalari arasindaki en kisa yolu secmek zorundadirlar ve zamanla bu sezgisel davranislarini bir kabiliyet haline getirmislerdir. Bu kabiliyet sayesinde zaman icerisinde surekli kullandiklari en kisa yolun cevresinde fiziksel, kimyasal veya cevresel herhangi bir degisim oldugunda, en kisa yol artik onlar icin iyi bir tercih olmayabilir. Bunun icinde yeni en kisa yollar bulmaya baslarlar. Tum bu sezgisel davranislarinin yani sira, karincalarin onemli olan diger bir ozellikleri ise cok iyi bir gorme kabiliyetine sahip olmamalaridir. Bu en kisa yolu secmek icin tabikide etrafi tam olarak gorebilecekleri anlamina gelmiyor. Tam olarak kor de degillerdir. Bu sebepten, karincalar birbirleri ile haberlesebilmeleri icin kendileri tarafindan urettikleri bir kimyasal maddeyi kullanmaktadirlar.

Page 4: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

4 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

Feromon: Karincalar kendi aralarindaki iletisimi saglayabilmeleri icin Feromon isimli bir kimyasal madde kullanmaktadirlar. Karincalar yiyecek bulduklari hedeflerine yada yuvalarina ulasabilecekleri yollari katederken, yollari uzerine kendilerinin salgilamis oldugu bir miktar Feromon kimyasal sivisini ve ya kokusunu birakirlar. Karincilar yonlerini tespit ederken feromon sivisinin miktarina onem vermektedirler. Eger ki ulasilacak hedefe ait tum yonlerin feromon sivi miktarlari birbirine esit ise, tum karincalarin bu yonleri secebilme ihtimalleri yani olasiliklari ayni olacaktir. Karincalarinin hepsinin ayni hizlara veya birakmis olduklari sivi miktarlarinin ayni olmasi, daha kisa yollar birim zamanda daha cok feromon maddesi alacagini belirler. Bu sebepten, karincilar hizli bir sekilde en kisa yolu bulurlar. Karincalarin tum bu ugraslari tamamen dogal bir optimizasyon islemine ornek olabilecek seviyede bir davranistir. Tum bu optimizasyon islemleri icinde bir karinca algoritmasi olusturulmustur. Karinca algoritmalari genetik algoritma gibi bir populasyon sistemini yaklasim olarak benimsemistir. Karinca populasyonu icerisinde bulunan tum karincalar bir cozum yolunu temsil etmektedir. Tum bu cozum yollari sayesinde populasyon icerisindeki tum karincilarin hareketlerini belirlemelerinde referans olabilmektedirler. Algoritma, karinca kolonilerinden esinlenerek tasarlandigindan olusan sisteme; karinca sistemi (KS), algoritmaya ise karinca kolonileri algoritmasi (KKA) ismi verilmektedir.

Karinca Koloni Algoritmasinin Adimlari: 1. Adim: Karincalarin yonlerini bulabilmesi icin kullandiklari feromon sivilarina ait baslangic feromon sivi degerleri belirlenir. 2. Adim: Karincalar her farkli noktaya rastgele yerlestirilir. 3. Adim: Karincalar, sonraki hedeflerine olasilik denklemlerine bagli olacak sekilde turlarini tamamlarlar. 4. Adim: Karincalarin katettikleri yollar ve buna ait olan feromon sivi miktarlari hesaplarinir, sonrasinda yeni lokal feromon sivi miktarlari olusturularak ilgili bilgi guncellenir. 5. Adim: En iyi cozume ait yol hesaplanir ve global feromon guncellenmesinde kullanilir. 6. Adim: Iterasyon sayilari tamamlandiktan sonra 2. Adim'a gidilir.

Page 5: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

5 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

Karincalarin Sezgisel ve Feromon Davranislari:

Karincalar yasamlarini surdurebilmeleri icin yiyeceklerini cevreden arastirmalari gerekir. Bunun icin oncelikle, karinca kolonisinden oncu karincalar arastirma yapmak icin yuvalarindan cikarlar. Oncu karincalar cevrede sezgisel olarak bulmus olduklari herhangi bir yiyecek kaynaginin konumunu tespit edip hafizalarinda bunu hedef olarak belirlerler. Sonrasinda oncu karincalar hafizalarindaki bu bilgi ile yuvalarina geri donerler. Geri donus esnasinda vucutlarindan salgiladiklari kimyasal sivi olan feromon yardimiyla, gectikleri yollara koku veya sivi olacak sekilde izler birakirlar. Oncu karincalar yuvalarina vardiklarinda karinca kolonisindeki diger karincalara hedef hakkinda hafizasindaki bilgiyi aktarir ve populasyondaki belirli sayidaki karincalar

bilgiyi alarak hedefe varmak icin yola cikarlar. Karincalar hedefe ulasana kadar oncu karincalarin yollara onceden birakmis olduklari izleri referans alarak rastal bir sekilde ilerlerler. Boylelikle iz bulunan tum yollarda farkli sayilarda karincalar bulunmaktadir. Bu yollardan kisa yollari tercih eden karincalar hedefle yuva arasinda daha sik bir sekilde gidip gelecekleri icin artik o yoldaki feromon kokusu yada sivisinin miktari daha fazla olacaktir. Az kullanilmaya baslanan yollardaki feromon sivi yada kokusu zamanla buharlasmaya baslayacaktir.

Page 6: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

6 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

Daha onceden kisa yolu secmeyen ve diger yollara rastsal bir sekilde dagilan karincalar yuvalarindan ayrilirken yol uzerindeki daha yogun olan feromon kokusuna yada sivisina yonelme olasiliklari cok daha fazla artacaktir. Zaman icerisinde bu kisa yolu tercih eden diger tum karincalarin sayilari artacaktir. Boylelikle karincalar yuvalari ve hedefleri arasinda duzenli bir kopru kurmus olacaklardir. Karincalarin Feromon ve Sezgisel Davranislarinin Algoritmadaki Yeri: Karincalarin bir problem uzerindeki cozumlerinin yaklasiminda kullanacaklari yontemleri oncesinde sezgisel sonrasinda ise feromon kimyasal maddesi olarak siniflandirabiliriz. Bunun icinde algoritma icerisinde adim adim ilerleyebilmemiz icin belirlenen karincalarin sayilari ile birlikte matrisler olusturuyoruz. Bu matrisleri sezgisel yaklasimlari ifade edebilmesi sezgisel matris, feromon kimyasalini ifade edebilmesi icinde feromon matrisi olarak isimlendiriyoruz. Bu matrisler olasilik formullerinde kullanilarak iyi sonuclara ulasmamizi saglayacaktir. Feromon matrislerinin olasilik formullerindeki onemi; karincalarin hedefle yuva arasindaki secmis olduklari yollarda bulunan feromon sivi miktarlarinin duzeyi yer almaktadir. Sezgisel matrislerinin olasilik formullerindeki onemi; karincalarin vardiklari bir dugumden varacaklari baska bir dugume kadar olan mesafenin uzakligiyla ters orantili bir baslangic degeridir. Algoritma cozumunde kullanilacak karinca sayisinin artirilmasi cozum icin iyi sonuclar verecegi gibi bu matrislere degerlerin atanmasi ve olasiligin cok fazla artmasi ile cozume ulasmak icin tahmin edilen surenin cok fazla artmasina sebebiyet vereceginden zaman gittikce artacaktir. Karincalarin sayisi, cozulecek problemlerin buyuklugune ve algoritmanin kullanilacagi alana bakilarak veriler degistirilebilir. Karinca Tur Kurallari: Karinca Koloni Algoritmasinda bir tur esnasinda, i noktasinda yer alan k karincasi, j noktasina yonelirken iki alternatif yol secmek zorundadir. Bu secimde Feromon degerinin en yuksek olmasina dikkat edecektir. Genellikle bu secim ilk alternatifte olasilik degeri q0 = %90 seviyesinde belirlenmektedir. Ikinci alternatifte ise, olasilik dagilimina bagli olarak yollar secilecektir. Bu tur esnasinda i noktasindaki k karincasinin u adet alternatif yoluna ait cozum yapilacak formul soyledir;

Page 7: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

7 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

Burada ilk parantez icerisindeki degerler feromon izleridir. Ikinci parantez arasindaki degerler ise i noktasindan u noktasina ait uzakligin tersi bulunmaktadir. Jk(i) ise, i noktasinda bulunan k karincasinin henuz gitmedigi noktalari temsil eder. Beta (B>0) feromon guncellemesinde, uzakligin goreli onemliligini belirleyen bir degerdir. q0(0<q0<1) cozum uzayini belirleyen bir degerdir. q<=q0 durumu gerceklestiginde, gidilmesi gereken diger hedef secim degerlerine bagli olarak rastsal bir sekilde secilmektedir. Boylelikle, feromon miktari yogun olan yollarin secilme olasiligi daha fazla olacaktir. Gidilecek olan yollarin secilme olasigina ait formul ise soyledir;

Pk(i,j) : k karincasinin i noktasindan j noktasina gecme olasiligi r(i,j) : i ve j noktalari arasindaki feromon matris degeri n(i,j) : i ve j noktalari arasindaki sezgisel matris degeri a : feromon katsayisi B : sezgisel katsayisi Jk : yollara ait noktalarin tamamdir. Feromon Guncellemesi : Populasyondaki karincalarin tamami yuva - hedef arasindaki turlarini tamamladiktan sonra feromon sivi miktarlari zaman icerisinde yenilenmekte yani guncellenmektedir. Ilk islem, noktalarin etrafindaki tum yollarda feromonlar bellirli oranlarda sirasiyla buharlasmaktadir. Buharlastirma islemi az tercih edilen tum yollardaki feromonlara uygulanmaktadir. Buharlastirma icin 0 ve 1 arasinda sabit bir degere sahiptir. Karincalarin turlamis olduklari yollardaki feromon miktarlari, o yolu onceden kullanan karincanin toplam yol uzunluguyla ters orantili olarak artis miktarinda degisim gosterecektir. Boylelikle, kisa yollardan gecmis olan karincalarin feromon miktarlari daha fazla artisa sebep olacaktir. Feromon guncellemeleri iki sekilde yapilmaktadir. Bunlar; Local ve Global feromon guncellemeleridir.

Page 8: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

8 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

Local Feromon Guncellemesi; Feromon degerleri bir matris olarak dusunelecek olursa; matris degeri t iterasyonuna kadar ilerleyen feromon degerlerine ait bir vektoru olusacaktir. t iterasyonundaki feromon duzeyi ve 0<p<1 araligindaki buharlastirma sabiti uzerine ilgili local feromon guncelleme formulu soyle olacaktir;

Lk(t+1), k karincasinin t+1 iterasyonundaki toplam tur miktaridir. Karincalar degisen feromon miktarlari ile birlikte her iterasyonda turlarinida degistirmektedirler. Amac kisa yola ait turlari tespit edebilmekdir. Global Feromon Guncellemesi; Karinca koloni algoritmasinda gecerli yollara ait en iyi sonuca sahip olan k karincasinin izledigi yolun feromon duzeyinin arttirilmasi saglanir. Bununla birlikte iterasyonlarda bulunan en iyi sonuclarin belli bir oranda ileriki iterasyonlara aktarilmasi gerceklestirilir. Lbest(t+1), gecerli iterasyonda bulunan en iyi yola ait olan turun uzunluk miktadir. Local feromon guncellemesine benzeyen bu olayin formulu soyle olacaktir;

Page 9: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

9 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

KENAR TESPİTİ NEDİR? Kenar belirleme (Edge Detection) olarak bilinen en onemli goruntu isleme teknigine ait bir cok algoritma bulunmaktadir. Bu algoritmalarin araciligiyla var olan goruntumuze ait kenarlari tespit edebiliriz. Kenar olarak bildigimiz tum tanimlar image'lar yani goruntuler uzerinde farkli bir boyut almaktadir. Image'larda kenarin tek bir anlami vardir o da, goruntuler arasindaki renk degisimleridir. Fakat her renk degisimide kenar olarak tespit edilemez. Kenar tespit algoritmalarinda calisirken oncelikle uzerinde calistigimiz goruntunun siyah - beyaza donusturulmesi gerekiyor. Kenar tespit edilmeden once belli bir thershold yani esik deger belirlenilmelidir. Esik degerinden sonra goruntu uzerindeki satir ve sutunlarda bulunan tum pixel'ler arasindaki renk tonlarinin degisimi bu esik degerini referans alarak kenarlar tespit edilebilir. Eger goruntu uzerindeki renk degisimi esik degerin altinda bir sonuc ise, kenar olarak isimlendirilemez. Kenar tespit yontemlerinde en cok kullanilan algoritmalara ait filtreler ise soyledir; Sobel Filtresi; Sobel filtresine ait algoritmada Iki tane konvulasyon kerneli bulunmaktadir. Birisi yatay kenarlari tespit etmek icin kullanilirken digeri ise dikey kenarlari tespit etmek icin kullanir. Eksenler uzerindeki piksellere daha cok agirlik verir. Prewitt Filtresi; Goruntuler uzerinde yatay ve dikey yonlere ait olan kernellerle birlikte egimlere odaklanarak sonuclar vermektedir. Canny Filtresi; Kenar tespit yontemlerinde en basarili sonucu veren bir kernel yapisina sahiptir. Goruntu turevi alinmadan once yumusatma filtresi uygulanmaktadir. Tek piksel kalinliginda kenarlar uretir ve kirik cizgilerle birlikte pikselleri birlestirir. Kenar bulma islemlerinde genel amac; goruntudeki gurultelere karsi dusuk duyarliligi bulabilmektedir. Sinirlarin iyi belirlenebilmesi ve geri kalan tum kenarlardaki karisikliklari elemektir. Bu sebepten, kerneller sayesinde goruntu icerisindeki isik yogunlukluklarina ait degisikliklerin ani oldugu yerleri yakalayabiliriz. KARİNCA KOLONİ ALGORİTMASİ YARDİMİYLA GORUNTU ISLEMEDE KENAR TESPİT YAKLASİMİ Kenarlari tespit edilecek goruntulerdeki her bir kenar aslinda karincalar icin bir beslenme yeri, hedef nokta olarak belirlenmektedir. Goruntu uzerinde, goruntunun boyutlarina gore karincalar rastgele olacak sekilde pikseller uzerinde farkli konumlara dagitiliyor. Bilimsel makalelerde calisilan goruntu boyutlari 128X128 ve 8 bit'lik ozelliklerdedir. Yine bu makalelerde kenar tespit yonteminde oldukca iyi

Page 10: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

10 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

sonuclar alinabildigi gibi goruntunun piksellerine gore olumsuz sonuclarda alindigi gorulmektedir. Kenar tespit yonteminde Canny algoritmasinin basarisiyla kiyaslandiginda ise malesef Prewitt ve Sobel kenar tespit yontemleri ile hemen hemen ayni seviye bir basari sergiledigi gorulmektedir.

Algoritmanin pixel sayisi arttikca calismasi oldukca uzun zaman alabiliyor, bunun icin uygulamanin hiz bakimindan performansini arttirabilmek adina matlab'in Mex File Function 'larini kullanmak cok fazla faydali olunabilecegini dusunuyor ve ileride bununla ilgili uygulamayi daha iyi bir sekilde iyilestirmeyi planliyorum. KARİNCA KOLONİ ALGORİTMASİ KULLANİLARAK GORUNTULERDE KENAR TESPİT YONTEMİ KULLANİMİ Bu calismamizda, goruntu uzerindeki kenarlarin tespit edilmesinde cok saglikli sonuclar alinabildigi gibi nadir de olsa basarisiz sonuclarda alabiliyoruz. Calismada zamandan tasarruf edebilmek adina, kullanilan goruntuler 128X128 boyutlarinda ve 8 bitlik olacak sekilde hazirlanmistir. Bu istege bagli olarak baska calismalarda degistirilebilir. Calismada goruntuler uzerinde islemleri en hizli sekilde gerceklestirebilmek adina Matlab programinin 7.9.0 / R2009b versiyonu kullanilmistir. Asagidaki goruntulerde iterasyon sayisi 3 olarak kullanilarak kenar tespit algoritmasi ile almis oldugumuz goruntuler bulunmaktadir. Kullanilan toplam karinca sayilarini goruntunun satir ve sutun pixel degerlerine gore belirliyoruz. Burada 128 X 128 piksel degerlerine uygun yaklasik olarak 300 degeri verilmektedir. Varsayilan olarak alpha ve beta degerlerini 1 verilir. Phi degerleri 0 - 0.1 deger araliklarindayken, Rho degerleri 0 - 1 deger araliklarinda gore alinan sonuclara ait ornek olabilecek ekran goruntuleri soyledir;

Page 11: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

11 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

Page 12: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

12 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

EDGE DETECTİON BY ANT COLONY ALGORİTHM UYGULAMASİNİN ACİKLAMALİ KODLARİ function varargout = AntColonyAlgorithmWithEdgeDetectionGui(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @AntColonyAlgorithmWithEdgeDetectionGui_OpeningFcn, ... 'gui_OutputFcn', @AntColonyAlgorithmWithEdgeDetectionGui_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function AntColonyAlgorithmWithEdgeDetectionGui_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = AntColonyAlgorithmWithEdgeDetectionGui_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function pushbutton1_Callback(hObject, eventdata, handles) %% Goruntuyu okutuyoruz ve double'a ceviriyoruz. Ardindan goruntunun satir % ve sutun degerlerini belirliyoruz. global goruntu dosyaAdi dosyaAdi = imgetfile; goruntu = double(imread(dosyaAdi))./255;

Page 13: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

13 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

h = handles.axes1; axes(h); imshow(goruntu); function pushbutton2_Callback(hObject, eventdata, handles) msgbox('Secilen image icin algoritma calistiriliyor... Lutfen bekleyin... ','Dikkat !','warn'); global goruntu dosyaAdi alpha beta phi rho [goruntuSatir, goruntuSutun] = size(goruntu); ToplamIterasyonSayisi=str2num(get(handles.edit1, 'String')); tic; %% gorunurluk islemine baslatiliyor. goruntuKopyasi = zeros(size(goruntu)); goruntuKopyasi_normal = 0; for satir =1:goruntuSatir for sutun=1:goruntuSutun %% temsili bir karinca takim olusturuluyor. bunun icin gerekli %% olan satir ve sutunlar belirleniyor. Filtrede denilebilir. taslak1 = [satir-2 sutun-1; satir-2 sutun+1; satir-1 sutun-2; satir-1 sutun-1; satir-1 sutun; satir-1 sutun+1; satir-1 sutun+2; satir sutun-1]; taslak2 = [satir+2 sutun+1; satir+2 sutun-1; satir+1 sutun+2; satir+1 sutun+1; satir+1 sutun; satir+1 sutun-1; satir+1 sutun-2; satir sutun+1]; taslak0 = find(taslak1(:,1)>=1 & taslak1(:,1)<=goruntuSatir & taslak1(:,2)>=1 & taslak1(:,2)<=goruntuSutun & taslak2(:,1)>=1 & taslak2(:,1)<=goruntuSatir & taslak2(:,2)>=1 & taslak2(:,2)<=goruntuSutun); % find fonksiyonu ile sifirdan farkli elemanlari tespit ediyoruz. taslak11 = taslak1(taslak0, :); taslak22 = taslak2(taslak0, :); taslak00 = zeros(size(taslak11,1)); % sifir matrisi olusturuyoruz. for i = 1:size(taslak11,1) taslak00(i) = abs(goruntu(taslak11(i,1), taslak11(i,2)) - goruntu(taslak22(i,1), taslak22(i,2))); % abs ile mutlak deger aliyoruz. end if size(taslak11,1) == 0 goruntuKopyasi(satir, sutun) = 0; goruntuKopyasi_normal = goruntuKopyasi_normal + goruntuKopyasi(satir, sutun); else sigma = 10; taslak00 = sin(pi .* taslak00./2./sigma); goruntuKopyasi(satir, sutun) = sum(sum(taslak00.^2)); goruntuKopyasi_normal = goruntuKopyasi_normal + goruntuKopyasi(satir, sutun); end end

Page 14: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

14 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

end %% normalizasyon islemi gerceklestiriliyor. goruntuKopyasi = goruntuKopyasi./goruntuKopyasi_normal; goruntuKopyasi = goruntuKopyasi.*100; %% feromon islemi icin feromon degeri belirleniyor. feromon = 0.0001 .* ones(size(goruntu)); % bir matrisi olusturuyoruz. %% olasilik formulu icin gerekli olan degerler belirtiliyor % alpha = 1; % alfa degeri belirleniyor. % beta = 1; % beta degeri belirleniyor. % rho = 0.1; % rho degeri belirleniyor. % phi = 0.05; % phi degeri belirleniyor. %% goruntu uzerindeki satir sutun degerleri ile toplam karinca sayisi % belirliyoruz. Her bir karinca icin konum belirtiyoruz. ToplamKarincaSayisi = round(sqrt(goruntuSatir*goruntuSutun)); %karakokunu aliyoruz ardindan degeri yuvarliyoruz. KarincaninKonumu = zeros(ToplamKarincaSayisi, 2); %% karincalarin satir ve sutun olarak konumlari belirleniyor. rand('state', sum(clock)); geciciToplamKarincaSayisi = rand(ToplamKarincaSayisi, 2); KarincaninKonumu(:,1) = round(1 + (goruntuSatir-1) * geciciToplamKarincaSayisi(:,1)); KarincaninKonumu(:,2) = round(1 + (goruntuSutun-1) * geciciToplamKarincaSayisi(:,2)); arananYol = '8'; %% karincalarin hafiza/bellek uzunluklari tanimlanmaktadir. goruntunun % satir sutun degerlerindeki boyutlara gore degerler atariz ve sonrasinda % bir sonraki karincaninda bu bilgiye ulasabilmesi icin karincanin % hafizasina degeri atariz. if goruntuSatir*goruntuSutun == 128*128 deger = 40; elseif goruntuSatir*goruntuSutun == 256*256 deger = 30; elseif goruntuSatir*goruntuSutun == 512*512 deger = 20; end hafizaUzunlugu = round(rand(1).*(1.15*deger-0.85*deger)+0.85*deger); %% karincanin bellegindeki satir ve sutunlara gore pozisyonlari kaydederiz. KarincaHafizasi = zeros(ToplamKarincaSayisi, hafizaUzunlugu); %% kaydettigimiz satir ve sutun bilgilerini goruntunun boyutlarina gore % ayarlayarak karincalarin toplamda ne kadar adim atacaklarini belirliyoruz. % 2 boyutlu matrislik verileri tek boyuta donusturuyoruz bununla birlikte % ne kadar tur atacaklarina dair iterasyon sayisini belirliyoruz. ToplamAdimSayisi = str2num(get(handles.edit2, 'String')); %% karinca hafizasindaki bellek uzunluguna gore iterasyondaki sutun ve

Page 15: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

15 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

% satir olarak pozisyonunu kaydediyor. % deltaferomon ile onceki karincanin hangi konumda olduguna dair satir % sutun verilerini pozisyon olarak bir vektorde tutuyor. for IterasyonSayisi = 1:ToplamIterasyonSayisi deltaFeromon = zeros(goruntuSatir, goruntuSutun); for AdimSayisi = 1:ToplamAdimSayisi secilenDeltaFeromon = zeros(goruntuSatir, goruntuSutun); for SecilenKarinca = 1:ToplamKarincaSayisi SecilenKarincaSatir = KarincaninKonumu(SecilenKarinca,1); SecilenKarincaSutun = KarincaninKonumu(SecilenKarinca,2); % karincanin gecerli konumuna ait etrafindaki konumlari % degiskenlere aktariyor. if arananYol == '4' satir = SecilenKarincaSatir; sutun = SecilenKarincaSutun; geciciYolAraliklari = [satir-1 sutun; satir sutun+1; satir+1 sutun; satir sutun-1]; elseif arananYol == '8' satir = SecilenKarincaSatir; sutun = SecilenKarincaSutun; geciciYolAraliklari = [satir-1 sutun-1; satir-1 sutun; satir-1 sutun+1; satir sutun-1; satir sutun+1; satir+1 sutun-1; satir+1 sutun; satir+1 sutun+1]; end % goruntuye ait gecerli pozisyon araliklarini bulup gecici % olarak bilgileri sakliyoruz. geciciToplamKarincaSayisi = find(geciciYolAraliklari(:,1)>=1 & geciciYolAraliklari(:,1)<=goruntuSatir & geciciYolAraliklari(:,2)>=1 & geciciYolAraliklari(:,2)<=goruntuSutun); yolAraliklari = geciciYolAraliklari(geciciToplamKarincaSayisi, :); % gecici verilere ait konumlarin olasiliklari hesaplaniyor. karincaninGecisOlasiligi_v = zeros(size(yolAraliklari,1),1); karincaninGecisOlasiligi_p = zeros(size(yolAraliklari,1),1); % yol araliklari karincanin hafizasinda olup olmadigina % dair sorgulamalari yapiyoruz. goruntuyu ve feromon % bilgilerini aktariyoruz. for i = 1:size(yolAraliklari,1) geciciToplamKarincaSayisi = (yolAraliklari(i,1)-1)*goruntuSutun + yolAraliklari(i,2); if length(find(KarincaHafizasi(SecilenKarinca,:)==geciciToplamKarincaSayisi))==0 % karincanin hafizasindaki konumlar degil ise karincaninGecisOlasiligi_v(i) = goruntuKopyasi(yolAraliklari(i,1), yolAraliklari(i,2)); karincaninGecisOlasiligi_p(i) = feromon(yolAraliklari(i,1), yolAraliklari(i,2)); else % karincanin hafizasindaki konumlar ise karincaninGecisOlasiligi_v(i) = 0; karincaninGecisOlasiligi_p(i) = 0; end

Page 16: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

16 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

end %% etraftaki konumlar karincanin hafizasindaki verilerle ortusuyorsa % tekrardan yeni kisa yol arayisina gitmek icin yeniden hesaplanmasi % gerekiyor. if (sum(sum(karincaninGecisOlasiligi_v))==0) | (sum(sum(karincaninGecisOlasiligi_p))==0) for i = 1:size(yolAraliklari,1) geciciToplamKarincaSayisi = (yolAraliklari(i,1)-1)*goruntuSutun + yolAraliklari(i,2); karincaninGecisOlasiligi_v(i) = goruntuKopyasi(yolAraliklari(i,1), yolAraliklari(i,2)); karincaninGecisOlasiligi_p(i) = feromon(yolAraliklari(i,1), yolAraliklari(i,2)); end end % karinca algoritmasinin esas olasilik formulunu % kullanarak karincanin gecislerini hesapliyoruz. karincaGecisOlasiligi = (karincaninGecisOlasiligi_v.^alpha) .* (karincaninGecisOlasiligi_p.^beta) ./ (sum(sum((karincaninGecisOlasiligi_v.^alpha) .* (karincaninGecisOlasiligi_p.^beta)))); % karincanin sonraki adiminda rastgeleligi belirlemek icin % rand ile konumunu belirleriz. rand('state', sum(100*clock)); geciciToplamKarincaSayisi = find(cumsum(karincaGecisOlasiligi)>=rand(1), 1); SiradakiKarincaSatir = yolAraliklari(geciciToplamKarincaSayisi,1); SiradakiKarincaSutun = yolAraliklari(geciciToplamKarincaSayisi,2); if length(SiradakiKarincaSatir) == 0 SiradakiKarincaSatir = SecilenKarincaSatir; SiradakiKarincaSutun = SecilenKarincaSutun; end KarincaninKonumu(SecilenKarinca,1) = SiradakiKarincaSatir; KarincaninKonumu(SecilenKarinca,2) = SiradakiKarincaSutun; secilenDeltaFeromon(KarincaninKonumu(SecilenKarinca,1), KarincaninKonumu(SecilenKarinca,2)) = 1; % karincanin hafizasina yeni konumlari atiyoruz. if AdimSayisi <= hafizaUzunlugu KarincaHafizasi(SecilenKarinca,AdimSayisi) = (KarincaninKonumu(SecilenKarinca,1)-1)*goruntuSutun + KarincaninKonumu(SecilenKarinca,2); elseif AdimSayisi > hafizaUzunlugu KarincaHafizasi(SecilenKarinca,:) = circshift(KarincaHafizasi(SecilenKarinca,:),[0 -1]); % dairesel sekilde bir dizi olusturuyoruz.

Page 17: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

17 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

KarincaHafizasi(SecilenKarinca,end) = (KarincaninKonumu(SecilenKarinca,1)-1)*goruntuSutun + KarincaninKonumu(SecilenKarinca,2); end %% feromon olasilik fonksiyonuna simdiye kadar uretmis oldugumuz tum % verileri yukleyerek artik her bir karincaya ait konumlari ilgili % fonksiyona gonderiyoruz. feromon = ((1-rho).*feromon + rho.*secilenDeltaFeromon.*goruntuKopyasi).*secilenDeltaFeromon + feromon.*(abs(1-secilenDeltaFeromon)); end %% en son feromon'a ait veriyi gunceleyerek feromon sivi miktarini % buharlasmalara karsi yeniden guncelliyoruz. deltaFeromon = (deltaFeromon + (secilenDeltaFeromon>0))>0; feromon = (1-phi).*feromon; end % karincaya ait adim sayisini sonlandiriyoruz. end % iterasyonlari tamamliyoruz. %% image'larin histogramlari hesaplanarak goruntu haline donusturulebilmesi % icin Threshold degerleri hesaplatiyoruz. hesapla = histogramAyarlama(feromon); set(handles.text6, 'String', 'Image islendi...'); imwrite(uint8(abs((feromon>=hesapla).*255-255)), gray(256), [dosyaAdi '_kkaKenarTespit_.bmp'], 'bmp'); %% olusan image kaydedildikten sonra kullaniciya gui ile gosteriliyor. goster = handles.axes2; axes(goster); imshow([dosyaAdi '_kkaKenarTespit_.bmp']); set(handles.text11, 'String', 'Toplam sure : '); set(handles.text7, 'String', toc); set(handles.text12, 'String', 'Saniyedir.'); toc function gonder = histogramAyarlama(goruntu) goruntu = goruntu(:); %% goruntunun histogram ile birlikte yogunlugu hesapliyoruz T=mean(I) [sayac, N]=hist(goruntu,256); i=1; kumulatif=cumsum(sayac); % kumulatif toplam yapiyoruz. T(i)=(sum(N.*sayac))/kumulatif(end); % T'nin alt ve ust degerleri hesaplaniyor. kumulatif2=cumsum(sayac(N<=T(i))); MBT=sum(N(N<=T(i)).*sayac(N<=T(i)))/kumulatif2(end); kumulatif3=cumsum(sayac(N>T(i))); MAT=sum(N(N>T(i)).*sayac(N>T(i)))/kumulatif3(end); i=i+1; T(i)=(MAT+MBT)/2; % T(i)~=T(i-1) Threshold=T(i); while abs(T(i)-T(i-1))>=1 kumulatif2=cumsum(sayac(N<=T(i)));

Page 18: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

18 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

MBT=sum(N(N<=T(i)).*sayac(N<=T(i)))/kumulatif2(end); kumulatif3=cumsum(sayac(N>T(i))); MAT=sum(N(N>T(i)).*sayac(N>T(i)))/kumulatif3(end); i=i+1; T(i)=(MAT+MBT)/2; Threshold=T(i); end gonder = Threshold; function slider1_Callback(hObject, eventdata, handles) function slider1_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider2_Callback(hObject, eventdata, handles) global alpha alpha = get(hObject,'Value'); alpha = num2str(alpha); set(handles.edit3, 'String', alpha); function slider2_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider3_Callback(hObject, eventdata, handles) global beta beta = get(hObject,'Value'); set(handles.edit4, 'String', beta); function slider3_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function slider4_Callback(hObject, eventdata, handles) global rho rho = get(hObject,'Value'); set(handles.edit5, 'String', rho); function slider4_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end

Page 19: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

19 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

function slider5_Callback(hObject, eventdata, handles) global phi phi = get(hObject,'Value'); set(handles.edit6, 'String', phi); function slider5_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit4_Callback(hObject, eventdata, handles) function edit4_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit5_Callback(hObject, eventdata, handles) function edit5_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) function edit6_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function figure1_CreateFcn(hObject, eventdata, handles)

Page 20: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

20 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

EDGE DETECTİON BY ANT COLONY ALGORİTHM UYGULAMASİNİN EKRAN GORUNTULERİ; MATLAB GUİDE TASARİMİ

Bu calismada, Matlab'in gui tool'u kullanilarak kullanici arayuzu ile algoritmanin onemli verilerini kullanicidan isteniyor. Formun uzerinde push button yardimiyla kullanicidan algoritmasi uygulanacak image isteniyor. Secilen image, Axes1 icerisinde gozukmesi icin ilgili kodlar arka planda yaziliyor. Gui tool'una ait slider'lar yardimiyla kullanicidan olasilik formullerinde kullanilacak olan alpha, beta, rho ve phi sayilari isteniyor. Edit text'ler yardimiyla algoritmanin iterasyon sayisini ve yine image'in boyutlarina uygun olacak sekilde algoritmada kullanilacak karinca sayisinin girisleri yapiliyor. Uygulamanin calistirilabilmesi icin, Push button yardimiyla secilen image uzerinde karinca algoritmasi uygulaniyor. Ilgili image'in algoritma uygulanmis hali hemen Axes1'in yaninda bulunan Axes2 icerisinde kullaniciya sonucu sunuluyor. Algoritmanin calisma suresi ise static text'lerle kullaniciya raporlamis oluyoruz.

Page 21: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

21 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

UYGULAMANİN CALİSTİRİLMİS HALİ

TESTLERDE KULLANİLAN DEGERLER İterasyon sayisi 3 Karinca sayisi (image satir piksel X image sutun piksel) 300 Alpha degeri (Feromon matris varsayilan katsayisi) 1 Beta degeri (Sezgisel matris varsayilan katsayisi) 1 Rho degeri (Feromon buharlasma katsayisi) 0.1 Phi degeri (Feromon yok olma katsayisi) 0.05 Feromon degeri 0.0001 Karinca adim sayisi (128X128 / 256X256 / 512X512) 40 / 30 / 20 Bu calismada, kullanilan goruntuler 128X128 boyutlarinda olup; karinca sayisi, iterasyon sayisi, feromon buharlasma kat sayisi rho degeri ile feromon yok olma kat sayisi phi degerlerinin degisimleri ile goruntu uzerinde farkli kenar tespit sonuclari tespit edebiliyoruz.

Page 22: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

22 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

TEST SONUCLARİ

I.S. : 3

I.S. : 10

I.S. : 5

K.S. : 300

K.S. : 300

K.S. : 500

Rho : 0.1

Rho : 0.1

Rho : 0.1

Phi : 0.05

Phi : 0.05

Phi : 0.05

I.S. : 3

I.S. : 10

I.S. : 5

K.S. : 300

K.S. : 300

K.S. : 500

Rho : 0.8

Rho : 0.8

Rho : 0.8

Phi : 0.01

Phi : 0.01

Phi : 0.01

I.S. : 3

I.S. : 10

I.S. : 5

K.S. : 300

K.S. : 300

K.S. : 500

Rho : 0.01

Rho : 0.01

Rho : 0.01

Phi : 0.001

Phi : 0.001

Phi : 0.001

* I.S. : Iterasyon Sayisi * K.S. : Karinca Sayisi * Rho : Feromon buharlasma katsayisi olan Rho deger araligi * Phi : Feromon yok olma katsayisi olan Phi deger araligi

Page 23: Karinca Koloni Algoritmasi ile Kenar Tespit Yontemi - Edge Detection By Ant Colony Algorithm

Sevdanur GENC - 135105008 Computer Vision

23 | K a r i n c a K o l o n i s i A l g o r i t m a s i i l e K e n a r T e s p i t

DİGER KENAR TESPİT ALGORİTMALARİNDAKİ GORUNTU SONUCLARİ İLE KİYASLAMA goruntu = imread('KameraliAdam.bmp'); robertFiltresi = edge(goruntu,'roberts'); prewittFiltresi = edge(goruntu,'prewitt'); sobelFiltresi = edge(goruntu,'sobel'); LoGFiltresi = edge(goruntu,'log'); cannygoruntu = edge(goruntu,'canny'); figure subplot(231), imshow(goruntu), title('Orjinal Goruntu') subplot(232), imshow(robertFiltresi) , title('Robert Cross Filtresi') subplot(233), imshow(prewittFiltresi), title('Prewitt Filtresi') subplot(234), imshow(sobelFiltresi), title('Sobel Filtresi') subplot(235), imshow(LoGFiltresi), title('LoG Filtresi') subplot(236), imshow(cannygoruntu), title('Canny Filtresi')