Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

DİJİTAL GÖRÜNTÜ İŞLEME Y. Doç. Dr. Esra Tunç Görmüş

Benzer bir sunumlar


... konulu sunumlar: "DİJİTAL GÖRÜNTÜ İŞLEME Y. Doç. Dr. Esra Tunç Görmüş"— Sunum transkripti:

1 DİJİTAL GÖRÜNTÜ İŞLEME Y. Doç. Dr. Esra Tunç Görmüş
Doç. Dr. Oğuz Güngör & Y. Doç. Dr. Esra Tunç Görmüş Karadeniz Teknik Üniversitesi Harita Mühendisliği Bölümü 61080 Trabzon 06/03/16 1 1

2 Kullanılan Kaynaklar “Digital Image Processing”, Rafael C. Gonzalez & Richard E. Woods, Addison-Wesley, 2002 Internetten “Goruntu Isleme” konusunda bulabileceginiz hersey 06/03/16 2 2

3 Bu Dersin Icerigi Matlab programında Dijital görüntü işlemenin temellerini öğrenmeye devam edeceğiz. Geçen ders; Görüntülerin okunması, gösterilmesi yazılması (imread, imwrite, imshow, vs.) Veri sınıfları: uint8, double, vs. Görüntü çeşitleri: İkili (Binary) ve yoğunluk (intensity) Veri sınıfları ve görüntü çeşitleri arasındaki dönüşümler (A=im2uint8(B); vs.) Dizi indexleri (Vektor (1D) ve matrislerin (2D) gösterilmesi ve kullanılması) Bu dersimizde; Matrislerin indexlenmesi Dizi boyutlarının seçilmesi Matlabda fonksiyon yazmak ve örnekleri 06/03/16 3 3

4 Matris İndeksleme Matrisler, köşeli parantezler içerisinde satır vektörler ve bunları noktalı virgüllerle birbirinden ayırarak oluşturulurlar. >> A=[ ; ; ]; % gösterimi 3x3 boyutunda matris oluşturur. Bu A matrisi içindeki 2.satır, 3. sütundaki elemanı bulmak istersek >> A(2,3); % 6 cevabını verecektir. >> C = A( : , 3) ; % ( : ) operatörü blok halinde elemanları seçer, burada tüm satırlar ama sadece 3. sütun anlamına gelmektedir. Bize sadece 3. sütun elemanlarını verecektir. Başka bir şekilde gösterimi ise >> A(1:3,3) ; >> T2 = A(1:2 , 1:3) ; % ilk iki satırı ve 3 sütunu seçer. >> A ( : , 2 ) = 1; % A matrisinin tüm satırlarını ve sadece ikinci sütununun tüm elemanlarını 1 yapar. Örnek soru: Üçüncü sütunu 0 olan, ama diğer sütunları A’ya eşit olan bir B matrisini nasıl yapabiliriz ?? 06/03/16

5 Matris İndeksleme Cevap >> B = A ; >> B ( : , 3 ) = 0 ;
>> A = (end , end ) ; % end ifadesi en son satır ve en son sütunda bulunan elemanı gösterir, burada üçüncü satır, üçüncü sütunda 9 bulunmaktadır. >> A ( 2 : end , end : -2 : 1 ) ; % maximum satır sayısı 3 olduğu için end = 3, 2’den 3 e kadar olan satırlar, maksimum sütun sayısı 3 olduğu için sütun sayısı 3’ten 1’e kadar ama 2’şer atlayarak ( bu durumda sadece 3. ve 1. sütunlar gösterilecektir.) indekslemek için vektörleri kullanırsak; >> E =A ( [ 1 3 ] , [ 2 3 ] ) ; % eleman (1,2), eleman ( 1,3); eleman (3,2) , eleman (3,3) ‘ larını göstermek anlamına gelmektedir. 06/03/16

6 Matris İndeksleme Daha kompleks bir şekilde adreslemeye örnek vermek gerekirse A ( D ) ; ifadesi kullanılabilir. Burada D mantık matrisidir. >> D = logical ( [ ; ; ] ) ; >> A ( D ) ; % A matrisinin üzerine D matrisini yerleştirince, 0’a denk gelen yerler kaybolur ve bize sadece 1’ e denk gelen elemanları gösterir. Bu durumda cevap; >> ans = 1 6 V = T2 ( : ) % T2 matrinin tüm elemanlarını tek sütun şeklinde sıralar. Matrislerin tüm elemanlarını kullanarak işlem yapmak istediğimizde bize yardımcı olur. Örnek ; >> s = sum ( A ( : ) ) ; % Bu durumda A matrisinin tüm elemanlarının toplamını verir. Ancak sadece >> sum (A) ; olsaydı ayrı ayrı sütun toplamlarını verecekti. 06/03/16

