Anda di halaman 1dari 8

[Digital Image Processing]

March 14, 2012

EDGE DETECTI ON USING LAPLACIAN OF GAUSSIA N (LoG)

untuk deteksi zero

crossing pada kurva 1 dimen si, maka pada artikel ini kita akan menggun akan teori tersebut

untuk mendeteksi tepi pada se buah citra digital.

Sebagai kelanjutan dari artik el sebelumnya mengenai penggunaan LoG

Laplacian of Gaussian dua dim ensi tanpa koefisien normalisasi dirumuskan d engan

≜∆ , 2

khusus membahas

sehingga kita bisa

2 dimensi untuk

dikonvolusikan dengan citra.

bisa menemukan zero crossin g dari sebuah citra digital dengan menggunak an profile intensity

LoG dapat bekerja

sebagai deteksi tepi pada citr a. Namun, jangan khawatir bahwa setelah c ontoh ini saya akan

memberikan juga bagaimana

tanpa harus menggunakan lan gkah-langkah yang rumit.

menggunakan LoG

nya. Saya menghadirkan kasu s ini agar dapat menjadi acuan bagaimana

Penurunan rumus di atas tela h dipaparkan pada artikel sebelumnya yang

tentang LoG. Seperti diketa hui bahwa citra digital sifatnya diskrit

menggunakan matriks terte ntu yang mendekati nilai dari gaussian

Namun, dalam artikel ini saya akan memba has bagaimana kita

kita bisa mendeteksi tepi dari sebuah citra

Kasus 1.

Misalkan kita memiliki citra se bagai berikut

citra Kasus 1. Misalkan kita memiliki citra se bagai berikut Langkah-langkah dalam mene mukan zero crossingnya

Langkah-langkah dalam mene mukan zero crossingnya adalah:

- Ubah citra menjadi citr a biner (hitam-putih)

[Digital Image Processing]

clear all;

close all;

clc;

%% data filename='sample.png'; I=imread(filename); level=graythresh(I);

I=im2bw(I,level);

imshow(I); title('Original Image'); %%

- Hitung profile intensity nya

Image' ); %% - Hitung profile intensity nya March 14, 2012 %% profile intensity [bar,kol]=size(I);

March 14, 2012

); %% - Hitung profile intensity nya March 14, 2012 %% profile intensity [bar,kol]=size(I); X=sum(I,1);

%% profile intensity [bar,kol]=size(I);

X=sum(I,1);

koX=1:kol;

figure, plot(1:kol,X/sum(X(:)),'r'); hold on; %%

[Digital Image Processing]

- Gaussian untuk menghaluskan citra

%% gaussian function

s=3;

m=0;

w=3; % panjang jendela

jendela=(w-1)/2;

x=-jendela:jendela;

% gaussian dengan koefisien normalisasi

koef=(1/sqrt(2*s*s*pi));

% koef=1;

G=koef*exp(-((x-m).^2/(2*(s^2))));

sumG=sum(G(:)); if sumG~=0 G=G/sumG;

end

%%

- First derivative dari citra

March 14, 2012

end %% - First derivative dari citra March 14, 2012 %% First derivative of Gaussian koef=-(x/(s*s));

%% First derivative of Gaussian koef=-(x/(s*s)); L=G.*koef;

ress=conv2(X,L,'same');

plot(ress/max(ress),'k'); legend('Profile Intensity','1st Derivative Gaussian'); hold off; %%

[Digital Image Processing]

- Second derivative dari citra dan zero crossing

March 14, 2012

derivative dari citra dan zero crossing March 14, 2012 %% Second derivative of Gaussian (LoG)

%% Second derivative of Gaussian (LoG)

koef2=((x.^2-2*s^2)/s^4);

LoG=G.*koef2;

LOg=LoG - sum(LoG(:))/prod(w);

ress2=conv2(X,LOg,'same');

figure, plot(1:kol,X/sum(X(:)),'r'); hold on; plot(ress2,'b-','LineWidth',2); hold on; %%

% %% Laplacian of Gaussian (LoG) toolbox matlab

% h=fspecial('log',[1 3],3);

% hasil=conv2(X,h,'same');

% plot(hasil,'g'); hold off;

% legend('Profile Intensity','LoG','LoG Matlab toolbox');

% %%

- Zero crossing

%% finding zero crossing location

n=1;

for m=1:length(ress2)-1 if (sign(ress2(m))==-1 || sign(ress2(m))==1) kol(n)=m;

n=n+1;

end

