Pengolahan Citra Digital Grayscale
BY Novi/Noringo-sama
Jangan lupa dukungannya!
Scroll down untuk mendapatkan modul
Pengolahan citra digital grayscale merupakan pengolahan citra digital yang mengubah gambar berwarna-warni menjadi gambar bewarna keabu-abuan.
Adapun langkahnya sebagai berikut.
Pertama import library yang dibutuhkan
Import library berarti mengambil atau memasukkan modul yang akan digunakan.
#mengimport library
import cv2
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from google.colab.patches import cv2_imshow
import math
- Cv2 merupakan library yang digunakan untuk melakukan pengolahan citra digital pada gambar.
- matplotlib merupakan library untuk memvisualisasikan data baik 2D maupun 3D secara statis, interaktif dan dinamis
- numpy merupakan libray untuk melakukan perhitungan atau komputasi numerik termasuk didalamnya nanti dapat mengolah matriks yang dibutuhkan dalam pengolahan citra dan kita inisialisasikan dia dengan np.
- pyplot dalam matplotlib yang merupakan library untuk untuk memvisualisasikan gambar ataupun data yang mana disini diinisialisasikan sebagai plt.
- pengambilan library tambahan dari (from) google colab berupa library cv2-imshow yang digunakan untuk menampilkan gambar menggunakan cv2.
- math merupakan library yang mana ia berfungsi untuk mengakses fungsi dari matematika yang berupa nilai float.
Jika ingin menggunakan cv2 maka data harus dibaca melalui google drive.
Selanjutnya mengambil gambar dari google drive (pilihan)
#mengambil data dari google drive
from google.colab import drive
drive.mount('/content/gdrive')
Sintaks di atas merupakan sintaks yang digunakan untuk menghubungkan antara google colab dengan drive dengan cara memanggil library drivenya dan melakukan pendefinisan apa yang akan diambil dalam hubungan tersebut, disini adalah gambar.
Mengakses google drive
# Inisialisasi direktori tempat data disimpan
#Ini saya sesuaikan dengan drive tempat saya menyimpan
path = "/content/gdrive/MyDrive/citra/"
# Cek isi direktori
import os
os.listdir(path)
Pada path dilakukan deklarasi folder mana yang digunakan untuk menyimpan data (gambar), kemudian data (gambar) tersebut akan diolah oleh system operasi agar dapat dibaca oleh komputer. Berikut hasil pembacaan isi data dalam folder.
Membaca gambar dengan cv2
#membaca gambar dari google drive
img = cv2.imread(path + 'calon_jodoh.jpeg')
cv2_imshow(img)
imread merupakan fungsi untuk membaca gambar. Disini gambar dibaca juga diikuti oleh letak dimana gambar tersebut berada (path).
Cv2_imshow(nama variabel yang menampung gambar), imshow merupakan fungsi untuk menampilkan gambar.
Jika tidak ingin mengambil gambar dari drive, tetapi ingin mengambil gambar dari web.
Note!! Format harus png karena pyplot hanya menerima pembacaan gambar dengan type PNG.
Membaca gambar dengan plt
#membaca gambar dari web
img = plt.imread('https://blogger.googleusercontent.com/img/a/AVvXsEiYYX3agFO61SCNNAHLQkfV2JmI3cJOahLCETF4eI_V0oH010V2itRX8AOCuNTb3T5PfHTuHMyYIsr8m1uj-BoD-uuRXs51fO6f1Km2aoIr7vKl3o_IzpBhrckT17hAYYWLoxqO4h9jhHmPZUUoqTSAkR47LS8banwgxX1vTWAQ-9Y-5ukXqYvZlYI2GA=s400')
plt.imshow(img)
Hasil pembacaan gambar
Membaca ukuran gambar
#melihat ukuran image
img.shape
shape merupakan function untuk membaca ukuran suatu data.
Bisa dilihat pada hasil gamabr sebelumnya sebagai perbandingan. Disini tinggi atau lebar gambar sebesar 239 px dan panjang gambar sebesar 400px. Kemudian 3 itu adalah dimension yang mana sebuah gambar terdiri dari 3 layer, yaitu red, green dan blue.
Merubah gambar bewarna menjadi grayscale dengan library cv2
#Mengubah gambar rgb menjadi citra grayscale menggunakan library
abu_abu1= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2_imshow(abu_abu1)
cvtColor merupakan function yang digunakan untuk melakukan pengolahan termasuk perubahan warna pada gambar. Disini warnanya akan diubah dari BGR menjadi gray. Hasilnya kemudian akan ditampilkan melalui cv2_imshow.
Menampilkan gambar dengan pyplot
plt.imshow(abu_abu1)
Bisa dilihat karena tadia pengolahannya menggunakan cv2 sehingga menjadi seperti ini. Ini disebabkan karena perbedaan pembacaan layer gambar antara pyplot atau plt dengan cv2 dimana cv2 membaca bgr, sedangkan pyplot membaca rgb.
Cara mengatasinya
abu_abu3 = cv2.cvtColor(abu_abu1,cv2.COLOR_GRAY2RGB)
plt.imshow(abu_abu3)
ubah dari gray menjadi rgb agar gambar menjadi warna abu-abu, kita harus menyesuaikan pengolahan gambar sesuai dengan pyplot.
Atau bisa dengan cara simple, yaitu menambahkan cmap=”gray” tanpa perlu menconvert ke rgb lagi.
#Mengubah gambar rgb menjadi citra grayscale menggunakan library
abu_abu1= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
plt.imshow(abu_abu1,cmap="gray")
Cmap disini digunakan untuk mengubah warna dasar dari gambar yang ada, gray berarti warna keabu-abuan.
Melakukan pengolahan citra digital grayscale menggunakan perulangan plt
#Mengubah gambar rgb menjadi citra grayscale menggunakan perulangan dengan pyplot
b=img[:,:,2]
g=img[:,:,1]
r=img[:,:,0]
j_baris = len(img)
j_kolom = len(img[0])
abu_abu2 = np.zeros((j_baris,j_kolom))
for i in range(j_baris) :
for j in range(j_kolom) :
abu_abu2[i,j] = 0.299*r[i,j] + 0.587 * g[i,j] + 0.114 *b[i,j]
plt.imshow(abu_abu2,cmap="gray")
Disini kita harus memisahkan layer terlebih dahulu, karena menggunakan plt, maka pembacaannya dari rgb, r di channel 0, g dichannel 2 dan b dichannel 3.
[: , : , channel]
: -> pertama pembacaan baris
: -> kedua pembacaan kolom
Channel merupakan layer yang dibaca.
Len -> length -> membaca jumlah ukuran panjang .
J_baris ->len(img) -> membaca jumlah semua baris
J_baris ->len(img) -> membaca jumlah semua kolom
Np.zeros (j_baris,j_kolom) -> membuat matriks yang diisikan angka 0 sebanyak jumlah baris dan jumlah kolom.
Range -> batasan
Melakukan perulangan sebanyak j_baris dan melakukan perulangan sebanyak j_kolom guna mengambil nilai dan mengelola semua matriks.
0.299*r[i,j] + 0.587 * g[i,j] + 0.114 *b[i,j] merupakan rumus yang telah ditentukan
abu_abu2[i,j] -> matriks yang menampung hasil perhitungan
kemudian setelah selesai perulangan didapatkan matriks baru yang akan membentuk warna gambar baru, yaitu grayscale.
Melakukan pengolahan citra digital grayscale menggunakan perulangan cv2
#Mengubah gambar rgb menjadi citra grayscale menggunakan perulangan dengan cv2
b=img[:,:,0]
g=img[:,:,1]
r=img[:,:,2]
j_baris = len(img)
j_kolom = len(img[0])
abu_abu2 = np.zeros((j_baris,j_kolom))
for i in range(j_baris) :
for j in range(j_kolom) :
abu_abu2[i,j] = 0.299*r[i,j] + 0.587 * g[i,j] + 0.114 *b[i,j]
abu_abu2 = abu_abu2.astype(np.uint8)
cv2_imshow(abu_abu2)
Sama seperti pada plt, cuman yang membedakan adalah pembacaan layer dari channel 0 untuk blue, kemudian 1 untuk red dan 2 untuk green.
Selanjutnya hasil akan diubah ke type uint8 dengan numpy. Karena bisa saja hasilnya akan menjadi – atau koma sehingga dia harus diubah menjadi 8 bit dengan uint8 yang rangenya dari 0 – 255. Kenapa tidak boleh -? Karena warna tidak ada yang -.
Membandingkian hasil gambar dengan library dan tidak
#menampilkan dua gambar sekaligus
f, (gambar1, gambar2) = plt.subplots(1, 2, figsize=(10,5))
gambar1.set_title('Gray Library')
gambar1.imshow(abu_abu1,cmap="gray")
gambar2.set_title('Gray Perulangan')
gambar2.imshow(abu_abu2,"gray")
Subplots merupakan bagian dari plot. Disini ada dua plot sehingga ada angka 1 dan 2, kemudian figsize adalah ukuran dari gambar yang akan ditampilkan.
Set title digunakan untuk mengatur judul gambar.
Dont forget to support me on trakteer
0 Komentar