OPERASI PADA CITRA BINER - andyusuf-informatika

New Post

Minggu, 30 Juli 2017

OPERASI PADA CITRA BINER



1. Pengantar Operasi Biner


Beberapa pemrosesan citra mengacu pada citra biner. Sebagai contoh, dengan menggunakan citra biner, perbandingan panjang dan lebar objek dapat diperoleh. Di depan juga telah dibahas aplikasi citra biner pada morfologi. Namun, tentu saja masih banyak operasi lain yang memanfaatkan citra biner. Beberapa contoh diulas dalam artikel ini.


2. Representasi Bentuk

Fitur suatu objek merupakan karakteristik yang melekat pada objek. Fitur bentuk merupakan suatu fitur yang diperoleh melalui bentuk objek dan dapat dinyatakan melalui kontur, area, dan transformasi, sebagaimana ditunjukkan pada Gambar 8.1. Fitur bentuk biasa digunakan untuk kepentingan identifikasi objek. Sebagai contoh, rasio kebulatan dipakai sebagai salah satu fitur pada identifikasi tanaman (Wu, dkk., 2007) dan Polar Fourier Transform (PFT) dapat dipakai untuk identifikasi daun (Kadir, dkk., 2011).

3. Ekstraksi Tepi Objek

Tepi objek pada citra biner dapat diperoleh melalui algoritma yang dibahas oleh Davis (1990). Pemrosesan dilakukan dengan menggunakan 8-ketetanggaan. Sebagai penjelas, lihatlah Gambar 8.2. Piksel P  mempuyai 8 tetangga yang dinyatakan dengan P0 hingga P7. Adapun algoritma tertuang pada Algoritma 8.1.

4. Mengikuti Kontur


Mengikuti kontur (contour following) merupakan suatu metode yang digunakan untuk mendapatkan tepi objek. Terkait dengan hal itu terdapat istilah kontur eksternal dan kontur internal. Gambar berikut memberikan ilustrasi tentang perbedaan kedua jenis kontur tersebut. Piksel yang menjadi bagian kontur eksternal  (ditandai dengan f) , sedangkan piksel yang menjadi bagian kontur internal terletak di dalam objek itu sendiri.

Catatan penting
Istilah kontur identik dengan batas (boundary). Itulah sebabnya fitur yang berhubungan dengan kontur sering dinamakan deskriptor batas.

Kontur Internal
Salah satu cara untuk mendapatkan kontur internal yang diurutkan menurut letak piksel adalah dengan memanfaatkan algoritma pelacakan kontur moore. Algoritma ini digunakan pada peta topografik (pradha, dkk,2010).

Selanjutnya lansung saja pada coding octave yang berhubungan pada materi artikel ini :
Program mencari tepi biner objek dengan fungsi
===========================================
function [g] = tepibiner(f)
%    tepi biner  Berguna untuk mendapatkan tepi objek
%     pada citra biner   
[jum_baris, jum_kolom] = size(f);
g = zeros(jum_baris, jum_kolom);
for q = 2 : jum_baris - 1
    for p = 2 : jum_kolom - 1
        p0 = f(q, p+1);
        p1 = f(q-1, p+1);
        p2 = f(q-1, p);
        p3 = f(q-1, p-1);
        p4 = f(q, p-1);
        p5 = f(q+1, p-1);
        p6 = f(q+1, p);
        p7 = f(q+1, p+1);
        sigma = p0 + p1 + p2 + p3 + p4 + p5 + p6 + p7;
        if sigma == 8
            g(q, p) = 0;
        else
            g(q, p) = f(q, p);
        end
    end
end 
end % akhir fungsi
u=imread('c:\image\hotmabin.jpg');
g=tepibiner(u);imshow(g)

program mencari tepi biner objek tanpa fungsi
===========================================
f=imread('c:\image\daun_bin.tif');
[jum_baris, jum_kolom] = size(f);
g=f;
g = zeros(jum_baris, jum_kolom);
for q = 2 : jum_baris - 1
    for p = 2 : jum_kolom - 1
        p0 = f(q, p+1);
        p1 = f(q-1, p+1);
        p2 = f(q-1, p);
        p3 = f(q-1, p-1);
        p4 = f(q, p-1);
        p5 = f(q+1, p-1);
        p6 = f(q+1, p);
        p7 = f(q+1, p+1);
        sigma = p0 + p1 + p2 + p3 + p4 + p5 + p6 + p7;
        if sigma == 8
            g(q, p) = 0;
        else
            g(q, p) = f(q, p);
        end
    end
end 
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)


