Pernhakah loe berfikir, untuk menghitung Luas dan Keliling sebuah bangun dalam sebuah media komputer??
Mungkin sudah banyak program yg di pasarkan secara gratis atau berbayar sekalipun. . .tpi mereka bisa membuatnya, kenapa kita tidak bisa. .
Yupz. . .dalam blog ini gue mau sharing ilmu yg kmarin gue bikin bareng Willy 'Saga' Witanto, sebagai tugas mata kuliah Pengolahan Citra Digital!!
Tapi dlam kesempatan kali ini,programnya memang gk perfect (maklum msih newbie ^_^"). .bisa berjalan dlam beberapa kondisi saja. .ya yg penting kita share aja ilmu. ..oke. .
Cekidot. .
Dalam pembuatan program ini, gue makai metode Morfologi, yg lebih tepatnya Morfologi Gradient untuk pencarian tepinya. .lalu dihitung dah. .dan dsini gue nggunain strell (Structuring Element) dengan ukuran 3x3 px. . . .n harap berhati2 dalam pemilihan Strell yg tepat. . .soalnya ini yg sngat berpengaruh dalam penghitungannya. ..
Kita bhas stu - stu dlu ya. . .klo sekaligus kgk bisa. . . .hahahaha
kita mulai dari keliling ini dlu. . .
gini algoritmanya :
Ada yg tau knapa kok kelilingnya dibagi 2?? Yupz anda benar.. . .
Dalam penentuan connected componentnya gue nggunain Morfologi Gradient dengan strell 1px, krna Morfologi Gradient itu hasil dari Dilasi - Erosi, maka saat didilasi akan ada penambahan 1 px, dan saat dierosi terjadi pengurangan 1px, sehingga waktu digabungkan jadi 2 px. Lah sudah kelihatan kan so harus dibagi 2 untuk menghasilkan keliling yg tepat. . .gini maksudnya :
Dalam percobaan gue, penghitungan keliling sangat akurat pada bangun persegi, sedang pada lingkaran belum akurat., . .ya ini dikarenakan belum tepatnya strell yg dipilih. . .
n utk contoh programnya kyak gini (gue buat m.filenya)
l = imread(gambar);
w = strel('square',3);
lg = rgb2gray(l);
lbw = im2bw(lg);
lpro = 1 - lbw;
ld = imdilate(lpro,w);
le = imerode(lpro,w);
lgrap = ld - le;
hasil = sum(lgrap(:));
keliling = hasil/2
Nah untk selanjutnya msalh luas. . .
dsini gue cuman ngmbangin dari metode keliling, so klo gue bilang keliling, bisa dilihat diatas itu ya. . .
teorinya sama degn keliling smpai ketemu connected componentnya. ..krena dalam program ini gue baru ngembangin yg bangun persegi aja, n keliling kn rumusnya = 2 x (Panjang + lebar). .so dalam hal ini kita hrus ngetahui salah stu sisinya dlu. . .trus dibolak balik aja kn rumus matematikanya. . .
Gini algoritmanya :
Disitu kok lebarnya dibagi 4 ya??? -_-?
Ya gue nggunain filterasi biar bisa ditentukan so penghitungannya kyak keliling itu. . .nah krena yg ditemukan hanyalah sisi lebar, n menghasilkan dua sisi lebar. . .so harus dibagi 4. . .iya kan??
Nah dg algoritma sperti itu. . .udah kelihatan kelemahannya. . .algoritma ini hanya bisa nanganin bangun datar segi 4 beraturan yang memiliki sisi vertikal. .
Gini mksudnya :
Nah untuk program m filenya kyak gini ya :
l = imread(gambar);
lg = rgb2gray(l);
lbw = im2bw(lg);
lpro = 1 - lbw;
w = strel('square',3);
ld = imdilate(lpro,w);
le = imerode(lpro,w);
lgrap = ld - le;
hasil = sum(lgrap(:));
keliling = hasil/2;
wv = [0 1 0;0 1 0;0 1 0];
sam = abs(imfilter(double(lgrap),wv));
t = max(sam(:));
sam = sam >= t;
lebar = sum(sam(:));
lebar = lebar / 4;
panjang = keliling / 2 - lebar;
luas = panjang .* lebar
Ya dalam program gue msih bnyak kelamahan, ya dg ini mungkin agan - agan bisa ngembangkannya, buat kita belajar bareng. . .ya mohon sarannya ya!!!
Buat yg pingin dsni bisa download. . .
1. M File Menghitung Keliling
2. M File Menghitung Luas
3. Gambar yg gue gunain





0 comments:
Posting Komentar