7 Matris İndeksleme Dizi indeksleme kullanarak yapılan bazı görüntü işlemlerine örnek vermek gerekirse; >> f = imread ( ‘ rose.tif ’ ) ; % f görüntüsü 1024 x 1024 boyutunda, uint8 sınıflı >> fp = f ( end : -1 : 1, : ) ; % görüntüyü sondan başlayıp yazdıracağı için baş aşağı döndürür >> fc = f ( 257 : 768 , 257 : 768 ) ; % görüntünün bir kısmını yazdırır, görüntünün diğer kısımlarını keser >> fs = f ( 1: 2 : end , 1 : 2 : end ) ; % görüntüyü örnekler, her iki pikselden sadece birini alarak görüntünün boyutunu azaltır. Görüntü hala orijinal haline benzemektedir. >> plot ( f ( 512 , : ) ) ; % bize 512. satırındaki elemanlarını grafik üzerinde çizdirir. 06/03/16

8 Matris İndeksleme 06/03/16

9 Görüntülerin Matris Şeklinde Gösterilmesi
Görüntünün ilk elemanı A(0,0) olmasına rağmen, matlab’da ilk piksel A(1,1)’den başlamaktadır 06/03/16

10 Görüntülerde basit matris işlemleri
A Görüntüsünün transpozesini alırsak B'yi elde ederiz; 06/03/16

11 Görüntülerde basit matris işlemleri
A Görüntüsünü y ekseni etrafında döndürüsek, yani düşey yönde ters çevirirsek B'yi elde ederiz; 06/03/16

12 Görüntülerde basit matris işlemleri
A Görüntüsünden küçük bir B parçası çıkartabilmek için; 06/03/16

13 Örnek 1 06/03/16

14 Örnek 2 06/03/16

15 Örnek 3 06/03/16

16 Dizi Boyutunu Seçmek komut ( A , boyut)
kalıbı kullanılır. Burada A ( M x N ) boyutunda bir dizi, boyut ise skalerdir (bir sayıdır). in >> k = size ( A , 1 ) ; % A nın birinci boyutunu verir, yani satır sayısını gösterir, >> k = size ( A , 2 ) ; % A nın ikinci boyutunu verir, yani sütun sayısını gösterir. Örnek: Önce ki slaytlarda >> plot ( f (512 , : ) ) ile 1024x1024 gül görüntüsünün tam orta satırındaki tüm elemanları çizdirmiştik. Aynı işlemi ‘size’ komutu kullanarak nasıl yapabiliriz ? 06/03/16

17 Dizi Boyutunu Seçmek Cevap: 1024x1024 gül görüntüsünün tam orta satırı (512), satır sayısının tam yarısı olacağından ; >> plot ( f (size ( f , 1 ) / 2 , : ) ) ile Renkli görüntüler veya multispektral görüntüler gibi 2 boyuttan büyük, çok boyutlu görüntülerin boyutlarını öğrenmek için ; >> ndim ( A ) % kullanılır. 512 06/03/16

18 Bazı Özel Standart Diziler
Program yazarken üzerinde testler yapmak için, bazen kolayca örnek matrisler üretmemiz gerekebilir. Bu gibi durumlarda, 7 farklı komut ile değişik matrisler üretebiliriz. Bu komutların içerisine tek bir sayı yazarsak sonuç hep kare matris olur. Bu matris aşağıdaki gibidir; zeros ( M, N ) ; M x N boyutunda tüm elemanları sıfır olan sınıfı double bir matris oluşturur, ones ( M, N ) ; M x N boyutunda tüm elemanları bir olan sınıfı double bir matris oluşturur. true( M, N ) ; M x N boyutunda tüm elemanları bir olan mantık matrisi oluşturur. false( M, N ) ; M x N boyutunda tüm elemanları sıfır olan mantık matrisi oluşturur. 06/03/16