function hasil=perim1(bw)
u=inbound_tracing(bw);
hasil=length(u) -1;
end  %akhir fungsi

img=imread('c:\image\daun_bin.tif');
perim1(img)


program perimeter/keliling  tanpa inbound_tracing
=========================================
img=imread('c:\image\daun_bin.tif');
perimeter=length(img) -1


program mencari luas objek citra biner denga fungsi
===========================================
function hasil = luas(bw)
% Untuk menghitung luas citra bw (citra biner)
[tinggi, lebar] = size(bw);
hasil = 0;
for p = 1 : tinggi
    for q = 1 : lebar
        if bw(p, q) == 1
            hasil = hasil + 1;
        end
    end
end
end    % akhir fungsi
Daun = imread('c:\image\daun_bin.tif');
luas(Daun)


program mencari luas objek citra biner tanpa fungsi
==========================================
x = imread('c:\image\daun_bin.tif');
[tinggi, lebar] = size(x);
hasil = 0;
for p = 1 : tinggi
    for q = 1 : lebar
        if x(p, q) == 1
            hasil = hasil + 1;
        end
    end
end
luas_citra_daun_bin=hasil

output
luas_citra_daun_bin =  31862

program diameter objek biner dengan fungsi   (masih debug)
================================================
function [diameter, x1, y1, x2, y2] = peroleh_diameter(BW)
U = get_contour(BW);
n = length(U);
jarak_maks = 0;
piksel1 = 0;
piksel2 = 0;
for p=1 : n-1
    for q=p+1 : n
        jarak = sqrt((U(p,1)-U(q,1)) ^ 2 + (U(p,2)-U(q,2)) ^ 2);
if jarak > jarak_maks
            jarak_maks = jarak;
            piksel1 = p;
            piksel2 = q;
        end
    end
end

y1 = U(piksel1, 1);
x1 = U(piksel1, 2);
y2 = U(piksel2, 1);
x2 = U(piksel2, 2);
diameter = jarak_maks;
 end %akhir fungsi

Daun = imread('c:\image\daun_bin.tif');
[d,x1,y1,x2,y2] = peroleh_diameter(Daun);
d


program diameter objek biner tanpa fungsi 
==============================
x= imread('c:\image\daun_bin.tif');
n = length(x);
jarak_maks = 0;
piksel1 = 0;
piksel2 = 0;
for p=1 : n-1
    for q=p+1 : n
        jarak = sqrt((x(p,1)-x(q,1)) ^ 2 + (x(p,2)-x(q,2)) ^ 2);
if jarak > jarak_maks
            jarak_maks = jarak;
            piksel1 = p;
            piksel2 = q;
        end
    end
end
diameter = jarak_maks

program pusat massa dan fitur menggunakan pusat massa dengan fungsi
==========================================================
function [pusat_x, pusat_y] = centroid(BW)
% CENTROID Untuk memperoleh pusat massa sebuah objek
%    yang terletak pada citra biner BW

[tinggi, lebar] = size(BW);
pusat_x = 0;
pusat_y = 0;
luas = 0;
for q = 1 : tinggi
   for p = 1 : lebar
      if BW(q, p) == 1
         luas = luas + 1;
         pusat_x = pusat_x + p;
         pusat_y = pusat_y + q;
      end
   end
end
pusat_x = pusat_x / luas;
pusat_y = pusat_y / luas;
end  %akhir fungsi

Daun = imread('C:\Image\daun_bin.tif');
[x, y] = centroid(Daun); imshow(Daun);
[panjang, lebar] = size(Daun);
line([0 lebar], [round(y) round(y)],’Color’,’b’)
line([round(x) round(x)], [0 panjang],’Color’,’b’)


program pusat massa dan fitur menggunakan pusat massa tanpa fungsi
==========================================================

objek = imread('C:\Image\daun_bin.tif'); 
[tinggi, lebar] = size(objek);
pusat_x = 0;
pusat_y = 0;
luas = 0;
for q = 1 : tinggi
   for p = 1 : lebar
      if objek(q, p) ==1
         luas = luas + 1;
         pusat_x = pusat_x + p;
         pusat_y = pusat_y + q;
      end
   end
end
pusat_x = pusat_x / luas;
pusat_y = pusat_y / luas;
imshow(objek);
line([0 lebar], [round(pusat_y) round(pusat_y)],’Color’,’b’)
line([round(pusat_x) round(pusat_x)], [0 tinggi],’Color’,’b’)

Salah satu hasil dari codinjg diatas yaitu :


Terimas Kasih dan Semangat Belajar

Tidak ada komentar:

Posting Komentar