You are on page 1of 13

Matlab ve Yapay Sinir Ağları - 2011

MATLAB İLE YAPAY SİNİR AĞLARI UYGULAMA 28.12.2010 Ibrahim Armağan 2009801168 YÖNETİM BİLİŞİM SİSTEMLERİ YÜKSEK LİSANS BÖLÜMÜ DOKUZ EYLÜL ÜNİVERSİTESİ İZMİR-2010   İÇİNDEKİLER İçindekiler 1.Giriş 3 2.Yapay Sinir Ağları Nedir? 3 3.Yapay Sinir ağları Genel Özellikleri 4 4.Yapay Sinir Ağları Avantajları 5 4. Yapay Sinir Ağları Dezavantajları 6 5. Yapay Sinir Hücresinin Yapısı 7 6-MATLAB UYGULAMALARI 10 A-Textread Komutu 10 B- Zaman Sayacı 13 C-Fonksiyon Hesap Makinesi 13 D- Karakter Tanıma Uygulaması 15 a- OCV.m 15 b- Read_letter.m 16 d- Lines.m 18 7-KAYNAKÇA 20

MATLAB İLE YAPAY SİNİR AĞLARI UYGULAMASI

Bu durum YSA için de geçerlidir. • Farklı sistemlere uygulanması zor olabilir. başka bir deyişle. Geleneksel işlemcilerde. Diğer bir ifadeyle. doğrusal olmayan bir şekilde dönüşümünü sağlar ve bir çıktı değeri oluşturur. Bir insanın. tekrar tekrar ayarlamasıyla olur. veri alan nöronlara ve çıktı üreten nöronlara sahiptirler. • Bazı ağlar hariç kararlılık analizleri yapılamaz. insan beyninin bilgi işleme teknolojisinden esinlenerek geliştirilmiş bir bilgi işlem teknolojisidir. Bu sistemlerde geri yayılım metoduyla daha sağlıklı öğrenme sağlanmaktadır. yani eğitme algoritmasının bu verileri kullanarak bağlantı ağırlıklarını (weights of the synapses) bir yakınsama sağlanana kadar. Bu sayede öğrenme gerçekleşir. Sinirsel (neural) hesaplamanın merkezinde dağıtılmış. Çoğu YSA'da. dönüştürür ve sayısal bir sonuç ortaya çıkartır. toplam işlem yükünü paylaşan işlem birimlerinin birbirleri arasındaki yoğun bağlantı yapısından gelmektedir.Giriş 2. bunları birleştirir.1. nöronlar arasındaki sinaptik (synaptic) bağlantıların ayarlanması ile olur. En basit şekilde.Yapay Sinir Ağları Nedir? Yapay sinir ağları (YSA). bir girdiyi bir ağırlık kümesi ile ağırlıklandırır. eğitme yoluyla örnekler kullanarak olur. yani girdi veriyi çıktı veriye nasıl ilişkilendirdikleri. Hemen hemen tüm ağlar. Yapay sinir ağlarının üstünlüklerinin yanı sıra bazı sakıncaları da vardır. geleneksel işlemcilerden farklı şekilde işlem yapmaktadırlar. Bu ağlar öğrenme. ağın mimarisi tarafından şekillendirilir. diğer nöronlardan sinyalleri alır. Yani. Bu süreç içinde beyin sürekli bir gelişme göstermektedir. YSA ile basit biyolojik sinir sisteminin çalışma şekli simüle edilir (benzetilir). YSA'ların davranışları. bu yapı da sinir ağlarını oluşturmaktadır. YSA'nın ana öğesi olan matematiksel fonksiyon. işlem birimlerinin çalışma şekli yanıltıcı şekilde basittir. gerçekleşme girdi/çıktı verilerinin işlenmesiyle. tek bir merkezi işlem birimi her hareketi sırasıyla gerçekleştirir.Yapay Sinir ağları Genel Özellikleri . bir işlem birimi. Genelde. benzer karakteristiğe sahip nöronlar tabakalar halinde yapılandırılırlar ve transfer fonksiyonları eş zamanlı olarak çalıştırılırlar. Biyolojik sistemlerde öğrenme. işlem birimleri kabaca gerçek nöronlara karşılık gelirler ve bir ağ içinde birbirlerine bağlanırlar. aslında sık sık transfer fonksiyonu olarak anılan bir denklemdir. insanlar doğumlarından itibaren bir yaşayarak öğrenme süreci içerisine girerler. Simüle edilen sinir hücreleri nöronlar içerirler ve bu nöronlar çeşitli şekillerde birbirlerine bağlanarak ağı oluştururlar. Bu işlem birimi. Daha açık bir şekilde ifade etmek gerekirse. çok sayıda basit işlem birimlerinden oluşmaktadır. adaptif ve doğrusal olmayan işlem kavramları vardır. Öğrenme. ilk olarak nöronların transfer fonksiyonlarından. 3. Yaşayıp tecrübe ettikçe sinaptik bağlantılar ayarlanır ve hatta yeni bağlantılar oluşur. fonksiyonun temel yapısını ağırlıkların büyüklüğü ve işlem elemanlarının işlem şekli belirler. YSA'lar. ağırlıklandırılmış şekilde birbirlerine bağlanmış birçok işlem biriminden (nöronlar) oluşan matematiksel sistemlerdir. düşünme ve gözlemleme yeteneklerini gerektiren problemlere yönelik çözümler üretebilmesinin temel sebebi ise insan beyninin ve dolayısıyla insanın sahip olduğu yaşayarak veya deneyerek öğrenme yeteneğidir. nasıl birbirlerine bağlandıklarından ve bu bağlantıların ağırlıklarından etkilenir. Sinirsel hesaplamanın gücü. Bu sakıncalar şu şekilde listelenebilir: • Sistem içerisinde ne olduğu bilinemez. Bir işlem birimi. hafızaya alma ve veriler arasındaki ilişkiyi ortaya çıkarma kapasitesine sahiptirler. normalde bir insanın düşünme ve gözlemlemeye yönelik doğal yeteneklerini gerektiren problemlere çözüm üretmektedir. YSA'lar ise herbiri büyük bir problemin bir parçası ile ilgilenen. YSA'lar. YSA'lar. İlk bakışta.

