/ 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.Kalau kamu sudah coba sendiri tapi masih mentok di implementasi atau debugging, kamu bisa lanjut diskusi teknis dengan mentor StackTugas.
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 Relevan untuk mahasiswa IT yang sedang mengerjakan tugas atau project terkait.
Proyek ini adalah aplikasi JavaFX sederhana yang memiliki halaman login dan inventory untuk manajemen vinyl menggunakan MVC pattern. Relevan untuk mahasiswa IT yang sedang mengerjakan tugas atau project terkait.
Source code dan tutorial kompresi citra dengan Color-Embedded Grayscale Image dengan Python Relevan untuk mahasiswa IT yang sedang mengerjakan tugas atau project terkait.