Menü Kapat

Basit Matlab Filtreleri – Görüntü İşleme

Merhaba, bildiğiniz gibi basit işlemlerle harikalar yaratabileceğiniz bir programlama dilidir. Matematik, elektronik, yapay zeka, görüntü işleme gibi bir çok farklı alanda rahatlıkla kullanılabilir. Matlab konusu bir umman olduğu için bu kadar bilgi yeterli 🙂 Detaylı bilgi edinmek isteyenler için aşağıdaki linklerde yeterince bilgi mevcut. Konumuza gelecek olursak ben aşağıdaki örneklerde basit görüntü filtreleme işlemleri yaparak en azından sizlere dilin pratikliğiyle ilgili bir fikir vermek istedim.

Orijinal fotoğraf

C:\Users\Hasan\AppData\Local\Microsoft\Windows\INetCache\Content.Word\norvec.jpg

Tuz & Biber Filtreli

tuz_biber

​​ 

image=('C:\norvec.jpg');

I = imread(image);

J = imnoise(I,'salt & pepper',0.02);

figure, imshow(I)

figure, imshow(J)

 

Tuz & Biber Filtreli Üzerine Mean Filtreli

meanfilter

​​ 

image=imread('C:\norvec.jpg');

gurultulu ​​ = imnoise(image,'salt & pepper',0.02);

figure, imshow(gurultulu)

meanFilter = fspecial('average', [3 3]);

sonucGoster = imfilter(gurultulu, meanFilter);

figure,imshow(sonucGoster);

 

Tuz & Biber Filtreli Üzerine Median Filtreli

medianfilter

image=imread('C:\norvec.jpg');

gurultuluRGB ​​ = imnoise(image,'salt & pepper',0.02);

figure, imshow(gurultuluRGB)

% Matlab üzerindeki median filtresi RGB imajlara uygulamadığından önce

% kanallara bölüyoruz

kirmiziKanal = gurultuluRGB(:, :, 1);

yesilKanal = gurultuluRGB(:, :, 2);

maviKanal = gurultuluRGB(:, :, 3);

% her kanala ayrı ayrı median filtresini uyguluyoruz

kirmiziMF = medfilt2(kirmiziKanal, [3 3]);

yesilMF = medfilt2(yesilKanal, [3 3]);

blueMF = medfilt2(maviKanal, [3 3]);

noiseImage = (kirmiziKanal == 0 | kirmiziKanal == 255);

gurultusuzRed = kirmiziKanal;

gurultusuzRed(noiseImage) = kirmiziMF(noiseImage);

noiseImage = (yesilKanal == 0 | yesilKanal == 255);

gurultusuzGreen = yesilKanal;

gurultusuzGreen(noiseImage) = yesilMF(noiseImage);

noiseImage = (maviKanal == 0 | maviKanal == 255);

gurultusuzBlue = maviKanal;

gurultusuzBlue(noiseImage) = blueMF(noiseImage);

% Her kanalına ayrı ayrı median filtresi uyguladık burada tüm kanalları

% birleştiriyoruz

rgbBirlestir = cat(3, gurultusuzRed, gurultusuzGreen, gurultusuzBlue);

figure,imshow(rgbBirlestir);

 

Sobel Kenar Bulma

sobel_kenarbulma

Not:​​ Tüm yönlere olduğundan hem Matlab içerisindeki Sobel filtresi hem de kernel matrislerinin kareleri toplamının karekökü metodu uygulanmış ve karşılaştırılmıştır.

 

resim=imread('c:/norvec.jpg');

​​ 

sobel=rgb2gray(resim);

​​ 

sobelli=edge(sobel,'sobel');

A=double(sobel);

​​ 

for​​ i=1:size(A,1)-2

​​ 

for​​ j=1:size(A,2)-2

​​ 

%Yatay sobel kernel matrisi

​​ 

Gx=((2*A(i+2,j+1)+A(i+2,j)+A(i+2,j+2))-(2*A(i,j+1)+A(i,j)+A(i,j+2)));

​​ 

%Dikey sobel kernel matrisi

​​ 

Gy=((2*A(i+1,j+2)+A(i,j+2)+A(i+2,j+2))-(2*A(i+1,j)+A(i,j)+A(i+2,j)));

​​ 

sobel(i,j)=sqrt(Gx.^2+Gy.^2);

​​ 

end

​​ 

end

figure;imshow(sobelli);

​​ 

figure,imshow(sobel);

 

Negatif Hali

negatif

image=imread('C:\norvec.jpg');

J = imcomplement(image);

imshow(image), figure, imshow(J)

 

 

 

 

 


Bağlantılar:

https://www.mathworks.com/
https://medium.com/@halilozel1903/matlab-nedir-91a904a74f45
http://www.gokhanhizal.com/matlab-program-ornekleri/

 

Posted in Bilişim, Görüntü İşleme

6 Comments

    • Serhat

      medfilt3, 3 boyutlu görüntüler için uygulanan median filtreleme komutudur. Her ne kadar RGB görüntü 3 kanala sahip olsa da, burada dikkat edilmesi gereken her bir renk kanalının bağımsız olarak sahip olduğu boyut sayısıdır.

    • hasan

      Merhaba,
      Matlab’in kenar bulma amaçlı built-in fonksiyonu olan edge() fonksiyonunda Prewitt seçeneğini kullanabilirsin.
      Şu şekilde örnek verebilirim;
      resim=imread(‘c:/image.jpg’);
      im=rgb2gray(resim);
      bwPrewitt = edge(im, ‘Prewitt’);
      figure,imshow(resim);
      ​​figure,imshow(bwPrewitt);
      ​​

    • hasan

      Merhaba, biraz daha detay verebilirseniz yardımcı olabilirim. Resim üzerindeki herhangi bir nesnenin üzerini herhangi bir renk ya da dokuyla kapatmak mı istiyorsunuz?

Bir cevap yazın

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