İlk olarak yanlış sonuçlar verebilse de daha sonra yeni yapısını öğrenerek eski performansında çalışmaya devam edebilir. • Öğrenebilirlik Klasik algoritmaların çoğu verilen formüllerin hesaplanması ile aynı girdiler için daima aynı çıktıları üretirler.Yapay sinir ağları genel olarak canlı beyninin yapısını gerçekleştirmeyi hedefler. Doğrusal olmama özelliğinden dolayı yapay sinir ağları karmaşık problemlerin çözümünde de sıkça kullanılmaktadır Bilgisayar üzerinde çalışan bir elemanın zarar görüp devre dışı kalması o elmanın içinde bulunduğu sistemin çalışmamasına neden olur. Lineer olan bu algoritmaların aksine yapay sinir ağları sayesinde programlar öğrenme yeteneği de kazanmışlardır. Ancak paralel çalışabilme özelliği ve yapay sinir hücrelerinin bağımsız çalışabilme yapısından dolayı yapay sinir ağında herhangi bir eleman zarar gördüğünde ağın geri kalanı sorunsuz bir şekilde çalışmaya devam eder. Yapay sinir ağlarının temel elemanlarından olan yapay sinir hücrelerinin (nöron) doğrusal sonuçlar vermeyişinden dolayı bu özellik ağa da yansımıştır. Özellikle işletmecilik ve finans alanlarında olmak üzere tahmin gerektiren birçok alanda kullanılmaktadır. Yapay sinir ağlarının temel elemanlarından olan yapay sinir hücrelerinin (nöron) doğrusal sonuçlar vermeyişinden dolayı bu özellik ağa da yansımıştır. • Hata Toleransı Yapay sinir ağları özellikle doğrusal olmayan sistemlerde tahmin yapma açısından istatistik hesaplamalarına göre daha kolay ve doğru sonuç vermesinden dolayı sık kullanılan bir yöntem haline gelmiştir. Doğrusal olmama özelliğinden dolayı yapay sinir ağları karmaşık problemlerin çözümünde de sıkça kullanılmaktadır • Paralellik Klasik problem çözme algoritmalarının aksine yapay sinir ağları paralel çalışmaya uygun bir yapıya sahiptir. Yapay sinir ağları öğrenme işlemi sırasında verilen bilgiler ile kendini düzenleyerek daha sonraki girdiler için doğru kararlar verebilme yeteneğine sahiptir. Canlılarda bulunan sinir sisteminin modellenmesi sayesinde yapay sinir ağları biyolojik sinir sisteminin üstünlüklerine sahip olmuştur. Aşağıdaki işlemleri gerçekleştirebilir: • Öğrenme • İlişkilendirme • Sınıflandırma • Genelleme • Tahmin • Özellik belirleme • Optimizasyon Bu işlemleri yapan sinir ağlarının ortak noktası ise bir müdahale yapılmaksızın. Klasik algoritmalarda tam olarak tanımlı bir çözüm yolu olmayan problemler çözülemezken . Bu özelliği sayesinde çok daha hızlı problem çözebilme yeteneğine sahip olmuştur. 4. Özellikle işletmecilik ve finans alanlarında olmak üzere tahmin gerektiren birçok alanda kullanılmaktadır. elinde bulunan bilgilere göre sonuç üretebilmesidir. • Doğrusal Olmama Yapay sinir ağları özellikle doğrusal olmayan sistemlerde tahmin yapma açısından istatistik hesaplamalarına göre daha kolay ve doğru sonuç vermesinden dolayı sık kullanılan bir yöntem haline gelmiştir.Yapay Sinir Ağları Avantajları Yapay sinir ağ modelleri biyolojik sinir ağlarının çalışmasından esinlenerek ortaya çıkarılmıştır.

