Tugas Pcd III

Embed Size (px)

Citation preview

PENGOLAHAN CITRA DIGITAL KONVERSI IMAGE BERWARNA KE RGB & CMY DENGAN DELPHI EX2

Oleh: Ni Wayan Sri Lestari(1204505046)

JURUSAN TEKNOLOGI INFORMASIFAKULTAS TEKNIK - UNIVERSITAS UDAYANABUKIT JIMBARANOktober 2013

A. PendahuluanDewasa ini penggunaan citra digital semakin meningkat karena kelebihan-kelebihan yang dimiliki oleh citra digital tersebut, antara lain kemudahan dalam mendapatkan gambar, memperbanyak gambar, pengolahan gambar dan lain-lain. Tetapi tidak semua citra digital memiliki tampilan visual yang memuaskan mata manusia. Untuk mendapatkan tampilan visual yang diinginkan, Pada pengolahan citra digital terdapat pembagian warna RGB (Red, Green, dan Blue) dan CMY (Cyan, Magenta, dan Yellow). Dalam pembagian warna tersebut terdapat perbedaan operasi yang dilakukan untuk menghasilkan warna warna yang diinginkan. Untuk mendapatkan warna RGB dan CMY, operasi yang dilakukan diterjemahkan dalam kode-kode yang berbeda.

B. Dasar Teori1. Pengertian RGBRGBadalah suatumodel warnayang terdiri atas 3 buah warna:merah(Red),hijau(Green), danbiru(Blue), yang ditambahkan dengan berbagai cara untuk menghasilkan bermacam-macamwarna. Kegunaan utama model warna RGB adalah untuk menampilkan citra atau gambar dalam perangkat elektronik, sepertitelevisidankomputer, walaupun juga telah digunakan dalamfotografibiasa. Sebelum era elektronik, model warna RGB telah memiliki landasan yang kuat berdasarkan pemahaman manusia terhadap teoritrikromatik.RGB merupakan model warna yang bergantung kepadaperanti: peranti yang berbeda akan mengenali atau menghasilkan nilai RGB yang berbeda, karena elemen warna (sepertifosforatau pewarna) bervariasi dari satu pabrik ke pabrik, bahkan pada satu peranti setelah waktu yang lama.Model warna ini merupakan model warna yang paling sering dipakai. Contoh alat yang memakai mode warna ini yaituTV,kamera,pemindai,komputer, dankamera digital.Kelebihan model warna ini adalah gambar mudah disalin / dipindah ke alat lain tanpa harus di-convertke mode warna lain, karena cukup banyak peralatan yang memakai mode warna ini. Kelemahannya adalah tidak bisa dicetak sempurna denganprinter, karena printer menggunakan mode warnaCMYK, sehingga harus diubah terlebih dahulu.RGB merupakan model warnaaditif, yaitu ketiga berkas cahaya yang ditambahkan bersama-sama, dengan menambahkan panjang gelombang, untuk membuat spektrum warna akhir

2. Pengertian CMYCyan Magenta Yellow Key, atau sering disingkat sebagaiCMYKadalah proses pencampuranpigmenyang lazim digunakan percetakan. Tintaprocess cyan,process magenta,process yellow,process blackdicampurkan dengan komposisi tertentu dan akurat sehingga menghasilkanwarnatepat seperti yang diinginkan. Bahkan bila suatu saat diperlukan, warna ini dengan mudah bisa dibentuk kembali. Sistem CMYK juga digunakan oleh banyakprinterkelas bawah karena keekonomisannya.CMYK (adalah kependekan daricyan,magenta, yellow-kuning, dan warna utamanya (black-hitam)[1], dan seringkali dijadikan referensi sebagai suatu proses pewarnaan dengan mempergunakan empat warna) adalah bagian dari model pewarnaan yang sering dipergunakan dalam pencetakan berwarna. Namun ia juga dipergunakan untuk menjelaskan proses pewarnaan itu sendiri. Meskipun berbeda-beda dari setiap tempat pencetakan, operator surat khabar, pabrik surat khabar dan pihak-pihak yang terkait, tinta untuk proses ini biasanya, diatur berdasarkan urutan dari singkatan tersebut. Model ini, baik sebagian ataupun keseluruhan, biasanya ditimpakan dalam gambar dengan warna latar putih (warna ini dipilih, dikarenakan dia dapat menyerap panjang struktur cahaya tertentu). Model seperti ini sering dikenal dengan nama "subtractive", karena warna-warnanya mengurangi warna terang dari warnaputih.Dalam model yang lain "additive color", seperti halnya RGB (Red-Merah, Green-Hijau, Blue-Biru), warnaputihmenjadi warna tambahan dari kombinasi warna-warna utama, sedangkan warnahitamdapat terjadi tanpa adanya suatu cahaya. Dalam model CMYK, berlaku sebaliknya: warnaputihmenjadi warna natural dari kertas atau warna latar, sedangkan warnahitamadalah warna kombinasi dari warna-warna utama. Untuk menghemat biaya untuk membeli tinta, dan untuk menghasilkan warnahitamyang lebih gelap, dibuatlah satu warnahitamkhusus yang menggantikan warna kombinasi daricyan,magentadankuning.

