Selasa, 27 Januari 2015

Edge Linking Metode Robert dan Prewitt menggunakan Matlab

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');

Written by: Admin ngampus mulu, ga mampus Updated at : 22:12

0 komentar:

Posting Komentar