Recall Precision
90
Dari grafik pada gambar 4.41 dapat dilihat yaitu hasil dari nilai rata-rata recall dan precision terhadap empat kategori yaitu, alat tulis, buah, bunga dan elektronik. Nilai rata-rata recall dan precision tertinggi diperoleh oleh kategori elektronik, sementara nilai rata-rata recall dan precision terendah diperoleh oleh kategori buah. Nilai rata-rata recall keseluruhan kategori yang diperoleh adalah 77% dan nilai rata-rata precision keseluruhan kategori yang diperoleh adalah 90%. Hasil ini menunjukkan bahwa sistem bekerja dengan baik karena mampu menampilkan video yang relevan dengan query.
5.1.Kesimpulan
Berdasarkan hasil studi literature, analisis, perancangan, implementasi dan pengujian sistem, maka kesimpulan yang didapat adalah sebagai berikut:
1. Aplikasi yang dibangun adalah Sistem Temu Kembali Video Relevan berdasarkan Citra Query dengan menggunakan Algoritma SIFT (Scale Invariant Feature Transform) pada proses Ekstraksi Fitur dan Pencocokan Citra.
2. Hasil temu kembali video dengan menggunakan algoritma SIFT (Scale Invariant Feature Transform) memperoleh hasil yang cukup baik dan berhasil menampilkan video relevan terhadap citra query.
3. Hasil pengujian terhadap 20 koleksi video dari 4 kategori memperoleh rata-rata Recall 77% dan Precision 90% serta Running Time Pencocokan Citra 255 detik.
4. Hasil pengujian mengalami masalah terhadap Running Time yang cukup lama dikarenakan besarnya jumlah database video saat mengidentifikasi frame-frame dari file video.
5.2.Saran
Adapun saran-saran yang diperlukan dan dipertimbangkan untuk penelitian maupun pengembangan sistem berikutnya adalah:
1. Banyaknya jumlah keyframe yang digunakan sangat mempengaruhi waktu proses dalam sistem temu kembali video relevan. Untuk pengembangan selanjutnya pada tahap segmentasi dan ekstraksi keyframe dapat digunakan algoritma Discrete Countour Evolution.
2. Untuk penelitian selanjutnya dapat digunakan pendekatan clustering untuk membantu klasifikasi dan mempercepat hasil pengembalian video relevan.
91
DAFTAR PUSTAKA
Lowe, D. G. 1999, Object recognition from local scale-invariant features.
Proceeding of the International Conference on Computer Vision.
Lowe, D. G. 2004, Distinctive Image Features from Scale-Invariant Keypoints.
International Journal of Computer Vision 60(2): 91-110.
Lowe, D. G. 2006, Automatic Panoramic Image Stitching using Invariant Features.
University of British Columbia : Canada
Manning, C. dkk. 2008. An Introduction to Information Retrieval. Cambridge.
Cambridge University Press : England.
Mikolajczyk, K. dkk. 2006. A Comparison of Affine Region Detectors. Oxford.
University of Oxford : England.
Pardede, J. dkk. 2013. Implementasi Metode Generalized Vector Space Model pada Aplikasi Information Retrieval. Jurnal Informatika 4(1): 1-8.
S. Asha and M. Sreeraj, "Content Based Video Retrieval Using SURF Descriptor,"
in Advances in Computing and Communications (ICACC), 2013 Third International Conference on. IEEE, 2013.
Shah and Anchor. 2012. “Content Based Video Retrieval”. The International Journal of Multimedia and Its Applications(IJMA) 4(5): 1-6.
Huda, M. 2014. Ekstraksi Keyframe dengan Entrophy Differences untuk Temu Kembali Konten Video Berbasis Speeded Up Robust Features. Skripsi.
Institut Teknologi Sebelas November : Surabaya
Gao, X. and X. Tang, 2000. Automatic parsing of news video based on cluster analysis. In: Proceedings of 2000 Asia Pacific Conference on Multimedia Technology and Applications, Kaohsiung, Taiwai, China, Dec. 19, pp: 17-19. https://dspace.lib.cuhk.edu.hk/handle/2006/5923
Marpaung, Evi, 2017. Implementasi Content Based Video Retrieval Menggunakan Speeded Up Robust Features (SURF). Skripsi. Universitas Sumatera Utara : Medan.
Sriyasa, I. Wayan, 2010. Object Retrieval in Video using Feature Quantization of Scale Invariant Feature Tranform (SIFT). Skripsi. Institut Pertanian Bogor : Bogor.
Putri, Aulia Tarindah, 2016. Implementasi Content Based Image Retrieval Menggunakan Speeded Up Robust Features (SURF). Skripsi. Universitas Sumatera Utara : Medan.
Di Zhong, Shih-Fu Chang, 1999. An Integrated Approach For Content Based Video Object Segmentation And Retrieval . Dept. of Electr. Eng., Columbia Univ.:
New York
Smeaton, Alan F., 2008. Content Based Video Retrieval: Three Example Systems From TRECVi. International Journal of Imaging Systems and Technology Sihombing, P. 2016. The Similarities test of thesis by percentage of similarity
formulation. Internetworking Indonesia Journal 8(2): Pages 39-44.
Jindal, Ridhi. dkk. 2014. SIFT: Scale Invariant Feature Transform (Review).
International Journal of Advance Research, Ideas And Innovations In Technology 1(1): Pages 110-251.
Ansari, Aasif. 2015. Content Based Video Retrieval Systems – Methods, Techniques, Trends and Challenges. International Journal of Computer Applications 112(7): Pages 240-300.
Geetha, P. and Narayanan, V. 2008. A Survey of Content-Based Video Retrieval.
Journal of Computer Science 4(6): Pages 474-486.
A-1
private void Form_Cover_Load(object sender, EventArgs e) {
Directory.CreateDirectory(Application.StartupPath + "\\Data");
Directory.CreateDirectory(Application.StartupPath +
"\\Data\\Frame");
Directory.CreateDirectory(Application.StartupPath +
"\\Data\\Video");
}
private void BTN_MULAI_Click(object sender, EventArgs e) {
public Form_Home() MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
private void Form_Home_Load(object sender, EventArgs e) {
Ambil_Koleksi_Video();
}
#region Kelola_Video
private void TXT_CARI_VIDEO_TextChanged(object sender, EventArgs e) {
try {
Konfigurasi.Koneksi();
Konfigurasi.DA = new OleDbDataAdapter("SELECT * FROM `Tabel Video` WHERE Nama like '%" + TXT_CARI_VIDEO.Text + "%'", Konfigurasi.CONN);
Konfigurasi.DS = new DataSet();
private void BTN_BROWS_VIDEO_Click(object sender, EventArgs e) {
_capture.SetCaptureProperty(CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, 240);
_capture.SetCaptureProperty(CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, 320);
A-3
}
private void BTN_SIMPAN_VIDEO_Click(object sender, EventArgs e) {
private void BTN_HAPUS_VIDEO_Click(object sender, EventArgs e) {
groupBox1.Text.Replace("Video Player : ", "") + " ?", "Konfirmasi", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Video` WHERE Nama = '" + groupBox1.Text.Replace("Video Player : ", "") + "'", Konfigurasi.CONN);
Konfigurasi.CMD.ExecuteNonQuery();
Directory.Delete(Application.StartupPath +
"\\Data\\Frame\\" +
Path.GetFileNameWithoutExtension(groupBox1.Text.Replace("Video Player : ",
"")), true);
File.Delete(Application.StartupPath + "\\Data\\Video\\" + groupBox1.Text.Replace("Video Player : ", ""));
WMP.currentPlaylist.clear();
groupBox1.Text = "Video Player : ";
MessageBox.Show("Video Berhasil Di Hapus", "Pesan",
private void BTN_RELOAD_Click(object sender, EventArgs e) {
ORDER BY Nama ASC", Konfigurasi.CONN);
Konfigurasi.DS = new DataSet();
Konfigurasi.DS.Clear();
Konfigurasi.DA.Fill(Konfigurasi.DS, "Tabel Video");
DGV_KOLEKSI_VIDEO.DataSource = Konfigurasi.DS.Tables["Tabel Video"];
DGV_KOLEKSI_VIDEO.Refresh();
}
private void DGV_KOLEKSI_VIDEO_CellClick(object sender, DataGridViewCellEventArgs e)
private void BW_SIMPAN_VIDEO_DoWork(object sender, DoWorkEventArgs e) {
for (int i = 0; i < int.Parse(TXT_JUMLAH_FRAME.Text); i +=
int.Parse((double.Parse(TXT_FPS.Text)/1.5).ToString())) {
_capture.SetCaptureProperty(CAP_PROP.CV_CAP_PROP_POS_FRAMES, i);
Framesno =
_capture.GetCaptureProperty(CAP_PROP.CV_CAP_PROP_POS_FRAMES);
frame = _capture.QueryFrame();
A-5
Path.GetFileNameWithoutExtension(OFD.FileName) + "-" + i + ".jpg";
img.Save(path);
"\\Data\\Video\\" + OFD.SafeFileName, true);
string Q = "INSERT INTO `Tabel Video` VALUES('" +
private void BW_SIMPAN_VIDEO_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
private void BTN_BROWS_GAMBAR_Click(object sender, EventArgs e) {
TXT_BROWS_GAMBAR.Text = OFD_CITRA.FileName;
private void BTN_JALANKAN_ALGORITMA_Click(object sender, EventArgs e) {
private void BTN_RESET_Click(object sender, EventArgs e) {
WMP_ALGORITMA.currentPlaylist.clear();
PB_CITRA_QUERY.Image = Properties.Resources.Temp;
PB_PROSES_PENCOCOKAN.Image = Properties.Resources.Temp;
PB_PROSES.Value = 0;
private void BW_PROSES_ALGORITMA_DoWork(object sender, DoWorkEventArgs e)
string[] Folders = Directory.GetDirectories(Application.StartupPath + "\\Data\\Frame");
A-7
try {
Image<Bgr, byte> result = SIFT.Draw(Sample_Gambar, Gambars[i], out matchTime, out Cocok);
Waktu_Proses = Waktu_Proses + matchTime * 0.001; Application.StartupPath + "\\Data\\Video\\" + video + ".mp4";
DGV_HASIL_ALGORITMA.Sort(DGV_HASIL_ALGORITMA.Columns[0], ListSortDirection.Descending);
TXT_JUMLAH_VIDEO.Text =
DGV_HASIL_ALGORITMA.Rows.Count.ToString() + " Video";
index++;
}
PB_PROSES.Value += loading;
} }
private void BW_PROSES_ALGORITMA_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Cursor = Cursors.Default;
TXT_JUMLAH_VIDEO.Text = DGV_HASIL_ALGORITMA.Rows.Count.ToString() +
" Video";
MessageBox.Show("Proses Pencarian Selesai", "Pesan", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void DGV_HASIL_ALGORITMA_CellClick(object sender, DataGridViewCellEventArgs e)
SIFT
public static Image<Bgr, Byte> Draw(String modelImageFileName, String observedImageFileName, out long matchTime, out bool Cocok)
{
modelKeyPoints = siftCPU.DetectKeyPointsRaw(modelImage, null);
Matrix<float> modelDescriptors =
siftCPU.ComputeDescriptorsRaw(modelImage, null, modelKeyPoints);
watch = Stopwatch.StartNew();
observedKeyPoints = siftCPU.DetectKeyPointsRaw(observedImage, null);
Features2DToolbox.VoteForUniqueness(dist, uniquenessThreshold, mask); indices, mask, 1.5, 20);
A-9
if (nonZeroCount >= 4) homography =
Features2DToolbox.GetHomographyMatrixFromMatchedFeatures(modelKeyPoints, observedKeyPoints, indices, mask, 2);
}
watch.Stop();
Image<Bgr, Byte> result = Features2DToolbox.DrawMatches(modelImage, modelKeyPoints, observedImage, observedKeyPoints, Point.Round), true, new Bgr(Color.Red), 5);
}
public static void Koneksi() {
try {
const string Q = "provider=microsoft.jet.oledb.4.0; data source
= DB.mdb;";
CONN = new OleDbConnection(Q);
if (CONN.State == ConnectionState.Closed) {
CONN.Open();
} }
catch (Exception e) {
MessageBox.Show(e.ToString(), "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
} } } }