Selasa, 06 Januari 2015

Pendeteksian Tepi

  Nama Anggota Kelompok :

       Muhammad Husni           (54411579)
       Muhammad Setiawan      (54411978)
       Nanda Nastasyia              (5B414876)
       Suha  Sutrisno                  (56411923)

       4IA03

Deteksi tepi pada suatu citra adalah suatu proses yang menghasilkan garis-garis tepi dari obyek citra, tujuannya yaitu untuk :

¨  Meningkatkan penampakan garis batas suatu daerah atau objek di dalam citra
¨  Mmenandai bagian yang menjadi detail citra
¨  Mencirikan batas objek dan berguna untuk proses segmentasi dan identifikasi objek
¨  Memperbaiki detail citra yang kabur

Terdapat 3 macam tepi dalam citra, yaitu :

¨  Tepi Curam
                Tepi curam adalah tepi dengan perubahan intensitas yang tajam. Arah tepi berkisar 90 derajat.
¨  Tepi Landai
                Tepi landai yaitu tepi dengan sudut arah yang kecil. Tepi landai dapat dianggap terdiri dari sejumlah tepi-tepi lokal yang lokasinya berdekatan.
¨  Tepi yang mengandung derau
                Umumnya tepi yang terdapat pada aplikasi visi komputer mengandung derau. Operasi peningkatan kualitas citra dapat dilakukan terlebih dahulu sebelum pendektesian tepi.

Algoritma Pendeteksian Tepi

                1. Siapkan gambar.
                2. Terapkan Gaussianblur pada gambar, yang berguna untuk mengurangi noise.
                3. Konversi gambar yang sudah terfilter, menjadi grayscale.
                4. Menggunakan fungsi sobel. lai

Instalasi Software

Dalam pembuatan aplikasi pengolahacitrapenulis menggunakaperangkalunak berikut:

1. Microsoft VisuaC++


Microsoft Visual C++ adalah software yang digunakan sebagai compiler. Compiler adalah perangkat   lunak   yang   digunakan   untuk   mengubah   source   code   dari   suatu  bahasa pemrograman (dalam kasus ini bahasa pemrogramannya yaitu C++) menjadi nativecode / bahasa mesin (file executable) agar dapat dieksekusi oleh komputer. MicrosoftVisual C++ ini dibuat oleh perusahaan Microsoft.

2. OpenCV

OpenCV (Open Computer Vision) merupakan semacam library yang digunakan dalam membua aplikasi  yan berkaita denga computer  vision.  OpenCV  juga menyediakan banyak fungsi onalitas, yang tentunya dapat mempersingkat waktu dalam pembuatan aplikasi yang lumayan rumit.

Instalasi Microsoft Visual Studio 2008


Adapun langkah-langkah instalasi MS Visual Studio 2008 sebagai berikut:
  1. Masukkan DVD software MS Visual Studio 2008 kedalam DVD Room PC/laptop Anda,kemudian  akan  muncul  auto  run  CD.  Jika  tidak  muncul  maka  klik  file Setup.exe atau  jika anda mendownload software MS Visual Studio langsung saja klik setup
  2. Kemudian pilih menu yang paling atas yaitu "Install Visual Studio 2008", lalu klik
  3. Tunggulah hingga progressbar selesai loading sehingga muncul tombol "Next"
  4. Kemudian klik tombol "Next" di atas
  5. Karena penulis menggunakan lisensi yang disediakan oleh kantor teman saya, secara otomatis product key number akan terisi .  Jangan lupa pilih "I have read and accept the license terms" lalu klik tombol "Next"
  6. Pilih saja fitur "Default" sesuai rekomendasi sistem. Jika, tampilan Anda sudah sesuai dengan gambar di atas. Silakan klik tombol "Install"
  7. Inilah proses instalasi komponen, tunggulah beberapa menit hingga proses benar- benar selesai
  8. Instalasi telah selesai dilakukan maka klik tombol "Finish".

Instalasi OpenCV

1.    Download terlebih dahulu software OpenCv 2.4.6
2.    Setelah selesai download kita akan akan muncul jendela instalasi klik saja next maka kita akan masuk ke proses ekstra.
3.    Tunggu sampai proses ekstraksi selesai maka OpenCV sudah terinstall dan dapat digunakan.


Konfigurasi Pengaturan OpenCV Pada Visual Studio

1. Untuk melakukan konfigurasi pada OpenCv kita bisa melakukannya dengan masuk keFile

-> New -> Project

2. Setelah itu pilih Win32 Console Application

3. Beri nama Deteksi_tepi (ini dapat diganti sesuka kita)

4. Setelah itu kita setting ProjecDirectories

Klik kanan project>>Properties >>Linker >>Input >>

releaseopencv_features2d246.lib opencv_highgui246.lib opencv_core246.lib opencv_imgproc246.lib opencv_ml246.lib opencv_objdetect246.lib opencv_video246.lib opencv_contrib246.lib opencv_calib3d246.lib



debugopencv_features2d246.lib opencv_highgui246d.lib opencv_core246d.lib opencv_imgproc246d.lib opencv_ml246d.lib opencv_objdetect246d.lib opencv_video246d.lib opencv_contrib246d.lib opencv_calib3d246d.lib

  
Klik Tools -> Options -Projects and Solutions -> VC++ Directories -> Library
C:\opencv\build\x86\vc9\lib


Include
C:\opencv\build\include
C:\opencv\include\opencv



