Cara menggunakan range rgb python

Pertama ubah gambar RGB ke HSV yang nantinya nilai HSV akan digunakan untuk menentukan nilai batasnya. Untuk batasnya saya gunakan lower_range dan upper_ranger, jadi antara batas tersebut di anggap sebagai nilai yang akan di deteksi.

Ketikan code berikut untuk melihat hasilnya :

Detection Color

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import cv2

import numpy as np

img = cv2.imread('color.png', 1)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_range = np.array([100, 100, 100], dtype=np.uint8)

upper_range = np.array([189, 255, 255], dtype=np.uint8)

mask = cv2.inRange(hsv, lower_range, upper_range)

cv2.imshow('mask',mask)

cv2.imshow('image', img)

while(1):

  k = cv2.waitKey(0)

  if(k == 27):

    break

cv2.destroyAllWindows()

Hasilnya akan terlihat batas nilai yang di cari warnanya, dan disini saya mencari warna biru, lihat hasilnya seperti video diatas.

Citra digital merupakan representasi dari fungsi intensitas cahaya dalam bentuk diskrit pada bidang dua dimensi. Citra tersusun oleh sekumpulan piksel (picture element) yang memiliki koordinat (x,y) dan amplitudo f(x,y).

Koordinat (x,y) menunjukkan letak/posisi piksel dalam suatu citra, sedangkan amplitudo f(x,y) menunjukkan nilai intensitas warna citra.

Representasi citra digital beserta piksel penyusunnya ditunjukkan pada Gambar 1.

Cara menggunakan range rgb python
Gambar 1. Citra dan piksel penyusunnya

Pada umumnya, berdasarkan kombinasi warna pada piksel, citra dibagi menjadi tiga jenis yaitu citra RGB, citra grayscale, dan citra biner.

Citra pada Gambar 1 termasuk dalam jenis citra RGB truecolor 24-bit.

Citra tersebut tersusun oleh tiga kanal warna yaitu kanal merah, kanal hijau, dan kanal biru.

Masing-masing kanal warna memiliki nilai intensitas piksel dengan kedalaman bit sebesar 8-bit yang artinya memiliki variasi warna sebanyak 2^8 derajat warna (0 s.d 255).

Pada kanal merah, warna merah sempurna direpresentasikan dengan nilai 255 dan hitam sempurna dengan nilai 0. Pada kanal hijau, warna hijau sempurna direpresentasikan dengan nilai 255 dan hitam sempurna dengan nilai 0. Begitu juga pada kanal biru, warna biru sempurna direpresentasikan dengan nilai 255 dan hitam sempurna dengan nilai 0.

Perintah yang digunakan untuk merepresentasikan citra RGB beserta masing-masing kanal warna nya yaitu:

clc;clear;close all;

I = imread('peppers.png');
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
Red = cat(3,R,G*0,B*0);
Green = cat(3,R*0,G,B*0);
Blue = cat(3,R*0,G*0,B);

figure, imshow(I);
figure, imshow(Red);
figure, imshow(Green);
figure, imshow(Blue);

Citra RGB yang diperoleh ditunjukkan pada Gambar 2.

Cara menggunakan range rgb python
Gambar 2. Citra RGB

Sedangkan representasi kanal warna R, G, dan B berturut-turut ditunjukkan pada Gambar 3, 4, dan 5.

Cara menggunakan range rgb python
Gambar 3. Kanal warna merah

Cara menggunakan range rgb python
Gambar 4. Kanal warna hijau

Cara menggunakan range rgb python
Gambar 5. Kanal warna biru

Setiap piksel pada citra RGB, memiliki intensitas warna yang merupakan kombinasi dari tiga nilai intensitas pada kanal R, G, dan B.

Sebagai contoh, suatu piksel yang memiliki nilai intensitas warna sebesar 255 pada kanal merah, 255 pada kanal hijau, dan 0 pada kanal biru akan menghasilkan warna kuning.

Pada contoh lain, suatu piksel yang memiliki nilai intensitas warna sebesar 255 pada kanal merah, 102 pada kanal hijau, dan 0 pada kanal biru akan menghasilkan warna orange.

Banyaknya kombinasi warna piksel yang mungkin pada citra RGB truecolor 24-bit adalah sebanyak 256 x 256 x 256 = 16.777.216.

