24 May 2016

Matematika Matlab untuk Citra

Dalam Citra Digital terdapat beberapa operasi matematika yang dapat dilakukan untuk memanipulasi citra. Misalnya penambahan, pengurangan, perkalian, pembagian dan lain sebagainya.
Terang dan Gelap
Perintah-perintah tersebut berguna untuk memanipulasi citra agar menjadi lebih terang atau gelap. Mengapa demikian ? Hal itu terjadi karena nilai pixel akan mengalami perubahan, apakah menjadi lebih besar atau menjadi lebih kecil. 

Apabila nilai pixel menjadi lebih besar, maka gambar akan menjadi lebih terang dan begitu sebaliknya maka citra akan menjadi lebih gelap.

Perintah-perintah matematika tersebut adalah :
  1. imadd
  2. imsubtract
  3. immultiply
  4. imcomplement
  5. imabsdiff
  6. imlincomb
Sebelum menggunakan perintah tersebut, untuk menghemat penulisan, maka perlu digunakan sebuah variabel untuk menampung sebuah citra.  Misalnya :

i = imread('adore.png`);

Maka akan diperoleh sebuah variabel bernama 'i' yang menampung citra Adore.png.  Selanjutnya kita hanya menggunakan variabel 'i' tersebut.

1. imadd

Imadd adalah perintah pada matlab untuk menambah setiap pixel citra dengan nilai konstanta tertentu.
Cara penulisannya adalah sebagai berikut :

a=imadd(i,100);  

perintah tersebut mengandung arti bahwa, setiap pixel dari citra 'i'  akan ditambahkan nilainya dengan 100
Dari gambar 'i' diperoleh nilai pixel seperti terlihat pada gambar 1.

Gambar 1. Tampilan pixel dari citra 'i'

Terlihat pada koordinat (1,1) nilai RGB-nya adalah R=0, G=0 dan B=0.
Setelah dilakukan operasi a=imadd(i,100), maka diperoleh nilai pixel seperti terlihat pada gambar 2.
Gambar 2. Tampilan pixel citra setelah ditambah dengan 100
Terlihat pada koordinat (1,1), maka nilai berubah menjadi R=100, G=100 dan B=100.  Bukan hanya itu, terlihat semua pixel berubah dengan penambahan 100.  Tetapi untuk nilai pixel yang berubah menjadi lebih besar dari 255, maka akan dipatok/dituliskan pada nilai maksimal tersebut.  Gambar tampak menjadi lebih terang.

2. imsubtract

Adalah perintah untuk mengurangi setiap nilai pixel asal dengan nilai tertentu dan akan menjadi lebih kecil nilainya dari sebelumnya.  Tentunya gambar akan menjadi lebih gelap.  Ini berkebalikan dengan perintah imadd.
Prinsip kerjanya adalah mengurangi setiap nilai RGB dengan pengurang dari pixel pada perintah yang diberikan.  Misalkan pada gambar grafik disamping, nilai mula-2 pixel misalnya 100.  Setelah dikurangi dengan 90, maka nilai hasil akan berada pada nilai 10. Lihat daerah yang di arsis warna kuning.
Dari gambar 1 kalau dilakukan perintah ini maka akan menjadi :

a=imsubtract(i,100);

Setelah perintah ini dieksekusi, maka pixel citra akan berubah menjadi lebih kecil seperti tampak pada gambar 3.

Gambar 3. Pixel setelah diberikan perintah imsubtract.
Pada koordinat (7,2) terlihat nilai RGB menjadi R=118, G=107 dan B=14.  Nilai ini berubah dari yang sebelumnya pada gambar 1. yaitu RGB, R=218, G=207 dan B=114.  

R=218-100=118
G=207-100=107
B=114-100=14

Nilai pixel yang apabila dikurangi menjadi lebih kecil dari 0, maka nilainya akan dituliskan pada angka minimum 0 tersebut.

3. Immultiply

Adalah perintah untuk mengalilkan nilai setiap pixel menjadi sekian kalinya dari nilai pixel awal.  Nilai pengali ada 2 macam, yaitu : nilai perbesaran (perkalian) dan  nilai pengecilan (pembagian).  Nilai perbesaran diperoleh dengan cara memberkan nilai pengalinya lebih besar dari 1 (pengali>1). Sedangkan pengecilan dilakukan dengan memberikan nilai pengalinya berkisar antara 0 s/d 1 (01).

Contoh dari citra i kalau dikalikan dengan nilai 2, maka hasilnya tampak seperti pada gambar 4.

a=immultiply(i,2);

Gambar 5. Tampilan pixel setelah dikalikan dengan 2

Terlihat pada koordinat (5,1) nilai berubah menjadi (60,52,30) dari koodinat sebelumnya pada gambar 1. (30,26,15).  Artinya semua nilai pixel awal pada gambar 1 dikalikan dengan dengan 2.  Ini disebut dengan perbesaran.

a=immultiply(i,0.5);

Pada perintah diatas, maka akan diperoleh nilai pixel menjadi setengahnya dari nilai pixel awal.

Gambar 6. Nilai pixel setelah dibagi 2 / dikalikan dengan 0.5
Terlihat pada koordinat (5,1) pixel bernilai (15,13,8).  sedangkan pixel sebelumnya dari gambar 1 bernilai (30,26,16).  Artinya bahwa nilai pixel semula dikalikan dengan setengahnya maka hasilnya akan menjadi setengah nilai awalnya.  Ini artinya adalah pengecilan.

4. imcomplement

Adalah perintah untuk membalik semua nilai pixel.  
Misalnya 255 dibalik menjadi 0, 0 dibalik menjadi 255.
254 dibalik menjadi 1
253 dibalik menjadi 2
10 dibalik menjadi 245
11 dibalik menjadi 244
12 dibalik menjadi 243

sehingga muncullah rumusnya menjadi ==> y = 255 - x
dimana y adalah nilai hasil dan x adalah pixel awal. 


 a=imcomplement(i);

maka akan diperoleh nilai pixel baru menjadi tampak pada gambar 7.
Gambar 7. imcomplement dari gambar 1.

Terlihat pada koordinat (8,1) nilainya menjadi (67,78,165) dari nilai pixel sebelumnya pada gambar 1. (188,177,90). Lihatlah kedua nilai tersebut bila dijumlahkan masing-masing akan bernilai 255.

5. imabsdiff

Adalah perintah untuk mendapatkan selisih nilai 2 pixel dari dari 2 citra pada masing-masing koorddinat yang sama. 

Misalnya gambar 1 (adore.png) akan dicari selisih nilai pixelnya dengan gambar 8 (add.png), maka akan diperolah nilai baru selisih dari kedua citra tersebut tampak pada gambar 9.

Gambar 8. Nilai pixel dari citra add.png
Lihatlah pada koordinat (6,1) bernilai (24,179,1) dan coba ada lihat pada gambar 1 dikoordinat yang sama (6,1), nilainya adalah (100,91,47).  Maka apabila perintah :

a=imabsdiff(i,b);

Gambar 9. Selisih nilai pixel dari dua citra (gambar 1 dengan gambar 8)

Nilai RGB pada koordinat (6,1) adalah (76,88,46).
Nilai ini diperoleh dari selisih nilai pixel citra (24,179,1) dengan (100,91,47), yaitu :

R=100-24 = 74
G=179-91=88
B=47-1=46

Hasil gambar complementnya seperti terlihat pada gambar 10.



6. imlincomb  -  KOMBINASI CITRA


Adalah perintah untuk mengkombinasi 2 buah citra menjadi sebuah citra baru.  Masing-masing citra akan ditampilkan dengan tingkat kecerahan masing-masing. Sehingga bisa saja citra pertama lebih dominan terhadap citra ke dua. Begitu juga sebaliknya.
Format perintahnya adalah sebagai berikut :

z = imloncomb(s1,citra1,s2,citra2);

dimana :
z : adalah variabel penampung nilai pixel baru
s1: skala kecerahan untuk citra 1
s2 : skala kecerahan untuk citra 2

Bila perintahnya seperti di bawah :

z=imlincomb(0.25,i,3,a);

artinya bahwa citra i akan dikalikan setiap pixelnya dengan 0.25 dan citra 2 akan dikalikan dengan 3 kalinya.

Gambar 11. Kombinasi 2 citra

Gambar 11 merupakan hasil kombinasi dari Adore.png dengan Add.png dengan masing-masing nilai pixel asli seperti terlihat pada gambar 1 dan gambar 8. 
Hasil dari kombinasi 2 citra tersebut menghasilkan nilai pixel barru seperti terlihat pada Gambar 12.

Gambar 12. Nilai pixel hasil kombinasi

Coba lihat nilai pixel pada koordinatt (8,1), nilai RGB-nya adalah (119,255,26).
Pada koordinat yang sama untuk Adore.png dan Add.png adalah (188,177,90) dan (24,179,1)
Proses perhitungannya adalah :

R = 0.25*188+3*24 = 119
G = 0.25*177+3*179 = 581.25 (karena nilai maksimum 8 bit hanya 255, maka yang diambil hanya 255)
B = 0.25*90+3*1 = 25.5 (nilai pembulatan naik menjadi 26).

Demikian, cerita singkat dari eyang. Semoga bermanfaat untuk pembaca semua.  Ehh......lupa......ngga ada yang bikin kopi ya ?????


10 May 2016

Konversi Warna (color convertion)

Gambar 1. Spektrum warna
Kali ini, pembaca akan saya ajak menjelajahi warna........termasuk warna hatimu ?????........jangan khawatir, kita semua sudah aman dan jinak kok.

Segala macam konversi warna dan implementasinya dalam bahasa pemrograman.
Sebagai bahan bacaan, beberapa waktu lalu saya telah mendapatkan e-book bagus yang bisa dipakai untuk referensi. 

Linknya adalah sebagai berikut :

Bahan Bacaan Konversi Warna 

Materi yang akan dibahas kali ini adalah :
  • Konversi warna RGB ke YIQ
  • Konversi warna RGB ke CMY-K
  • Konversi warna RGB ke HSV

Untuk lebih jelasnya sebaiknya disimak penjelasan berikut :

1. Konversi Warna RGB ke YIQ


Gambar 2. Perspektif warna YIQ

Model warna YIQ digunakan untuk standart televisi. Y berkoresponden dengan luminasi, I dan Q adalah komponen kromatik yang  disebut inphase dan quarature.
Komponen luminasi (Y) berisi semua informasi yang diperlukan untuk televisi hitam putih dan menangkap persepsi mata manusia terhadap warna gelap-terang pada warna tertentu. Kita melihat warna hijau lebih terang daripada warna merah, dan warna merah lebih terang dari warna biru, hal ini ditandai dengan bobot perspektif masing-masing yaitu 0.299, 0.587 dan 0.114 pada baris pertama matriks konversi.
Bobot ini harus digunakan ketika mengkonversi citra warna (RGB) menjadi citra keabuan (grayscale), jika diinginkan persepsi tingkat kecerahan yang sama. 

Pada gambar 2 dapat dilihat perspektif warna tersebut secara YIQ.


Mendapatkan komponen-komponen dengan menggunakan persamaan rumus sebagai berikut :
Yframe = 0,299 * Rframe0,587 * Gframe0,114 * Bframe;
Iframe  = 0,596Rframe0,275Gframe0,321 * Bframe;
Qframe = 0,212 * Rframe0,523 * Gframe0,311 * Bframe;

Dimana : Rframe menyatakan warna RED pada mode RGB, Gframe menyatakan warna GREEN pada mode RGB dan Bframe menyatakan warna BLUE pada mode RGB

setelah ini, dapat saya gunakan 'imshow' seperti itu :

imshow (Yframe);
imshow (iframe);
imshow (Qframe);


persamaan di atas, sebenarnya diperoleh dari perkalian matrik antara matrik konstanta dengan matrik RGB, sebagai berikut :



2. Konversi Warna RGB ke CMY

Bahwa konversi warna ke CMY K, diperoleh dengan cara terlebih dahulu warna RGB di normalisasi menjadi rentang antara 0 s/d 1, yaitu dengan membagi warna RGB asli dengan nilai maksimum warnanya (bit-nya, misalnya kedalaman warnanya 255).  
Gambar 3. Konversi Warna
Maka diperoleh urutan konversinya sebagai berikut :

R’ = R/255
G’ = G/255
B’ = B/255

C = (1-R’-K)/(1-K)
M = (1-G’-K)/(1-K)
Y = (1-B’-K)/(1-K)

K = 1 – max(R’,G’,B’)

Contoh :
Konversikan RGB (175, 230, 200) menjadi CMYK !

Jawaban :

R'=175/255 = 0.686275 
G'=230/255 = 0.901961
B'=200/255 = 0.784314 

K = 1 – max(R’,G’,B’) = 0.098039

C = (1-0.686275-0.098039)/(1-0.098039) = 0.23913
M = (1-0.901961-0.098039)/(1-0.098039) = 0
Y = (1-0.784314 -0.098039)/(1-0.098039) = 0.130435

Tetapi hasil perhitungan warna tersebut masih dalam bentuk normalisasi, maka harus dikembalikan ke dalam bentuk warna asli dengan cara mengalikan dengan 255 (nilai maksimum warna)

Maka hasil konversinya menjadi :
K = 0.098039*255 = 25
C = 0.23913*255 = 60.97826
M = 0 * 255 = 0
Y = 0.130435 * 255 = 33.26087 

3. Konversi Warna RGB ke HSV

Rumus yang digunakan untuk konversi ini adalah :


Cos-1 itu sama dengan ACOS (arc.cos)

Contoh Soal :
Nyatakan warna Chalk RGB (255, 251, 156) dalam HSV ?

Jawab :
HSV
               V            = 1/3 (R+G+B)
                              = 1/3 (255+251+156)
                              = 220.67
               S             = 1 – (3*min[R,G,B])/(R+G+B)
                              = 662/662 – 468/662         = 195/662            = 0.294
               H            =  karena B < G, maka H= q

q             = arc.cos {[1/2{(255-251)+(255-156)}] / [(255-251)2+(255-156)(251-156)]1/2}
               = ACOS(51.5/97.06)         = 1.011488 = H


Dengan Matlab 

Berikut adalah kode untuk menampilkan gambar RGB dalam tiga bidang

RGB = imread ( 'peppers.jpg')
[m, n] = size (RGB);
untuk i = 1: m
untuk j = 1: n / 3
R (i, j) = RGB (i, j, 1);
G (i, j) = RGB (i, j, 2);
B (i, j) = RGB (i, j, 3);
akhir
akhir
tokoh; imshow (R);
tokoh; imshow (G);
tokoh; imshow (B);Ditambahkan setelah 6 menit:Berikut adalah kode untuk konversi RGB HSI t0 ... hanya melalui ini ... u akan mendapatkan ide ..

CLC;
clear all;
tutup semua;
RGB = imread ( 'peppers.png');
tokoh; imshow (RGB); judul ( 'gambar asli');
HSI1 = rgb2hsv (RGB);
HSI = imread ( 'HSI1.png');
tokoh; imshow (HSI); judul ( 'HSI gambar');
HSI = ganda (HSI);
[m, n] = size (HSI);
RGB = hsv2rgb (HSI1);
tokoh; imshow (RGB);
untuk i = 1: m
untuk j = 1: n / 3
R (i, j) = RGB (i, j, 1);
G (i, j) = RGB (i, j, 2);
B (i, j) = RGB (i, j, 3);
akhir
akhir
tokoh; imshow (R);
tokoh; imshow (G);
tokoh; imshow (B);
untuk i = 1: m
untuk j = 1: n / 3
H (i, j) = HSI (i, j, 1);
S (i, j) = HSI (i, j, 2);
I (i, j) = HSI (i, j, 3);
% RG sektor
if (H (i, j)> = 0 & & H (i, j) <120 span="">
B (i, j) = I (i, j) * (1-S (i, j));
R (i, j) = I (i, j) * (1 (S (i, j) * cos (H (i, j)) / cos (60-H (i, j ))));
G (i, j) = 1 - (R (i, j) B (i, j));
akhir
% GB Sektor
if (H (i, j)> = 120 & & H (i, j) <240 span="">
% H (i, j) = H (i, j) -120;
R (i, j) = I (i, j) * (1-S (i, j));
G (i, j) = I (i, j) * (1 (S (i, j) * cos (H (i, j)) / cos (60-H (i, j ))));
B (i, j) = 1 - (R (i, j) G (i, j));
akhir
% BR Sektor
if (H (i, j)> = 240 & & H (i, j) <360 span="">
% H (i, j) = H (i, j) -240;
G (i, j) = I (i, j) * (1-S (i, j));
B (i, j) = I (i, j) * (1 (S (i, j) * cos (H (i, j)) / cos (60-H (i, j ))));
R (i, j) = 1 - (G (i, j) B (i, j));
akhir
akhir
akhir
HSI = uint8 (HSI);
untuk i = 1: m
untuk j = 1: n / 3
RGB (i, j, 1) = R (i, j);
RGB (i, j, 2) = G (i, j);
RGB (i, j, 3) = B (i, j);
akhir
akhir
tokoh; imshow (uint8 (RGB ),[]);
imwrite (RGB, 'RGB1.png');
imshow ( 'RGB1.png'); judul ( 'RGB Gambar');
tokoh; imshow (uint8 (R ),[]); judul ( 'R Image');
tokoh; imshow (uint8 (G ),[]); judul ( 'G Gambar');

<120 span=""><240 span=""><360 span="">tokoh; imshow (uint8 (B ),[]); judul ( 'B Gambar');

03 May 2016

Pelatihan Internet


Bapak/ibu sodara sekalian..........kali ini saya akan memposting materi pelatihan dasar komputer dengan sub pokok bahasan Pengenalan Internet dan perbotannya (.eehh.....kayak barang pecah belah saja....).




Materi ini saya sajikan di Kantor Wilayah DivPas NTT pada tanggal 4 Mei 2016.
Saya ngga usah terlalu banyak omong, materi bisa didownload pada link berikut :

1. Materi Pelatihan Dasar Komputer - Internet - 4shared
2. Materi Pelatihan Dasar Komputer - Internet - Slideshare

Ok deh. Terima kasih banyak semoga yang sedikit ini bermanfaat.