Program Gaussian, Garam Merica, Derau Periodik, Filter Aritmatik & harmonik

Coding:
function [g] = gaussian(f, sigma, mu)
if nargin < 3
    mu = 0;       
end 
if nargin < 2
    sigma = 1;      
end
[m, n] = size(f);
g = double(f);
for i=1 : m
    for j=1 : n
        derau = randn * sigma + mu;
        g(i,j)  = round(f(i, j) + derau);   
        if g(i,j) >= 255
            g(i,j) = 255;
        elseif g(i,j) <= 0
            g(i,j) = 0;
        end
    end
end 
g = uint8(g);
end  
f = imread('c:\image\foto.png'); 
g = gaussian(f, 150); 

%

function [a] = gamer(f, probabilitas)
if nargin < 2
    probabilitas = 0.05;   
end;
[M, N] = size(f);
a = double(f);
for I=1 : M
    for J=1 : N
        nilai_acak = rand; 
        if nilai_acak <= probabilitas / 2
            a(I,J) = 0;
        elseif (nilai_acak > probabilitas / 2) && ...
               (nilai_acak <= probabilitas)
            a(I,J) = 255;
        end
    end
end
a = uint8(a);
end 
f = imread('c:\image\foto.png'); 
a = gamer(f, 0.05); 

%

function [b] = drperiodik(F, a, bx, by)
if nargin < 4
    a = 3; bx = 3; by = 5;
end
 
[k, l] = size(F);
for O=1:k
    for P=1:l
        X(O,P) = P;
        Y(O,P) = O;
    end
end 
derau = a  * sin(X/bx + Y/by) + 1; 
b = uint8(double(F) + derau);
end
f = imread('c:\image\foto.png'); 
b = drperiodik(f, 10,3,4); 

%

function [c] = filarithmean(F, ukuran)
%    FILARITHMEAN Melakukan penghilangan derau dengan
%     menggunakan filter rerata aritmetik
%     F = Citra berskala keabuan
%     ukuran = ukuran jendela
%     G = Citra hasil pemrosesan
 
if nargin < 2
    ukuran = 5;
end
[m, n] = size(F);
 
setengah = floor(ukuran / 2);
F = double(F);
c = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
    for j=1+setengah: n-setengah
        jum = 0;
        for p = -setengah : setengah
            for q = -setengah : setengah
                jum = jum + F(i+p, j+q);
            end
        end
        
        c(i-setengah, j-setengah) = jum / (ukuran * ukuran);
    end
end
c = uint8(c);
end    %akhir fungsi
F = imread('C:\Image\foto.png'); 
c = filarithmean(F); 

%

function [d] = filharmonik(F, ukuran)
% FILHARMONIK Melakukan penghilangan derau dengan
%     menggunakan filter rerata harmonik
%     F = Citra berskala keabuan
%     ukuran = ukuran jendela
%     G = Citra hasil pemrosesan
 
if nargin < 2
    ukuran = 3;
end
[m, n] = size(F);
 
setengah = floor(ukuran / 2);
F = double(F);
d = zeros(m-2*setengah, n-2*setengah);
for i=1+setengah : m-setengah
    for j=1+setengah: n-setengah
        jum = 0;
        for p = -setengah : setengah
            for q = -setengah : setengah
                jum = jum + 1 / F(i+p, j+q);
            end
        end
        
        d(i-setengah, j-setengah) = (ukuran * ukuran) / jum;
    end
end
 
d = uint8(d);
end    %akhir fungsi
F = imread('C:\Image\foto.png'); 
d = filharmonik(F, 5); 



figure(1);
subplot(3,2,1);imshow(f), title('citra masukan')
subplot(3,2,2);imshow(g), title('citra gaussian')
subplot(3,2,4);imshow(a), title('citra garam merica')
subplot(3,2,6);imshow(b), title('citra derau periodik')

figure(2);
subplot(2,2,1);imshow(f), title('citra masukan')
subplot(2,2,2);imshow(c), title('citra filter aritmatik')
subplot(2,2,4);imshow(d), title('citra filter harmonik')
 
Hasil:

 

Komentar

Postingan Populer