# Hack Your Skills! to be Professional Mechatronics
Fungsi Dasar Dilasi dan Erosi dalam Citra
Script PHP untuk dilasi dan erosi pada citra |
Untuk yang lagi belajar tentang Dilasi dan Erosi dalam cintra,
mungkin script ini akan berguna. Sekilas saja, Dilasi dan Erosi dalam
citra dipelajari dalam subbab Morfologi citra. Proses dilasi berfungsi
untuk mengisi tepian citra, sedangkan proses erosi berfungsi untuk
menggerus atau meng-erosi tepian citra.
Dalam proses
erosi dan dilasi membutuhkan citra penggerus / pengisi yang disebut
dengan structuring element. Dalam beberapa literatur structuring element
ini ada yang menyebutnya dengan istilah skeleton. Skeleton ini
standarnya berbentuk simetris dan memiliki titik tengah pixel atau yang
disebut dengan istilah origin.
Nantinya, proses
penggerusan dan pengisian cintra ditentukan oleh format atau bentuk dari
skeleton ini. Pada tulisan ini saya hanya akan menampilkan source dari
fungsi yang akan dipakai untuk men-dilasi dan meng-erosi citra,
masing-masing fungsi memiliki parameter cintra dan struncturing element /
skeleton. Sedangkan untuk script implementasinya, bisa Anda temukan di
artikel lainnya di blog ini.
<?php /* Malang/Sabtu/18/Oktober/2014 coder : haripinter */ function print_arrbin($arr){ for($m=0; $m<count($arr); $m++){ for($n=0; $n<count($arr[$m]); $n++){ echo $arr[$m][$n]." "; } echo "\n"; } } // param : citra in, structuring element function dilasibin($ci,$se){ // citra out $co = array(); $posY = floor(count($se)/2); $posX = floor(count($se[0])/2); for($m=0; $m<count($ci); $m++){ $tmp = array(); for($n=0; $n<count($ci[$m]); $n++){ $current = $ci[$m][$n]; $bool = false; for($j=0; $j<count($se); $j++){ for($k=0; $k<count($se[$j]); $k++){ // 2 is don't care pixel mark if($se[$j][$k]!=2){ $bool = ($ci[$m+$j-$posX][$n+$k-$posY]==1 && $ci[$m+$j-$posX][$n+$k-$posY]==$se[$j][$k]) || $bool; } } } if($bool) $current = 1; $tmp[$n] = $current; } array_push($co, $tmp); } return $co; } // param : citra in, structuring element function erosibin($ci,$se){ // citra out $co = array(); $posY = floor(count($se)/2); $posX = floor(count($se[0])/2); for($m=0; $m<count($ci); $m++){ $tmp = array(); for($n=0; $n<count($ci[$m]); $n++){ $current = $ci[$m][$n]; $bool = true; for($j=0; $j<count($se); $j++){ for($k=0; $k<count($se[$j]); $k++){ // 2 is don't care pixel mark $cur = $ci[$m+$j-$posX][$n+$k-$posY]; if($se[$j][$k]!=2 && isset($cur)){ $bool = ($cur == $se[$j][$k]) && $bool; } } } $current = $bool? 1:0; $tmp[$n] = $current; } array_push($co, $tmp); } return $co; } function openingbin($ci,$se){ $ci = erosibin($ci,$se); $ci = dilasibin($ci,$se); return $ci; } function closingbin($ci,$se){ $ci = dilasibin($ci,$se); $ci = erosibin($ci,$se); return $ci; } // untuk gray scale function print_arr($arr){ for($m=0; $m<count($arr); $m++){ for($n=0; $n<count($arr[$m]); $n++){ echo pr($arr[$m][$n])." "; } echo "\n"; } } function pr($n){ return ($n < 10)? ' '.$n : $n; } // param : citra in, structuring element function dilasi($ci,$se){ $co = array(); $posY = floor(count($se)/2); $posX = floor(count($se[0])/2); for($m=0; $m<count($ci); $m++){ $tmp = array(); for($n=0; $n<count($ci[$m]); $n++){ $current = $ci[$m][$n]; $tmq = array(); $con = 0; for($j=0; $j<count($se); $j++){ for($k=0; $k<count($se[$j]); $k++){ $tmq[$con] = $ci[$m+$j-$posX][$n+$k-$posY] + $se[$j][$k]; $con++; } } $current = max($tmq); $tmp[$n] = $current; } array_push($co,$tmp); } return $co; } // param : citra in, structuring element function erosi($ci,$se){ $co = array(); $posY = floor(count($se)/2); $posX = floor(count($se[0])/2); for($m=0; $m<count($ci); $m++){ $tmp = array(); for($n=0; $n<count($ci[$m]); $n++){ $current = $ci[$m][$n]; $tmq = array(); $con = 0; for($j=0; $j<count($se); $j++){ for($k=0; $k<count($se[$j]); $k++){ $xtc = $m+$j-$posX; if($ci[$m+$j-$posX][$n+$k-$posY] != null){ $tmq[$con] = $ci[$m+$j-$posX][$n+$k-$posY] - $se[$j][$k]; $con++; } } } $current = min($tmq); if($current < 0) $current = 0; $tmp[$n] = $current; } array_push($co,$tmp); } return $co; } function komplemen($img){ $tmp = $img; for($m=0; $m<count($img); $m++){ for($n=0; $n<count($img[$m]); $n++){ if($img[$m][$n] != 2){ $tmp[$m][$n] = ($img[$m][$n] == 1)? 0 : 1; } } } return $tmp; } function not($n){ return ($n==0)? 1:0; } ?>
Top Artikel :
Written by ElangSakti
Fungsi Dasar Dilasi dan Erosi dalam Citra
Bahasan: Script PHP untuk dilasi dan erosi pada citra Untuk yang lagi belajar tentang Dilasi dan Erosi dalam cintra, mungkin script ini akan b...
Published at Rabu, 12 November 2014, Updated at Rabu, 12 November 2014
Reviewed by dr. on
Rating: 4.7
Fungsi Dasar Dilasi dan Erosi dalam Citra
Bahasan: Script PHP untuk dilasi dan erosi pada citra Untuk yang lagi belajar tentang Dilasi dan Erosi dalam cintra, mungkin script ini akan b...
Published at Rabu, 12 November 2014, Updated at Rabu, 12 November 2014
Reviewed by dr. on
Rating: 4.7
Langganan:
Posting Komentar
(
Atom
)
Tidak ada komentar :
Posting Komentar