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
pengolahan citra, penulis menggunakan perangkat lunak
berikut:
1. Microsoft Visual C++
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 membuat aplikasi yang berkaitan dengan 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:
- 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
- Kemudian pilih menu yang paling atas yaitu "Install Visual Studio 2008", lalu klik
- Tunggulah hingga progressbar selesai loading sehingga muncul tombol "Next"
- Kemudian klik tombol "Next" di atas
- 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"
- Pilih saja fitur "Default" sesuai rekomendasi sistem. Jika, tampilan Anda sudah sesuai dengan gambar di atas. Silakan klik tombol "Install"
- Inilah proses instalasi komponen, tunggulah beberapa menit hingga proses benar- benar selesai
- Instalasi telah selesai dilakukan maka klik tombol "Finish".
Instalasi OpenCV
3. Tunggu sampai
proses ekstraksi selesai maka OpenCV sudah terinstall dan dapat
digunakan.
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.
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 Project Directories
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