Cara menggunakan image saturation python

RGB, HSV dan CMYK adalah contoh color space, sederhananya color space adalah cara untuk mempresentasikan warna. CMYK umum digunakan untuk industri printing, sementara RGB dan HSV untuk media digital.

RGB

RGB adalah model color dengan cara menggabungkan warna Red, Green dan Blue. Perlu diperhatikan, OpenCV menyimpan warna dalam urutan BGR.

HSV

Adalah Hue, Saturation dan Value, dimana:

  • Hue: menunjukan warna itu sendiri. Range (0 – 179).
  • Saturation: Intensitas warna. Makin tinggi saturasi, makin rendah warna putih. Range (0 -255).
  • Value: Kecerahan. Makin tinggi value, makin cerah, makin rendah makin gelap. Range (0 -255).

NOTE: HSV memudahkan segmentasi warna. Mode RGB, sulit untuk melakukan filtering warna tertentu.

Cara menggunakan image saturation python

Cara menggunakan image saturation python

Dari color wheel diatas, dapat dipetakan

  • Red : 165 – 15
  • Green: 45 – 75
  • Blue: 90-120

Cara mengakses channel RGB

Untuk mengakses channel RGB, gunakan index ketiga dari array image.

r = img_rgb [ :, :, 0]
g = img_rgb [ :, :, 1]
b = img_rgb [ :, :, 2]
import numpy as np
import matplotlib.pyplot as plt
import cv2

img = cv2.imread('chureito-pagoda.jpg')

%matplotlib inline

img_copy = np.copy(img)
img_rgb = cv2.cvtColor(img_copy, cv2.COLOR_BGR2RGB)

r = img_rgb [ :, :, 0]
g = img_rgb [ :, :, 1]
b = img_rgb [ :, :, 2]

f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20,10))
ax1.set_title('Red')
ax1.imshow(r, cmap='gray')
ax2.set_title('Green')
ax2.imshow(g, cmap='gray')
ax3.set_title('Blue')
ax3.imshow(b, cmap='gray')

Cara Mengakses Channel HSV

Sama seperti RGB, untuk mengakses channel HSV, gunakan index ketiga dari array image.

h = hsv [ :, :, 0]
s = hsv [ :, :, 1]
v = hsv [ :, :, 2]
hsv = cv2.cvtColor(img_copy, cv2.COLOR_RGB2HSV)
h = hsv [ :, :, 0]
s = hsv [ :, :, 1]
v = hsv [ :, :, 2]

f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20,10))
ax1.set_title('Hue')
ax1.imshow(h, cmap='gray')
ax2.set_title('Saturation')
ax2.imshow(s, cmap='gray')
ax3.set_title('Value')
ax3.imshow(v, cmap='gray')

Image yang digunakan pada tutorial ini https://drive.google.com/file/d/1sPBiKDTOomEwOqdN1CN8aUKKuVSsb737/view?usp=sharing

Anda juga bisa mengakses file google colab di https://colab.research.google.com/drive/1XzTtQ8_2dPHiF3dJv5olgSJYR9Fc6xo0?usp=sharing

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

img = io.imread('baboon.png')
8. 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

img = io.imread('baboon.png')
8. 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

img = io.imread('baboon.png')
8 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

3
1, namun jika kamu memiliki
3
2 keatas, atau
3
3 keatas, kamu sudah memiliki
3
1!

img = io.imread('baboon.png')
8 sekarang dapat dengan mudah diinstal dengan mengetikkan perintah di bawah (di dalam Terminal Mac OS X):

3
6

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 image saturation python
Cara menggunakan image saturation python
Cara menggunakan image saturation python

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

3
7, sebagai berikut:

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

Output pada script di atas adalah

3
8, 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 (

3
9). Bagaimana saya mengetahui itu dalam format RGBA? Kamu cukup dapat melakukan di bawah:

1
import skimage.io as io
2
from skimage import io, color
1
3
img = io.imread('baboon.png')
4
from skimage import io, color
5

Dalam kasus ini, kamu akan mendapatkan output:

dimensions = color.guess_spatial_dimensions(img)
0.

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:

1
import skimage.io as io
2
from skimage import io, color
1
3
img = io.imread('baboon.png')
4
2
3

Mari lanjutkan dan simpan gambar baru (grayscale) ke sebuah file. Ini dapat dilakukan dengan menggunakan function

dimensions = color.guess_spatial_dimensions(img)
1, sebagai berikut (perhatikan bahwa gambar baru adalah file
dimensions = color.guess_spatial_dimensions(img)
2):

dimensions = color.guess_spatial_dimensions(img)
3

Untuk memeriksa dimensi gambar, kita dapat menggunakan script dalam section sebelumnya, dalam hal ini kamu akan mendapatkan nilai

dimensions = color.guess_spatial_dimensions(img)
4. Atau kamu dapat menggunakan
dimensions = color.guess_spatial_dimensions(img)
5, yang menghasilkan
dimensions = color.guess_spatial_dimensions(img)
6. Jadi, sekarang kita memiliki gambar 2D.

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

1
2
5
2
2
7

Hasilnya tampak seperti ini:

Cara menggunakan image saturation python
Cara menggunakan image saturation python
Cara menggunakan image saturation python

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:

1
2
9
2
img = io.imread('baboon.png')
3
img = io.imread('baboon.png')
3
4
img = io.imread('baboon.png')
5
img = io.imread('baboon.png')
6
2
7

Jika kamu menjalankan script, apakah kamu menyadari adanya permasalahan? Ya, kita tidak dapat menerapkan operasi karena gambarnya harus 2D. Jadi, bukannya menggunakan

dimensions = color.guess_spatial_dimensions(img)
7, kita perlu menggunakan gambar 2D kita,
dimensions = color.guess_spatial_dimensions(img)
2. Output operasi ini tampak sebagai berikut:

Cara menggunakan image saturation python
Cara menggunakan image saturation python
Cara menggunakan image saturation python

Kesimpulan

Ada banyak operasi pemrosesan gambar, dan librari Python

img = io.imread('baboon.png')
8 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.