Python

Membuat Bit Plane Slicing di Python

Membuat Bit Plane Slicing di Python –  Pada artikel ini, kamu akan mempelajari bagaimana membuat Bit Plane Slicing di Python. Seperti yang kita ketahui semua yang tersimpan didalam komputer merupakan sekumpulan string bit. Pada Bit Plane Slicing, kita akan menggunakan keunggulan ini dalam menangani operasi di pengolahan citra digital. Simak artikel berikut ini untuk membuat bit plane slicing di Python.

Apa itu Bit Plane Slicing?

Sebuah 8-bit citra akan terdiri dari piksel-piksel yang mana setiap piksel tersebut merepresentasikan sebagai string dalam biner 00000000  untuk nilai piksel 0 dan 11111111 untuk nilai piksel 1. Pada bagian paling kiri dari string biner dikenal dengan sebutan Most Significant Bit (MSB) yang memiliki nilai maksimum. Sedangkan, pada bagian paling kanan dari string biner disebut dengan Least Significant Bit (LSB) yang memiliki nilai minimum. Jadi, jika kita memiliki string biner 11111111 diubah menjadi 01111111 maka akan memiliki nilai 255 menjadi 127.

Pada bit plane slicing, kita akan memisahkan sebuah citra menjadi beberapa bit plane. Hal tersebut dapat dilakukan dengan merubah nilai piksel menjadi bentuk biner dan kemudian memisahkannya menjadi bit plane. Agar lebih mudah memahami, mari kita lihat contoh dibawah ini. Disini saya tidak menggunakan 8-bit tapi menggunakan 3-bit karena lebih mudah dipahami dan konsep penggunaannya sama dengan 8-bit. Perhatikan gambar berikut ini.

Ilustrasi Bit Plane Slicing - Inpows
Ilustrasi Bit Plane Slicing – Inpows

Dengan ilustrasi diatas, diharapkan kamu mengerti proses dari bit plane slicing. Mungkin, akan muncul pertanyaan begini “Apakah keuntungan dengan melakukan bit plane slicing?”

Sebenarnya ada keuntungannya dalam melakukan bit plane slicing, yaitu:

  1. Kita dapat melakukan image compression meskipun dengan proses yang sederhana
  2. Kita dapat mengubah citra gray level menjadi citra biner
  3. Kita dapat melakukan analisis lebih jauh untuk mengetahui hubungan penting dan relativitas dari setiap bit didalam suatu citra. Nah, ini bisa membantu kita dalam menentukan jumlah bit dari citra yang telah dikuantisasi.

Kode Python – Bit Plane Slicing

Berikut adalah kode python untuk membuat bit plane slicing dengan menggunakan 8-bit citra.

import cv2
import numpy as np

# Load citra grayscale
img = cv2.imread('../tulips.jpg', 0)

# Lakukan iterasi setiap piksel dan ubah nilai piksel kedalam binary menggunakan fungsi np.ninary_repr()
binary_img = []
for i in range(img.shape[0]):
    for j in range(img.shape[1]):
        binary_img.append(np.binary_repr(img[i][j], width=8))  # width = no. of bits

# Lakukan iterasi dari setiap string yang merepresentasikan nilai biner piksel
bit_eight_img = (np.array([int(i[0]) for i in binary_img], dtype=np.uint8) * 128).reshape(img.shape[0], img.shape[1])
bit_seven_img = (np.array([int(i[1]) for i in binary_img], dtype=np.uint8) * 64).reshape(img.shape[0], img.shape[1])
bit_six_img = (np.array([int(i[2]) for i in binary_img], dtype=np.uint8) * 32).reshape(img.shape[0], img.shape[1])
bit_five_img = (np.array([int(i[3]) for i in binary_img], dtype=np.uint8) * 16).reshape(img.shape[0], img.shape[1])
bit_four_img = (np.array([int(i[4]) for i in binary_img], dtype=np.uint8) * 8).reshape(img.shape[0], img.shape[1])
bit_three_img = (np.array([int(i[5]) for i in binary_img], dtype=np.uint8) * 4).reshape(img.shape[0], img.shape[1])
bit_two_img = (np.array([int(i[6]) for i in binary_img], dtype=np.uint8) * 2).reshape(img.shape[0], img.shape[1])
bit_one_img = (np.array([int(i[7]) for i in binary_img], dtype=np.uint8) * 1).reshape(img.shape[0], img.shape[1])

# Concatenate citra bit plane sehingga mudah untuk ditampilkan menggunakan cv2.hconcat()
sliced_img_r = cv2.hconcat([bit_eight_img, bit_seven_img, bit_six_img, bit_five_img])
sliced_img_v = cv2.hconcat([bit_four_img, bit_three_img, bit_two_img, bit_one_img])

# Vertically concatenate
sliced_img = cv2.vconcat([sliced_img_r, sliced_img_v])
resized_sliced_img = cv2.resize(sliced_img, (960, 540))

# Menampilkan Citra Bit Plane
cv2.imshow('Bit Plane Slicing Image', resized_sliced_img)
cv2.waitKey(0)

Kode Python – Menggabungkan Bit Plane 4, 3, 2, dan 1

Berikut adalah kode python untuk menggabungkan bit plane 4, 3, 2, dan 1.

# Menggabungkan 4 bit plane (4,3,2,1)
new_img = bit_four_img+bit_three_img+bit_two_img+bit_one_img
cv2.imshow('Bit Plane Image (4,3,2,1)',new_img)
cv2.waitKey(0)

Kode Python – Menggabungkan Bit Plane 8, 7, 6, dan 5

Berikut adalah kode python untuk menggabungkan bit plane 8. 7. 6. dan 5

# Menggabungkan 4 bit plane (8,7,6,5)
new_img = bit_eight_img+bit_seven_img+bit_six_img+bit_five_img
cv2.imshow('Bit Plane Image (8,7,6,5)',new_img)
cv2.waitKey(0)

Hasil yang diperoleh

Berikut ini adalah yang diperoleh dalam bentuk gambar untuk 3 kode python diatas.

Output – Bit Plane Slicing

Membuat Bit Plane Slicing Menggunakan Python - Inpows
Membuat Bit Plane Slicing Menggunakan Python – Inpows

Output – Menggabungkan Bit Plane 8, 7, 6, dan 5

Menggabungkan Bit Plane (4,3,2,1) - Inpows
Menggabungkan Bit Plane (4,3,2,1) – Inpows

Output – Menggabunkan Bit Plane 4, 3, 2, dan 1

Menggabungkan Bit Plane (8,7,6,5,4) - Inpows
Menggabungkan Bit Plane (8,7,6,5,4) – Inpows

 

Temukan source code python mengenai digital image processing lainnya hanya di Inpows.

Baca Juga

Menambahkan Salt & Pepper Noise Pada Citra Menggunakan Scikit-image Python

Menambahkan Gaussian Noise Pada Citra Menggunakan Scikit-image Python

Membuat Image Smoothing Menggunakan Gaussian Filter di Python

Membuat Image Smoothing Menggunakan Mean Filter di Python

Mendapatkan Resolusi Gambar Menggunakan Python