Anda di halaman 1dari 22

LAPORAN PENELITIAN

PENGOLAHAN CITRA DIGITAL

PENERAPAN EKSTRAKSI FITUR PADA CITRA DIGITAL MENGGUNAKAN


ALGORITMA SCALE INVARIANT FEATURE TRANSFORM (SIFT)

Oleh:

AISYAH AWALIYAH

1810817310007

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS TEKNIK

UNIVERSITAS LAMBUNG MANGKURAT

BANJARMASIN

2021

DAFTAR ISI
DAFTAR ISI..............................................................................................................................2
DAFTAR GAMBAR.................................................................................................................2
BAB I.........................................................................................................................................4
PENDAHULUAN......................................................................................................................4
1.1 Latar Belakang.................................................................................................................4
1.2 Rumusan Masalah............................................................................................................5
1.3 Tujuan...............................................................................................................................5
1.4 Manfaat............................................................................................................................5
BAB II........................................................................................................................................6
PEMBAHASAN........................................................................................................................6
2.1 Algoritma Scale Invariant Feature Transform (SIFT)....................................................6
2.1.1 Sejarah Scale Invariant Feature Transform (SIFT).................................................7

2.2 Kelebihan dan Kekurangan Scale Invariant Feature Transform (SIFT).....................7

2.3 Pengaplikasian Scale Invariant Feature Transform (SIFT).........................................9

2.4 Tahap Dalam Perhitungan Scale Invariant Feature Transform (SIFT).....................11

2.2 Implementasi Kode Pada Matlab...................................................................................14


BAB III.....................................................................................................................................20
PENUTUP................................................................................................................................20
3.1 Kesimpulan....................................................................................................................20
DAFTAR PUSTKA.................................................................................................................21

DAFTAR GAMBAR
Gambar 2. 1 David G. Lowe......................................................................................................7
Gambar 2. 2 Ilustrasi Gaussian dan Difference of Gaussian Scale Space...............................11
Gambar 2. 3 Ilustrasi Deteksi Ekstrema...................................................................................12
Gambar 2. 4 Keypoint Deskriptor............................................................................................13
Gambar 2. 5 Hasil Implementasi Kode....................................................................................19
BAB I

PENDAHULUAN
1.1 Latar Belakang
Pengolahan Citra adalah serangkaian proses yang menghasilkan citra yang dikehendaki
dengan memasukan citra awal. Dalam pengolahan citra komputer yang digunakan dapat
berupa komputer pribadi ataupun superkomputer. Modul khusus untuk mengerjakan tugas
tertentu digunakan dalam perangkat lunak pengolahan citra. Juga dirancang memiliki
kemampuan agar pemakai dapat menuliskan kode programnya menggunakan modul khusus
[1].

Fitur merupakan hal-hal khusus yang dapat mencirikan suatu objek atau disebut
karakteristik. Ekstraksi fitur artinya adalah mengambil dan menyimpan hal-hal khusus
(karakteristik) dari suatu objek pada citra. Hal ini kemudian akan digunakan untuk
pembanding untuk mengenali suatu objek pada citra. Terdapat banyak metode yang dapat
digunakan untuk ekstraksi fitur diantaranya adalah Scale Invariant Feature Transform
(SIFT), Speed Up Robust Feature (SURF), Wavelet dan masih banyak lagi [2].

Scale Invariant Feature Transform (SIFT) Algoritma Scale-Invariant Feature


Transform (SIFT) adalah algoritma dimana suatu citra akan di konversi menjadi vektor fitur
lokal yang dapat digunakan untuk mendeteksi objek yang ingin dicari [6]. Algoritma SIFT
adalah algoritma ekstraksi fitur yang memiliki banyak keunggulan dibanding algoritma lain,
diantaranya adalah hasil ekstaksi invariant terhadap ukuran, translasi dan rotasi 2 dimensi,
perubahan iluminasi dan perubahan sudut pandang tiga dimensi. Selain itu juga bisa
mengekstrak banyak keypoint dari citra yang unik dan dapat benar-benar mencirikan secara
khusus (distinctive).[3].

Pengaplikasian penggunaan metode Algoritma Scale-Invariant Feature Transform


