Salt&Pepper Noise, Gausssian Noise, Mean Filter, Median Filter, Threshold
ELE 473 – SAYISAL GÖRÜNTÜ İŞLEME
İNDİRME LİNKİ EN ALTTADIR – DOWNLOADABLE LINK IS AT THE BOTTOM
Yazının bu kısmında fotoğrafı çekilen sayfanın görüntüsü Matlab’a aktarılmıştır ve üzerine Salt&Pepper gürültüsü ve Gaussian gürültüsü eklenmiştir. Gürültü eklenen görseller gerekli smoothing algoritmaları ile geri kurtarılmaya çalışılmıştır. Sonuçlar aşağıda yorumlanmıştır.

Şekil 1’deki fotoğrafı çekilen görseli Matlab’a aktarmak için aşağıdaki kod bloğu kullanılmıştır. Açıklamalar yorum olarak verilmiştir.
im = imread('C:\Users\fener\OneDrive\Masaüstü\ele473ornek.jpg');
% Gorsel okundu
im1 = imresize(im,[921, 645]);
% Islemlerin hizini artirmak icin gorselin boyutu degistirildi.
Alınan görüntünün işlenmesi için Gray Scale’e aktarımı aşağıdaki kod bloğu ile yapılmıştır. Açıklamalar yorum olarak verilmiştir. Gray Scale edilen görüntü Şekil 2’de görünmektedir.
im2_gray = im2gray(im1);
% alinan gorseldeki rgb uzayi siyah-beyaz uzaya cevrildi

Salt&Pepper Noise eklemek ve sonucu görüntülemek için aşağıdaki kod bloğu kullanılmıştır. Açıklamalar yorum olarak verilmiştir.
%% Salt Pepper Noise
salt_pepper_density=0.1;
% salt-pepper yoğunluğu
salt_pepper_white = floor(rand(size(im2_gray))+(salt_pepper_density/2));
% beyaz noktalarin gelecegi konumlar, gorsel ile ayni boyutta uretilen
% rastgele 0-1 arasi sayi iceren matriste belirlenen orana gore ekleme
% yapilarak ve bunun floor islemi ile tam sayi hali alinarak bulunuyor.
salt_pepper_black = floor(rand(size(im2_gray))+(salt_pepper_density/2));
% siyah noktalarin geleceği noktalar da beyaz noktalar ile benzer sekilde
% bulunmustur.
im2_gray(salt_pepper_white==1)= 255;
% beyaz olarak belirlenen konumlara beyaz (uint formatta 255 beyaza denk gelir)
im2_gray(salt_pepper_black==1)= 0;
% siyah olarak belirlenen konumlara siyah (uint formatta 0 siyaha denk gelir)
% pikseller yaziliyor
img_salt_pepper = im2_gray;
figure(3);
imshow(img_salt_pepper);
title('Salt&Pepper Noise Implemented Image');
Gaussian Noise eklemek için aşağıdaki kod bloğu kullanılmıştır ve açıklamalar yorum olarak verilmiştir.
%% Gaussian Noise
st_dev=100;
% standart sapma degeri
gaussian_noise_img = (sqrt(st_dev)*randn(size(im2_gray_yedek)))+ double(im2_gray_yedek);
% Gaussian gürültüsü standart sapma ve rastgele oluşturulan numaralar ile
% çarpılıp oluşturulur ve orjina görsele eklenir.
figure(4);
%subplot(2,2,4);
imshow(gaussian_noise_img/255);
% gorseli ekrana dogru formatta yazdırmak icin 255 degerine boluyoruz.
title('Gaussian Noise Implemented Image');
Eklenen iki farklı gürültünün aynı görsele etkileri aşağıdaki Şekil 3’te ve Şekil 4’te gösterilmiştir.


