RESTORASI CITRA - andyusuf-informatika

New Post

Minggu, 30 Juli 2017

RESTORASI CITRA

Restorasi Citra
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.


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)

Salah satu hasil dari coding diatas adalah :



Terima Kasih dan Semangat Belajar

3 komentar:

  1. Balasan
    1. Oke Bro..
      Jika 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 :)

      Hapus
  2. Mantap materinya. Share tentang segmentasi citra dan aplikasinya bro

    BalasHapus