SIFT
Sudah lama sekali sejak terakhir saya membuat konten di blog ini yah? kembali lagi bersama saya Giusti Arya P. Kali ini saya akan membahas tentang Featur Detection dengan menggunakan metode SIFT (Scale Invariant Feature Transform) Apa saja yang dibutuhkan untuk melakukan projek ini??
Yang dibutuhkan untuk melakukan projek ini adalah:- Laptop atau Komputer
- Visual Studio 2013
- Library OpenCV3.1
- CMake 3.12V
1. Langkah pertama adalah membuka Visual Studio 2013 lalu buat New Project beri nama dan klik finish.
2. Masukkan Code dibawah ini pada kolom yang tersedia ^^
3. Berikut sebagai Header
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/xfeatures2d.hpp"
#include "opencv2/highgui.hpp"
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace cv::xfeatures2d;
4. Masukkan fungsi fungsi berikut di dalam int main(){...}
5. Masukkan fungsi untuk load 2 image dan resize
Mat image1 = imread("1.jpg", CV_LOAD_IMAGE_COLOR);
Mat image2 = imread("7.jpg", CV_LOAD_IMAGE_COLOR);
resize(image1, image1, Size(330,
600));
resize(image2,
image2, Size(400, 700));
*untuk langkah ke 5 pastikan terlebih dahulu ada gambar untuk diload didalam folder debug
6. Fungsi keypoint pada tiap
1.jpg 7.jpg
if
(!image1.data || !image2.data){
return -1;}
int minHessian = 25;
Ptr<SIFT>
detector = SIFT::create(minHessian);
std::vector<KeyPoint>
kpoint_1, kpoint_2;
detector->detect(image1,
kpoint_1);
detector->detect(image2, kpoint_2);
7. Masukkan representasi vector antar gambar
Ptr<SIFT>
extractor = SIFT::create();
Mat
descriptors_1, descriptors_2;
extractor->compute(image1,
kpoint_1, descriptors_1);
extractor->compute(image2,
kpoint_2, descriptors_2);
BFMatcher
matcher(NORM_L2);
std::vector< DMatch >
matches;
matcher.match(descriptors_1,
descriptors_2, matches);
8. Masukkan garis dan menampilkan window pergambungan kedua gambar
Mat img_matches;
drawMatches(image1, kpoint_1, image2, kpoint_2, matches, img_matches);
imshow("Matches",
img_matches);
9. Build program diatas lalu run
Cara kerja dari SIFT Detector sebagai berikut:
SIFT Detector mendeteksi titik titik
berdasarkan kekontrasan warna dan intensitas warna pada gambar yang akan
menentukan letak Keypoints. Tiap titik dicari vectornya menggunakan descriptor.
Setelah ditemukan vectornya lalu dibandingkan kedua gambar tersebut dengan
menggunakan fungsi BFMatcher, setelah dibandingkan Keypoint antar kedua gambar lalu
dibuat garis yang menyambungkan Keypoints yang bernilai sama dengan fungsi
drawMatches.
Key Localization dilakukan oleh dectector digunakan untuk mencaro KeyPoint dan letak dari KeyPoint. Descriptor berfungsi sebagai pencari nilai vector dari KeyPoint. KeyPoint match adalah mencocokan vector dari kedua gambar untuk menunjukan objek pada gambar 1 yang ada pada gambar.




0 Response to "Feature Detection"
Posting Komentar