Kompresi Citra dengan Color-Embedded Grayscale Image dengan Python

  • Home
  • / Kompresi Citra dengan Color-Embedded Grayscale Image dengan Python

image

04 Jun 2025

09

35

Berikut adalah isi dari file "Dokumentasi Kompresi Citra.pdf" yang sudah ditulis ulang dalam format Markdown:


đź“„ Dokumentasi Kompresi Citra dengan Color-Embedded Grayscale Image

1. Pendahuluan

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.


2. Langkah-Langkah dan Kode

2.1. Import Library

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

2.2. Load dan Tampilkan Gambar Asli

# 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()

2.3. Kompresi: Konversi ke Grayscale dan Simpan Informasi Warna

# 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)

2.4. Dekompresi: Rekonstruksi Gambar Berwarna

# 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()

2.5. Evaluasi Kinerja dengan PSNR dan SSIM

# 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}')

3. Analisis dan Kesimpulan

Hasil Pengukuran:

  • PSNR: 31.76 dB
  • SSIM: 0.9932

Kesimpulan:

  • 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.


Link Source Code

Catatan

  • Jika difference channel (diff_R, diff_B) dikompresi lebih lanjut, ukuran file bisa lebih kecil.
  • Namun, kualitas gambar bisa sedikit berkurang.
  • Metode ini merupakan kompromi antara ukuran file dan kualitas gambar.

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.

Order Joki Tugas

“Tugas selesai hati pun senang”

Langganan Berita

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.

space iklan disewakan

Mungkin Cocok Untukmu

image
11 Jun 2025

Membangun Aplikasi Note Keeper dengan Flutter dan SQLite

Panduan lengkap membuat aplikasi pencatat sederhana menggunakan Flutter, SQLite, dan SharedPreferences

image
04 Jun 2025

Aplikasi Manajemen Vinyl JavaFX dan Source Code

Proyek ini adalah aplikasi JavaFX sederhana yang memiliki halaman login dan inventory untuk manajemen vinyl menggunakan MVC pattern.

image
04 Jun 2025

Kompresi Citra dengan Color-Embedded Grayscale Image dengan Python

Source code dan tutorial kompresi citra dengan Color-Embedded Grayscale Image dengan Python