Eklenen gürültülerin en iyi hangi smoothing algoritması ile giderildiği aşağıdaki örneklerde gözlemlenecektir.
Smoothing için 2 algoritma kullanılmıştır:
- Mean Filter
- Median Filter
Mean filtresi için 3 farklı değer (1/9, 1/10, 1/16) kullanılmıştır ve her iki gürültülü görsele de uygulanmıştır. Median filtresi ise tek şekilde her iki gürültülü görsele de uygulanmıştır.
Mean filtresinin nasıl işlediğine dair kod bloğu aşağıda verilmiştir. Benzer kod bloğu sadece matrisin değişmesinden yola çıkarak işleme sokulduğu için 1/10 ve 1/16 değerleri için tekrar verilmemiştir.
Salt-Pepper Gürültülü görsel üzerinde çalışan kod:
%% Smoothing 1.1 - 1/9 - SP
% 1 1 1
% 1 1 1
% 1 1 1
% Filtrelemek icin yukaridaki matris olusturulup,
% her bir eleman matris icerisindeki sayilarin toplamina bolunur
mean_filt_1 = ones(3);
mean_filt_1 = double(mean_filt_1/9);
% Filtre olusturuluyor ve sayi formati double yapiliyor ki onceki alinan
% goruntular ile sorun yasanmasin
filtered_img = zeros(size(im2_gray));
% Filtrelenen gorsel icin bos bir dizi ataniyor.
dim = size(im2_gray);
% for dongulerini calistirmak icin gorselin boyutunu aliyoruz
im2_smooth_yedek_double = im2double(img_salt_pepper);
% Uzerinde calisilacak matris `double` formatina cevriliyor
for i=1:(dim(1)-2)
for j=1:(dim(2)-2)
product=im2_smooth_yedek_double(i:i+2,j:j+2).*mean_filt_1;
% Uzerinde calisilan her 3x3 birimlik alandaki elemanlari filtremiz
% olan matrisle carpariz ve matrisin tum elemanlarini toplayip
% merkez noktaya o degeri yazariz
filtered_img(i,j)=sum(product(:));
end
end
figure(5);
imshow(filtered_img);
title('Mean Filter 1.1 - 1/9 - Salt Pepper Image Implemented');
Gaussian Gürültülü görsel üzerinde çalışan kod
%% Smoothing 1.2 - 1/9 - G
% 1 1 1
% 1 1 1
% 1 1 1
% Filtrelemek icin yukaridaki matris olusturulup,
% her bir eleman matris icerisindeki sayilarin toplamina bolunur
mean_filt_1 = ones(3);
mean_filt_1 = double(mean_filt_1/9);
% Filtre olusturuluyor ve sayi formati double yapiliyor ki onceki alinan
% goruntular ile sorun yasanmasin
filtered_img = zeros(size(im2_gray));
% Filtrelenen gorsel icin bos bir dizi ataniyor.
dim = size(im2_gray);
% for dongulerini calistirmak icin gorselin boyutunu aliyoruz
for i=1:(dim(1)-2)
for j=1:(dim(2)-2)
product=gaussian_noise_img(i:i+2,j:j+2).*mean_filt_1;
% Uzerinde calisilan her 3x3 birimlik alandaki elemanlari filtremiz
% olan matrisle carpariz ve matrisin tum elemanlarini toplayip
% merkez noktaya o degeri yazariz
filtered_img(i,j)=sum(product(:));
end
end
figure(6);
imshow(filtered_img/255);
title('Mean Filter 1.2 - 1/9 - Gaussian Noise Image Implemented');
%10 yoğunluklu Salt-Pepper Gürültülü görsele etki eden 1/9, 1/10 ve 1/16 değerli Mean Filtreleme algoritmalarının çıktıları aşağıda sırasıyla Şekil 5’te, Şekil 6’da ve Şekil 7’de gösterilmiştir.



Salt&Pepper Gürültüsüne Mean Filtresi Uygulanması Sonucu:
Şekil 5’te, Şekil 6’da ve Şekil 7’de görüldüğü üzere Mean Filtre’nin Salt&Pepper Gürültüsü üzerinde çok büyük bir iyileştirmesi bulunamamıştır. Ancak görsellere yakından bakıldığında 1/16 değerli filtrenin siyah ve beyaz geçişlerinde yani “edge” olarak tanımlanan yerlerde diğer 1/9 ve 1/10 değerli filtrelere göre daha keskin bir görüntü ortaya çıkardığı ve yazıları daha koyu yaptığı görülmüştür.
Standart sapma değeri 100 olan Gaussian Gürültülü görsele etki eden 1/9, 1/10 ve 1/16 değerli Mean Filtreleme algoritmalarının çıktıları aşağıda sırasıyla Şekil 8’de, Şekil 9’da ve Şekil 10’da gösterilmiştir.



