Restorasi Citra adalah pengolahan citra dengan tujuan untuk memperbaiki citra yang mengalami penuruan pada kualitas atau degradasi. Lansung saja kita impelementasikan kedalam coding octave di bawah ini.
Materi Sebelumnya:
coding octave:
Program derau gaussian dengan fungsi
==================================================
function [g] = gaussian(f, sigma, mu)
% g = Menghasilkan citra yang telah diberi derau menggunakan gaussian.
% f = citra masukan berskala keabuan
% sigma = standar deviasi fungsi gaussian
% mu = rerata fungsi Gaussian
if nargin < 3
mu = 0; % Nilai bawaan mu
end
if nargin < 2
sigma = 1; % Nilai bawaan standar deviasi
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 %akhir fungsi
f = imread('c:\image\andri 2.jpg');
g = gaussian(f, 150);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')
Program garam dan merica dengan fungsi
=================================
function [g] = gamer(f, probabilitas)
if nargin < 2
probabilitas = 0.05; % Nilai bawaan
end;
[m, n] = size(f);
g = double(f);
for i=1 : m
for j=1 : n
nilai_acak = rand;
if nilai_acak <= probabilitas / 2
g(i,j) = 0;
elseif (nilai_acak > probabilitas / 2) && ...
(nilai_acak <= probabilitas)
g(i,j) = 255;
end
end
end
g = uint8(g);
end %akhir fungsi
f = imread('c:\image\andri 2.jpg');
g = gamer(f, 0.05);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')
Program derau periodik dengan fungsi
=======================================================
function [G] = drperiodik(F, a, bx, by)
% DRPERIODIK Menghasilkan citra yang teklah ditambahi
% derau periodis.
%
% F = Citra berskala keabuan
% b = penegas derau (1, 2, 3, ...)
% ax dan ay menentukan kemiringan derau
if nargin < 4
a = 3; bx = 3; by = 5;
end
[m, n] = size(F);
for i=1:m
for j=1:n
X(i,j) = j;
Y(i,j) = i;
end
end
derau = a * sin(X/bx + Y/by) + 1;
G = uint8(double(F) + derau);
end %akhir fungsi
f = imread('c:\image\aa.jpg');
g = drperiodik(f, 10,3,4);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')
program penghilangan derau rerata aritmatik dengan fungsi
=============================================
function [G] = 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);
G = 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
G(i-setengah, j-setengah) = jum / (ukuran * ukuran);
end
end
G = uint8(G);
end %akhir fungsi
F = imread('C:\Image\aan.png');
G = filarithmean(F);
subplot(1,2,1);imshow(F)
subplot(1,2,2);imshow(G)
Program filter harmonik dengan fungsi
=======================================================
function [G] = 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);
G = 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
G(i-setengah, j-setengah) = (ukuran * ukuran) / jum;
end
end
G = uint8(G);
end %akhir fungsi
F = imread('C:\Image\aan.png');
G = filharmonik(F, 5);
subplot(1,2,1);imshow(F)
subplot(1,2,2);imshow(G)
==================================================
function [g] = gaussian(f, sigma, mu)
% g = Menghasilkan citra yang telah diberi derau menggunakan gaussian.
% f = citra masukan berskala keabuan
% sigma = standar deviasi fungsi gaussian
% mu = rerata fungsi Gaussian
if nargin < 3
mu = 0; % Nilai bawaan mu
end
if nargin < 2
sigma = 1; % Nilai bawaan standar deviasi
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 %akhir fungsi
f = imread('c:\image\andri 2.jpg');
g = gaussian(f, 150);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')
Program garam dan merica dengan fungsi
=================================
function [g] = gamer(f, probabilitas)
if nargin < 2
probabilitas = 0.05; % Nilai bawaan
end;
[m, n] = size(f);
g = double(f);
for i=1 : m
for j=1 : n
nilai_acak = rand;
if nilai_acak <= probabilitas / 2
g(i,j) = 0;
elseif (nilai_acak > probabilitas / 2) && ...
(nilai_acak <= probabilitas)
g(i,j) = 255;
end
end
end
g = uint8(g);
end %akhir fungsi
f = imread('c:\image\andri 2.jpg');
g = gamer(f, 0.05);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')
Program derau periodik dengan fungsi
=======================================================
function [G] = drperiodik(F, a, bx, by)
% DRPERIODIK Menghasilkan citra yang teklah ditambahi
% derau periodis.
%
% F = Citra berskala keabuan
% b = penegas derau (1, 2, 3, ...)
% ax dan ay menentukan kemiringan derau
if nargin < 4
a = 3; bx = 3; by = 5;
end
[m, n] = size(F);
for i=1:m
for j=1:n
X(i,j) = j;
Y(i,j) = i;
end
end
derau = a * sin(X/bx + Y/by) + 1;
G = uint8(double(F) + derau);
end %akhir fungsi
f = imread('c:\image\aa.jpg');
g = drperiodik(f, 10,3,4);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')
program penghilangan derau rerata aritmatik dengan fungsi
=============================================
function [G] = 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);
G = 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
G(i-setengah, j-setengah) = jum / (ukuran * ukuran);
end
end
G = uint8(G);
end %akhir fungsi
F = imread('C:\Image\aan.png');
G = filarithmean(F);
subplot(1,2,1);imshow(F)
subplot(1,2,2);imshow(G)
Program filter harmonik dengan fungsi
=======================================================
function [G] = 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);
G = 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
G(i-setengah, j-setengah) = (ukuran * ukuran) / jum;
end
end
G = uint8(G);
end %akhir fungsi
F = imread('C:\Image\aan.png');
G = filharmonik(F, 5);
subplot(1,2,1);imshow(F)
subplot(1,2,2);imshow(G)
Salah satu hasil dari coding diatas adalah :
Terima Kasih dan Semangat Belajar
mantap bro makasih info nya.
BalasHapusbermanffat banget
Oke Bro..
HapusJika Butuh Materi Tentang Informatika atau Ilmu berhubungan dengan komputer silahkan di request aja disini kita banyak materi tersebut hanya belum sempat untuk memposting, nanti kita usahakan posting yang telah di request terlebih dahulu.
Terima Kasih :)
Mantap materinya. Share tentang segmentasi citra dan aplikasinya bro
BalasHapus