Skip to content

Flask web app to compress images by SVD method. Tugas Besar 2 IF2123 Aljabar Linier dan Geometri

Notifications You must be signed in to change notification settings

blueguy42/SVD-Image-Compressor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Compressify - Algeo02-20004

Tugas Besar 2 IF 2123 Aljabar Linier dan Geometri

Aplikasi Nilai Eigen dan Vektor Eigen dalam Kompresi Gambar

Daftar Isi

Informasi Umum

Pada Tugas Besar 2 IF 2123 Aljabar Linier dan Geometri kali ini kita diminta untuk membuat sebuah program kompresi gambar dengan memanfaatkan Singular Value Decomposition (SVD) yang berjalan di suatu web lokal sederhana.

Algoritma yang digunakan untuk mencari nilai dan vektor eigen untuk membentuk matriks SVD adalah QR Algorithm yang melibatkan pengiterasian Dekomposisi QR dengan Ak+1 = RkQk sehingga matriks A berkonvergensi menjadi matriks diagonal yang memegang nilai-nilai eigen, dan matriks U = Q1 * Q2 * ... * Qk yang memegang vektor eigen dari matriks A0.

Anggota Kelompok

The penCITRAan Team

Nama NIM
Gede Prasidha Bhawarnawa 13520004
Muhammad Helmi Hibatullah 13520014
Ahmad Alfani Handoyo 13520023

Teknologi yang Digunakan

  • numpy v.1.21.4: untuk melakukan operasi-operasi pada matriks, array, dan operasi matematika lainnya
  • Pillow v.8.4.0: untuk segala pemrosesan gambar termasuk mengkonversinya menjadi matriks dan sebaliknya dan mengetahui mode warna yang digunakan
  • Flask v.2.0.2: untuk menghubungkan program Python pada backend dengan frontend website dan request dari keduanya
  • Bootstrap v5.1.3: untuk membangun web yang elegan dan dengan cepat. (Tidak perlu diinstall lagi karena sudah terdapat pada folder /src/static/bootstrap)

Fitur

Beberapa fitur yang dapat diakses oleh user saat menggunakan website/program:

  • User dapat memberi masukan tingkat kompresi gambar (0-100%)
  • User dapat melihat hasil persentase data akhir yang dipakai dan runtime program
  • User dapat mengunduh hasil kompresi gambar
  • Mendukung gambar dengan format yang didukung sepenuhnya oleh library PILLOW
  • Mendukung gambar dengan mode warna L, LA, P, PA, RGB, RGBA, dan CMYK

Setup

Python 3 digunakan untuk menjalankan frontend dan backend dari program, sehingga pastikan Python 3 telah terinstall pada komputer. Bila belum, unduh terlebih dahulu Python 3 di sini.

Pastikan Python dan PIP sudah ditambahkan ke PATH. Bila belum, lihat stackoverflow ini dan ini.

Dengan PIP, install library Flask, numpy, dan Pillow yang dibutuhkan untuk menjalankan program:

pip install Flask
pip install numpy
pip install Pillow

Penggunaan

Untuk menjalankan program, jalankan file app.py

Dapat juga menjalankan program dengan membuka terminal ke folder /src dan jalankan

python app.py

Pada terminal Python akan ada munculan sebagai berikut:

 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 727-607-683
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Untuk mengakses website, akses link yang terdapat pada baris terbawah (yang pada kasus ini adalah http://127.0.0.1:5000/) pada web browser pilihan Anda. Selamat! Sekarang Anda dapat menjalankan website kompresi gambar.

home

Ketika membuka website pada link yang diakses di atas, Anda akan dibawakan ke halaman beranda. Pilih gambar yang ingin Anda kompresi pada input 'Choose File' dan tingkat kompresinya (dalam skala 0-100) pada 'Image Compression Rate'. Lalu, tekan 'Compress'.

Bila berhasil, maka akan ditampilkan hasil gambar yang original dengan yang sudah dikompresi seperti di bawah. beforeafter

Terlihat berapa banyak data yang digunakan dibandingkan dengan gambar asli dan runtime dari program. Anda dapat memilih untuk mengunduh hasil kompresi dengan menekan 'Download' atau melakukan kompresi pada gambar yang lain dengan menekan 'Compress another image!'.

Anda juga dapat mengeksplorasi halaman-halaman lain pada website yaitu 'How to Use' yang mengandung langkah-langkah cara penggunaan website dan juga 'About Us' yang menceritakan latar belakang di balik proyek ini.

About

Flask web app to compress images by SVD method. Tugas Besar 2 IF2123 Aljabar Linier dan Geometri

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 59.7%
  • CSS 35.0%
  • HTML 4.1%
  • Python 1.2%