Pengolahan Citra dengan menghubungkan konvolusi dan Laws





Diketahui :
·         R5E5
·         R5S5
·         E5S5
Dengan Program menghubungkan Konvolusi2 dan Laws




Konvolusi2:

function [G] = konvolusi2(F, H)
% KONVOLUSI2 Melakukan konvolusi kernel H dengan citra F
%     (Versi Algoritma 4.3)
%     H harus mempunyai tinggi dan lebar ganjil
%     Hasil: citra G

[tinggi_f, lebar_f] = size(F);
[tinggi_h, lebar_h] = size(H);

m2 = floor(tinggi_h/2);
n2 = floor(lebar_h/2);

F2=double(F);
for y=1 : tinggi_f
    for x=1 : lebar_f
        % Pelaksanaan konvolusi F(baris, kolom)
        jum = 0;
        for p=-m2 : m2
            for q=-n2 : n2
                % Penanganan x
                x2 = x-q;
                if x2 < 1
                    x2 = -x2 + 1;
                else
                    if x2 > lebar_f
                       x2 = 2 * lebar_f - x2 + 1;
                     
                   end
                end
               
                % Penanganan y
 

                         y2 = y-p;
                if y2 < 1
                    y2 = -y2 + 1;
                else
                    if y2 > tinggi_f
                       y2 = 2 * tinggi_f - y2 + 1;
                   end
                end
       jum = jum + H(p+m2+1,q+m2+1) * ...
                      F2(y2, x2);
            end
        end
       
        G(y, x) = jum;
    end
end
  




Program Laws
function [E] = laws(F, cadar1, cadar2, w)
% LAWS Berguna untuk memperoleh citra yang berisi
%     energi tekstur.
%     Masukan: F = Citra berskala keabuan.
%              cadar1 dan cadar2 = nama cadar
%              (S3, S5, E3, dst.)
%              w = ukuran jendela. F = double(F);
% Memperoleh energi tekstur. Hasil berupa
%    citra berukuran sama dengan F.
%    w = ukuran jendela

L3 = [1 2 1];
E3 = [-1 0 -1];
S3 = [-1 2 -1];

L5 = [1 4 6 4 1];
E5 = [-1 -2 0 2 1];
S5 = [-1 0 2 0 -1];
R5 = [1 -4 6 -4 1]; W5 = [-1 2 0 -2 1];

% Cek cadar 1
if strcmp(cadar1, 'L3') == 1
Cd1 = L3;
ukuran1 = 3;
elseif strcmp(cadar1, 'E3') == 1
Cd1 = E3;
ukuran1 = 3;
elseif strcmp(cadar1, 'S3') == 1
Cd1 = S3;
ukuran1 = 3;
elseif strcmp(cadar1, 'L5') == 1
Cd1 = L5;
 

ukuran1 = 5;
elseif strcmp(cadar1, 'E5') == 1
Cd1 = E5;
ukuran1 = 5;
elseif strcmp(cadar1, 'S5') == 1
Cd1 = S5;
ukuran1 = 5;
elseif strcmp(cadar1, 'R5') == 1
Cd1 = R5;

ukuran1 = 5;
elseif strcmp(cadar1, 'W5') == 1
Cd1 = W5;
ukuran1 = 5;
else
ukuran1 = 0;
end

% Cek cadar 2
if strcmp(cadar2, 'L3') == 1
Cd2 = L3;
ukuran2 = 3;
elseif strcmp(cadar2, 'E3') == 1
Cd2 = E3;
ukuran2 = 3;
elseif strcmp(cadar2, 'S3') == 1
Cd2 = S3;
ukuran2 = 3;
elseif strcmp(cadar2, 'L5') == 1
Cd2 = L5;
ukuran2 = 5;
elseif strcmp(cadar2, 'E5') == 1
Cd2 = E5;
ukuran2 = 5;
elseif strcmp(cadar2, 'S5') == 1
Cd2 = S5;
ukuran2 = 5;
elseif strcmp(cadar2, 'R5') == 1
Cd2 = R5;
ukuran2 = 5;
elseif strcmp(cadar2, 'W5') == 1
Cd2 = W5;
ukuran2 = 5;
else
ukuran2 = 0;
end
% Cek kebenaran cadar
ukuran = ukuran1 * ukuran2;
if ~(ukuran == 9 || ukuran == 25)
error('Cadar tidak valid');
end
Matriks = Cd1' * Cd2;

% Konvolusi citra dengan cadar
E = konvolusi2(F, Matriks);

% Lakukan pererataan dengan jendela berukuran w x w
 
H=ones(w,w)/(w^2);
E=konvolusi2(E, H);

% Lakukan normalisasi ke 0 s/d 255
terkecil = min(min(E));
terbesar = max(max(E));
E = (E-terkecil) / (terbesar - terkecil) * 255;

% Kosongkan bagian tepi
[tinggi, lebar] = size(E);
E(1:15,:) = 0;
E(tinggi-15: tinggi,:) = 0;
E(:, 1:15) = 0;
E(:, lebar-15 : lebar) = 0;
E = uint8(E);


==============================================

Running Program pada Command Window
absam = imread('e:\materi\absam.png');
>> F = laws(absam,'R5','E5',15);
>> G = laws(absam,'R5','S5',15);
>> H = laws(absam,'E5','S5',15);
>> figure(1); imshow(F);
>> figure(2); imshow(G);
>> figure(3); imshow(H);
  ==============================================

sehingga Output dari program diatas adalah sebagai berikut :

Gambar soal :


OUTPUT :









Komentar