Octave/MATLAB ile Görüntü işleme

sffsdz
            Görüntü işleme artık hayatımızın her sahasına girmeye başladı. Savunma sanayii, güvenlik, otomasyon gibi daha birçok sahada artık görüntü işleme üzerine sistemler kurulmakta.Bizde bunun üzerine MATLAB’ın açık kaynak türevi olan Octave ile görüntü işleme üzerine bahsedelim. Octave üzerinde yazdığımız kodlar MATLAB üzerinde çalışabilir. Kodlar neredeyse birebir uyuşmaktadır.Benim Octave seçme sebebim açık kaynak  ve ücretsiz olarak bulabilirsiniz. Üstelik boyut olarak çok küçük ve taşınabilir (portable) sürümü mevcut. Ufak ufak örneklerle başlayalım.

Öncelikle bir resim dosyasını okuyalım.

i=imread("resim adresi ");

İmread fonskiyonu resim dosyasını okumamızı sağlıyor. Açtığımız dosyanın piksel değerleri bir matris olarak i değişkenine atamaktadır.
Şimdi resmimiz kaç piksel ve renkli mi yoksa gri mi onu öğrenelim.Bunu da bize size fonskiyonu verecek.

[satir,sutun,renk] = size(i);

 

İmread fonksiyonu ile okuduğumuz resim dosyası bize matris olarak geldiğini söyledik. Bu matris aslında 3 boyutlu bir matris.x ekseninde sütun sayısı, y ekseninde satır sayısı ve z ekseninde 3 renk değeri bulunur.Bu 3 renk R(Red- Kırmızı), G (Green- Yeşil) ve B (Blue-Mavi) dir. Bunların her biri ayrı ayrı matristir.

Başlıksız

Size fonskiyonu bize resmin satır ve sütun değerlerinin yanında üçüncü bi değer verir.Bununla resmimizin renkli mi yoksa gri mi olduğunu ayırt ediyoruz.Gri resimlerde bu matris sayısı 1 dir.
Boş bir matris oluşturma için zeros() fonksiyonun kullanacağız.

h=uint8(zeros(sat,sut,renk));

Zeros fonksiyonu matrisi double türünde üretir.unit8 fonksiyonu ile bu matrisimizi 8 bitlik bir integer tipinde bir matrise dönüştürüyoruz. Diğer bir yöntem ise son parametre olarak ‘uint8’ değerini vermek olacak.

h=zeros(sat,sut,renk,’uint8’);

Renk parametresini vermezsek 1 adet matris oluşturacaktır.

h=zeros(sat,sut,’uint8’);

Piksel okuma  ve yazma işlemi de şu şekilde ;

R=İ(x,y,1);
G=i(x,y,2);
B=i(x,y,3);

Yazma ;

 

İ(x,y,1)=R;
i(x,y,2)=G;
i(x,y,3)=B;

Bunlar dışında matrislere çeşitli filtreler uygulayan ve kesme/ kırpma gibi işlemler yapabilen pek çok fonksiyonlar mevcut.Bunlar bir kaçını şöyle listeleyelim ;

 

imrotate(); % resmi döndürme işlemi
imnoise(); % görüntü bulanıklaştırma işlemi yapar.
fspecial(); % resme uygulanacak filtre için katsayılar matrisi oluşturur.

 

Daha fazla fonskiyonlar ve ayrıntılı bilgiler için http://octave.sourceforge.net/functions_by_package.php adresinden “image” kısmından bilgi alabilirsiniz.

Son olarak yaptığımız  işlemleri görmek için imshow() fonksiyonu ile görebiliriz.

 

imshow(i);

Yaptığımız resimleri  kaydetmek için ise imwrite() fonskiyonunu kullanacağız.

 

imwrite(i,”C:/resim.png”);

 

ascasdasd
Bir örnek ;
Renkli bir resmi gri resme dönüştüren bir program

 

resim=imread("c:/octave/resimler/house.tiff");
[satir,sutun,p]=size(resim)
gri=uint8(zeros(satir,sutun))

for i=1:satir
   for j=1:sutun

r=resim(i,j,1);
g=resim(i,j,2);
b=resim(i,j,3);

resim(i,j,4)==50;
gri(i,j)=r*0.3+g*0.6+b*0.1;

end
end

imshow(resim)

 

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir