MATLAB & IMAGE PROCESSING – Mobile Application Developer

All Posts All Posts

Category: MATLAB & IMAGE PROCESSING
Görüntünün Sınır Eğrisini Çıkaran Filtreler (Matlab)

Görüntünün sınır eğrisi local süreklilik gösteren ve çevresine göre belirginleşmiş bölgelerin değişim noktalarından oluşur. Görüntü sınırı 5 farklı algoritma ile çıkarılabilir. Bunlar Sobel, Prewitt, Roberts, Log ve Canny algoritmalarıdır. Sınır grafiği siyah zemin üzerine beyaz olarak çizilir.

1. Log Filtresi

Bu filtreye Marr-Hildreth (Laplacian of Gaussian – LoG) algoritması denir. Gaussion filtresine Laplası alınarak işlem yapar.

2. Canny Filtresi

Kenar bulmada son derece etkin bir algoritmadır. Önce görüntüdeki gürültü bir sigma değerine göre üretilen Gaussian çekirdekle konvolusyonu alınarak azaltılır. Daha sonra, gradyent operatörü uygulanarak, kenar gradyent büyüklüğü ve yönü hesaplanır. Kenarlar, non maxima baskılama uygulanarak inceltilir. Son olarak görüntü, ikili eşikleme uygulanarak istenmeyen ayrıntılardan arındırılır.

3. Roberts Filtresi

Bu filtre diagonal olarak kenar tarar. Kernel matrisi şöyledir: [1,1,0;1,0,-1;0,-1,-1] veya [2,1,0;1,0,-1;0,-1,-2].

Görüntü Filtreleme Uygulamaları ve Amaçları (Matlab)

Görüntü Filtreleme

Filtreleme resmin üzerinde bir filtre varmış gibi düşünüp her piksel değerinin yeniden hesaplanmasıdır.  Filtreleme sayesinde görüntü üzerinde netleştirme, belirli ayrıntıları ortaya çıkarma, görüntüyü yumuşatma,  kenar keskinleştirme veya kenar bulma gibi işlemler gerçekleştirilir. Filtreler genelde 3×3 lük matrislerdir. Fakat boyutları 5×5, 7×7, 9×9, 11×11 şeklinde olabilir.

Filtreler ve Amaçları

1-Average Filtresi

Resimdeki her piksel yerine komşuları ile beraber ortalaması alınarak yeniden hesaplanır. Resimdeki gri düzeyler arasında keskin geçişler azalır; daha yumuşak geçişler söz konusudur. Resim üzerindeki kenarlarda bulanıklaşmaya (blur) yol açarlar.

Siyah-Beyaz Resim Üzerindeki Nesnelerin Özelliklerini Bulma (Hazır Olmayan Metotlarla MATLAB)

Bu slayt gösterisi için JavaScript gerekir.

Projenin Kodları

Çalışmada, beyaz resim üzerinde siyah renkli nesnelerin özelliklerinden çevre, ağırlık merkezi,  resmin ortalama renk kodunu ve alanını hesaplayan algoritma yazıldı. Bu algoritma matlabin resim yükleme fonksiyonu dışında hazır fonksiyon kullanılmadan yazıldı. Birçok resimde test edilmiş olmasına rağmen özellikle keskin hatlara sahip olmayan nesneleri içeren resimelerde hata içerebilir veya resmindeki nesnelerin özellikleri doğru değerler taşımayabilir. Örnek uygulama 300×300 piksellik resim üzerinde gerçekleştirilmiştir (Piksel sayısı sonuç alma süresi ile ilişkilidir).

Siyah-Beyaz Resim Üzerindeki Nesneleri Bulma (Hazır Olmayan Metotlarla MATLAB)

Bu slayt gösterisi için JavaScript gerekir.

Projenin Kodları

Bu çalışmaya benzer bir çalışma daha önce yine matlab üzerinde yazıldı. Fakat bu çalışmayı diğerinden ayıran özellik matlabin resim yükleme fonksiyonu dışında hazır fonksiyon kullanılmadan yazılmış olmasıdır. Algoritma bu anlamda bana aittir. Dolayısıyla hata içerebilir veya resmindeki nesnelerin durumuna göre doğru sonuçlar gözlemlenmeyebilir. Çalışmanın tanımı şöyledir: Beyaz resim üzerinde bulunan siyah objeleri sayısını ve konumunu bulma algoritması. Örnek uygulama 300×300 piksellik resim üzerinde gerçekleştirilmiştir (Piksel sayısı sonuç alma süresi ile ilişkilidir).

Siyah-Beyaz Resim üzerindeki Nesneleri Bulma (MATLAB)

Projenin Kodları

Siyah veya beyaz arkaplan renk üzerinde bulanan nesneleri bulan matlab programlama dili için kodlanmış algoritmanın genel mantığı şöyledir. Elimizdeki görüntüde siyah arkaplan ve beyaz nesnelerden oluşuyor veya tam tersi durumda bulunuyor olsun. Önce görüntü alınacak, adres olarak çalıştığım dizinde olduğundan direkt dosyanın adını yazdım. Resim matlab çalışma klasörü dışında ise tam adres yazılmalıdır.