Gaussian Gürültüsüne Mean Filtresi Uygulanması Sonucu:
Mean Filtresinin görselin içeriği fark etmeksizin tüm alanlarda bir miktar yumuşama yaptığı ve bulanıklığa sebebiyet verdiği gözlenmiştir ancak 1/16 değerli filtrenin yazılarının 1/9 ve 1/10 değerli filtreye göre daha keskin ve koyu olduğu sonucuna varılmıştır. Aynı zamanda Mean Filtresi; Gaussian Gürültüsüne, Salt&Pepper gürültüsünden daha iyi etki etmektedir.
Median filtresinin nasıl işlediğine dair kod blokları aşağıda verilmiştir.
Salt-Pepper Gürültülü görsel üzerinde çalışan kod:
%% Median Filter 1
% 1 1 1
% 1 1 1
% 1 1 1
% Matrisi olusturuluyor
median_filter_1 = ones(3);
% Filtre olusturuluyor.
output_median_1 = zeros(size(im2_gray)-2);
% Filtrelenen gorsel icin bos bir dizi ataniyor.
dim = size(im2_gray);
% for dongulerini calistirmak icin gorselin boyutunu aliyoruz
im2_salt = double(im2_gray);
% Uzerinde calisilacak matris `double` formatina cevriliyor
for i=1:(dim(1)-2)
for j=1:(dim(2)-2)
filter1 = im2_salt(i:i+2,j:j+2).*median_filter_1;
% salt-pepper noise iceren gorsel filtreleniyor.
output_median_1 (i,j) = median(filter1(:));
end
end
figure(11);
imshow(output_median_1./255);
title('Median Filter 1 - Salt&Pepper Noise Implemented');
Gaussian Gürültülü görsel üzerinde çalışan kod:
%% Median Filter 2
% 1 1 1
% 1 1 1
% 1 1 1
% Matrisi olusturuluyor
median_filter_2 = ones(3);
% Filtre olusturuluyor.
output_median_2 = zeros(size(im2_gray)-2);
% Filtrelenen gorsel icin bos bir dizi ataniyor.
dim = size(im2_gray);
% for dongulerini calistirmak icin gorselin boyutunu aliyoruz
for i=1:(dim(1)-2)
for j=1:(dim(2)-2)
filter1 = gaussian_noise_img(i:i+2,j:j+2).*median_filter_2;
% Gaussian noise iceren gorsel filtreleniyor.
output_median_2 (i,j) = median(filter1(:));
end
end
figure(12);
imshow(output_median_2./255);
title('Median Filter 2 - Gaussian Noise Implemented');
%10 yoğunluklu Salt-Pepper Gürültülü görsele ve standart sapma değeri 100 olan Gaussian Gürültülü görsele Median Filtreleme algoritmalarının çıktıları aşağıda sırasıyla Şekil 11’de ve Şekil 12’de gösterilmiştir.


Salt&Pepper Gürültüsüne ve Gaussian Gürültüsüne Median Filtresi Uygulanması Sonucu:
Median Filtresi bilindiği üzere seçili bölgedeki medyan değerdeki pikseli alır ve orta noktaya koyar. Bu, bölgedeki maksimum ve minimum değerlerin gidip ortanca bir değerin gelmesi demektir. Salt&Pepper Gürültüsünde çok fazla uç değerler olduğu için bu gürültüleri gidermekte Median Filtresi oldukça başarılı olmuştur.
Bir diğer öncül olarak “Thresholding” işlemleri ve çıktıları aşağıda bahsedilmiştir ve yorumlanmıştır.
Thresholding aşağıdaki görsellere uygulanmıştır:
- İlk elde edilen ve filtre uygulanmamış siyah beyaz görsel (Şekil 13)
- Salt&Pepper Gürültüsü uygulanmış görsel (Şekil 14)
- Gaussian Gürültüsü uygulanmış görsel (Şekil 15)
- Gaussian Gürültülü görsele 1/9 parametreli Mean Filtresi uygulanmış görsel (Şekil 16)
- Gaussian Gürültülü görsele 1/16 parametreli Mean Filtresi uygulanmış görsel (Şekil 17)
- Salt&Pepper Gürültülü Median Filtresi uygulanmış görsel (Şekil 18)
- Gaussian Gürültülü Median Filtresi uygulanmış görsel (Şekil 19)
Mean filtrelerinde Gaussian Gürültülü fotoğrafın kullanılma nedeni; threshold işleminin Gauss gürültülü görselleri, Slat&Pepper gürülütülü görsellere göre daha iyi geri getirdiği içindir. Buna aşağıda da değinilecektir. Şekil 13’te sadece siyah beyaz hale getirilmiş görsele thresholding işlemi uygulanmıştır. T değerini belirlerken yazıların okunaklığının korunması ve sayfanın da kalitesi bozmaması dikkate alınmıştır. Bu neticeler doğrultusunda “80” değeri bulunmuştur. Bu işlemin kod bloğu ve çıktısı aşağıdadır.
%% Thresholding 1 Normal Image
th = uint8(im_th<80);
th_rev=~th;
% deneme yanilma sonucunda 80 degerinde hem okuma kaybi yasanmamistir hem
% de beyazlik saglanip gurultu gozlenmemistir.
figure(13);
imshow(th_rev);
title('Threshold - Normal Image');

Diğer tüm threshold kodları aynı mantıkta yazıldığında ve sadece değişken değiştiğinden daha fazlası burada yer almayacaktır.






Thresholding İşlemi Sonucu:
Yukarıdaki görsellerde görüldüğü üzere thresholding algoritmasının en iyi sonucu sadece 2 görüntüde çıkmaktadır: Normal Görsel ve Gaussian Gürültülü Görsel. Salt&Pepper Gürültüsü, Mean filtresi ve Median filtresi uygulanmış görsellerde yazılar eski haline getirilememiştir ve bozuk olarak kalmıştır. Ancak iyi sonuç alınan 2 görselde de küçük sayılabilecek 14 font değerli yazılar dahi okunabilmektedir ve sayfa kalitesinden de ödün verilmemiştir.
Tüm bu işlemlerin Matlab kodunu ve raporun PDF halini BURADAN indirebilirsiniz.
Okuduğunuz için teşekkürler.