Cara menggunakan python tiff image processing

Indonesian (Bahasa Indonesia) translation by Yosef Andreas (you can also view the original English article)

Dalam sebuah artikel koran tahun 1911 yang mendiskusikan jurnalisme dan publisitas, dan mengutip editor koran Tess Flanders, ekspresi berikut muncul:

Gunakan sebuah gambar. Itu bernilai ribuan kata.

Frasa sejenis juga muncul dalam sebuah iklan koran tahun 1913 untuk Piqua Auto Supply House:

Satu penampilan berharga ribuan kata.

Saya tidak akan membahas sejarah itu secara mendalam. Pendahuluan ini hanya untuk membuatnya sedikit lucu, dan menunjukkan bagaimana frasa memberikan kita indikasi pentingnya gambar dan bagaimana mereka dapat memunculkan banyak informasi didalamnya. Saya yakin kebanyakan dari kita menyadari bahwa, khususnya ketika kita menyadari bagaimana sebuah gambar dapat melekat di dalam pikiran kita lebih dari hanya teks murni.

Oleh karena itu tidak heran bahwa gambar memainkan sebuah bagian penting dalam komunikasi kita—bukan hanya gambar umum, namun juga foto khusus seperti gambar medis (misalnya MRI, Ultrasound, dll.)

Kita dapat memperoleh foto melalui akuisisi perangkat yang berbeda-beda. Sebagai contoh, gambar melanoma (kanker kulit) ditarik menggunakan sebuah dermatoscope. Kita mengambil foto diri kita sendiri atau teman menggunakan sebuah kamera digital atau smartphone. Terkadang, bagaimana pun juga, kita menyadari beberapa permasalahan dalam gambar kita, seperti blur sebagai contoh, yang mungkin dikarenakan perangkat yang digunakan.

Namun, apa yang harus dilakukan dalam kasus ini? Kamu dikirimkan beberapa gambar medis untuk dianalisa, dan kamu tidak memiliki pilihan dalam mengambil ulang gambar tersebut. Bahkan jika kamu mengambil ulang gambar itu, resolusi yang kamu lihat tidak berubah, juga permasalahan lainnya yang kamu hadapi. Pemroses gambar berguna dalam situasi tersebut.

Saya menyukai bagaimana pemrosesan gambar didefinisikan di dalam Kamus Oxford:

Analisis dan manipulasi gambar digital, khususnya dalam tujuan untuk meningkatkan kualitasnya.

"Gambar digital" di sini mengacu pada fakta bahwa gambar dianggap digital, sehingga itu diproses oleh sebuah komputer.

Mendapatkan komputer dalam permainan ini berarti menggunakan sebuah bahasa pemrograman. Dalam tutorial ini saya akan menunjukkan bagaimana kita dapat menggunakan bahasa pemrograman Python untuk melakukan tugas pemrosesan gambar pada sebuah gambar.

scikit-image

Librari yang akan kita gunakan untuk melaksanakan tugas pemrosesan gambar adalah scikit-image. Berdasarkan pada paper scikit-image: pemrosesan gambar dalam Python:

scikit-image adalah sebuah librari pemrosesan gambar yang menerapkan algoritma dan utilitas untuk digunakan dalam penerapan riset, edukasi dan industri. Itu dirilis di bawah lisensi liberal Modified BSD open source, menyediakan sebuah API yang terdokumentasi dengan baik dalam bahasa pemrograman Python, dan dikembangkan oleh sebuah tim kolaborator internasional yang aktif.

Hal pertama yang perlu kita lakukan adalah menginstal scikit-image. Instruksi untuk menginstal librari dapat ditemukan pada halaman download, dan dalam tutorial ini saya akan menunjukkanmu bagaimana menginstal librari pada sebuah mesin Mac OS X, dan ini apa yang saat ini saya gunakan dalam penulisan tutorial ini.

Karena scikit-image adalah sebuah librari eksternal, hal pertama yang kita harus lakukan adalah menginstal librari tersebut. Untuk itu, saya akan menggunakan pip, yaitu (berdasarkan Wikipedia):

Sebuah sistem pengelolaan package yang digunakan untuk menginstal dan mengelola paket software yang ditulis dalam Python. Banyak paket yang dapat ditemukan di dalam Python Package Index (PyPI).

Kamu dapat mengikuti langkah-langkah yang disebutkan dalam Python Packaging User Guide untuk menginstal pip, namun jika kamu memiliki Python 2.7.9 keatas, atau Python 3.4 keatas, kamu sudah memiliki pip!

