Tugas Besar 2 IF 2123 Aljabar Linier dan Geometri
Aplikasi Nilai Eigen dan Vektor Eigen dalam Kompresi Gambar
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.
Nama | NIM |
---|---|
Gede Prasidha Bhawarnawa | 13520004 |
Muhammad Helmi Hibatullah | 13520014 |
Ahmad Alfani Handoyo | 13520023 |
- 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
)
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
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
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.
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.
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.