Logika Program:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
Perintah  include  diatas  merupakan  prepocessor  yang  digunakan  untuk  melampirkan  file header

int high_switch_value = 0;
int highInt = 0;
int low_switch_value = 0;
int lowInt = 0;
Untuk mendeklarasikan variabel dengan tipe integer.

void switch_callback_h( int position ){
highInt = position;
}
void switch_callback_l( int position ){
lowInt = position;
}
Untuk mendeklarasikan fungsi deteksi tepi yang dimana posisinya dibagi menjadi 2 yaitu low dan high

IplImage* img = cvLoadImage( "rame.jpg", 0 ); //nama gambar adalah rame.jpg
IplImage* img_b = cvCreateImage( cvSize(img->width+N-1,img->height+N-1), img->depth, img->nChannels );
IplImage* out = cvCreateImage( cvGetSize(img_b), IPL_DEPTH_8U, img_b->nChannels );
Untuk menyisipkan gambar yang akan diproses deteksi tepinya dengan nama rame.jpg
CvPoint offset = cvPoint((N-1)/2,(N-1)/2);
cvCopyMakeBorder(img, img_b, offset, IPL_BORDER_REPLICATE, cvScalarAll(0));
Untuk menambahkan garis border

cvNamedWindow( name, 1 );
Untuk membuat sebuah window

int aperature_size = N;
double lowThresh = 20;
double highThresh = 40;
Pendeklasian variable ukuran aperature dimana untuk low adalah 20 dan high 40

cvCreateTrackbar( "High", name, &high_switch_value, 4, switch_callback_h );
cvCreateTrackbar( "Low", name, &low_switch_value, 4, switch_callback_l );
while( 1 ) {
switch( highInt ){
case 0:
highThresh = 200;
break;
case 1:
highThresh = 400;
break;
case 2:
highThresh = 600;
break;
case 3:
highThresh = 800;
break;
case 4:
highThresh = 1000;
break;
}
switch( lowInt ){
case 0:
lowThresh = 0;
break;
case 1:
lowThresh = 100;
break;
case 2:
lowThresh = 200;
break;
case 3:
lowThresh = 400;
break;
case 4:
lowThresh = 600;
break;
}
Untuk membuat sebuah trackbars dimana terdapat 4 pilihan deteksi tepi pada settingan low dan high

cvCanny( img_b, out, lowThresh*N*N, highThresh*N*N, aperature_size );
cvShowImage(name, out);
if( cvWaitKey( 15 ) == 27 )
break;
}
Perintah diatas sebagai proses deteksi tepi menggunakan canny tranformation

cvReleaseImage( &img );
cvReleaseImage( &img_b );
cvReleaseImage( &out );
cvDestroyWindow( name );
return 0;
}
Program telah selesai dan siap melepas resourcenya


Listing:

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
int high_switch_value = 0;
int highInt = 0;
int low_switch_value = 0;
int lowInt = 0;
void switch_callback_h( int position ){
highInt = position;
}
void switch_callback_l( int position ){
lowInt = position;
}
int _tmain(int argc, _TCHAR* argv[])
{
const char* name = "Edge Detection Window";
// ukuran kernel
int N = 7;
// Set up images
IplImage* img = cvLoadImage( "Penguins.jpg", 0 ); //nama gambar adalah rame.jpg
IplImage* img_b = cvCreateImage( cvSize(img->width+N-1,img->height+N-1), img->depth, img->nChannels );
IplImage* out = cvCreateImage( cvGetSize(img_b), IPL_DEPTH_8U, img_b->nChannels );
// menambahkan garis border
CvPoint offset = cvPoint((N-1)/2,(N-1)/2);
cvCopyMakeBorder(img, img_b, offset, IPL_BORDER_REPLICATE, cvScalarAll(0));
// Membuat Window
cvNamedWindow( name, 1 );
// Variable
int aperature_size = N;
double lowThresh = 20;
double highThresh = 40;
// Membuat trackbars
cvCreateTrackbar( "High", name, &high_switch_value, 4, switch_callback_h );
cvCreateTrackbar( "Low", name, &low_switch_value, 4, switch_callback_l );
while( 1 ) {
switch( highInt ){
case 0:
highThresh = 200;
break;
case 1:
highThresh = 400;
break;
case 2:
highThresh = 600;
break;
case 3:
highThresh = 800;
break;
case 4:
highThresh = 1000;
break;
}
switch( lowInt ){
case 0:
lowThresh = 0;
break;
case 1:
lowThresh = 100;
break;
case 2:
lowThresh = 200;
break;
case 3:
lowThresh = 400;
break;
case 4:
lowThresh = 600;
break;
}
// Proses deteksi tepi menggunakan canny tranformation
cvCanny( img_b, out, lowThresh*N*N, highThresh*N*N, aperature_size );
cvShowImage(name, out);
if( cvWaitKey( 15 ) == 27 )
break;
}
// Program selesai dan melepas resource
cvReleaseImage( &img );
cvReleaseImage( &img_b );
cvReleaseImage( &out );
cvDestroyWindow( name );
return 0;
}


Output:




sumber:
http://livemakefun.blogspot.com/2013/11/pendeteksi-tepi-citra-dengan-metode.html
http://livemakefun.blogspot.com/2013/11/pendeteksi-tepi-citra-dengan-metode.html
http://harry-arudam.blogspot.com/2013/02/pengertian-deteksi-tepi.html



Tidak ada komentar:

Posting Komentar