Skip to main content

Python Image Library Pillow

97 Views

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

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:

https://pillow.readthedocs.io/en/stable/

Leave a Reply

Your email address will not be published. Required fields are marked *