3. Delphi ex2Delphi adalah suatu bahasa pemrograman yang merupakan visualisasi sama seperti bahasa pemrograman Visual Basic (VB). Namun Delphi menggunakan bahasa yang hampir sama dengan pascal (sering disebut objek pascal). Sehingga lebih mudah untuk digunakan. Bahasa pemrograman Delphi dikembangkan oleh CodeGear sebagai divisi pengembangan perangkat lunak milik embarcadero. Divisi tersebut awalnya milik borland, sehingga bahasa ini memiliki versi Borland Delphi. Pada praktek ini penulis menggunakan delphi ex2. Adapun komponen/tools delphi yang digunakan untuk membuat interface adalah:a. Timage adalah komponen delphi yang dipakai untuk menampilkan imageb. Tlabel adalah komponen delphi yang dipakai untuk menuliskan kalimat atau katac. TradioButton adalah komponen delphi yang dipakai untuk menampilkan tombol submitd. TopenPictureDialog adalah komponen delphi yang dipakai untuk menampilkan dialog modal windows untuk memilih dan membuka file grafike. Tbutton adalah adalah komponen delphi yang dipakai untuk menampilkan tombol klik

C. PembahasanBerikut ini adalah kode-kode yang digunakan untuk menghasilkan aplikasi yang digunakan untuk menampilkan warna RGB dan CMY.unit Unit1;

interface

uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, jpeg, Vcl.ExtDlgs;

type TForm1 = class(TForm) Image1: TImage; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; RadioButton6: TRadioButton; Label1: TLabel; Label2: TLabel; Button1: TButton; Button2: TButton; opd1: TOpenPictureDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure WarnaRgb(red : integer; green:integer; blue:integer); procedure WarnaCmy(cyan : integer; magenta:integer; yellow:integer); procedure RadioButton2Click(Sender: TObject); procedure RadioButton3Click(Sender: TObject); procedure RadioButton4Click(Sender: TObject); procedure RadioButton5Click(Sender: TObject); procedure RadioButton6Click(Sender: TObject); procedure Image1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var Form1: TForm1; jGambar : TJpegImage; gambarBmp : TBitmap;implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);beginif not opd1.Execute then Exit else begin jGambar := TJPEGImage.Create; try jGambar.CompressionQuality := 100; jGambar.LoadFromFile(opd1.FileName); gambarBmp := TBitmap.Create; jgambar.LoadFromFile(opd1.FileName); try gambarBmp.Assign(jGambar); Image1.Canvas.Draw(0,0,gambarBmp); finally end; finally end; end;end;procedure TForm1.Button2Click(Sender: TObject);beginclose;end;

procedure TForm1.Image1Click(Sender: TObject);begin

end;

procedure TForm1.RadioButton1Click(Sender: TObject);beginif (radiobutton1.checked) then Image1.Canvas.Draw(0,0,gambarBmp); WarnaRgb(1,0,0);end; procedure TForm1.RadioButton2Click(Sender: TObject);beginif (radiobutton2.Checked) thenImage1.Canvas.Draw(0,0,gambarBmp);WarnaRgb(0,1,0);

end;

procedure TForm1.RadioButton3Click(Sender: TObject);beginif (radiobutton3.Checked) then Image1.Canvas.Draw(0,0,gambarBmp); WarnaRgb(0,0,1);end;

procedure TForm1.RadioButton4Click(Sender: TObject);beginif (radiobutton4.Checked) thenImage1.Canvas.Draw(0,0,gambarBmp); WarnaCmy(1,0,0);end;

procedure TForm1.RadioButton5Click(Sender: TObject);begin if (radiobutton5.Checked) thenImage1.Canvas.Draw(0,0,gambarBmp); WarnaCmy(0,1,0);end;