Bu girdilerden gelen veriler biyolojik sinir hücrelerinde olduğu gibi toplanmak üzere nöron çekirdeğine gönderilir. • Ağırlıklar . • Başlangıç Koşullarına Bağlı Olması Yapay sinir ağları başlangıç koşullarından bağımsız olarak çok kolay dahi olsa herhangi bir problemi çözemezler. Yapay Sinir Ağları Dezavantajları • Eğitim Süreci Yapay sinir ağları oluşturulduklarında hiçbir bilgi içermediğinden dolayı direk olarak kullanılamazlar. Yapay sinir ağlarının bu tip problemleri çözebilmesi için gereken tek şey örnek girdiler için sonuçların verilmesidir. Bir problemi çözmek için eğitilen yapay sinir ağı herhangi bir başka problemde de kolaylıkla kullanılabilir. Karar verme anında sadece daha önce öğrendiği koşullara göre sonuç üretebilir.yapay sinir ağları sayesinde problemler çözüm yöntemi hakkında herhangi bir bilgi verilmeksizin çözülebilir. • Analiz ve Tasarım Kolaylığı Yapay sinir ağlarının temel yapı taşı olan yapay sinir yapısı bütün yapay sinir ağlarında aynıdır. Aynı özelliğinden dolayı donanım üzerinde de kolaylıkla gerçeklenebilir. Örneğin bir satranç taşının görüntüsünün tanıtılmasından sonra bu taşın görüntüsünü içeren ancak gürültülü bir görüntü verildiğinde bile yapay sinir ağı bu taşı tanıyabilir. 5. Bir yapay sinir hücresi beş bölümden oluşmaktadır. Yapay Sinir Hücresinin Yapısı Yapay sinir hücreleri de biyolojik sinir hücrelerine benzer yapıdadır. Bundan dolayı yapay sinir hücresinin tasarımından sonra bu temel eleman ile yapay sinir ağları kolaylıkla oluşturulabilir. 4. Yapay nöronlar da aralarında bağ kurarak yapay sinir ağlarını oluştururlar. • Hız Yapay sinir ağları paralel yapısı nedeniyle hızlı bir şekilde çalışıp problem çözme yeteneğine sahiptir. Eğitim sırasında verilen örnekler ağın sonraki problemleri çözmesinde de etkilidir. • Girdiler • Ağırlıklar • Birleştirme fonksiyonu • Aktivasyon fonksiyonu • Çıktılar • Girdiler Girdiler nöronlara gelen verilerdir. • Genelleme Yapay sinir ağları üzerinde çalıştığı probleme göre eğitildikten sonra eğitim sırasında karşılaşmadığı durumlar için de yanıt verebilir. Herhangi bir problem çözümünde kullanılacak olan yapay sinir ağının problemde kullanılmadan önce eğitilmesi şarttır. Yapay sinir ağlarının temel yapısının da aynı olmasından dolayı bu ağlar her türlü problemin çözümünde kullanılabilinir. bu sinyalleri toplayıp işledikleri ve çıktıları ilettikleri bölümleri bulunmaktadır. • Uyarlanabilirlik Yapay sinir ağı üzerinde çalıştığı probleme gör kendini düzenleyerek ağırlıklarını belirler. Bu eğitim süresi problemin çözümünden çok daha uzun zaman alabilir. Aynı biyolojik nöronlarda olduğu gibi yapay nöronların da giriş sinyallerini aldıkları. Bunun için gereken tek şey yeni problemin girdi ve çıktılarıyla ağın tekrar eğitilmesidir. Girdiler yapay sinir hücresine bir diğer hücreden gelebileceği gibi direk olarak dış dünyadan da gelebilir.