(SIFT) dilakukan dengan bahasa pemrograman Matlab (Matrix Laboratory Matlab (singkatan
dari "laboratorium matriks") adalah lingkungan komputasi numerik multi-paradigma dan
bahasa pemrograman berpemilik yang dikembangkan oleh MathWorks. Matlab
memungkinkan manipulasi matriks , penggambaran fungsi dan data, implementasi algoritma ,
pembuatan antarmuka pengguna , dan antarmuka dengan program yang ditulis dalam bahasa
lain. Meskipun Matlab ditujukan terutama untuk komputasi numerik, kotak alat opsional
menggunakan mesin simbolis MuPAD yang memungkinkan akses ke kemampuan komputasi
simbolik . Paket tambahan, Simulink , menambahkan simulasi multi-domain grafis dan
desain berbasis model untuk sistem dinamis dan tertanam . Pada tahun 2020, MATLAB
memiliki lebih dari 4 juta pengguna di seluruh dunia..[4].

Sebagaimana beberapa pemaparan di atas tentang penggunaan algoritma Scale-


Invariant Feature Transform (SIFT) maka dibuatlah makalah ini dengan judul “Penerapan
Ekstraksi Fitur Pada Citra Digital Menggunakan Algoritma Scale Invariant Feature
Tansform (SIFT)”, agar dapat memberikan informasi kepada orang-orang tentang bagaimana
cara penggunaan metode algoritma Scale Invariant Feature Tansform (SIFT) terhadap
ekstraksi pada suatu citra.

1.2 Rumusan Masalah


Rumusan masalah berdasarkan latar belakang diatas adalah sebagai berikut :

1. Apa itu algoritma Scale Invariant Feature Transform (SIFT) ?


2. Bagaimana cara implementasi Scale Invariant Feature Transform (SIFT) ?

1.3 Tujuan
Tujuan dari pembuatan makalah ini adalah sebagai berikut:

1. Mengetahui apa itu algoritma Scale Invariant Feature Transform (SIFT).


2. Mengetahui bagaimana cara implementasi Scale Invariant Feature Transform (SIFT).

1.4 Manfaat
Manfaat dari pembuatan makalah ini adalah memberikan bahan pembelajaran dan informasi
tentang apa itu algoritma Scale Invariant Feature Transform (SIFT) dan bagaimana cara
mengimplementasikannya.

BAB II

PEMBAHASAN
2.1 Algoritma Scale Invariant Feature Transform (SIFT)
Algoritma Scale-Invariant Feature Transform (SIFT) merupakan sebuah algoritma dimana
suatu gambar akan diubah menjadi vektor fitur lokal yang dapat digunakan untuk mendeteksi
objek yang ingin dicari. Algoritma SIFT sendiri terbagi menjadi beberapa bagian yaitu [5]:
1. Pembentukan Ruang Skala Gaussian dan Selisih Ruang Skala Gaussian.
2. Deteksi ekstrim (maksimum atau minimum) pada Selisih Ruang Skala Gaussian.
3. Mengatur penetapan orientasi.
4. Mendefinisikan deskriptor keypoint.

Untuk objek apa pun dalam gambar, poin menarik pada objek dapat diekstraksi untuk
memberikan "deskripsi fitur" dari objek tersebut. Deskripsi ini, diekstrak dari image training,
kemudian dapat digunakan untuk mengidentifikasi objek saat mencoba menemukan objek
dalam gambar uji yang berisi banyak objek lainnya. Untuk melakukan pengenalan yang
andal, penting agar fitur yang diekstrak dari gambar latihan dapat dideteksi bahkan di bawah
perubahan skala gambar, noise, dan iluminasi. Titik seperti itu biasanya terletak pada area
gambar dengan kontras tinggi, seperti tepi objek.

Karakteristik penting lainnya dari fitur ini adalah bahwa posisi relatif di antara fitur-
fitur tersebut dalam adegan asli tidak boleh berubah dari satu gambar ke gambar
lainnya. Misalnya, jika hanya empat sudut pintu yang digunakan sebagai fitur, semua itu akan
berfungsi terlepas dari posisi pintu; tetapi jika titik-titik pada bingkai juga digunakan,
pengenalan akan gagal jika pintu dibuka atau ditutup. Demikian pula, fitur yang terletak di
objek yang diartikulasikan atau fleksibel biasanya tidak akan berfungsi jika ada perubahan
dalam geometri internalnya yang terjadi antara dua gambar dalam kumpulan yang sedang
diproses. Namun, dalam praktiknya SIFT mendeteksi dan menggunakan lebih banyak fitur
dari gambar, yang mengurangi kontribusi kesalahan yang disebabkan oleh variasi lokal ini
dalam kesalahan rata-rata dari semua kesalahan pencocokan fitur.

SIFT dapat dengan kuat mengidentifikasi objek bahkan di antara kekacauan dan di bawah
oklusi parsial, karena deskriptor fitur SIFT tidak berubah terhadap penskalaan
seragam , orientasi , perubahan iluminasi, dan sebagian tidak berubah terhadap distorsi
affine [6]. Bagian ini merangkum algoritma SIFT asli dan menyebutkan beberapa teknik
bersaing yang tersedia untuk pengenalan objek di bawah gangguan dan oklusi parsial [7].

Deskriptor SIFT didasarkan pada pengukuran gambar dalam hal bidang reseptif [8]di
mana kerangka referensi invarian skala lokal ditetapkan oleh pemilihan skala lokal .
Penjelasan teoritis umum tentang hal ini diberikan dalam artikel Scholarpedia di SIFT [7]. 
2.1.1 Sejarah Scale Invariant Feature Transform (SIFT)
Scale Invariant Feature Transform (SIFT) adalah algoritma untuk fitur deteksi dalam
computer vision yang digunakan untuk mendeteksi dan menjelaskan local features pada citra
[9]. Algoritma ini ditemukan oleh David G. Lowe seorang peneliti dari Universitas of British
Columbia pada tahun 1999.

Gambar 2. 1 David G. Lowe


David G. Lowe memperkenalkan sebuah metode ekstraksi fitur yang dapat mengubah suatu
citra menjadi vektor fitur lokal yang kemudian digunakan sebagai pendekatan dalam
mendeteksi objek yang dimaksud [3].

2.2 Kelebihan dan Kekurangan Scale Invariant Feature Transform (SIFT)


Algoritma SIFT memiliki beberapa kelebihan dibanding algoritma ekstraksi fitur yang lain,
diantaranya adalah

a. Hasil ekstraksi fitur tidak berbeda dengan ukuran, terjemahan, dan rotasi dua dimensi.
b. Hasil ekstraksi sebagian tidak berubah terhadap perubahan iluminasi dan perubahan sudut
pandang tiga dimensi.
c. Mampu mengekstrak beberapa titik kunci dari gambar biasa.
d. Hasil ekstraksi ciri sangat berbeda.
e. Kekhasan deskriptor diukur dengan menjumlahkan nilai eigen dari deskriptor, yang
diperoleh dari analisis komponen utama dari deskriptor yang dinormalisasi oleh
variansnya. Ini sesuai dengan jumlah varian yang ditangkap oleh deskriptor yang berbeda,
oleh karena itu, dengan kekhasannya. PCA-SIFT (Analisis Komponen Utama yang
diterapkan pada deskriptor SIFT), fitur GLOH dan SIFT memberikan nilai tertinggi.
f. Deskriptor berbasis SIFT mengungguli deskriptor lokal kontemporer lainnya pada adegan
bertekstur dan terstruktur, dengan perbedaan kinerja yang lebih besar pada adegan
bertekstur.
g. Untuk perubahan skala dalam kisaran 2–2,5 dan rotasi gambar dalam kisaran 30 hingga 45
derajat, deskriptor berbasis SIFT dan SIFT sekali lagi mengungguli deskriptor lokal
kontemporer lainnya dengan konten adegan bertekstur dan terstruktur.
h. Pengenalan keburaman mempengaruhi semua deskriptor lokal, terutama yang didasarkan
pada tepi, seperti konteks bentuk , karena tepi menghilang dalam kasus keburaman yang
kuat. Tapi GLOH, PCA-SIFT dan SIFT masih berkinerja lebih baik dari yang lain. Ini juga
berlaku untuk evaluasi jika terjadi perubahan iluminasi [3].

Sedangkan kekurangan dari algoritma ini adalah

a. Fitur SIFT dan SIFT-like GLOH menunjukkan akurasi pencocokan tertinggi (tingkat


penarikan) untuk transformasi affine 50 derajat. Setelah batas transformasi ini, hasil mulai
menjadi kurang akurat [5].

Evaluasi yang dilakukan menunjukkan dengan kuat bahwa deskriptor berbasis SIFT, yang
berbasis wilayah, adalah yang paling kuat dan khas, dan oleh karena itu paling sesuai untuk
pencocokan fitur. Namun, deskriptor fitur terbaru seperti SURF belum dievaluasi dalam
penelitian ini.

SURF belakangan telah terbukti memiliki kinerja yang mirip dengan SIFT, sementara pada
saat yang sama jauh lebih cepat.  Penelitian lain menyimpulkan bahwa ketika kecepatan tidak
kritis, SIFT mengungguli SURF. Secara khusus, mengabaikan efek diskritisasi deskriptor
gambar murni di SIFT secara signifikan lebih baik daripada deskriptor gambar murni di
SURF, sedangkan ekstrema skala-ruang dari penentu Hessian yang mendasari detektor titik
minat murni di SURF secara signifikan poin minat yang lebih baik dibandingkan dengan
ekstrema skala-ruang dari Laplacian di mana detektor titik minat di SIFT merupakan
pendekatan numerik [10]. 

2.3 Pengaplikasian Scale Invariant Feature Transform (SIFT)


Dengan kemampuan SIFT untuk menemukan keypoint yang invariant dengan lokasi, skala
dan rotasi, dan kuat untuk melakukan transformasi affine (perubahan skala , rotasi , shear ,
dan posisi) dan perubahan illumination, maka algoritma ini dapat digunakan untuk
pengenalan objek [11].

Fitur SIFT pada dasarnya dapat diterapkan pada tugas apa pun yang memerlukan identifikasi
lokasi yang cocok antara gambar. Algoritma ini telah diterapkan untuk aplikasi seperti
pengenalan kategori objek tertentu dalam gambar 2D, rekonstruksi 3D, pelacakan gerakan
dan segmentasi, Robot localization, image panorama stitching and epopolar calibration.
Beberapa di antaranya dibahas secara lebih rinci di bawah ini.

a. Robot localization and mapping


Dalam aplikasi ini, sistem stereo trinocular digunakan untuk menentukan estimasi 3D
untuk lokasi keypoint [12]. Keypoint hanya digunakan ketika muncul di semua 3 gambar
dengan perbedaan yang konsisten, menghasilkan sangat sedikit outlier. Saat robot
bergerak, robot akan melokalisasi dirinya menggunakan pencocokan fitur ke peta 3D
yang ada, dan kemudian secara bertahap menambahkan fitur ke peta sambil memperbarui
posisi 3D mereka menggunakan filter Kalman. Ini memberikan solusi yang kuat dan
akurat untuk masalah lokalisasi robot di lingkungan yang tidak dikenal. Pemecah 3D
terbaru memanfaatkan penggunaan arah keypoint untuk menyelesaikan geometri
trinokular dari tiga keypoint dan pose absolut hanya dari dua keypoint [13][14],
pengukuran yang sering diabaikan tetapi bermanfaat yang tersedia di SIFT. Pengukuran
orientasi ini mengurangi jumlah korespondensi yang diperlukan, lebih lanjut
meningkatkan ketahanan secara eksponensial.

b. Panorama stitching
Pencocokan fitur SIFT dapat digunakan dalam panorama stitching untuk rekonstruksi
panorama sepenuhnya otomatis dari gambar non-panorama. Fitur SIFT yang diekstraksi
dari gambar input dicocokkan satu sama lain untuk menemukan k tetangga terdekat untuk
setiap fitur. Korespondensi ini kemudian digunakan untuk mencari m candidate matching
image untuk setiap image (gambar). Homografi antara pasangan gambar kemudian
dihitung menggunakan RANSAC dan model probabilistik digunakan untuk verifikasi.
Karena tidak ada batasan pada gambar input, pencarian grafik diterapkan untuk
menemukan komponen yang terhubung dari pencocokan gambar sehingga setiap
komponen yang terhubung akan sesuai dengan panorama. Akhirnya untuk setiap
komponen yang terhubung penyesuaian bundel dilakukan untuk menyelesaikan parameter
kamera bersama, dan panorama ditampilkan menggunakan multi-band blending . Karena
pendekatan pengenalan objek yang diilhami SIFT untuk panorama stitching, sistem yang
dihasilkan tidak sensitif terhadap urutan, orientasi, skala, dan pencahayaan gambar.
Gambar input dapat berisi banyak panorama dan gambar noise (beberapa di antaranya
bahkan mungkin bukan bagian dari gambar komposit), dan rangkaian panorama dikenali
dan ditampilkan sebagai output [15].
c. Pemodelan, pengenalan, dan pelacakan 3D
Aplikasi ini menggunakan fitur SIFT untuk pengenalan objek 3D dan pemodelan 3D
dalam konteks augmented reality, di mana objek sintetis dengan pose akurat
ditumpangkan pada gambar nyata. Pencocokan SIFT dilakukan untuk sejumlah gambar
2D adegan atau objek yang diambil dari sudut yang berbeda. Ini digunakan dengan
penyesuaian bundel yang diinisialisasi dari matriks esensial atau trifocal tensor untuk
membangun model 3D jarang dari pemandangan yang dilihat dan untuk secara bersamaan
memulihkan pose kamera dan parameter kalibrasi. Kemudian posisi, orientasi dan ukuran
objek virtual didefinisikan relatif terhadap bingkai koordinat model yang dipulihkan.
Untuk pergerakan pertandingan online, Fitur SIFT lagi diekstraksi dari bingkai video saat
ini dan dicocokkan dengan fitur yang sudah dihitung untuk mode dunia, menghasilkan
satu set korespondensi 2D-ke-3D. Korespondensi ini kemudian digunakan untuk
menghitung pose kamera saat ini untuk proyeksi virtual dan rendering akhir. Teknik
regularisasi digunakan untuk mengurangi jitter dalam proyeksi virtual [16]. Penggunaan
arah SIFT juga telah digunakan untuk meningkatkan ketahanan proses ini[13][14].
Ekstensi 3D SIFT juga telah dievaluasi untuk pengenalan dan pengambilan objek 3D
yang sebenarnya [17][18].

d. 3D SIFT-like descriptors for human action recognition


Perluasan deskriptor SIFT ke data spatio-temporal 2 + 1 dimensi dalam konteks
pengakuan tindakan manusia dalam sekuens video telah dipelajari [17][19][20][21].
Perhitungan histogram dependen posisi lokal dalam algoritma 2D SIFT diperluas dari dua
hingga tiga dimensi untuk menggambarkan fitur SIFT dalam domain spatio-temporal.
Untuk aplikasi pengakuan tindakan manusia dalam urutan video, pengambilan sampel
video pelatihan dilakukan baik di titik-titik kepentingan spatio-temporal atau di lokasi,
waktu, dan skala yang ditentukan secara acak. Daerah spatio-temporal di sekitar titik-titik
bunga ini kemudian dijelaskan menggunakan deskriptor SIFT 3D. Deskriptor ini
kemudian dikelompokkan untuk membentuk model spatio-temporal of word. Deskriptor
SIFT 3D yang diekstraksi dari video uji kemudian dicocokkan dengan kata - kata ini
untuk klasifikasi tindakan manusia [21].
Dilaporkan hasil yang jauh lebih baik dengan pendekatan deskriptor SIFT 3D mereka
daripada dengan pendekatan lain seperti deskriptor SIFT 2D sederhana dan Gradient
Magnitude[22].
e. Menganalisa Otak Manusia dalam Gambar Resonansi Magnetik 3D
Teknik Morphometry (FBM) berbasis fitur menggunakan ekstrema dalam perbedaan
ruang skala Gaussian untuk menganalisis dan mengklasifikasikan gambar resonansi
magnetik 3D (MRI) otak manusia. FBM memodelkan gambar secara probabilistik
sebagai kolase fitur independen, tergantung pada geometri gambar dan label kelompok,
misalnya subjek dan subjek sehat dengan penyakit Alzheimer (AD). Fitur-fitur pertama-
tama diekstraksi dalam gambar individual dari perbedaan 4D ruang skala Gaussian,
kemudian dimodelkan dalam hal penampilan, geometri, dan statistik kemunculan bersama
grup di seluruh rangkaian gambar. FBM divalidasi dalam analisis AD menggunakan
seperangkat ~ 200 MRI volumetrik otak manusia, secara otomatis mengidentifikasi
indikator AD yang ada di otak dan mengklasifikasikan AD ringan dalam gambar baru
dengan tingkat 80% [23].

2.4 Tahap Dalam Perhitungan Scale Invariant Feature Transform (SIFT)


1. Gaussian dan Difference of Gaussian Scale Space
Dalam Algoritma SIFT, fungsi Gaussian digunakan untuk membangun suatu ruang skala
sehingga disebut Ruang Skala Gaussian. Tujuan tahapan ini adalah untuk mencari dan
menghitung citra dan skala. Diimplementasikan secara efisien dengan fungsi Spatial
Gaussian Difference yang berfungsi untuk menampilkan titik-titik potensial sesuai dengan
orientasi dan skala invariannya. Ilustrasi Ruang Skala Gaussian dan Beda Skala Gausian
ditunjukkan pada gambar 2.2.

Gambar 2. 2 Ilustrasi Gaussian dan Difference of Gaussian Scale Space


Rumus Untuk mendapatkan Gaussian Blur adalah seperti dibawah ini
1
G ( x , y , σ )= 2
e−(x 2 + y 2)/2 σ (1)
2π σ

Dimana nilai sigma σ sudah ditentukan dengan e = 2.71.

Selanjutnya adalah proses Gaussian Scale Space

L ( x , y , σ )=G ( x , y , σ )∗I ( x , y ) (2)

Dimana

G(x , y , σ ) = Gaussian Blur

I (x, y) = Original Image

Setelah kita mendapatkan nilai perhitungan dari Gaussian Scale Space selanjutnya adalah
menghitung Difference of Gaussian Scale (DoG). Dengan rumus seperti dibawah ini

D ( x , y , σ )=L ( x , y , k σ )−L( x , y , σ) (3)

Keterangan :

 L( x , y , σ ) adalah konvolusi dengan citra asli I ( x , y ) dengan Gaussian filter


G ( x , y , σ ) pada skala σ.
 L(x , y , k σ ) adalah konvolusi dengan citra asli I (x , y ) dengan Gaussian filter
G ( x , y , k σ ) pada skala k σ dengan nilai k =√ 2.

2. Keypoint Localization
Deteksi ekstremum (nilai maksimum dan minimum) bisa didapatkan dengan cara
membandingkan nilai setiap piksel pada DoG Scale Space dengan 8 piksel yang ada
disekelilingnya dan 9 piksel lainnya yang bersesuaian pada citra DoG sebelum dan
sesudahnya . Jika nilai piksel yang dimaksud lebih atau kurang daripada nilai-nilai piksel
pembandingannya maka koordinat piksel tersebut ditandai sebagai ekstremum. ilustrasi
dapat dilihat seperti pada gambar 2.3 [5].
Gambar 2. 3 Ilustrasi Deteksi Ekstrema
Setelah mendapatkan titik-titik ekstremum maka ditingkatkan lokalisasinya dengan
akurasi subpiksel dengan menggunakan ekspansi Taylor ordo kedua dari fungsi Gaussian
Blur G(x , y , σ ), sehingga posisi ekstremum sebenarnya didapatkan dengan rumus berikut
[6]:
2 −1
∂ D ∂D
z=−( ) (4)
∂ x2 ∂x

Untuk menghitung nilai keypoint ekstremum dengan rumus :


−1
( ) 1 ∂D
D z =D+ z (5)
2 ∂x

Jika nilai D(z) kurang dari nilai threshold (0.03) maka keypoint tersebut dihilangkan [6].
Selain penghilangan keypoint yang kurang dari threshold dilakukan juga penghapusan
keypoint yang tidak stabil yang berasa di daerah edge. Terdapat matriks Hessian 2x2
digunakan untuk menemukan kurvatur sehingga rasio dari kurvatur dapat diketahui [8].

H=
[ Dxx
Dxy
D xy
D yy ] (6)

2
D xx+ D yy (r +1)
2
< (7)
D xx D yy −( D xy) r

3. Orientation Assignment
Penetapan orientasi ini digunakan citra Gaussian smooth L yang mempunyai skala paling
dekat dengan skala keypoint. Setiap citra sampel L(x,y) magnitude m(x,y) dan orientasi
0(x,y) dihitung dengan perbedaan piksel sebagai berikut
m ( x , y )= √ ¿ ¿ (8)

L ( x , y +1 )−L ( x , y +1 )
θ ( x , y )=arctan ⁡( ) (9)
L ( x+1 , y )−L ( x−1 , y )

4. Keypoints Descriptor:
Deskriptor bisa dihitung untuk masing-masing keypoint, langkah dilakukan pada gambar
terdekat dengan skala keypoint. Pertama-tama dibuat orientasi dengan 4x4 piksel dengan
8 bin untuk tiap keypoint [6].
Histogram didapatkan pada langkah penetapan orientasi yang dihitung magnitude dan
nilai orientasi untuk sampel dalam wilayah 16x16 disekeliling keypoint. Magnitude lalu
dihitung dengan fungsi Gaussian dengan nilai σ sama dengan satu setengah lebar
deskriptor. Lalu deskriptor menjadi vektor dari semua nilai histogram. Karena 4x4=16
histogram dengan masing-masing memiliki 8bin, maka vektor berarti memiliki 128
elemen [5].

Gambar 2. 4 Keypoint Deskriptor

2.2 Implementasi Kode Pada Matlab


1. Mengambil Gambar Input
Pertama-tama sistem mengambil gambar input yang ingin diproses terlebih.
Kemudian mengkonversi gambar menjadi grayscale jika gambar masih berwarna.
image = imread('C:\Users\facew\Downloads\Compressed\SIFT-master\SIFT-master\Penguins.jpg');
%membaca input gambar

image2= image;
%deklarasi variabel image2 = image

[Irows, Icols, chan]=size(image);


%menghitung jumlah baris atau kolom
if(chan == 3)
image = rgb2gray(image); %mengkonversi input gambar ke gray level (jika masih belum gray)
end
I = double(image); %mengkoversi ke double precision

2. Gaussian dan Difference of Gaussian Scale Space


Tujuan dari tahap ini adalah untuk pencarian dan perhitungan gambar dan skala. Secara
efisien diimplementasikan dengan fungsi Different of Gaussian Scale Space yang
berfungsi untuk melakukan identifikasi titik-titik potensi yang sesuai dengan orientasi dan
skala invariant.
Pada bagian ini mendeklarasikan variable yang dibutuhkan untuk perhitungan Gaussian
dan DoG diantaranya adalah :
- Sigma yaitu nilai sigma untuk filter Gaussian
- DOG_Times: berapa kali Perbedaan Gaussian harus dihitung
- Oktave: Berapa oktaf yang harus dihitung
- k: adalah nilai skala yang akan dikalikan dengan sigma untuk menghitung Gaussian dan
menemukan DOG

Sigma = 1.6;
%deklarasi nilai sigma
k=sqrt(2);
%deklarasi nilai ksi nilai k
DOG_Times = 4;
%deklarasi nilai DOG_Times
Octaves = 3;
%deklarasi nilai octaves
Octave_outputs = ScaleSpace( I,DOG_Times,Octaves,Sigma,k );
%nilai octave output adalah hasil perhitungan fungsi scalespace

Selanjutnya adalah fungsi ScaleSpace yaitu fungsi yang menghitung ruang skala
menggunakan Perbedaan Gaussian dan mengembalikan beberapa gambar keluaran
berdasarkan Jumlah Oktaf dan Jumlah DOF yang dihitung.

Fungsi ScaleSpace
function Octave_outputs = ScaleSpace( I_input,DOG_Times,Octaves,Sigma,k )

DOG = cell(1,DOG_Times); %Buat array sel matriks kosong.


penghitung = 0; % untuk k oktaf berbeda.

for j=1:Octaves

%First Gaussian Filter


GaussainSize = ceil(7*(Sigma * (k^counter)));
H = fspecial('gaussian' , [GaussainSize GaussainSize], Sigma * (k^counter));
if(j>1) % Turunkan skala gambar setelah oktaf pertama
I_input = I_input(1:2:end,1:2:end);
end
for i=1:DOG_Times
L1 = conv2(I_input,H,'same');
GaussainSize = ceil(7*(Sigma*(k^(i+counter))));
H = fspecial('gaussian' , [GaussainSize GaussainSize], Sigma*(k^(i+counter)));
L2 = conv2(I_input,H,'same');

%DOG dan simpan


Octave_outputs(j).DOG{i} = struct('DOG',L2 - L1,'L2',L2,'L1',L1,'S',Sigma*(k^(i+counter)));
end
counter = counter + 1;
end

3. Key Point Localization

Deteksi ekstremum (nilai maksimum dan minimum) bisa didapatkan dengan cara
membandingkan nilai setiap piksel pada DoG Scale Space dengan 8 piksel yang ada
disekelilingnya dan 9 piksel lainnya yang bersesuaian pada citra DoG sebelum dan
sesudahnya[5].
Dx= (current(r,c+1) - current(r,c-1))/2;
Dy= (current(r+1,c) - current(r-1,c))/2;
Dz= (above(r,c) - below(r,c))/2;
D_firstDerivative = [Dx; Dy; Dz];
Dxx = current(r,c-1) - 2*current(r,c) + current(r,c+1);
Dyy = current(r-1,c) - 2*current(r,c) + current(r+1,c);
Dzz = below(r,c) - 2*current(r,c) + above(r,c);
Dxy = ((current(r+1,c+1) - current(r+1,c-1)) - (current(r-1,c+1) - current(r-1,c-1))) / 4;
Dxz = ((above(r,c+1) - above(r,c-1)) - (below(r,c+1) - below(r,c-1))) / 4;
Dyz = ((above(r+1,c) - above(r-1,c)) - (below(r+1,c) - below(r-1,c))) / 4;
D_secondDerivative = [Dxx Dxy Dxz;Dxy Dyy Dyz;Dxz Dyz Dzz];
extremum = -inv(D_secondDerivative)*D_firstDerivative;
if(I_max_X == 1)
D=max_X;
else
D=min_X;
End

%Maxima and Minima dengan offest


%Estimasi yang diinterpolasi untuk lokasi ekstrem.

x=c;
y=r;
z=j;
if(extremum(1) > 0.5 && ceil(c+extremum(1))<cols)
extremum(1) = ceil(x+extremum(1));
x= extremum(1);
end
if(extremum(2) > 0.5 && ceil(r+extremum(2))<rows)
extremum(2) = ceil(y+extremum(2));
y= extremum(2);
end
if(extremum(3) > 0.5 && ceil(j+extremum(3))<=DOG_Times)
extremum(3) = ceil(z+extremum(3));
z= extremum(3);
L = Octave_outputs(i).DOG{z}.L1;
S = Octave_outputs(i).DOG{z}.S;
end
D_extremum = D + 0.5 * transp(D_firstDerivative) * extremum;
Dxx = current(y,x-1) - 2*current(y,x) + current(y,x+1);
Dyy = current(y-1,x) - 2*current(y,x) + current(y+1,x);
Dxy = ((current(y+1,x+1) - current(y+1,x-1)) - (current(y-1,x+1) - current(y-1,x-1))) / 4;
if (abs(D_extremum) >= (0.03*255)) % semua extrema dengan nilai | D (ˆx) | kurang dari
0,03 dibuang
H = [Dxx Dxy;Dxy Dyy]; % Menghilangkan respons tepi
if ( (trace(H).^2)/det(H) < ((r_tr+1).^2)/r_tr ) %Eliminasi key points if r_tr >10

4. Orientation Assignment
Penetapan orientasi ini digunakan citra Gaussian smooth L yang mempunyai skala paling
dekat dengan skala keypoint. Setiap citra sampel L(x,y) magnitude m(x,y) dan orientasi
0(x,y) dihitung dengan perbedaan piksel sebagai berikut
sigma = winfactor * Sigma * (2.^(z/k));
radius = round(3*sigma);
hist = zeros(1,OriBins);
angle = atan((L(y,x+1)-L(y,x-1))/(L(y+1,x)-L(y-1,x)));
% Buat jendela di sekitar titik kunci dan buat histogram di sekitar jendela ini

for new_r = y-radius:y+radius


for new_c = x-radius:x+radius
if (new_r > 1 && new_c > 1 && new_r < rows - 2 && new_c < cols - 2)
gradVal = sqrt(power(L(new_r+1,new_c)-L(new_r-
1,new_c),2)+power(L(new_r,new_c+1)-L(new_r,new_c-1),2));
distsq = (y - new_r).^2 + (x - new_c).^2;
if (gradVal > 0.0 && distsq < radius * radius + 0.5)
weight = exp(- distsq / (2.0 * sigma * sigma));
% Ori berada dalam kisaran -pi hingga pi

angle = atan((L(new_r,new_c+1)-L(new_r,new_c-1))/(L(new_r+1,new_c)-
L(new_r-1,new_c)));
bin = ceil(OriBins * (angle + pi + 0.001) / (2.0 * pi));
bin = min(bin, OriBins);
hist(bin) = hist(bin) + weight * gradVal;
end
end
end
end
% ekstrak orientasi dominan

[~, in] = max(hist);

%conversion from bins to angles

angle = 2*pi*(in)/OriBins;
temp_Peaks(counter) = [struct('r_peak',y,'c_peak',x,'i_octave',i,'ori',angle,'S',S)];
counter = counter +1;
end
end
end
end
end
end

5. Menampilkan hasil
Selanjutnya adalah membuat matriks untuk menggambarkan hasil output. Dan memanggil
fungsi “showkeys” untuk menampilkan citra yang sudah diproses menggunakan
algoritma SIFT.
% Buat matriks terakhir untuk menggambar output
for i=1:length(temp_Peaks)
c = temp_Peaks(i).c_peak * power(2,(temp_Peaks(i).i_octave)-1); % untuk mendapatkan posisi
semula
in case the octave was not the first
r = temp_Peaks(i).r_peak * power(2,(temp_Peaks(i).i_octave)-1);
locs(i,:) = [r c temp_Peaks(i).S temp_Peaks(i).ori];
end

image = image2;
computed_features = counter - 1
showkeys(image, locs);

Dengan kode yang telah dijelaskan diatas maka hasil yang didapatkan adalah seperti pada
gambar 2.5

Gambar 2. 5 Hasil Implementasi Kode


BAB III

PENUTUP
3.1 Kesimpulan
Berdasarkan pembahasan diatas maka kesimpulan yang dapat ditarik diantaranya adalah :

1. Algoritma Scale-Invariant Feature Transform (SIFT) adalah algoritma dimana suatu citra
akan di konversi menjadi vektor fitur lokal yang dapat digunakan untuk mendeteksi objek
yang ingin dicari. Algoritma SIFT adalah algoritma ekstraksi fitur yang memiliki banyak
keunggulan dibanding algoritma lain, diantaranya adalah hasil ekstaksi invariant terhadap
ukuran, translasi dan rotasi 2 dimensi, perubahan iluminasi dan perubahan sudut pandang
tiga dimensi. Selain itu juga bisa mengekstrak banyak keypoint dari citra yang unik dan
dapat benar-benar mencirikan secara khusus (distinctive) [3]. Tahap-tahap dalam
mengimplementasikan algoritma SIFT adalah mencari nilai ekstrim pada skala ruang,
menentukan keypoint, penentuan orientasi, deskriptor keypoint.
2. Pengaplikasian metode Scale-Invariant Feature Transform (SIFT) berhasil
diimplementasikan pada bahasa pemrograman matlab.

DAFTAR PUSTKA
[1] F. A. S. and M. K. S. R. Sulistiyanti, Pengolahan Citra Dasar Dan Contoh
Penerapannya. Yogyakarta, 2016.
[2] D. P. R. Davin Rizki P., Syaifudin, "Ekstraksi Fitur Berbasis Invariant Moment Pada
Sistem", Jur. Tek. Inform. Teknol. Ind. Univ. Trisakti, ‫ عدد‬March, ,210–205 .‫ص‬.‫ص‬
2018.

[3] F. P. Hilman ‫ و‬U. Telkom, "Perbandingan Metode Surf Dan Sift Dalam Sistem
Identifikasi Tanda Tangan", e-Proceeding Eng., 2015 ,2481–2467 .‫ص‬.‫ ص‬,2 ‫ عدد‬,2 .‫مج‬.

[4] A. Firmansyah, "Dasar-dasar Pemrograman Matlab", IlmuKomputer, 2007.

[5] C. Mikolajczyk, K.; Schmid, "A Performance Evaluation Of Local Descriptor", IEEE
Trans. Pattern Anal. Mach. Intell., 2005.

[6] D. G. Lowe, "Object recognition from local scale-invariant features", Proc. Int. Conf.
Comput. Vis., 1999, doi: 10.1109/ICCV.1999.790410.

[7] T. Lindeberg, "Scale invariant feature transform", Scholarpedia, doi:


10.4249/scholarpedia.10491.

[8] A. Koenderink, Jan and van Doorn, "Representation of local geometry in the visual
system", Biol. Cybern., 3 .‫مج‬.

[9] D. G. Lowe, "Object Recognition from Local Scale-Invariant Features", Comput. Sci.
Dep., 1999.

[10] T. Lindeberg, "Image matching using generalized scale-space interest points", J. Math.
Imaging Vis., 52 .‫مج‬.

[11] B. S. & C. Unsalan, "Urban Area and Building Detection Using SIFT Keypoints and
Graph Theory", IEEE Trans. Geosci. Remote Sens., 2009.

[12] J. Se, S.; Lowe, David G.; Little, "Vision-based mobile robot localization and mapping
using scale-invariant features", Proc. IEEE Int. Conf. Robot. Autom., doi:
doi:10.1109/TGRS.2008.2008440.

[13] T. Fabbri, Ricardo; Duff, Timothy; Fan, Hongyi; Regan, Margaret; de Pinho, David;
Tsigaridas, Elias; Wampler, Charles; Hauenstein, Jonathan; Kimia, Benjamin; Leykin,
Anton; Pajdla, "Trifocal Relative Pose from Lines at Points and its Efficient
Solution"", 2019.

[14] B. Fabbri, Ricardo; Giblin, Peter; Kimia, "Camera Pose Estimation Using First-Order
Curve Differential Geometry", Lect. Notes Comput. Sci., 2012.

[15] D. G. Brown, M.; Lowe, "Recognising Panoramas", Proc. ninth IEEE Int. Conf.
Comput. Vis., 2003.

[16] I. G. and D. G. Lowe, "What and where: 3D object recognition with accurate pose in
Toward Category-Level Object Recognition", Springer-Verlag, 2006.

[17] T. Flitton, G.; Breckon, "Object Recognition using 3D SIFT in Complex CT


Volumes", Proc. Br. Mach. Vis. Conf., 2010.

[18] N. Flitton, G.T., Breckon, T.P., Megherbi, "A Comparison of 3D Interest Point
Descriptors with Application to Airport Baggage Object Detection in Complex CT
Imagery", Pattern Recognit., 2013.

[19] T. Laptev, Ivan & Lindeberg, "Local descriptors for spatio-temporal recognition",
ECCV’04 Work. Spat. Coherence Vis. Motion Anal. Springer Lect. Notes Comput. Sci.,
doi: 10.1007/11676959_8.

[20] C. S. and T. L. Ivan Laptev, Barbara Caputo, "Local velocity-adapted motion events
for spatio-temporal recognition", Comput. Vis. Image Underst., 2007, doi:
10.1016/j.cviu.2006.11.023.

[21] M. Scovanner, Paul; Ali, S; Shah, "A 3-dimensional sift descriptor and its application
to action recognition", Proc. 15th Int. Conf. Multimed., 2007, doi:
10.1145/1291233.1291311.

[22] F.-F. Niebles, J. C. Wang, H. and Li, "Unsupervised Learning of Human Action
Categories Using Spatial-Temporal Words", Proc. Br. Mach. Vis. Conf. (BMVC).
Edinburgh.

[23] M. T. W. M. W. I. D. L. C. T. Arbel, "Feature-based Morphometry: Discovering


Group-related Anatomical Patterns", Neuroimage, 2010, doi:
doi:10.1016/j.neuroimage.2009.10.032.

Anda mungkin juga menyukai