procedure TForm1.RadioButton6Click(Sender: TObject);begin if (radiobutton6.Checked) thenImage1.Canvas.Draw(0,0,gambarBmp); WarnaCmy(0,0,1);end;

procedure TForm1.WarnaRgb(red : integer; green:integer; blue:integer); var row, cols : Integer; // deklarasi baris dan kolom sebagai integer color : Longint; // deklarasi warna sebagai long integer r,g,b,clr : Byte; // deklarasi penampung untuk read, green // dan blue dengan tipe byte begin for cols := 0 to Image1.Picture.Bitmap.Height-1 do // lakukan pengulangan sesuai dengan height gambar asli begin Application.ProcessMessages; for row := 0 to Image1.Picture.Bitmap.Width-1 do // lakukan pengulangan sesuai dengan width gambar asli begin color := ColorToRGB(Image1.Picture.Bitmap.Canvas.Pixels[row,cols]); // lambil warna gambar ke dalam bentuk warna 8 bit yakni RGB r := GetRValue(color)*red; // ambil warna merah g := GetgValue(color)*green; // ambil warna hijau b := GetbValue(color)*blue; // ambil warna biru // set piksel dan warna gambar dan tempatkan pada komponen Image1.Picture.Bitmap.Canvas.Pixels[row,cols] := RGB(r,g,b); // TImages2 end; end;

end; procedure Tform1.WarnaCmy(cyan : integer; magenta:integer; yellow:integer); var row, cols : Integer; // deklarasi baris dan kolom sebagai integer color : Longint; // deklarasi warna sebagai long integer r,g,b,clr : Byte; // deklarasi penampung untuk read, green // dan blue dengan tipe byte begin for cols := 0 to Image1.Picture.Bitmap.Height-1 do // lakukan pengulangan sesuai dengan height gambar asli begin Application.ProcessMessages; for row := 0 to Image1.Picture.Bitmap.Width-1 do // lakukan pengulangan sesuai dengan width gambar asli begin color := ColorToRGB(Image1.Picture.Bitmap.Canvas.Pixels[row,cols]); // lambil warna gambar ke dalam bentuk warna 8 bit yakni RGB r := GetRValue(color); // ambil warna merah g := GetgValue(color); // ambil warna hijau b := GetbValue(color); if(cyan = 1) then begin r := 1 - GetRValue(color); end; if(magenta = 1) then begin g := 1 - GetGValue(color); end; if(yellow = 1) then begin b := 1 - GetBValue(color); end; // ambil warna biru // set piksel dan warna gambar dan tempatkan pada komponen Image1.Picture.Bitmap.Canvas.Pixels[row,cols] := RGB(r,g,b); // TImages2 end; end; end;end.

Kode Program 1. Program Konversi Gambar ke RGB dan CMY

Berikut adalah penjelasan dari kode diatas:1. Deklarasikan library yang akan digunakan dalam pembuatan program. Sintak sebagai berikut :uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, jpeg, Vcl.ExtDlgs;

2. Deklarasikan pula seluruh struktur data, class dan type class yang digunakan pada program , pada sintak berikut :type TForm1 = class(TForm) Image1: TImage; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; RadioButton6: TRadioButton; Label1: TLabel; Label2: TLabel; Button1: TButton; Button2: TButton; opd1: TOpenPictureDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure WarnaRgb(red : integer; green:integer; blue:integer); procedure WarnaCmy(cyan : integer; magenta:integer; yellow:integer); procedure RadioButton2Click(Sender: TObject); procedure RadioButton3Click(Sender: TObject); procedure RadioButton4Click(Sender: TObject); procedure RadioButton5Click(Sender: TObject); procedure RadioButton6Click(Sender: TObject); procedure Image1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

3. Deklarasi variable dengan nama form1 . Dengan kode seperti berikut :var Form1: TForm1;

4. Lakukan perintah untuk menampilkan dengan fungsi openpicturedialog1 pada TForm1.OpenButtonClick dan mengubah gambar tersebut dari gambar dengan format .bmp ke format .jpg, seperti berikut. procedure TForm1.Button1Click(Sender: TObject);beginif not opd1.Execute then Exit else begin jGambar := TJPEGImage.Create; try jGambar.CompressionQuality := 100; jGambar.LoadFromFile(opd1.FileName); gambarBmp := TBitmap.Create; jgambar.LoadFromFile(opd1.FileName); try gambarBmp.Assign(jGambar); Image1.Canvas.Draw(0,0,gambarBmp); finally end; finally end; end;end;