Matematiksel ifadesi: F(X) = (1.Yapay sinir hücresine gelen bilgiler girdiler üzerinden çekirdeğe ulaşmadan önce geldikleri bağlantıların ağırlığıyla çarpılarak çekirdeğe iletilir. Aktivasyon fonksiyonu genellikle doğrusal olmayan bir fonksiyon seçilir. Bu formülde A sabit bir katsayıdır.Doğrusal Aktivasyon Fonksiyonu Doğrusal problemler çözmek amacıyla aktivasyon fonksiyonu doğrusal bir fonksiyon da seçilebilir. Sigmoid fonksiyonunun matematiksel ifadesi F(x)= 1/[(1+e)^(-x)] . Yapay sinir hücresi hakkında bu kadar bilgiden sonra bir sonraki yazının konusu yapay sinir ağının yapısı olacak. Ağırlığı sıfır olan girdilerin çıkıl üzerinde herhangi bir etkisi olmamaktadır. .Adım Aktivasyon Fonksiyonu Girdilerin sıfırdan büyük olup olmamasına göre -1 veya 1 çıktısı veren fonksiyondur. . • Aktivasyon Fonksiyonu Birleştirme (toplama ) fonksiyonundan çıkan NET toplam hücrenin çıktısını oluşturmak üzere aktivasyon fonksiyonuna iletilir. Bu ağırlıkların değerleri pozitif. Aktivasyon fonksiyonu seçilirken dikkat edilmesi gereken bir diğer nokta ise fonksiyonun türevinin kolay hesaplanabilir olmasıdır. Yapay sinir ağlarının bir özelliği olan “doğrusal olmama” aktivasyon fonksiyonlarının doğrusal olmama özelliğinden gelmektedir. Sigmoid fonksiyonunda çıkış değerleri 0 ile 1 arasında değişirken hiperbolik tanjant fonksiyonunun çıkış değerleri -1 ile 1 arasında değişmektedir. A değerinin değişimi şekilde gösterilen doğrunun çıkış ekseniyle yaptığı açıyı değiştirmektedir.Sigmoid Aktivasyon Fonksiyonu Sigmoid aktivasyon fonksiyonu sürekli ve türevi alınabilir bir fonksiyondur. Sadece iki çeşit çıktı vermektedir. Doğrusal olmayışı dolayısıyla yapay sinir ağı uygulamalarında en sık kullanılan fonksiyondur. • Birleştirme Fonksiyonu Birleştirme fonksiyonu bir yapay sinir hücresine ağırlıklarla çarpılarak gelen girdileri toplayarak o hücrenin net girdisini hesaplayan bir fonksiyondur. .Tanjant Hiperbolik Aktivasyon Fonksiyonu Tanjant hiperbolik fonksiyonu. Bu sayede girdilerin üretilecek çıktı üzerindeki etkisi ayarlanabilinmektedir. negatif veya sıfır olabilir. Geri beslemeli ağlarda aktivasyon fonksiyonunun türevi de kullanıldığı için hesaplamanın yavaşlamaması için türevi kolay hesaplanır bir fonksiyon seçilir. Bu değer ister yapay sinir ağının çıktısı olarak dış dünyaya verilir ister tekrardan ağın içinde kullanılabilir. Bu fonksiyon girdi değerlerinin her biri için sıfır ile bir arasında bir değer üretir. Doğrusal aktivasyon fonksiyonları matematiksel olarak F(x) = A * x olarak genellenebilir.e^(-2x))/(1+ e^2x ) • Çıktılar Aktivasyon fonksiyonundan çıkan değer nöronun çıktı değeri olmaktadır. sigmoid fonksiyonuna benzer bir fonksiyondur. Nöronun bir çıktısı olmasına rağmen bu çıktı istenilen sayıda nörona bağlı olabilir. .