end plot(kol,X(kol)/sum(X(:)),'g*'); hold off; legend('Profile Intensity','1st Derivative Gaussian','Zero Crossing'); %%

[Digital Image Processing]

- Deteksi tepi

[Digital Image Processing] - Deteksi tepi %% edges new=zeros(size(I,1),size(I,2)); for k=1:length(kol) for

%% edges

new=zeros(size(I,1),size(I,2));

for k=1:length(kol) for m=kol(k):size(I,2) if m==kol(k)

new(:,m)=ress2(kol(k));

else

new(:,m)=0;

end

end

end figure, imshow(new); title('Detected Edge'); %%

March 14, 2012

Okay sejauh ini kita mendapatkan hasil yang memuaskan, namun untuk citra yang lebih variatif langkah-langkah di atas harus dimodifikasi dengan ditambahkan yang dalam hayalan saya adalah profile intensity horisontalnya.

Kasus 2 Dalam hal ini kita akan mendeteksi citra dengan cara yang lebih gampang, yakni tidak dengan menggunakan profile proyeksi dari intensitas citra. Perhatikan program berikut ini:

clear all;

close all;

clc;

filename='image2.jpg';

% filename='sample2.png';

%% baca citra I=imread(filename);

I=rgb2gray(I);

[Digital Image Processing]

imshow(I); title('Original Image'); I=double(I); %%

%% gaussian 2 dimensi s=3; % standar deviasi x=[5 5]; % ukuran jendela

jendela=(x-1)/2;

m=0; % nilai rerata berada di origin

March 14, 2012

[X,Y]=meshgrid(-jendela(2):jendela(2),-jendela(1):jendela(1));

% gaussian dengan koefisien normalisasi

koef=(1/(2*s*s*pi));

% koef=1;

G=koef*exp(-(((X-m).^2+(Y-m).^2)/(2*(s^2))));

sumG=sum(G(:));

if sumG~=0

G=G/sumG;

end

%%

%% Second derivative of Gaussian (LoG)

koef2=((X.^2+Y.^2-2*s^2)/s^4);

LoG=G.*koef2;

LOg=LoG - sum(LoG(:))/prod(x); result=imfilter(I,LOg); figure, imshow(result); title('Edge detection using LoG'); %%

%% LoG dengan toolbox matlab h=fspecial('log',[5 5],3); hasil=imfilter(I,h); figure, imshow(hasil); title('Edge detection using matlab toolbox'); %%

%% langsung deteksi tepi

hasil2=edge(I,'log');

figure, imshow(hasil2); %%

%% langsung deteksi tepi hasil3 = edge(I,'zerocross',h); figure, imshow(hasil3); %%

Bila program di atas dieksekusi akan menghasilkan

[Digital Image Processing]

March 14, 2012

[Digital Image Processing] March 14, 2012 Bila menggunakan deteksi tepi lainnya, toolbox matlab EDGE memberikan bantuan.
[Digital Image Processing] March 14, 2012 Bila menggunakan deteksi tepi lainnya, toolbox matlab EDGE memberikan bantuan.
[Digital Image Processing] March 14, 2012 Bila menggunakan deteksi tepi lainnya, toolbox matlab EDGE memberikan bantuan.

Bila menggunakan deteksi tepi lainnya, toolbox matlab EDGE memberikan bantuan. Perhatikan hasil deteksi tepi menggunakan toolbox ini.

- Deteksi langsung menggunakan edge(‘log’);

[Digital Image Processing]

March 14, 2012

[Digital Image Processing] March 14, 2012 - Deteksi langsung menggunakan edge(‘zerocrossing’); Demikianlah artikel

- Deteksi langsung menggunakan edge(‘zerocrossing’);

- Deteksi langsung menggunakan edge(‘zerocrossing’); Demikianlah artikel tentang deteksi tepi menggunakan LoG

Demikianlah artikel tentang deteksi tepi menggunakan LoG semoga ada sedikit pencerahan () yang anda dapatkan. Jika tidak, mungkin ada kekeliruan dalam artikel saya, sehingga bisa dipertanyakan kembali. LoG yang dijelaskan memang memiliki pendeketan yang sedikit berbeda agar pembaca dapat memahami apa itu LoG, zero crossing dan mengapa bisa digunakan dalam mendeteksi tepi dari sebuah citra. Perlu diingat bahwa zero crossing tidak benar-benar nol, sehingga yang harus dilakukan adalah mendeteksi 8-neighborhood nya itu apa ada yang berbeda tanda apa tidak. Jika ada yang berbeda tanda, berarti itu adalah tepi. Demikian

@ thanks