5. Deklarasikan variable yang dibuat untuk melakukan konversi ke warna RGB dan CMY. Yaitu variabel row, cols dengan tipe data integer, variabel color dengan tipe data Longint, variabel r,g,b,clr, dengan tipe data byte.RGB : procedure TForm1.WarnaRgb(red : integer; green:integer; blue:integer); var row, cols : Integer; color : Longint; r,g,b,clr : Byte;

CMY:procedure Tform1.WarnaCmy(cyan : integer; magenta:integer; yellow:integer); var row, cols : Integer; color : Longint; r,g,b,clr : Byte;

6. Setting radiobutton masing-masing untuk menampilkan warna sesuai dengan nama dari radiobutton tersebut. Pendeklarasiannya seperti berikut:Red:procedure TForm1.RadioButton1Click(Sender: TObject);beginif (radiobutton1.checked) then Image1.Canvas.Draw(0,0,gambarBmp); WarnaRgb(1,0,0);end;

Green:procedure TForm1.RadioButton2Click(Sender: TObject);beginif (radiobutton2.Checked) thenImage1.Canvas.Draw(0,0,gambarBmp);WarnaRgb(0,1,0);

end;

Blue:procedure TForm1.RadioButton3Click(Sender: TObject);beginif (radiobutton3.Checked) then Image1.Canvas.Draw(0,0,gambarBmp); WarnaRgb(0,0,1);end;

Cyan:procedure TForm1.RadioButton4Click(Sender: TObject);beginif (radiobutton4.Checked) thenImage1.Canvas.Draw(0,0,gambarBmp); WarnaCmy(1,0,0);end;

Magenta:procedure TForm1.RadioButton5Click(Sender: TObject);begin if (radiobutton5.Checked) thenImage1.Canvas.Draw(0,0,gambarBmp); WarnaCmy(0,1,0);end;

Yellow:procedure TForm1.RadioButton6Click(Sender: TObject);begin if (radiobutton6.Checked) thenImage1.Canvas.Draw(0,0,gambarBmp); WarnaCmy(0,0,1);end;

7. Set piksel dan warna gambar dan tempatkan pada komponenImage1.Picture.Bitmap.Canvas.Pixels[row,cols] := RGB(r,g,b);

8. Lakukan pengulangan sesuai dengan height dan weight gambar asli. Lalu ambil warna dengan warna 8 bit yaitu RGB dan mengalikan dengan parameter yang sudah dibuat sebelumnya.begin for cols := 0 to Image1.Picture.Bitmap.Height-1 do begin Application.ProcessMessages; for row := 0 to Image1.Picture.Bitmap.Width-1 do begin color := ColorToRGB(Image1.Picture.Bitmap.Canvas.Pixels[row,cols]); r := GetRValue(color)*red; g := GetgValue(color)*green; b := GetbValue(color)*blue; Image1.Picture.Bitmap.Canvas.Pixels[row,cols] := RGB(r,g,b); end; end;

end;

9. Lakukan pengulangan sesuai dengan height dan weight gambar asli. Lalu ambil warna dengan warna 8 bit yaitu RGB dan mengalikan dengan parameter yang sudah dibuat sebelumnya. Perbedaan operasi matematika yang ditulis dikarenakan operasi tersebut menghasilkan gambar CMY. begin for cols := 0 to Image1.Picture.Bitmap.Height-1 do begin Application.ProcessMessages; for row := 0 to Image1.Picture.Bitmap.Width-1 do begin color := ColorToRGB(Image1.Picture.Bitmap.Canvas.Pixels[row,cols]); r := GetRValue(color); g := GetgValue(color); b := GetbValue(color); if(cyan = 1) then begin r := 1 - GetRValue(color); end; if(magenta = 1) then begin g := 1 - GetGValue(color); end; if(yellow = 1) then begin b := 1 - GetBValue(color); end;

10. Pada exit button klik 2 kali dan ketik close untuk menutup program. Sintak program sebagai berikut :procedure TForm1.ExitButtonClick(Sender: TObject);begin Close;end;

Uji Coba Aplikasi:1. Tampilan program awal sebelum load image.

2. Tampilan setelah load image

3. Tampilan setelah radiobutton red dipilih

4. Tampilan setelah radiobutton green dipilih

5. Tampilan setelah radiobutton blue dipilih

6. Tampilan setelah radiobutton cyan dipilih

7. Tampilan setelah radiobutton magenta dipilih

8. Tampilan setelah radiobutton yellow dipilih

Daftar Pustaka

http://id.wikipedia.org/wiki/RGBhttp://id.wikipedia.org/wiki/CMY