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

Slides:



Advertisements
Benzer bir sunumlar
MATLAB MATrix LABoratory Hazırlayan: S. Murat BAĞDATLI.
Advertisements

Makine Müh. & Jeoloji Müh.
KONU :GÖRÜNTÜNÜN GEOMETRİK MODELLERİNİN KURULMASI
Bilgisayar Programlama Güz 2011
EKRAN ÇIKTISI.
Bilgisayar Programlama Güz 2011
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
Ayrık Yapılar Matlab Notları
Bilgisayar Programlama Güz 2011
MATLAB’ ta Diziler.
Bölüm 2 C Dilinin Temelleri
İletişim Lab. Deney 1 Alıştırma
2) Sayısal Hesaplamalarda Gerek Duyulabilecek Matlab İşlemleri
MATLAB’de Diziler; Vektörler ve MAtrisler
MATLAB’İN SAYI YUVARLAMA FONKSİYONLARI
Javascript Oğuz İNAL.
Diziler Dizi, bellekte aynı isim altında toplanmış değişkenler kümesidir. Eğer ki aynı türden veriler grubunu bellekte tutmak gerekirse diziler kullanılır.
MATLAB’ de Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Diziler.
Yapısal Program Geliştirme – if, if-else
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
Bilgisayar Programlama Güz 2011
6. HAFTA
DERS 2 MATRİSLERDE İŞLEMLER VE TERS MATRİS YÖNTEMİ
MATLAB temel komutlar ve fonksiyonlar.
C ile Programlamaya Giriş
BM-103 Programlamaya Giriş Güz 2014 (8. Sunu)
Mantıksal Operatörler ve Denetim Yapıları
MATLAB’te Döngüler.
JAVA’DA DİZİLER Dr.Galip AYDIN.
BM-103 Programlamaya Giriş Güz 2014 (4. Sunu)
Matlab GİRİŞ MATLAB ORTAMI
BM-103 Programlamaya Giriş Güz 2014 (9. Sunu)
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 8.  Tamsayı Değerler (Integer) Tamsayılar, 10 tabanlı (decimal), 8 tabanlı (octal) veya 16 tabanlı (hexadecimal)
NEWTON-RAPHSON YÖNTEMİ
Lineer Cebir Prof.Dr.Şaban EREN
Fonksiyonlar ile Çalışmak
MATLAB’ de Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Bilgisayar Programlama Güz 2011
Yrd. Doç. Dr. Mustafa Akkol
Bugünkü Konular Döngüler ve Akış Diyagramları C de Döngü Tanımlama
Bilgisayar Grafikleri Ders 3: 2B Dönüşümler
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Bilgisayar Görmesi Ders 9:Korelasyon ve İki Boyutlu Dönüşümler
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Sayısal Analiz / Uygulama
DİJİTAL GÖRÜNTÜ İŞLEME
OTO1004 Bilgisayar Destekli Mühendislik Dersi Sunu No:01 Öğr. Gör. Dr. Barış ERKUŞ.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Lineer Cebir (Matris).
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları 1.
BİLGİSAYAR PROGRAMLAMA DERSİ 6. DERS NOTU Konu: Matlab’ de Diziler ve Matrisler.
7. HAFTA.
MATLAB R2013’e Giriş.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BM-103 Programlamaya Giriş Güz 2016 (4. Sunu)
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
DİJİTAL GÖRÜNTÜ İŞLEME
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
DİJİTAL GÖRÜNTÜ İŞLEME Y. Doç. Dr. Esra Tunç Görmüş
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
3. HAFTA.
Sunum transkripti:

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 ogungor@ktu.edu.tr, etunc@ktu.edu.tr 06/03/16 1 1

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

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

Matris İndeksleme Matrisler, köşeli parantezler içerisinde satır vektörler ve bunları noktalı virgüllerle birbirinden ayırarak oluşturulurlar. >> A=[ 1 2 3 ; 4 5 6 ; 7 8 9 ]; % 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

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

Matris İndeksleme Daha kompleks bir şekilde adreslemeye örnek vermek gerekirse A ( D ) ; ifadesi kullanılabilir. Burada D mantık matrisidir. >> D = logical ( [ 1 0 0 ; 0 0 0 ; 0 0 1 ] ) ; >> 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

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

Matris İndeksleme 06/03/16

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

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

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

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

Örnek 1 06/03/16

Örnek 2 06/03/16

Örnek 3 06/03/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

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

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

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

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

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

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

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

Ö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

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