6-MATLAB UYGULAMALARI A-Textread Komutu textread komutu. Bir şirkete iş başvurusu yapan kişilere ilişkin çeşitli bilgiler basvuru. Egitim_durumu Yukarıda sayılan bilgileri içeren dosya öncelikle bilgisayar ortamında açılmalıdır.]= textread(‘dosya adi’. Yukarıda belirtilen adımlar gerçekleştirildiğinde açılan Adsız-Notdefteri şekil 3. satirno.. basvuru.yasi. ('basvuru.dat adı ile work klasörüne yerleştirilen veri dosyası textread komutu kullanılarak okutulabilir.. bu komut kullanılarak sayı veya karakter dizilerinden oluşan dosyalar MATLAB ortamında okutulabilir. okunacak dosyadaki verinin karakter türü olduğu belirtilmiş olur.6'da görülen veri grubu. Eğer açılacak dosya (ör: okuma. açılacak dosyanın adını belirtir.soyadi. Bu işlem de gerçekleştirildikten sonra şekil 3. 6 sütun-2 satırdan oluşan bir matris gibi düşünülebilir. Kısaca.. Bunun için aşağıda belirtilen adımların gerçekleştirilmesi gerekir: . sütun yapısı formatlı ASCII kodlu verileri dosyadan okumak için kullanılır.dat'.cinsiyeti. dosya C:/MATLAB7. work klasöründe değilde (örneğin) D sabit diskinde deneme adlı alt klasör içinde ise yukarıdaki komut satırında ‘dosya adi’boşluğuna. Bu dosyada yer alan veriler.y. Sekil 1 Daha sonra başvuru bilgileri şekil 3. . Aşağıda gösterilen format kullanılarak uygulanır: [x.dat).. Artık. ’format’. yukarıda da bahsedildiği gibi 2 satır-6 sütundan oluşan bir matris olarak düşünülmelidir.satirno) Yukarıda görülen komut satırında ‘dosya adi’. Yaşı. Bölüm 2’de fprintf komutunda tanıtılan format türleri kullanılır.satirno) yazılmalıdır..z.z.6’da görülen Dosya menüsü içinde yer alan Save As seçeneği kullanılarak açılan pencerede dosya ismi olarak basvuru.'%s %s %f %s %s %s') Yukarıda verilen komut satırının uygulanması sonunda elde edilen ekran görüntüsü aşağıda gösterilmiştir: .]= textread(‘D:\deneme\okuma. Veri dosyalarında her karakter grubu bir sütun olarak algılanır.w.01/work klasörü içine yerleştirilmektedir.Medeni_durumu. Medeni_hali. sütun-sütun okunacak datanın yapısını gösterir.’format’. [x.dat adlı dosya içine yerleştirilecektir.Yukarıda belirtilen işlem yapıldığında açılan pencerede yer alan boşluğa notepad yaz ve Tamam tuşuna ‘tık’la. Bu açıdan bakıldığında şekil 3.w. Aşağıda MATLAB ortamında basvuru. dosyadan okutulacak satır sayısını gösteren bir ifadedir.y. Aşağıda textread komutuna ilişkin bir uygulama gösterilmektedir. Cinsiyeti. Soyadı.dat’.dat adlı veri dosyasının textread komutu ile okutulmasını sağlayan komut satırı verilmiştir.’format’.. Başvuran şahsa ilişkin bilgiler bu dosyaya aşağıdaki sıra gözetilerek yerleştirilecektir: Adı.5’de gösterilmiştir.6’da gösterildiği gibi satır-satır Adsız adlı Not defterine girilmelidir.dat adı yazılıp.Ogrenim_durumu]=textread. Örnek olarak %s ifadesi format yerine yazıldığında. >> [adi.MS Windows Başlat çubuğuna ‘tık’lanıldığında açılan pencere içinden Çalıştır seçeneğini seç.

('basvuru. Eğer bazı bilgilerin ekranda görülmesi istenmiyor ise format bildiren ifadenin içine '*' işareti yerleştirilmelidir: >>[adi. %f ise sayısal girişler için kullanılmaktadır. karakter girişler.adi = 'Ahmet' 'Yesim' 'Mehmet' soyadi = 'Kuru' 'Yagiz' 'Tas' yasi = 26 27 24 cinsiyeti = 'E' 'K' 'E' Medeni_durumu = 'Evli' 'Bekar' 'Bekar' Ogrenim_durumu = 'Universite' 'Lise' 'Lise' Yukarıda verilen program satırında %s.Ogrenim_durumu]=textread.soyadi...'%s %s %*f %*s %*s %s') Yukarıda verilen komut satırının uygulanması sonunda elde edilen ekran görüntüsü aşağıda gösterilmiştir: adi = 'Ahmet' 'Yesim' 'Mehmet' soyadi = 'Kuru' 'Yagiz' 'Tas' Ogrenim_durumu = 'Universite' 'Lise' 'Lise' .dat'.

x. g : g fonksiyonu (klavye yardımı ile) bu ekrana yazılır. toc komutu ise sayacı durdurur. >> funtool ( ‘enter’) işlemi yapıldığında kullanıcının karşısına şekil 17. 'Fonksiyon hesap makinası' nın ekran ve butonların görevleri aşağıda gösterilmiştir: f : f fonksiyonu (klavye yardımı ile) bu ekrana yazılır. Üçüncü satırda yer alan tuşlar kullanılarak f ve g fonksiyonu arasında dönüşüm işlemleri yapılır. İkinci satırda yer alan tuşlar kullanılarak. int f f ekranına yazılan fonksiyonunun integralini alır simple f : f ekranına yazılan fonksiyonu (mümkünse) basitleştirir. Bu pencerede f. MATLAB programının çalışmaya başladığı zaman ile o ana kadar geçen süre arasındaki farkı belirler. 4 satır halinde yerleştirilen butonların ilk satırında kontrol butonları yer alır.Zaman Sayacı MATLAB ortamında bir işlemin başlangıç ve bitiş süreleri arasındaki zaman dilimi tic ve toc komutları ile tesbit edilebilir. g. a adlarında 4 adet ekran ve 28 adet buton bulunur. den f : f in payda fonksiyonunu gösterir. num f : f in pay fonksiyonunu gösterir. 1/f : f fonksiyonunun pay ve paydasının yerini değiştirir finv : f fonksiyonunun tersini bulur f+a : f fonksiyonuna a sayısını ekler. f-a : f fonksiyonundan a sayısını çıkarır.72 saniye olduğu görülmektedir.Bu butonlar yardımı ile f fonksiyonuna ilişkin çeşitli dönüşümler yapılır.MATLAB editör ortamında yazılan programın başlangıç ve bitiş süreleri arasındaki fark 0. end toc elapsed_time = 0. tic for t=1:5000 y(t)=sin(2*pi*t/10).17'de görülen 'fonksiyon hesap makinası' çıkar. x : f ve g değişimlerinin değişim aralığı a : f fonksiyonunu değiştirmek için kullanılacak sabit değer df/dx : f ekranına yazılan fonksiyonunun türevinı alır. C-Fonksiyon Hesap Makinesi Command Window ortamında. . a sabiti ile f fonksiyonu arasında çeşitli işlemler gerçekleştirilir.7200 Eğer cputime komutu ekrana yazılırsa elde edilen sayı (saniye olarak). tic komutu zaman sayacını çalıştırır.B.

2 D. e. a.imagen = bwareaopen(imagen. % text DOSYASINA YAZACAĞIMIZ KARAKTERLERİ WORD STRİNGİNDE DEPOLAYACAĞIZ.2). RC MATRİXİ ONUN YARİNİ BELİRLİYOR(LOCATİON).30).jpg'). % LİNES FONKSİYONU u.Karakter Tanıma Uygulaması Bu program için 3 temel fonksiyon oluşturuyoruz.imagen =~im2bw(imagen. p.[fl re]=lines(re).imshow(imagen). % BURADA RESMİN İÇİNDEKİ COMPONENTLERİ TANIMLIYORUZ. close all. m. % MESELA n=2 İÇİN BULDUĞU COMPONENT(KARAKTER) RC MATRİXİNİ OLUŞTURUYOR.word=[ ]. v.threshold = graythresh(imagen). k.OCV. % N1 COMPONENTİ(KARAKTER) İÇİN SOL ÜSTEN SAĞ ALTA KADAR .f*a : f fonksiyonu ile a sayısını çarpar. f.[r.imgn=fl. c. clear all % COMMAND WİNDOWU TEMİZLEMEK İÇİN.num_letras=size(templates. w.for n=1:Ne x. a. % KOLAY YAZMAK İÇİN KISALTIYORUZ. % İNPUT RESMİNİ GÖSTERME.n1=imgn(min(r):max(r).m c.OCV.m İsimlerini veriyoruz.global templates % TEMPLATESLERİ PROGRAM İÇERİSİNDE GLOBALLEŞTİRMEK. % 36 TANE KARAKTERİMİZ VAR(HARFLER VE RAKAMLAR OLMAK ÜZERE)Ç rs. 'wt').imagen=imread('TEST_1. % İNPUT RESMİ.title('YÖNETİM BİLİŞİM SİSTEMLERİ 2010') % İNPUT RESMİNE BAŞLIK KOYMA. "NE" KAÇ TANE KARAKTER OLDUĞUNU GÖSTERİYOR.if size(imagen.imagen=rgb2gray(imagen).Read_letter. Sekil.c] = find(L==n).while 1 t.Lines. j.fid = fopen('text.threshold). l. h. y.txt'. d. q.[L Ne] = bwlabel(imgn).m (ana fonksiyon) b.clc.end i.min(c):max(c)).m b.load templates % TEMPLATE YÜKLEME.3)==3 % g.re=imagen. n. Bu fonksiyonlara. o.

elseif vd==4 letter='D'. % HER BİR KARAKTERLERLE OLAN BENZERLİĞİNİ BULUYOR. comp=[comp sem]. end vd=find(comp==max(comp)). % TEXT DOSYASINI KAPATIYORUZ. z.SINIRLIYORUZ ONU. % BULUNAN BENZERLİKLERİ COMP MATRİXİNE TEK SATIR OLUŞTURACAK ŞEKİLDE YERLEŞTİRİYORUZ.end ii. . YANİ EN ÇOK BENZEYENİNİ ALIYORUZ.if isempty(re) % EĞER RE BOŞSA LOOPTAN ÇIKIYORUZ.img_r=imresize(n1.imagn).txt') ll.fclose(fid). % WORD MATRİXİ İÇERİSİNE BULUNAN KARAKTER YAZILIYOR.word).clear all b. O COMPONENTİ OLUŞTURAN YERLERİ BELİRTİYOR. if vd==1 letter='A'. sem=corr2(templates{1.fprintf(fid. % İKİNCİ SATIR İÇİN . aa. % COMP MATRİXİNDEKİ EN YÜKSEK ORANDA OLANINI.winopen('text. İLK SATIRI TEXT DOSYASININ İLK SATIRINA YAZIYORUZ.'%s\n'. elseif vd==7 letter='G'. % READ_LETTER FONKSİYONU ÇAĞIRILIYOR. % TEMPLATELER KARAKTERLERİNİ YENİDEN BOYUTLANDIRIYORUZ. cc. elseif vd==6 letter='F'. % İLK SATIRDAKİ TÜM KARAKTERLER TANIMLANIP WORD MATRİXİNE YAZILDIKTAN SONRA.word=[ ].end jj.num_letras).letter=read_letter(img_r.num_letras) global templates comp=[ ]. HER SEFERİNDE BULUNAN KARAKTER SİLİNMEMESİ İÇİN BU FORMATTA TANIMLIYORUZ. % COMPARE ETMEK İÇİN BOŞ BİR MATRİX TANIMLIYORUZ.end dd. ff. MATRİSİ BOŞALTIYORUZ.word=[word letter]. bb.break hh. elseif vd==2 letter='B'. kk.n}. for n=1:num_letras % 1'DEN 36'YA KADAR.[42 24]).Read_letter. elseif vd==3 letter='C'. elseif vd==5 letter='E'. gg.m function letter=read_letter(imagn. ee.

elseif vd==9 letter='I'. elseif vd==19 letter='S'. elseif vd==22 letter='V'. elseif vd==26 letter='Z'. elseif vd==10 letter='J'. elseif vd==14 letter='N'. elseif vd==29 . elseif vd==17 letter='Q'. elseif vd==16 letter='P'. elseif vd==15 letter='O'.elseif vd==8 letter='H'. elseif vd==24 letter='X'. elseif vd==23 letter='W'. elseif vd==18 letter='R'. elseif vd==12 letter='L'. elseif vd==20 letter='T'. elseif vd==13 letter='M'. elseif vd==28 letter='2'. elseif vd==11 letter='K'. elseif vd==21 letter='U'. %*-*-*-*-* elseif vd==27 letter='1'. elseif vd==25 letter='Y'.

jpg dosyasının içerisine yazdığımız yazının karakterleri otomatik olarak analiz edilip karşımıza çıkıyor. :). % TEK SATIRDAN OLUŞUYOR.letter='3'. • num_files=size(im_text. • re=[ ]. Ayrıca oluşturduğumuz program için 1’den 36’ya kadar numaralar oluşturup her karaktere bir numarayı eşliyoruz. elseif vd==33 letter='7'. . % İLK SATIR • rm=im_text(s:end. elseif vd==34 letter='8'.:))==0 • nm=im_text(1:s-1. • for s=1:num_files • if sum(im_text(s. % GERİYE KALAN SATIR YOK. end d. elseif vd==35 letter='9'. • end • end • % CLİP FONKSİYONUNU TANITMAK. % GERİYE KALAN SATIRLAR • fl = clip(nm). elseif vd==32 letter='6'.1). • function img_out=clip(img_in) • [f c]=find(img_in). elseif vd==30 letter='4'.Lines. • break • else • fl=im_text. • img_out=img_in(min(f):max(f). Daha sonta yine oluşturduğumuz test1.m • function [fl re]=lines(im_text) • im_text=clip(im_text). • re=clip(rm). else letter='0'.min(c):max(c)). :). elseif vd==31 letter='5'.

M.2010Ahmet Kakıcı “ www. Mathworks.7-KAYNAKÇA H. “Neural Network Toolbox. “User Guide Version 5“.com Rıfat Kurban “www.Ahmetkakici. M.tr” .Electroblog. 2006.com. Beale.com” Yüksek Bilgisayar Mühendisi B. Demuth. Uğur Arifoğlu “Matlab 7. Hagan. for use with MATLAB”. figes.Tayfun Yeşilyurt “www.04 Kitabı”.