[matlab]
resimOrjinal = imread(‘1.jpg’);
[/matlab]

Görüntü renkli bile olsa siyah beyaz resme dönüştürülecek. ikinci parametre ile verilen değere kadar ki kısımlar beyaz geriye kalan kısım siyah olarak dönüştürülecek. Bu kadar yüksek verilmesinin nedeni incelenecek olan görüntün siyah ve beyaz renkler içerecek olmasıdır.

[matlab]
resimSiyah = im2bw(resimOrjinal,0.9);
[/matlab]

Eşik değer sayesinde görüntü siyah zemin üzerine beyaz nesne, beyaz zemin üzerine siyah nesne olduğunu anlayamamızı sağlıyor.

Matlab Grafik Çizdirme Bilgileri

Matlab’de grafikler “figure” penceresinde çizdirilir. Matlab’de en temel çizim fonksiyonu plot’dur. plot(x,y) şeklinde iki boyutlu grafik çizdirir. plot komutu x in her noktasına karşılık gelen y noktasını çizdirir. plot(y) şeklinde yazılırsa, 1,2,3,..,n (n y’nin eleman sayısı) elemanlarına sahip bir x dizisi varmış gibi davranarak x eksenini yaratır.

xlabel(‘yazı’) Grafiğin x eksenini adlandırır.
ylabel(‘yazı’) Grafiğin y eksenini adlandırır.
title( ‘Başlık Buraya Yazılır’ ) Çizilen grafiğe başlık verir.
legend komutu ile gösterge eklenmesi sağlanır. Genel yazım şekli legend(Str1,str2,str3,..,pos) şeklindedir. Pos burada yazının nerde duracağını gösterir. Eğer pos:
0 ise Otomatik en iyi yeri bul demektir.
1 ise Sağ üst köşeye yerleştirir.
2 ise Sol üst köşeye yerleştirir.
3 ise Sol alt köşeye yerleştirir.
4 ise Sağ alt köşeye yerleştirir.
-1 ise Grafiğin sağına yerleştirir.

Çizgilerin görünümü değiştirmek için:
plot(x,y,’-o’), plot(x,y,’-*’), plot(x,y,’-+’), plot(x,y,’-^’), plot(x,y,’-.’) gibi şekiller kullanılabilir.

Matlab İf-Else ve Swich-Case Yapıları ile For ve While Döngüsü

Matlab ile yazılan programlarda kullanılabilecek bazı ifadeleri tanımlamak gerekir.

Continue ifadesi ile karşılaşınca işlem bir sonraki iterasyona geçer.

Break ifadesi ile karşılaşınca break ifadesinin bulunduğu döngü sona erer.

Error fonksiyonu, yazılacak programlarda karşılaşılabilecek hatalara karşı kullanılır. Örneğin bir değer girilmesini istiyorsunuz ve bu değer belirli şartları sağlaması gerekiyor. Kullanıcı yanlış girmesi durumunda error fonksiyonu kullanılarak program durdurulabilir. error(‘Sayi yanlış’) şeklinde komutla karşılaşınca ekranda error using –> fonksiyon_adi Sayi yanlış şeklinde olur ve program durur.

Warning fonksiyonu error yapısının aynısıdır fakat burada program bu komutla karşılaşınca program yazıyı ekrana verir ama durmaz.

Matlab Temel Matris Operatörleri

Temel işlemler:

a(:) a matrisinin sütunlarının ard arda dizilmesinden oluşan bir sütun vektör oluşturur.
a(:,i) a matrisinin i. sütununu alır.
a(j,:) a matrisinin j. satırını alır.
a(:,i)=[] a’nın i. sütununu siler.
a(i,:)=[] a’nın i. satırını siler.
a(:,[i j]) a matrisinin i ve j. sütununu alır.
a([i j],:) a matrisinin i ve j. satırını alır.
e=a:b:n a, (a+b),…,n sayılarından oluşan bir satır vektör oluşturur.
inv(a) Bira kare matrisinin tersini (inversini) alır.
a’ a matrisinin devriğini (transpozesini) alır.
det(a) a matrisinin determinantını hesaplar.
diag(a) Bir kare a matrisinin köşegen elemanlarını bir sütun vektöre atar.
rand 0 ile 1 arasında sayı üretir.a ile b arasında mxn boyutlu matris oluşturmak için b+a-b(rand(m,n)).
zeros(m,n) m×n boyutlu sıfır matrisi oluşturur.
ones(m,n) m×n boyutlu elemanları “1” olan matris oluşturur.
eye(m) m×m boyutlu birim matris oluşturur.
pascal(z) z boyutunda pascal üçgeni oluşturur.
magic(k) 1 il k*k arasındaki sayılardan oluşmuş, k*k boyutunda eşit satır ve sütun toplamına sahip matris olur.
trace(x) Bir x matrisinin izi.
eig Özdeğer ve özvektör bulma.
rem x-y.*fix(x./y) demektir.
mod x-y.*floor(x./y) demektir.
find Verilen koşula uygun elemanların indislerini verir.