19 Bazı Özel Standart Diziler
magic ( M ) ; M x M boyutunda sihirli bir matris oluşturur. Bu matrisin sihirli olmasının nedeni satırlarının, sütunlarının veya diagonal elemanlarının toplamının aynı olmasıdır. Sayıları tamsayı olduğundan çok kullanışlı matrislerdir. rand ( M, N ) ; M x N boyutunda tüm elemanları [ 0 1 ] arasında düzgün olarak dağıtılmış rastgele sayılardan bir matrisi oluşturur. randn ( M, N ) ; M x N boyutunda, sayıları normal dağılıma göre dağılmış (Gauss dağılımı gibi ) ortalaması sıfır, varyansı 1 olan rastgele sayılardan üretilmiş matrisi oluşturur. Örnek ; Aşağıdaki komutların nasıl sonuçlar vereceğini tartışınız. >> A = 5 * ones ( 3 , 3 ) ; >> magic ( 3 ) ; >> rand (2 , 4) ; 06/03/16

20 M-Fonksiyon Yazmaya Giriş
M Dosyaları : Fonksiyon dosyalarıdır. Editörde içerisine bir dizi matlab komutu ve işlem adımlarını yazdığımız yerdir. Verilen input argümanlarını işleyerek, sonuç olarak bize bir veya birden fazla output (çıktı ) verir. m dosyasının bileşenleri ; Fonksiyonun tanımlandığı satır H1 satırı Help text Fonksiyonun gövdesi Komutlar 06/03/16

21 M-Fonksiyon Yazmaya Giriş
Fonksiyonun tanımlandığı satır : aşağıdaki kalıp ile kullanılır function [ outputs ] = fonksiyonadı ( inputs ) Örneğin iki görüntünün toplamlarını ve çarpımlarını hesaplayan bir fonksiyon yazarsak, function [ t , c ] = toplacarp ( g1, g2) bu problemde input sayısı iki görüntü (g1 ve g2 ) ve output sayısı da biri iki görüntünün toplamı ( t ), diğeri iki görüntünün çarpımı ( c ) olmak üzere iki tanedir. Fonksiyonların isimleri harf ile başlamalıdır ve daha sonra rakam ile devam edebilir. Eğer tek bir ouput olacaksa köşeli parantez kullanmaya gerek yoktur; function k = fonksiyonadı ( p ) 06/03/16

22 M-Fonksiyon Yazmaya Giriş
Fonksiyon komut penceresinde çağrılırken; >> [ t , c ] = toplacarp ( g1, g2) ; % şeklinde yazılır. H1 satırı : Fonksiyonun tanımlandığı satırdan sonra gelen tek satırlık yorum yazısıdır. Fonksiyonun ne işe yaradığının kısaca anlatır. Yuzde işareti ile başlar, örnek: % Bu fonksiyon iki görüntünün toplamlarını ve çarpımlarını hesaplayan bir fonksiyondur. Ve kullanıcı komut satırına >> help toplacarp % yazıldığı zaman bu açıklama satırı (H1 satırı) ekrana çıkar. 06/03/16

23 M-Fonksiyon Yazmaya Giriş
Help text : H1 satırından sonra yorum varsa onları gösterir ve fonksiyon ile ilgili açıklamaları ekranda çıkartır. Fonksiyonun gövdesi : hesaplamaları yapan, çıktı değerlerine sonuçları atayan matlab kodunun hepsidir. Eğer fonksiyonu çağırıp edit etmek – değiştirmek - isterseniz komut satırına: >> edit toplacarp % yazarsanız fonksiyonunuz eğer çalıştığınız klasörde ise ekranda açılacaktır. Yoksa oluşturayım mı diye soracaktır kullanıcıya 06/03/16

24 Örnek: mycrop isimli bir fonksiyon aşağıda verilmiştir
Örnek: mycrop isimli bir fonksiyon aşağıda verilmiştir. A görüntüsünden, n1 ve n2 noktasından başlayarak, N1 ve N2 boyutunda bir B görüntüsünün kesilmesi işini yapmaktadır. 06/03/16

25 Gelecek Ders Matlab operatörleri Aritmetik operatörler
İlişkisel operatörler Mantık operatörleri Program akış kontrolü if , else , end; switch; break; continue; vs. Hücre diziler ve yapılar ( cell arays and structure) 06/03/16


"DİJİTAL GÖRÜNTÜ İŞLEME Y. Doç. Dr. Esra Tunç Görmüş" indir ppt

Benzer bir sunumlar


Google Reklamları