Representasi piksel dengan kombinasi warna R, G, dan B ditunjukkan pada Gambar 6.

Cara menggunakan range rgb python
Gambar 6. Representasi piksel dengan kombinasi warna R, G, dan B

Jenis citra yang kedua adalah citra grayscale. Citra grayscale merupakan citra yang nilai intensitas pikselnya didasarkan pada derajat keabuan.

Pada citra grayscale 8-bit, derajat warna hitam sampai dengan putih dibagi ke dalam 256 derajat keabuan di mana warna putih sempurna direpresentasikan dengan nilai 255 dan hitam sempurna dengan nilai 0.

Citra RGB dapat dikonversi menjadi citra grayscale.

Persamaan yang umumnya digunakan untuk mengkonversi citra RGB truecolor 24-bit menjadi citra grayscale 8-bit adalah

0.2989*R+0.5870*G+0.1140*B      (1)

sehingga proses konversi menghasilkan citra grayscale yang hanya memiliki satu kanal warna.

Perintah yang digunakan dalam proses konversi citra RGB menjadi citra grayscale yaitu:

J = rgb2gray(I);
figure, imshow(J);

Citra hasil konversi ditunjukkan pada Gambar 7.

Cara menggunakan range rgb python
Gambar 7. Citra hasil konversi RGB menjadi grayscale

Jenis citra yang ketiga adalah citra biner.

Citra biner adalah citra yang pikselnya memiliki kedalaman bit sebesar 1 bit sehingga hanya memiliki dua nilai intensitas warna yaitu 0 (hitam) dan 1 (putih).

Citra grayscale dapat dikonversi menjadi citra biner melalui proses thresholding.

Dalam proses thresholding, dibutuhkan suatu nilai threshold sebagai nilai pembatas konversi.

Nilai intensitas piksel yang lebih besar atau sama dengan nilai threshold akan dikonversi menjadi 1.

Sedangkan nilai intensitas piksel yang kurang dari nilai threshold akan dikonversi menjadi 0.

Misalnya nilai threshold yang digunakan adalah 128, maka piksel yang mempunyai intensitas kurang dari 128 akan diubah menjadi 0 (hitam) dan yang lebih dari atau sama dengan 128 akan diubah menjadi 1 (putih).

Dalam MATLAB nilai threshold diatur dalam kelas data double, sehingga untuk mengatur nilai threshold 128, nilai yang digunakan adalah 128/256 = 0.5.

Perintah yang digunakan dalam proses konversi citra grayscale menjadi citra biner yaitu:

K = im2bw(J,0.5);
figure, imshow(K);

Citra hasil konversi ditunjukkan pada Gambar 8.

Cara menggunakan range rgb python
Gambar 8. Citra hasil konversi grayscale menjadi biner

Thresholding pada umumnya digunakan dalam proses segmentasi citra.

Proses tersebut dilakukan untuk memisahkan antara foreground (objek yang dikehendaki) dengan background (objek lain yang tidak dikehendaki).

Pada hasil segmentasi, foreground direpresentasikan oleh warna putih (1) dan background direpresentasikan oleh warna hitam (0).

Pada kasus segmentasi pada satu citra saja, kita dapat menentukan nilai threshold dengan metode trial and error.

Namun pada kasus segmentasi pada citra dengan jumlah yang banyak, dibutuhkan suatu metode untuk menentukan nilai threshold secara otomatis.

Nilai threshold dapat diperoleh secara otomatis dengan menggunakan metode Otsu (1979).

Perintah yang digunakan untuk thresholding menggunakan metode Otsu yaitu:

L = graythresh(J);
M = im2bw(J,L);
figure, imshow(M);

Citra yang dihasilkan ditunjukkan pada Gambar 9.

Cara menggunakan range rgb python
Gambar 9. Hasil thresholding menggunakan metode Otsu

Sedangkan pengertian pengolahan citra digital adalah bidang ilmu yang mempelajari tentang bagaimana suatu citra itu dibentuk, diolah, dan dianalisis sehingga menghasilkan informasi yang dapat dipahami oleh manusia.

Project pengolahan citra digital dapat dilakukan dengan mengimplementasikan dan mengembangkan metode pengolahan citra yang sudah ada maupun metode pengolahan citra terbaru sehingga diperoleh suatu sistem pengolahan citra yang baik.