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')



Komentar
Posting Komentar