View
217
Download
0
Category
Preview:
Citation preview
Perancangan Aplikasi Perkiraan Wajah Manusia di Masa
Depan Menggunakan Algoritma Warp dan Morph
Berbasis Android
Artikel Ilmiah
Diajukan kepada
Fakultas Teknologi Informasi
untuk Memperoleh Gelar Sarjana Komputer
Oleh :
Martha Sadari Nugraheni
NIM: 672011198
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
September 2015
1
Perancangan Aplikasi Perkiraan Wajah Manusia di Masa
Depan Menggunakan Algoritma Warp dan Morph
Berbasis Android
1) Martha Sadari Nugraheni,
2) Alz Danny Wowor,
3) Yos Richard Beeh
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Jl. Diponegoro 52-60, Salatiga 50711, Indonesia
Email: 1)
672011198@student.uksw.edu, 2)
alzdanny.wr@gmail.com,
3)yos.fti.uksw@gmail.com
Abstract Research on human face aging using digital image processing has been done with
various algorithms. Warp and morph algorithm has the ability to distort image, so it can
be used to make aging effect on human face image. With Research and Development
method, an Android-based application created to estimate human face aging using warp
and morph algorithm. Image distortion in this algorithm done by triangulation
transformation based on source and destination mesh formed from facial features points.
To do morphing with only one input image, the value of Affine transformation matrix
should be determined first to calculate the value of destination mesh in a single face. The
determination of affine matrix value done through experiment by modifying young image
mesh to be looked closely similar with the old face. The image result for specific face
shape’s criteria which is tested shows a good similarity between simulation result image
with the truth image in aspect of facial features shape.
Keywords: Digital Image, Warp, Morph, Face Aging, Android
Abstrak Penelitian mengenai penuaan wajah manusia dengan memanfaatkan pengolahan
citra telah dilakukan dengan berbagai algoritma. Algoritma warp dan morph memiliki
kemampuan untuk mendistorsi citra, sehingga dapat dimanfaatkan untuk menghasilkan
efek penuaan pada citra wajah manusia. Dengan metode Research and Development
dibuat aplikasi berbasis Android untuk memperkirakan penuaan wajah seseorang
menggunakan algoritma warp dan morph. Distorsi citra pada algoritma ini dilakukan
dengan transformasi triangulasi berdasarkan mesh awal dan akhir yang terbentuk dari
titik-titik bagian wajah. Untuk melakukan proses morphing dengan hanya satu citra
masukan, terlebih dulu nilai matriks transformasi Affine untuk mendapatkan mesh akhir
sebuah wajah. Penentuan nilai matriks Affine dilakukan melalui percobaan modifikasi
mesh wajah muda yang dibuat semirip mungkin dengan gambar wajah tua. Citra keluaran
yang dihasilkan untuk kriteria bentuk wajah yang diuji menunjukkan kemiripan yang baik
antara wajah hasil simulasi dengan wajah sebenarnya dalam aspek bentuk bagian-bagian
wajah.
Kata Kunci: Citra Digital , Warp, Morph, Penuaan Wajah, Android.
1)
Mahasiswa Fakultas Teknologi Informasi Jurusan Teknik Informatika, Universitas Kristen Satya
Wacana, Salatiga. 2)
Staff Pengajar Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana, Salatiga 3)
Staff Pengajar Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana, Salatiga
2
1. Pendahuluan
Proses pengolahan citra merupakan hal yang sering dijumpai dalam
penggunaan teknologi di kehidupan sehari-hari. Seiring dengan munculnya
beragam media sosial, aplikasi pengolah citra semakin diminati. Hasil survei The
Renfrew Center Foundation kepada 1.710 responden menunjukkan bahwa 70%
perempuan serta lebih dari 50% laki-laki mengedit foto wajahnya sebelum
diunggah ke media sosial agar terlihat lebih menarik [1]. Hal ini menunjukkan
bahwa bagi kebanyakan orang, wajah merupakan bagian yang penting dan perlu
perhatian khusus. Banyak orang ingin memiliki wajah yang sempurna, namun
wajah setiap orang pasti mengalami penuaan seiring bertambahnya usia. Proses
penuaan adalah proses fisiologis yang akan terjadi pada semua makhluk hidup.
Proses ini meliputi seluruh organ tubuh termasuk kulit yang merupakan salah satu
jaringan tubuh yang secara langsung memperlihatkan terjadinya proses penuaan.
Berbagai masalah dan kelainan kulit dapat timbul pada penuaan kulit, salah
satunya adalah kulit kendur. Dengan mengendurnya kulit, maka terjadi perubahan
posisi bagian-bagian wajah serta timbul kerutan.
Sebuah metode untuk membuat model kerutan pada penuaan kulit manusia
pernah diusulkan oleh Bando et al. [2]. Triangle mesh digunakan untuk
memetakan bagian tubuh, kemudian dilakukan operasi geometri berupa distorsi
mesh untuk membuat efek kerutan. Sayangnya, Bando tidak membuatnya menjadi
sebuah aplikasi, namun hanya memproses model kerutan tersebut menggunakan
sebuah Computer Graphic software.
Salah satu metode pengolahan citra digital yang menggunakan distorsi mesh
sebagai dasarnya adalah image warping. Warping dari dua gambar yang berbeda
dan memadukan warp tersebut akan menghasilkan morph dari kedua gambar.
Beberapa teknik dalam image morphing yaitu cross dissolve, feature morph, dan
mesh morph. Berdasarkan hasil penelitian oleh Gunadi et al. [3], dari ketiga
teknik tersebut yang memiliki efisiensi waktu dan kualitas hasil terbaik adalah
mesh morph.
Penelitian terhadap pengolahan citra telah dilakukan oleh banyak peneliti,
sehingga mucul berbagai pemanfaatan dari pengolahan citra. Dari pengolahan
sederhana seperti rotating, scaling, dan recoloring, sampai pada morphing
sehingga dapat menghasilkan gambar gerak atau animasi yang berguna di bidang
seni dan hiburan. Algoritma image denoising dapat digunakan untuk mendeteksi
asli atau tidaknya suatu dokumen dalam sebuah citra. Dalam bidang kedokteran,
pengolahan citra yang dikombinasikan dengan berbagai disiplin ilmu dapat
mendeteksi adanya penyakit dalam tubuh manusia. Selain itu, para peneliti juga
melakukan pengolahan citra dengan berbagai metode untuk mengetahui penuaan
pada wajah manusia.
Pengolahan citra dalam penuaan wajah manusia telah diteliti dengan
berbagai algoritma, diantaranya Curvature-Weighted (CW), Learning-based
Mahalanobis (LM), dan morph. Penelitian yang menggunakan morph oleh
Nguyen [4] memerlukan lebih dari satu gambar masukan dari seseorang untuk
menghasilkan efek penuaan. Maka dari itu, muncul gagasan untuk membuat
sebuah aplikasi yang menghasilkan efek penuaan wajah menggunakan warp dan
3
morph yang hanya memerlukan satu gambar masukan. Aplikasi ini akan
memberikan gambaran wajah bagi siapa saja yang ingin mengetahui efek penuaan
pada wajah seseorang, sehingga bermanfaat untuk keperluan pencarian orang
hilang, pencarian pelaku tindak kriminal, maupun bagi siapa saja yang ingin
mengetahui wajah seseorang di masa depan.
Berdasarkan latar belakang yang ada, maka rumusan masalah dalam
penelitian ini adalah bagaimana cara menerapkan algoritma warp dan morph
dalam pembuatan aplikasi berbasis Android untuk memperkirakan wajah
seseorang di masa mendatang. Aplikasi ini dibuat pada platform Android karena
sistem operasi perangkat mobile yang paling banyak digunakan di dunia adalah
Android [5]. Mobile phone merupakan perangkat yang data penjualannya saat ini
paling banyak dan terus meningkat dari tahun ke tahun, jauh lebih banyak
dibandingkan perangkat lain seperti Personal Computer (PC) [6]. Minat
pengguna Android terhadap aplikasi pengolah citra juga cukup tinggi, terbukti
dalam 10 aplikasi gratis yang paling banyak diunduh oleh seluruh pengguna
Android, 2 diantaranya merupakan aplikasi pengolah citra [7].
Untuk memperjelas area pembahasan dalam penelitian ini, perlu adanya
batasan-batasan masalah, diantaranya (1) Aplikasi memproses gambar wajah yang
utuh dan jelas dengan ekspresi datar dan sudut pengambilan gambar tepat dari
depan; (2) Ukuran gambar masukan 280 280 piksel berisi citra wajah dengan
jarak dari alis sampai ujung dagu 146 piksel.
2. Tinjauan Pustaka
Pada bab ini dibahas beberapa penelitian terdahulu dan teori-teori yang
berkaitan dengan algoritma warp dan morph maupun aplikasi penuaan wajah.
Penelitian yang menjadi acuan sekaligus pembanding berjudul Age
Progression using Image Morphing telah dilakukan oleh Nguyen [4], yang
membuat sebuah aplikasi untuk memprediksi perubahan wajah seseorang dari
waktu ke waktu menggunakan dengan menggabungkan warp beberapa gambar
dari seseorang pada usia yang berbeda. Beberapa gambar dari usia berbeda
dengan ekspresi wajah dan ukuran yang sama akan membuat hasil age
progression yang lebih bagus. Perbedaannya dengan penelitian ini adalah bahwa
aplikasi yang dibuatnya tidak dapat memprediksi wajah di masa depan, namun
hanya membuat prediksi perubahan wajah sehingga tidak dapat diproses jika
hanya memiliki satu gambar masukan.
Penelitian selanjutnya mengenai algoritma penuaan dilakukan oleh Shen et
al. [8], yaitu memprediksi perubahan wajah seseorang pada usia tertentu melalui
perpaduan wajah saudara-saudaranya yang berada pada kisaran usia yang
ditentukan. Shen mengusulkan beberapa metode yaitu Craniofacial Growth (CG),
Curvature-Weighted (CW) + Bending-Energy (BE) Distance dan Learning-based
Mahalanobis (LM) Distance. Untuk mengetahui tingkat kemiripan hasil
digunakan bending energy technique dengan menghitung error dari model 3D
prediksi dibanding model 3D asli. Hasil model dari setiap metode untuk wajah
Michael Jackson dapat dilihat pada Gambar 1. Penelitian ini menghasilkan
kesimpulan bahwa metode CW + BE dan LM dapat menghasilkan gambar yang
4
mirip dengan wajah asli, karena bending energy error pada kedua metode tersebut
tidak terlalu banyak seperti pada CG. Diagram hasil pengujian bending energy
error dapat dilihat pada Gambar 2. Kelemahan dari metode yang diusulkan yaitu
sangat terbatasnya foto dari saudara pada usia yang dibutuhkan. Dari penelitian ini
diketahui bahwa pengambilan sampel wajah yang mirip dapat digunakan sebagai
acuan dalam menentukan penuaan wajah seseorang.
Gambar 1 Prediksi Perubahan Wajah Michael Jackson [8]
Gambar 2 Bending Energy Error pada CG (Biru), CW+BE (Hijau), dan LM (Merah) [8]
Penelitian mengenai pengembangan algoritma warp dilakukan oleh Bando,
et al [2], yang membuat suatu model kerutan pada kulit manusia menggunakan
sebuah Computer Graphic software. Pembuatan model dimulai dari mendistorsi
triangle mesh yang merepresentasikan sebuah bagian tubuh, kemudian
diinterpolasi untuk membuat direction field dari setiap titik pada mesh. Efek
kerutan dihasilkan dengan mengukir kerut di sepanjang direction field, yaitu
dengan cara menggambarkan segmen garis abu-abu pada citra. Dalam
mendemonstrasikan model yang dibuatnya, Bando menggunakan sebuah 3D
digitizer. Dari penelitian ini dapat disimpulkan bahwa mesh warping saja tidak
dapat menambahkan komponen baru dalam sebuah citra.
Acuan penelitian selanjutnya berjudul A Multi-Resolution Dynamic Model
for Face Aging Simulation. Suo et al. [8] membuat model penuaan wajah
5
seseorang menggunakan Markov Chain yang memiliki dua variasi yaitu
continous variation dan abrupt variation. Pada continous variation hanya
dilakukan perubahan pada atribut yang telah ada, seperti warna rambut dan warna
kulit. Namun pada abrupt variation dilakukan penambahan atribut baru seperti
kerutan dan juga mengganti gaya rambut. Atribut yang ada didapatkan dengan
menggunakan model dari sampel yang diambil dari kebanyakan orang pada ras
sejenis. Atribut mewakili bagian yang paling menonjol perubahannya ketika
mengalami penuaan, yaitu mata, mulut, dahi, dan rambut. Penelitian ini
menghasilkan kesimpulan bahwa tingkat kemiripan maksimal tercapai pada jarak
usia penuaan 10 – 20 tahun. Semakin jauh jarak usia prediksi dari usia gambar
masukan, tingkat kemiripannya dengan wajah asli semakin kecil.
Pada bagian berikut dijelaskan teori-teori yang digunakan sebagai landasan
dalam penelitian ini, yaitu mengenai penuaan, citra digital, warp, dan morph.
Penuaan adalah proses yang terjadi pada organ tubuh seluruh makhluk
hidup, termasuk kulit. Proses menua pada kulit dibagi menjadi dua yaitu proses
intrinsik dan ekstrinsik. Proses menua intrinsik berlangsung secara alamiah,
disebabkan oleh faktor dari dalam tubuh seperti genetik, hormonal, dan rasial.
Perubahan ini tidak dapat dihindari, dan akan terjadi sesuai pertambahan usia.
Sedangkan proses menua ekstrinsik terjadi akibat faktor dari luar tubuh seperti
sinar matahari, kelembaban udara, dan faktor lain yang mempercepat proses
penuaan kulit [4]. Pada penuaan intrinsik akan terjadi gejala kulit kendur. Dengan
kendurnya kulit, maka bagian-bagian yang menempel pada kulit seperti mata, alis,
dan mulut juga ikut mengalami perubahan.
Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari
suatu objek. Citra terbagi 2 yaitu ada citra yang bersifat analog dan ada citra yang
bersifat digital. Citra analog adalah citra yang bersifat kontinu seperti gambar
pada monitor televisi, foto sinar X, hasil CT Scan, dll. Sedangkan citra digital
adalah citra yang dapat diolah oleh komputer. [10]
Secara matematis citra digital dapat dituliskan sebagai fungsi ( ), dimana harga x (baris) dan y (kolom) merupakan koordinat posisi, dan ( )
adalah nilai fungsi pada setiap titik ( ) yang menyatakan besar intensitas citra
atau tingkat keabuan atau warna dari piksel di titik tersebut. Pada proses
digitalisasi (sampling dan kuantitas) diperoleh besar baris M dan kolom N hingga
citra membentuk matriks . Sebuah citra digital dapat ditulis dalam bentuk
matriks sebagai berikut:
( ) [
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
] (1)
Salah satu metode transformasi geometri pada citra adalah dengan
mendistorsi (distorting) citra. Mendistorsikan berbagai potongan dari sebuah citra
dengan cara yang berbeda akan menghasilkan warp. Image warping adalah
pasangan dari fungsi dua dimensi ( ) dan ( ), yang memetakan posisi
6
( ) di satu gambar, dimana x adalah denotasi kolom dan y adalah denotasi baris,
ke posisi ( ) di gambar lainnya [11].
Proses warping dimulai dengan menguraikan warp sederhana dari sebuah
daerah segitiga pada suatu bidang. Ketiga verteks (titik sudut) segitiga tersebut
dinyatakan oleh tiga titik nonkolinear v1, v2, dan v3. Jika sebuah segitiga yang
akan di-warp mengandung sebuah gambar didalamnya, maka di tiap titik pada
segitiga awal akan ditetapkan sebuah derajat warna abu-abu (gray level). Misal
didefinisikan fungsi ( ) adalah gray level pada titik v di segitiga awal, maka
dapat didefinisikan gambar di segitiga akhir sebagai hasil warp dari segitiga awal
yang memiliki kerapatan gambar . Transformasi dari segitiga awal ke segitiga
akhir dapat dilihat pada Gambar 3.
Gambar 3 Segitiga Awal (a) dan Akhir (b) [11]
Sebuah morph dengan perubahan waktu dapat dijelaskan sebagai perpaduan
dua warp dari dua gambar yang berbeda dengan menggunakan dua triangulasi
yang dapat mencocokan ciri-ciri kunci yang bersesuaian pada gambar. Salah satu
dari gambar ditentukan sebagai gambar awal dan lainnya sebagai gambar akhir.
Setelah dilakukan warp dari waktu t=0 ke t=1 pada gambar awal dan dilakukan
warp dari t=1 ke t=0 dari gambar akhir, dapat dihasilkan nilai rata-rata terbobot
(weighted average) dari derajat warna abu-abu kedua warp tersebut.
Mesh morph atau sering disebut triangle based morphing adalah teknik
morphing yang menggunakan features yang membentuk kurva tertutup berbentuk
segitiga, dimana segitiga awal berpasangan dengan segitiga tujuan [3]. Jika n
adalah jumlah titik verteks dan k adalah jumlah titik verteks yang terletak pada
batas garis persegi panjang pada gambar, maka jumlah segitiga m dari triangulasi
pada titik tersebut dinyatakan dengan:
m = 2n – 2 – k (2)
Pembentukan kurva segitiga dapat dilakukan menggunakan metode
triangulasi Delaunay, yaitu pembentukan jala-jala segitiga dari himpunan titik-
titik pada suatu bidang. Segitiga-segitiga yang terbentuk harus memenuhi syarat
incircle, yaitu tidak ada titik lain di dalam lingkaran yang dibentuk dari tiap tiga
titik sudut segitiga yang ada kecuali tiga titik sudut segitiga itu sendiri. Dengan
adanya syarat tersebut maka triangulasi Delaunay membentuk himpunan segitiga
yang efisien, yaitu tidak ada segitiga yang terlalu lancip, sehingga triangulasi
Delaunay dapat digunakan untuk interpolasi linear piecewise yang optimal. [13]
7
Proses transformasi segitiga pada warp dan morph dilakukan dengan
transformasi Affine menggunakan matriks berukuran 3 x 3. Segitiga awal yang
berisi titik-titik sudut (x0,y0), (x1,y1), (x2,y2) didefinisikan dalam matriks X,
sedangkan segitiga akhir (u0,v0), (u1,v1), (u2,v2) didefinisikan dalam matriks U.
Persamaan transformasi kedua segitiga didefinisikan dengan
(3)
Matriks A adalah matriks Affine, berisi koefisien-koefisien yang mentransformasi
matriks X ke U. Sehingga persamaan 3 dalam bentuk matriks adalah sebagai
berikut.
[
] [
] [
] (4)
Untuk mendapatkan nilai matriks A dapat dilakukan pengalian invers matriks U
dengan matriks X, sehingga persamaan 3 dapat diubah menjadi
(5)
Nilai dari matriks Affine dapat digunakan untuk melakukan proses penuaan
pada seseorang yang hanya diketahui gambar awalnya saja. Dalam hal ini berarti
matriks yang dicari adalah matriks U, dengan persamaan sebagai berikut
(6)
Persamaan 6 diuraikan dalam matriks adalah sebagai berikut
[
] [
] [
]
(7)
Dari persamaan 7 dapat ditentukan nilai un dan vn dari setiap mesh point pada
gambar akhir, yaitu dengan persamaan berikut
un = xn . A-1
11 + yn . A-1
21 + A-1
31 (8)
vn = xn . A-1
12 + yn . A-1
22 + A-1
32 (9)
3. Metode Penelitian
Metode penelitian yang digunakan yaitu Penelitian dan Pengembangan atau
Research and Development (R&D). Metode ini digunakan untuk menghasilkan
suatu produk tertentu dan menguji keefektifan dari produk tersebut supaya dapat
berfungsi di masyarakat luas [12]. Langkah-langkah dari metode ini dapat dilihat
pada Gambar 4.
Gambar 4 Langkah-langkah Penelitian dalam Metode R&D [12]
8
Dalam penelitian ini, tahapan R&D yang ditempuh hanya sampai uji coba
produk. Langkah penelitian pada Gambar 3 dijelaskan sebagai berikut: 1) Tahap
potensi dan masalah, pada tahap ini dilakukan observasi terhadap beberapa survei
atau penelitian mengenai citra digital yang berkaitan dengan penuaan wajah,
kemudian mengidentifikasi potensi dan masalah yang timbul dari hasil observasi.
Potensi yang ditemukan adalah kemampuan algoritma warp dan morph untuk
menangani masalah penuaan wajah pada citra pada platform Android. 2) Tahap
pengumpulan data, dikumpulkan informasi untuk menentukan kebutuhan
berdasarkan masalah yang ada, yaitu fitur apa saja yang akan dibuat dalam
aplikasi supaya dapat digunakan dengan mudah dan sesuai dengan kebutuhan
pengguna. Selain itu, dilakukan studi pustaka mengenai algoritma yang akan
digunakan dalam program dan penggunaanya untuk menghasilkan efek penuaan
pada citra wajah. 3) Tahap desain produk, merancang sistem dengan diagram
Unified Modelling Language (UML). Setelah merancang sistem kemudian
dilakukan desain tampilan atau user interface dari aplikasi. 4) Tahap validasi
desain, dilakukan penilaian apakah desain produk yang dibuat telah sesuai dengan
kebutuhan pengguna. Pada tahap ini dilakukan diskusi dengan beberapa orang
sebagai representasi dari calon pengguna. Jika ada sesuatu yang harus diperbaiki
maka akan dilakukan tahap perbaikan desain. 5) Tahap perbaikan desain,
merupakan tahap dimana kebutuhan pengguna yang tidak sesuai dengan desain
sebelumnya diperbaiki sesuai hasil validasi desain. 6) Tahap uji coba produk,
dalam bidang teknik sebelum dilakukan uji coba produk harus dibuat terlebih
dulu. Pembuatan produk dilakukan dengan membuat aplikasi pada platform
Android menggunakan bahasa pemrograman Java pada Eclipse editor. Didalam
pembuatan aplikasi digunakan Software Development Kit (SDK) dari Luxand, Inc
yaitu FaceSDK untuk melakukan deteksi bagian-bagian wajah yang akan
diproses. Setelah aplikasi dibuat barulah dilakukan uji coba produk, dimana
dilakukan pengujian aplikasi dan analisis hasil pengujian. Pengujian pertama
menggunakan metode black box testing untuk memastikan bahwa seluruh fungsi
dalam aplikasi dapat berjalan dengan baik. Pengujian kedua yaitu dengan
melakukan kalkulasi jarak koordinat titik-titik wajah gambar hasil dengan gambar
asli sehingga dapat diketahui akurasi letak titik-titik wajah pada gambar hasil
terhadap gambar aslinya.
UML yang yang dirancang pada tahap desain produk diantaranya diagram
use case, diagram class, diagram activity, dan diagram sequence. Diagram use
case digunakan untuk memodelkan interaksi antara sistem dengan aktor atau
pengguna. Diagram use case dalam aplikasi perkiraan penuaan wajah dapat dilihat
pada Gambar 5.
Gambar 5 Diagram Use Case Aplikasi Perkiraan Penuaan Wajah
9
Penjelasan pada Gambar 5 adalah pengguna dapat memasukkan gambar
untuk diproses, yaitu menggunakan gambar yang sudah tersimpan dalam
perangkat Androidnya. Setelah itu pengguna tinggal menunggu hasil pengolahan
gambar yang telah diberi efek penuaan. Pengguna juga dapat menyimpan gambar
hasil setelah melihatnya.
Diagram activity menjelaskan alur aktivitas antara pengguna dan aplikasi
saat pertama kali aplikasi dijalankan hingga selesai. Diagram activity aplikasi ini
dapat dilihat pada Gambar 6.
Gambar 6 Diagram Activity Aplikasi Perkiraan Penuaan Wajah
Tahap awal pada diagram activity yaitu aplikasi menampilkan menu utama
dimana pengguna dapat memilih bentuk wajah yang akan diproses. Kemudian,
pengguna dapat memasukkan foto dari file yang sudah ada dalam perangkat
Androidnya. Aplikasi akan mendeteksi bagian-bagian wajah yang ada dalam foto.
Jika tidak ditemukan bagian-bagian wajah dalam foto, maka akan tampil pesan
error sehingga pengguna harus menggunakan foto yang lain. Namun jika bagian-
bagian wajah sudah ditemukan maka akan diproses untuk menghasilkan foto
perkiraan penuaan wajah. Setelah ditampilkan hasilnya, pengguna dapat memilih
apakah ingin menyimpannya dalam perangkat atau tidak.
Diagram class menggambarkan struktur dan deskripsi class, package dan
objek beserta hubungannya satu dengan yang lain. Diagram class aplikasi ini
dapat dilihat pada Gambar 7.
10
Gambar 7 Diagram Class Aplikasi
Sesuai dengan diagram class pada Gambar 7, aplikasi ini memiliki beberapa
class yang saling terhubung satu sama lain. MenuScreen adalah class yang
menampilkan menu utama aplikasi, dimana pengguna dapat memilih bentuk
wajah yang akan diproses. FaceAgingScreen adalah class untuk menampilkan
gambar yang akan diproses dan mendeteksi bagian-bagian wajah pada gambar
awal sehingga menghasilkan mesh awal. Tampilan gambar pada FaceAgingScreen
diatur dalam class FaceImageView. Class DestPoint melakukan perhitungan
untuk memperoleh mesh akhir berdasarkan mesh awal yang terdeteksi. Class
Triangulation berfungsi untuk melakukan triangulasi berdasarkan mesh. Segitiga
hasil triangulasi yang telah terbentuk disimpan dalam class Triangle. Class Line
berfungsi menentukan garis-garis pembentuk segitiga yang ada pada class
Triangle. Class GeometryTrans melakukan perhitungan untuk mencari nilai
matriks transformasi, dimana elemen matriksnya terdapat di class Transform.
WarpMorph adalah class untuk melakukan warping dan morphing berdasarkan
triangulasi dan matriks transformasi yang terbentuk. Class ImageClip melakukan
clipping gambar untuk menentukan piksel gambar yang sesuai antara gambar awal
dan akhir berdasarkan dimensi gambar. Class Config berfungsi sebagai
penampung beberapa variabel yang berperan penting dalam proses penuaan
wajah.
11
Diagram sequence menggambarkan interaksi antar object dan
mengindikasikan komunikasi diantara object tersebut. FaceAgingScreen yang
telah mendeteksi mesh wajah akan memanggil fungsi getDestPoint dari object
DestPoint untuk mendapatkan destination mesh. Kemudian dilakukan image
clipping dengan memanggil fungsi genClip dari object ImageClip. Fungsi
triangulate akan memproses triangulasi berdasarkan data mesh awal dan akhir,
kemudian fungsi morph dijalankan untuk mentransformasi segitiga hasil
triangulasi. Transformasi ini dilakukan berdasarkan nilai matriks transformasi
yang dihasilkan oleh object GeometryTrans. Gambaran sistem dalam diagram
sequence dapat dilihat pada Gambar 8.
Gambar 8 Diagram Sequence
Gambar 9 Flowchart Proses Mengubah Gambar Input Menjadi Output
Flowchart pada Gambar 9 menjelaskan proses mengubah gambar input
menjadi output. Gambar input dideteksi dengan FaceSDK untuk mendapatkan
mesh dari wajah pada gambar. Jika mesh wajah tidak terdeteksi, maka program
akan mengembalikan pesan error. Jika mesh wajah awal terdeteksi, selanjutnya
program akan menentukan awal dan mesh akhir untuk gambar output yang telah
12
mengalami penuaan. Selanjutnya dilakukan proses warping dan morphing untuk
menghasilkan gambar output.
Gambar 10 menggambarkan tahapan umum proses algoritma warp dan
morph. Dari mesh awal dan akhir yang telah diperoleh, dibentuk triangulasi
berdasarkan mesh yang memenuhi syarat triangulasi Delaunay. Selanjutnya,
dilakukan deformasi gambar dari triangulasi awal dan akhir yang terbentuk.
Deformasi gambar dilakukan untuk menghasilkan gambar setiap frame pada
proses morphing. Titik-titik segitiga awal akan ditransformasi sebanyak jumlah
morph steps sehingga menghasilkan gambar proses penuaan. Untuk melakukan
transformasi dari segitiga awal ke segitiga frame ke-i dilakukan pencocokan titik
awal dan titik akhir yang koresponden terlebih dahulu, kemudian dilakukan
merging yaitu menghitung weighted average dari kedua titik tersebut. Setelah
dilakukan transformasi, ditentukan nilai piksel gambar untuk setiap frame agar
menghasilkan gambar output yang sesuai dengan hasil transformasi.
Gambar 10 Flowchart Algoritma Warp dan Morph
4. Hasil dan Pembahasan
Untuk memproses penuaan wajah dengan satu gambar input, terlebih dahulu
harus diketahui nilai matriks Affine atau matriks transformasi yang dapat
menghasilkan efek penuaan. Penentuan nilai matriks Afiine dilakukan dengan
melakukan transformasi pada sampel gambar yang telah diketahui mesh wajah
awalnya, kemudian ditentukan koordinat mesh akhir melalui percobaan agar mesh
gambar hasil menjadi semirip mungkin dengan gambar sebenarnya yang telah
mengalami penuaan.
Nilai matriks transformasi dari triangle awal ke triangle tujuan didapatkan
dalam fungsi getTrafo. Fungsi ini merupakan implementasi dari rumus pada
Persamaan 5, dimana Kode Program 3 baris 20 – 25 merupakan perhitungan nilai
13
setiap koefisien matriks Affine. Kode Program 1 merupakan kode fungsi getTrafo
untuk memperoleh nilai matriks transformasi.
Kode Program 1 Fungsi untuk Menentukan Nilai Matriks Transformasi
Setelah diketahui nilai matriks transformasi berdasarkan percobaan pada
sampel, dapat dilakukan morph dengan satu gambar masukan saja. Nilai matriks
transformasi ini selanjutnya dapat digunakan untuk menghasilkan efek penuaan
pada gambar wajah lain dengan memiliki bentuk wajah yang sama, karena nilai
matriks transformasi yang dihasilkan antara satu bentuk wajah dengan bentuk
wajah lainnya memiliki perbedaan yang signifikan. Dalam aplikasi ini dilakukan
pengelompokan matriks transformasi berdasarkan dua bentuk wajah yaitu oval
dan square.
Hasil invers matriks Affine yang telah didapat dari sampel disimpan dalam
sebuah text file, kemudian digunakan untuk menentukan mesh point pada gambar
akhir. Mesh point akhir (u,v) didapatkan menggunakan Persamaan 8 dan 9 yang
dituliskan dalam Kode Program 1 pada baris 10 – 12 untuk nilai u, dan baris 13 –
15 untuk nilai v. Kode Program 2 adalah kode fungsi untuk mendapatkan mesh
point gambar akhir.
1. public static Transform getTrafo(Triangle origin_,
2. Triangle result) {
3. int x1 = origin_.getPoints()[0].x,
4. x2 = origin_.getPoints()[1].x,
5. x3 = origin_.getPoints()[2].x,
6. y1 = origin_.getPoints()[0].y,
7. y2 = origin_.getPoints()[1].y,
8. y3 = origin_.getPoints()[2].y,
9. u1 = result.getPoints()[0].x,
10. u2 = result.getPoints()[1].x,
11. u3 = result.getPoints()[2].x,
12. v1 = result.getPoints()[0].y,
13. v2 = result.getPoints()[1].y,
14. v3 = result.getPoints()[2].y;
15. Transform trafo = new Transform();
16. double t, u, d;
17. d = (double) u1 - u3;
18. t = ((double) u1 - u2) / d;
19. u = ((double) v1 - v2) - ((double) v1 - v3) * t;
20. trafo.a_21 = (((double) x1 - x2) – ((double) x1- x3) * t) / u;
21. trafo.a_22 = (((double) y1 - y2) – ((double) y1 - y3) * t) / u;
22. trafo.a_11 = (((double) x1 - x3) – trafo.a_21*((double) v1 - v3))/ d;
23. trafo.a_12 = (((double) y1 - y3) – trafo.a_22*((double) v1 - v3))/ d;
24. trafo.a_31 = (double) x1 - trafo.a_11 * u1 – trafo.a_21 * v1;
25. trafo.a_32 = (double) y1 - trafo.a_12 * u1 – trafo.a_22 * v1;
26. return trafo;
}
14
Kode Program 2 Fungsi untuk Mendapatkan Mesh Point Gambar Akhir.
Setelah mesh point wajah awal dan akhir diketahui, dilakukan proses
warping dan morphing. Pada proses morphing dilakukan perulangan sebanyak
morph steps yang dikehendaki sehingga menghasilkan sejumlah gambar yang
menunjukkan proses penuaan dari gambar awal ke gambar akhir, yang
ditunjukkan pada Kode Program 3 baris 3 – 7 . Proses morphing diawali dengan
membentuk triangulasi mesh pada gambar kemudian dilakukan deformasi gambar
dari triangulasi awal ke triangulasi akhir yang dilakukan dengan fungsi triangle
pada kode baris ke-12. Kode Program 3 merupakan kode fungsi morph untuk
melakukan proses morphing.
Kode Program 3 Fungsi Morphing
1. destPoint = new Vector<Point>();
2. FileInputStream in = new FileInputStream(face_shape);
3. BufferedReader read = new BufferedReader(new
4. InputStreamReader(in));
5. String line = "";
6. int n = 0;
7. while (null != (line = read.readLine())) {
8. String[] arr = new String[9];
9. arr = (line.split(" "));
10. double xcor = (Double.parseDouble(arr[0]) * left.get(n).x)
11. + (Double.parseDouble(arr[1]) * left.get(n).y)
12. + Double.parseDouble(arr[2]);
13. double ycor = (Double.parseDouble(arr[3]) * left.get(n).x)
14. + (Double.parseDouble(arr[4]) * left.get(n).y)
15. + Double.parseDouble(arr[5]);
16. Point p = new Point();
17. p.x = (int) Math.round(xcor);
18. p.y = (int) Math.round(ycor);
19. destPoint.add(p);
20. n++;
21. }
22. read.close();
23. }
24. .
25. .
26. return destPoint;
1. public static void morph() {
2. try {
3. for (int i = 0; (i <= Config.MORPH_STEPS); ++i) {
4. for (int x = 0; x < Config.result_image.getWidth(); ++x) {
5. for (int y = 0; y < Config.result_image.getHeight(); ++y) {
6. Config.result_image.setPixel(x, y, 0x0);
7. }
8. }
9. ratio = ((double) i / Config.MORPH_STEPS);
10. genResultTriangles();
11. for (t_idx = 0; t_idx < Config.result_triangles.size(); ++t_idx) {
12. triangle();
13. }
14. File f = new File("/sdcard/temp_outputWM" + (i) + ".jpg");
15. FileOutputStream outStream;
16. outStream = new FileOutputStream(f);
17. Config.result_image.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
18. outStream.flush();
19. outStream.close();
20. }
21. } catch (IOException e) {
22. e.printStackTrace();
23. }
24. }
15
Pada fungsi genResultTriangles dalam fungsi morph dilakukan mesh
merging yaitu menghitung weighted average untuk setiap titik segitiga pada frame
ke-i dari i=0 sampai i=morph_steps supaya triangle mesh gambar ke-i dan
gambar ke-i+1 memiliki nilai matriks transformasi yang konstan. Gambaran
transformasi bentuk triangulasi awal dan akhir berdasarkan hasil morphing dapat
dilihat pada gambar 11 dan Gambar 12.
Gambar 11 Triangulasi Awal Gambar 12 Triangulasi Akhir
Dari transformasi Gambar 11 ke 12 terlihat bahwa segitiga yang mengalami
perubahan ada pada bagian tertentu yaitu alis, mata, bibir, dan dagu, sedangkan
bagian hidung tidak mengalami perubahan. Perbedaan setiap bagian wajah dari
gambar input dengan gambar output dapat dilihat pada Gambar 13.
Gambar 13 Perbedaan Bagian Wajah Gambar Input dan Output
Gambar 14 Hasil Gambar Proses Penuaan
16
Gambar 15 merupakan tampilan awal program yang menyajikan menu
bentuk wajah yang dapat diproses oleh aplikasi, yaitu oval face maupun square
face. Gambar 16 merupakan tampilan menu ambil gambar dari file yang ada
dalam perangkat. Setelah gambar dipilih, dilakukan deteksi bagian-bagian wajah
yang ada, kemudian ditampilkan hasilnya dengan titik-titik biru pada gambar. Jika
deteksi menyatakan tidak terdapat wajah didalam gambar, maka muncul
peringatan untuk memasukkan gambar wajah yang benar.
Gambar 15 Tampilan Menu Utama Gambar 16 Tampilan Menu Ambil Gambar
Gambar 17 merupakan tampilan gambar hasil yang telah melalui proses
penuaan. Hasil berjumlah 3 gambar yang merupakan proses perubahan dari
gambar awal sampai ke gambar akhir. Ketika tombol ‘back’ atau ‘kembali’
ditekan, akan muncul dialog konfirmasi penyimpanan gambar ke perangkat
seperti terlihat pada Gambar 18.
Gambar 17 Tampilan Gambar Hasil Gambar 18 Tampilan Dialog Konfirmasi
Simpan Gambar
Pengujian aplikasi dilakukan dengan menguji fungsi-fungsi dari aplikasi
yang telah dibuat untuk mengetahui bahwa sistem telah berjalan sesuai dengan
17
yang diharapkan dan dapat memenuhi kebutuhan pengguna. Pengujian aplikasi ini
melalui dua tahap yaitu pengujian fungsional program dan pengujian hasil gambar
penuaan yang telah diproses pada program.
Pengujian fungsional program dilakukan menggunakan metode black box
testing, yaitu pengujian fungsi-fungsi aplikasi secara langsung tanpa
memperhatikan alur eksekusi program. Hasil black box testing untuk semua
fungsi berstatus valid, maka dapat disimpulkan bahwa aplikasi telah berfungsi
dengan baik sesuai dengan yang diharapkan.
Pengujian selanjutnya yaitu menguji akurasi titik-titik wajah hasil gambar
penuaan yang telah diproses pada program dengan gambar asli. Pengujian ini
dilakukan dengan terlebih dahulu mendeteksi titik-titik bagian wajah yang
berjumlah 66 titik pada masing-masing gambar dengan menggunakan teknologi
facial feature detection dari Luxand FaceSDK, kemudian dilakukan penghitungan
jarak setiap titik hasil deteksi pada gambar output aplikasi dengan titik hasil
deteksi pada gambar asli yang telah mengalami penuaan. Perhitungan jarak titik
dilakukan dengan satuan piksel. Pengujian dilakukan terhadap tiga kategori
gambar yaitu: (1) gambar hasil usia 30 tahun dari gambar masukan usia 20 tahun;
(2) gambar hasil usia 40 tahun dari gambar masukan usia 30 tahun; (3) gambar
hasil usia 40 tahun dari gambar masukan usia 20 tahun. Hasil perhitungan jarak
untuk titik-titik pada mata ditunjukkan pada Gambar 19.
Gambar 19 Diagram Jarak Titik Bagian Mata untuk Kategori Gambar 1 (Biru),
Kategori 2 (Merah), Kategori 3 (Kuning)
Gambar 20 menunjukkan hasil perhitungan jarak titik-titik pada bagian alis untuk
ketiga kategori gambar. Hasil jarak titik untuk bagian hidung ditunjukkan pada
Gambar 21.
Gambar 20 Diagram Jarak Titik Bagian
Alis
Gambar 21 Diagram Jarak Titik Bagian
Hidung
0
1
2
3
4
5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
0
1
2
3
4
5
1 2 3 4 5 6 7 8 9 100
1
2
3
4
5
1 2 3 4 5 6 7 8 9 10 11 12
18
Gambar 22 adalah diagram jarak titik-titik pada bagian bibir, sedangkan Gambar
23 menunjukkan jarak setiap titik pada bagian dagu.
Gambar 22 Diagram Jarak Titik
Bagian Bibir
Gambar 23 Diagram Jarak Titik
Bagian Dagu
Tingkat akurasi yang baik ditunjukkan dengan semakin kecilnya nilai jarak titik
yang diperoleh. Jarak titik-titik pada bagian hidung memiliki rata-rata terkecil
yaitu 2,2 piksel, sehingga dapat dikatakan bahwa akurasi paling baik ada pada
bagian hidung. Rata-rata jarak untuk bagian mata adalah 2,3 piksel, bagian bibir
2,3 piksel, bagian alis 2,7 piksel, dan bagian dagu 3,2 piksel. Penuaan yang
terjadi berjarak 10 tahun dari gambar masukan memiliki jarak titik terkecil 0
piksel dan jarak maksimal 4,4 piksel, sedangkan untuk penuaan berjarak 20 tahun
memiliki jarak titik terkecil 1 piksel dan jarak maksimal 5,3 piksel. Berdasarkan
hasil pengujian dapat diketahui bahwa perubahan yang dihasilkan oleh algoritma
warp dan morph telah menghasilkan efek penuaan dengan tingkat kemiripan yang
baik untuk titik-titik bagian wajah yang diuji.
5. Simpulan
Berdasarkan hasil penelitian yang telah dilakukan dapat disimpulkan bahwa
pembuatan aplikasi prediksi penuaan wajah manusia menggunakan algoritma
warp dan morph dapat dilakukan dengan melakukan transformasi segitiga hasil
triangulasi menggunakan matriks transformasi yang telah ditentukan. Triangulasi
dibentuk menggunakan mesh bagian-bagian wajah yang dideteksi otomatis
menggunakan FaceSDK. Penentuan matriks transformasi dapat dilakukan dengan
percobaan modifikasi mesh akhir agar gambar hasil menjadi semirip mungkin
dengan gambar penuaan yang sebenarnya. Setelah diketahui mesh awal gambar
masukan dan matriks transformasinya, barulah ditentukan mesh akhir melalui
rumus yang ada untuk melakukan proses morphing. Dalam penelitian ini
ditemukan bahwa matriks transformasi satu bentuk wajah dengan yang lainnya
memiliki perbedaan yang signifikan, maka dalam penggunaannya perlu dilakukan
pengelompokan berdasarkan kriteria tertentu baik menurut bentuk maupun ukuran
bagian-bagian wajah. Algoritma yang dipakai tidak dapat memunculkan
komponen baru seperti kerutan dan rambut, sehingga tingkat kemiripan dengan
wajah asli hanya sebatas bentuk dan posisi bagian-bagian wajah yang ada.
Pengembangan penelitian ini di kemudian hari dapat dilakukan dengan
menentukan banyak variasi matriks transformasi yang dipakai, tidak hanya
0
1
2
3
4
5
6
1 2 3 4 5 6 7 8 9 10 11 12 13 14
0
1
2
3
4
5
6
1 2 3 4 5 6 7
19
sebatas bentuk wajah saja namun juga berdasarkan bentuk mata, alis, hidung, dan
bagian wajah lain. Selain itu dapat dilakukan pengembangan pada algoritma warp
dan morph baik dengan mengembangkan rumus yang telah ada maupun
mengkombinasikannya dengan algoritma tertentu supaya dapat menambahkan
efek kerutan dan perubahan warna pada rambut-rambut dan kulit wajah.
6. Daftar Pustaka
[1] The Renfew Center. 2014. Afraid To Be Your Selfie? Survey Reveals Most
People Photoshop Their Images. http://renfrewcenter.com/news/afraid-be-
your-selfie-survey-reveals-most-people-photoshop-their-images. Diakses
tanggal 5 April 2015.
[2] Bando, Yosuke, Takaaki Kuratate, Tomoyuki Nishita. 2002. A Simple
Method for Modeling Wrinkles on Human Skin.
web.media.mit.edu/~bandy/wrinkle/PG02wrinkle.pdf. Diakses tanggal 11
April 2015.
[3] Gunadi, Kartika, Resmana Lim, Stephan Yos. 2004. Morphing Citra dengan
Berbagai Teknik Morphing. Proceedings Komputer dan Sistem Intelijen
(KOMMIT2004): 160-167
[4] Nguyen, R. 2009. Age Progression using Image Morphing.
http://fcl.uncc.edu/nhnguye1/AgeProgression.pdf. Diakses tanggal 5 April
2015.
[5] Refsnes Data. 2015. Mobile Devices Statistics.
http://www.w3schools.com/browsers/browsers_mobile.asp. Diakses tanggal
5 April 2015.
[6] Gartner, Inc. 2015. Gartner Says Tablet Sales Continue to Be Slow in 2015.
http://www.gartner.com/newsroom/id/2954317. Diakses 1 Mei 2015.
[7] Google. 2015. Google Play Top Free Apps.
https://play.google.com/store/apps/collection/topselling_free?hl=en.
Diakses tanggal 6 April 2015.
[8] Shen, C. Ta, Fay Huang, Wan-Hua Lu, et al. 2012. 3-D Age Progression
Prediction in Children’s Faces with a Small Exemplar-Image Set. Journal of
Information Science and Engineering.
[9] Suo, Jinli, Feng Min, Songchun Zhu, et al. 2007. A Multi-resolution
Dynamic Model for Face Aging Simulation. Proceedings of the IEEE
Computer Society Conference on Computer Vision and Pattern Recognition.
[10] Sutoyo, T., Edy Mulyanto, Vincent Suhartono, Oky D. Nurhayati, et al.
2009. Teori Pengolahan Citra Digital. Yogyakarta: Penerbit Andi.
[11] Anton, Howard, dan Chris Rorres. 2005. Aljabar Linear Elementer
Versi Aplikasi. Jakarta: Penerbit Erlangga.
[12] Sugiyono. 2006. Metode Penelitian Kuantitatif, Kualitatif dan R&D.
Bandung: Penerbit Alfabeta.
[13] Chen, Long and Jin-chao Xu. 2004. Optimal Delaunay Triangulations.
Journal of Computational Mathematics, Vol.22, No.2, hal 299-308.
Recommended