/ Kompresi Citra dengan Color-Embedded Grayscale Image dengan Python
04 Jun 2025
09
35
Berikut adalah isi dari file "Dokumentasi Kompresi Citra.pdf" yang sudah ditulis ulang dalam format Markdown:
Kompresi citra sangat penting untuk mengurangi ukuran file gambar tanpa kehilangan kualitas visual secara signifikan. Salah satu teknik kompresi adalah Color-Embedded Grayscale Image, di mana informasi warna disisipkan pada citra grayscale agar bisa direkonstruksi kembali ke bentuk hampir seperti aslinya.
from matplotlib import pyplot as plt
import cv2
import numpy as np
from skimage.metrics import peak_signal_noise_ratio as psnr, structural_similarity as ssim
# Load gambar
img_bgr = cv2.imread('/content/drive/MyDrive/PY/citra.png', cv2.IMREAD_COLOR)
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
# Tampilkan
plt.imshow(img_rgb)
plt.title('Gambar Asli')
plt.axis('off')
plt.show()
# Konversi ke grayscale
img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY)
plt.imshow(img_gray, cmap='gray')
plt.title('Grayscale')
plt.axis('off')
plt.show()
# Ambil channel R, G, B
R = img_bgr[:,:,2]
G = img_bgr[:,:,1]
B = img_bgr[:,:,0]
# Hitung difference antara R dan Gray, B dan Gray
diff_R = R.astype(np.int16) - img_gray.astype(np.int16)
diff_B = B.astype(np.int16) - img_gray.astype(np.int16)
# Rekonstruksi channel R, G, B
rec_R = img_gray.astype(np.int16) + diff_R
rec_G = img_gray # Gray = Green
rec_B = img_gray.astype(np.int16) + diff_B
# Stack dan ubah ke uint8
rec_img = np.stack([
np.clip(rec_B, 0, 255).astype(np.uint8),
np.clip(rec_G, 0, 255).astype(np.uint8),
np.clip(rec_R, 0, 255).astype(np.uint8),
], axis=2)
# Tampilkan hasil rekonstruksi
rec_rgb = cv2.cvtColor(rec_img, cv2.COLOR_BGR2RGB)
plt.imshow(rec_rgb)
plt.title('Hasil Rekonstruksi')
plt.axis('off')
plt.show()
# Hitung metrik
orig_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
psnr_value = psnr(orig_rgb, rec_rgb)
ssim_value = ssim(orig_rgb, rec_rgb, channel_axis=2)
print(f'PSNR: {psnr_value:.2f} dB')
print(f'SSIM: {ssim_value:.4f}')
Kualitas Rekonstruksi Sangat Tinggi Nilai PSNR di atas 30 dB menunjukkan noise rendah pada gambar hasil rekonstruksi. SSIM mendekati 1 menunjukkan struktur gambar sangat mirip dengan aslinya.
Perbedaan Secara Visual Hampir Tidak Terlihat Hasil rekonstruksi tidak 100% identik, tetapi perbedaannya sangat sulit dikenali oleh mata manusia.
Efisiensi Kompresi Metode ini menyimpan hanya citra grayscale dan difference, cocok untuk aplikasi yang memerlukan efisiensi penyimpanan dengan kualitas tetap terjaga.
diff_R
, diff_B
) dikompresi lebih lanjut, ukuran file bisa lebih kecil.Buat kamu yang punya tugas terkait Kompresi Image atau Python, bisa banget joki tugas Python di sini, selain dibantu mengerjakan, kita juga bantu jelaskan pada dokumen terpisah.
Order bisa langsung via whatsapp admin ya, jelaskan tugas yang akan dikerjakan dan juga deadline nya, admin akan membalas whatsapp kamu beserta rincian yang harus kamu bayar. Tenang saja, pembayaran boleh dp 50% dan sisanya bisa kamu bayar setelah tugas selesai dikerjakan.
“Tugas selesai hati pun senang”
Masukkan email kamu untuk mendapatkan berita terbaru dari stacktugas.id dan dapatkan diskon 20% untuk jasa coding terlaris kami.
Kami tidak akan pernah mengirimkan email spam.
Panduan lengkap membuat aplikasi pencatat sederhana menggunakan Flutter, SQLite, dan SharedPreferences
Proyek ini adalah aplikasi JavaFX sederhana yang memiliki halaman login dan inventory untuk manajemen vinyl menggunakan MVC pattern.
Source code dan tutorial kompresi citra dengan Color-Embedded Grayscale Image dengan Python