Salah satu teknik yang
dapat digunakan untuk edge linking adalah local processing, yaitu dengan
menganalisa karakteristik pixel-pixel didalam seuatu neighborhood (3x3) atau
(5x5) pada semua titik (x,y) didalm citra yang telah mengalami edge-detection.
Selanjutnya semua titik yang sejenis dihubungkan sehingga membentuk kumpula
pixel yang memiliki sifat-sifat yang sama, Pada case ini edge-detection
digunakan metode sobel, karena hasil yang dihasilkan lebih baik dibandingkan
metode Robert dan Prewitt.
Dua sifat utama yang digunakan untuk menentukan kesamaan edge pixel dalam analisa ini adalah:
1. Besarnya respon gradient operator yang digunakan
2. Arah gradient
Sifat yang pertama dinyatakan dengan nilai Ñf yang telah dibahas sebelumnya. Jadi suatu edge pixel dengan koordinat (x’,y’) dan bertetangga dengan (x,y), dikatakan memiliki magnitude sama dengan pixel di (x,y) jika:
dimana
T adalah threshold positif.
Sedangkan arah vektor gradient dinyatakan dengan a(x,y) yang juga telah dibahas sebelumnya.
Suatu edge pixel dengan koordinat (x’,y’) dan bertetangga dengan
(x,y), dikatakan memiliki sudut yang sama dengan pixel di (x,y) jika:
dimana A adalah threshold sudut.
Suatu titik yang menjadi tetangga dari (x,y) dihubungkan dengan titik (x,y) jika memenuhi
kedua kriteria di atas, baik magnitude maupun sudutnya. Proses
linking ini diulang untuk seluruh lokasi titik yang ada di dalam citra.
Pada case ini program dibuat dengan menggunakan Matlab, sebagai
berikut:
A = imread('image.jpg');
B = rgb2gray(A);
C = double(B);
[p q] = size(C);
for i=2: p-2
for j=2: q-2
Gx = ((2*C(i+2,j+1) + C(i+2,j) + C(i+2,j+2)) - (2*C(i,j+1) + C(i,j) + C(i,j+2)));
Gy = ((2*C(i+1,j+2) + C(i,j+2) + C(i+2,j+2)) - (2*C(i+1,j) + C(i,j) + C(i+2,j)));
h(i,j) = sqrt(Gx.^2 + Gy.^2);
A(i,j) = atand(Gy/Gx);
h_gx(i,j) = Gx;
h_gy(i,j) = Gy;
end
end
h = uint8(h);
Thresh=120;
B=max(h,Thresh);
B(B==round(Thresh))=0;
B=uint8(B);
hold_a = 40;
hold_t = 15;
for i=2 : p-3
for j=2 : q-3
if(i>1 && i<p && p>1 && n<q)
if(abs((h(i+1,j) - h(i,j))) <= hold_t && abs((A(i+1,j) - A(i,j))) < hold_a)
img(i,j) = B(i,j);
img(i+1,j) = B(i+1,j);
end
if(abs((h(i,j+1) - h(i,j))) <= hold_t && abs((A(i,j+1) - A(i,j))) < hold_a)
img(i,j) = B(i,j);
img(i,j+1) = B(i,j+1);
end
if(abs((h(i+1,j+1) - h(i,j))) <= hold_t && abs((A(i+1,j+1) - A(i,j))) < hold_a)
img(i,j) = B(i,j);
img(i+1,j+1) = B(i+1,j+1);
end
else
img(i,j)=0;
end
end
end
figure;imshow(uint8(h_gx)); title(‘operator Gx');
figure;imshow(uint8(h_gy)); title('operator Gy');
figure;imshow(img); title('Hasil Edge Linking');
0 komentar:
Posting Komentar