scikit-image sekarang dapat dengan mudah diinstal dengan mengetikkan perintah di bawah (di dalam Terminal Mac OS X):

pip install -U scikit-image

Kita sekarang telah menginstal librari dan siap untuk beberapa kesenangan memproses gambar!

Gambar tes saya akan kita gunakan dalam tutorial ini adalah baboon.png. Silahkan dan download itu, atau cukup gunakan gambar pilihanmu. Gambar tampak seperti berikut:

Cara menggunakan python tiff image processing
Cara menggunakan python tiff image processing
Cara menggunakan python tiff image processing

Dimensi Sebuah Gambar

Terkadang kita perlu mengetahui dimensi sebuah gambar (lebih tentang itu dalam section filtering). Untuk memeriksa dimensi gambar kita, kita dapat menggunakan method guess_spatial_dimensions(), sebagai berikut:

from skimage import io, color
img = io.imread('baboon.png')
dimensions = color.guess_spatial_dimensions(img)
print dimensions

Output pada script di atas adalah 3, yang berarti kita memiliki sebuah gambar yang terdiri dari tiga dimensi spasial.

Mewarnai ke Grayscale

Dari section di atas, kita telah menyadari bahwa gambar kita merupakan gambar array 3D (dalam format RGBA dengan bentuk (.., .., 4). Bagaimana saya mengetahui itu dalam format RGBA? Kamu cukup dapat melakukan di bawah:

import skimage.io as io
from skimage.color import rgb2gray 
img = io.imread('baboon.png')
print img.shape

Dalam kasus ini, kamu akan mendapatkan output: (512, 512, 4).

Dalam section ini, kita akan mengkonversi gambar berwarna baboon.png original ke dalam gambar 2D grayscale (hitam putih). Ini dapat dilakukan cukup dengan menggunakan script di bawah:

import skimage.io as io
from skimage.color import rgb2gray 
img = io.imread('baboon.png')
img_grayscale = rgb2gray(img)

Mari lanjutkan dan simpan gambar baru (grayscale) ke sebuah file. Ini dapat dilakukan dengan menggunakan function imsave(), sebagai berikut (perhatikan bahwa gambar baru adalah file baboon-gs.png):

io.imsave('baboon-gs.png',img_grayscale)

Untuk memeriksa dimensi gambar, kita dapat menggunakan script dalam section sebelumnya, dalam hal ini kamu akan mendapatkan nilai 2. Atau kamu dapat menggunakan img_grayscale.shape, yang menghasilkan 512x512. Jadi, sekarang kita memiliki gambar 2D.

Untuk menunjukkan gambar grayscale yang baru, tambahkan code di bawah ini pada akhir script:

show_grayscale = io.imshow(img_grayscale)
io.show()

Hasilnya tampak seperti ini:

Cara menggunakan python tiff image processing
Cara menggunakan python tiff image processing
Cara menggunakan python tiff image processing

Menerapkan Filter Pada Gambar

Dalam memproses gambar, filtering dilakukan untuk membuat beberapa peningkatan di dalam gambar. Secara umum, filtering mengarahkan operasi berikut: edge enhancement, shapening, dan smoothing.

Dalam section ini, saya akan menunjukkan bagaimana kita dapat menerapkan Sobel filter dalam gambar kita, dan melihat tampilan output setelah melakukan operasi. Saya akan menggunakan contoh yang ditunjukkan pada halaman depan website scikit-image, namun diterapkan pada gambar kita.

Script untuk menerapkan Sobel filter pada gambar kita tampak sebagai berikut:

from skimage import data, io, filters
img = io.imread('baboon.png')
edges = filters.sobel(img)
io.imshow(edges)
io.show()

Jika kamu menjalankan script, apakah kamu menyadari adanya permasalahan? Ya, kita tidak dapat menerapkan operasi karena gambarnya harus 2D. Jadi, bukannya menggunakan baboon.png, kita perlu menggunakan gambar 2D kita, baboon-gs.png. Output operasi ini tampak sebagai berikut:

Cara menggunakan python tiff image processing
Cara menggunakan python tiff image processing
Cara menggunakan python tiff image processing

Kesimpulan

Ada banyak operasi pemrosesan gambar, dan librari Python scikit-image menyediakan banyak operasi menarik yang dapat kita lakukan pada gambar kita. Kamu dapat melihat lebih banyak operasi pemrosesan gambar menggunakan librari ini pada website scikit-image.