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.
Daftar Isi
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.
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:
- Kita dapat melakukan image compression meskipun dengan proses yang sederhana
- Kita dapat mengubah citra gray level menjadi citra biner
- 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
Output – Menggabungkan Bit Plane 8, 7, 6, dan 5
Output – Menggabunkan Bit Plane 4, 3, 2, dan 1
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