
OpenCV sudah menjadi bagian tidak terpisahkan bila kita bekerja dengan computer vision, bahkan untuk Java-Python-Scala-Julia, kami sering menggunakan library tersebut untuk sekedar hanya membaca serta sedikit melakukan operasi image processing. Namun demikian terutama di Python, ada PIL – Pillow adalah singkatan dari Python Image Library. Pada artikel ini, PIL sudah mencapai versi 8.0.1 pada tanggal 23 Oktober 2020, bisa kalian install via pip https://pypi.org/project/Pillow/
Pillow menyediakan dukungan untuk berbagai format gambar termasuk format JPEG dan PNG yang populer. Pillow juga menyediakan berbagai metode pemrosesan gambar seperti yang akan kita lihat di bagian ini. Teknik ini sangat berguna terutama dalam menambah data pelatihan untuk masalah computer vision.
Cara Install Pillow
Contents
Seperti biasa, kalian bisa menggunakan perintah PIP dengan perintah seperti berikut
pip install Pillow
Mencoba Pillow
Untuk melihat cara kerja menggunakan Pillow. Langkah pertama adalah mengimpor kelas Image dari PIL. Ntra kita akan berbicara lebih banyak tentang kelas Image di bagian selanjutnya.
from PIL import Image im = Image.open("cat.png")
Image Bands – Layer
Setiap gambar memiliki satu atau lebih band (layer warna). Dengan menggunakan Pillow, sama seperti library yang lain, kita dapat menyimpan satu atau beberapa band (layer warna) dalam sebuah gambar. Misalnya, gambar berwarna biasanya memiliki layer ‘R’, ‘G’, dan ‘B’ masing-masing untuk Merah, Biru, dan Hijau. Kita coba saja cek band terhadap gambar diatas
im.getbands() ('R', 'G', 'B')
Image Modes
Mode mengacu pada jenis dan kedalaman piksel dalam gambar. Beberapa mode yang saat ini didukung adalah:
- L untuk hitam dan putih
- RGB untuk warna asli
- RGBA untuk warna asli dengan topeng transparansi
- YCbCr untuk format video berwarna
Berikut adalah cara mendapatkan mode untuk gambar yang kita muat di atas
im.mode 'RGB'
Size
Kalian juga bisa mendapatkan dimensi gambar melalui atribut gambar
im.size (400, 600)
Lebih jauh mengenai Class Image pada Pillow
Seperti yang telah saya sebutkan sebelumnya, kita harus mengimpor kelas Image dari PIL sebelum membaca gambar. Class ini berisi fungsi yang memungkinkan kita memuat file gambar serta membuat gambar baru. Ke depannya, fungsi yang akan kita gunakan telah diimpor sebagai hasil dari mengimpor Image, kecuali dinyatakan lain.
Cropping images
Untuk memotong gambar, kita mulai dengan menentukan rectangle/box yang menentukan area gambar yang ingin kita potong. Selanjutnya, kita meneruskan box itu ke fungsi `crop` dari Image class
box = (100, 150, 300, 300) cropped_image = im.crop(box) cropped_image
Rotating images
Memutar gambar dilakukan melalui fungsi rotate pada Image Class.
PIL image to NumPy array
Pillow juga memungkinkan kita mengonversi gambar menjadi array NumPy. Setelah mengubah gambar menjadi array NumPy kita bisa membacanya menggunakan PIL
import numpy as np im_array = np.array(im)
Dengan gambar yang dikonversi sekarang kita dapat memuatnya menggunakan Pillow. Ini dilakukan dengan menggunakan fungsi fromarray dari kelas Pillow’s Image. Terakhir, kita menyimpan dan menampilkan gambar menggunakan fungsi PIL show image.
img = Image.fromarray(im_array, 'RGB') img.save('image.png') img.show()
Color transformations
Kita dapat mengganti gambar dari berwarna menjadi hitam putih dan sebaliknya. Ini dilakukan melalui fungsi konversi dan meneruskan format warna yang diinginkan.
im.convert('L')
Mengubah menjadi berwarna dapat dilakukan dengan cara yang serupa
im.convert('RGBA')
Image enhancement
Pillowjuga dilengkapi dengan fungsi yang memungkinkan kita melakukan peningkatan/enhancement citra. Ini adalah proses yang meningkatkan kualitas asli sebuah gambar. Kita mulai dengan mengimpor modul yang mengirimkan fungsionalitas tersebut
from PIL import ImageEnhance
Misalnya, kita bisa mengatur ketajaman gambar:
from PIL import ImageEnhance enhancer = ImageEnhance.Sharpness(im) enhancer.enhance(10.0)
Mari kita ambil contoh lain di mana kami menggandakan kecerahan gambar.
enhancer = ImageEnhance.Contrast(im) enhancer.enhance(2)
Filters
Hal super keren lainnya yang dapat kita lakukan dengan Pillow adalah menambahkan filter ke gambar. Langkah pertama adalah mengimpor modul ImageFilter
from PIL import ImageFilter
Misalnya, kita bisa memburamkan gambar seperti ini:
from PIL import ImageFilter im.filter(ImageFilter.BLUR)
Filter lain yang tersedia meliputi:
Contour
im.filter(ImageFilter.CONTOUR)
DETAIL
im.filter(ImageFilter.DETAIL)
EDGE_ENHANCE
im.filter(ImageFilter.EDGE_ENHANCE)
EMBOSS
im.filter(ImageFilter.EMBOSS)
Bagaimana menurut kalian Pillow? Ringkas sederhana sangat membantu kita dalam mengolah gambar.
Ref: