Color Matching

By | February 28, 2022
Print Friendly, PDF & Email
1,757 Views

Color Matching –  Urusan warna adalah hal yang lumayan ribet, secara umum kedalaman warna yang  digunakan oleh komputer saat ini ada banyak, namun seringkali menggunakan 8 bit atau 2^8 (dari skala 0 sampai 255). Kalian bisa melihat skala 0 sampai 255 dari mulai hitam sampai putih.  Apalagi untuk warna RGB yang terdiri dari 3 channel, maka akan ada banyak sekali kombinasi warna yang didapatkan. Kalian bisa cek sendiri menggunakan color palette berikut

Color Matching pada ph Meter

Kegunaan color matching terlihat ketika akan menggunakan kertas lakmus yang terdiri dari 14 warna untuk cek phMeter. Untuk mengetahui warna yang terbentuk, saya menggunakan https://imagecolorpicker.com/

Didapatkan informasi mengenai ke 14 warna tersebut mempunyai kombinasi rgba sebagai berikut

  1. rgba(254,153,1,255)
  2. rgba(255,204,0,255)
  3. rgba(255,255,51,255)
  4. rgba(254,255,103,255)
  5. rgba(254,255,152,255)
  6. rgba(255,254,205,255)
  7. rgba(255,255,254,255)
  8. rgba(255,255,255,255)
  9. rgba(207,252,253,255)
  10. rgba(153,255,255,255)
  11. rgba(1,252,255,255)
  12. rgba(1,255,255,255)
  13. rgba(50,204,254,255)
  14. rgba(5,100,250,255)

Kita bisa membuatnya menggunakan Matlab dengan kode sebagai berikut

clc;close all;clear all;
data =[ 254	153	1
        255	204	0
        255	255	51
        254	255	103
        254	255	152
        255	254	205
        255	255	254
        255	255	255
        207	252	253
        153	255	255
        102	254	255
        1	255	255
        50	204	254
        1 100 250];

    
ph = ones(500,100,3);
phMeter  = [];
for i=1:14
    ph(:,:,1) = data(i,1);
    ph(:,:,2) = data(i,2);
    ph(:,:,3) = data(i,3);
    phMeter = [phMeter,ph];

end

figure,
imshow(uint8(phMeter))
title('pH Meter')

Kita akan uji coba menghitung kemiripan jika ditemui sebuah warna dibawah ini

warnaUji = [100 204	255 ];

pHuji = ones(500,100,3);
pHuji(:,:,1) = warnaUji(1);
pHuji(:,:,2) = warnaUji(2);
pHuji(:,:,3) = warnaUji(3);

figure,
imshow(uint8(pHuji))
title('pH Uji')

Akan sulit menentukan pilihannya bukan? ya dilihat berdasarkan color matching pasti akan memilih no 13, tapi sebenarnya ada cara yang lebih baik yaitu dengan menghitung jarak eucledian . Rumus yang digunakan cukup mudah yaitu

    \[ jarak = \sqrt{\frac{(a-b_i)^2}{n-1}} \]

Nanti dicari yang paling kecil

>> jarak = sqrt(sum((data-repmat(double(warnaUji),[size(data,1),1])).^2,2)/(14-1));
[value,pilihan]=min(jarak);
value
pilihan

value =

   13.8703


pilihan =

    13

>>

Biar lebih baik, kita lakukan langkah membandingkan phMeter dengan phUji pada color matching sebagai berikut

a = ones(500,500,3);
for i=1:3
    a(:,:,i)=data(pilihan,i);

end

a = uint8(a);
b = a;
b(:,:,1)=warna_uji(1);
b(:,:,2)=warna_uji(2);
b(:,:,3)=warna_uji(3);

figure,
subplot(1,2,1),imshow(a),title('Warna phMeter')
subplot(1,2,2),imshow(b),title(['Warna phUji : ' num2str(pilihan)])

Kalian bisa menggunakan teknik diatas untuk projek berbasis arduino UNO, ref: https://create.arduino.cc/projecthub/hminowa/color-sensor-type-ph-meter-b78638 ataupun membuat aplikasi berbasis android untuk mengetahui cat dinding rumah atas produk cat tertentu, jadi tidak bingung nantinya pas beli warna cat. Selain color matching diatas, kita bisa menggunakan untuk hal lainnnya yaitu untuk menghitung komposisi warna pada sebuah objek dengan menggunakan color palette dibawah ini

See also  Deep Learning Machine

Color Palette

Begitu banyak sekali kombinasi warna yang dapat dibuat, maka akan sulit memberikan warna satu persatu. Mengacu pada link berikut, maka saya akan mencoba untuk mendekatkan warna real menjadi ke warna acuan / color palette berdasarkan 16 nama warna.

Jadi setiap warna-warna yang ada, harus merujuk nama warna diatas

Aplikasi Color Palette

Aplikasi yang kami buat menggunakan Java Pure dan OpenCV sebagai library untuk mempermudah pengembangan ke mobile device (daripada menggunakan bahasa dart/flutter ataupun kotlin). Terdapat beberapa fitur yang berguna seperti

  • resize
  • remove background
  • ignore white (warna putih tidak diikutsertakan ketika remove background active)

Saya akan membuat contoh gambar sebagai validasi sebagai berikut

 

Setidaknya ada 5 warna yaitu

  1. white
  2. red
  3. green
  4. blue, serta
  5. teal

Nama-nama diatas dibuat berdasarkan aplikasi microsoft paint, jadi warna teal BEDA dengan warna green.

Perhatikan warna teal akan dirujuk/diubah sesuai dengan 16 warna diatas bila kita ingin menampilkan hasil clusteringnya (uncheck fitur Tampilkan asli)

Perhatikan bahwa white mempunyai komposisi sebanyak 54%, blue 17%, serta yang lainnya bisa dilihat di textarea sebelah kanan. Kita akan coba menghitung komposi warna dari gambar dibawah ini.

 

 

Hasilnya warna olive mendominiasi 87% (warna putih diabaikan)

 

 

Leave a Reply