LAPORAN PRAKTIKUM FISIKA KOMPUTASI
INTERPRETASI GRAFIS INTENSITAS WARNA DASAR RGB
PADA GAMBAR BITMAP MENGGUNAKAN DELPHI7
Disusun untuk Memenuhi Tugas Mata Kuliah Praktikum Fisika Komputasi
Oleh :
SISKA ARIANI W.A
NIM. 080913081
JURUSAN FISIKA
DEPARTEMEN FISIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS AIRLANGGA
A. Judul praktikum
Interpretasi grafis intensitas warna RGB( Red Green Blue) pada suatu gambar bitmap menggunakan program Delphi7
B. Tujuan praktikum
Menentukan intensitas warna dasar RGB(Red Green Blue) pada suatu gambar bitmap berdasarkan fungsi posisi
Membuat suatu program aplikasi Image Processing berbasis intensitas RGB
C. Alat dan Bahan
Alat yang digunakan adalah Program Delphi7. Bahan atau komponen didalamnya adalah:
1 buah TImage (pada toolbar Additional) 1 buah TChart (pada toolbar Additional) 1buah TOpenDialog (pada toolbar Dialog) 3 buah TLabel ( pada toolbar Standard) 1 buah TScrollBar (pada toolbar Standard) 1 buah TButton (pada toolbar Standard)
D. Algoritma
Algoritma secara umum adalah sebagai berikut:
procedure ketika Button di klik serta opendialog ke gambar bitmap
procedure ScrollBar digeser, maka posisi X, Y, Z akan berubah menunjukkan intensitas RGB
procedure FormCreate menyatakan format posisi, ukuran dan warna pada form ketika ada gambar dan tidak, serta procedure Chart dengan 3 line masing-masing Red, Green dan Blue
prosedur Image1Click
procedure Image1MouseMove, berubahnya label X, Y, Z yang menyatakan posisi
Prosedur FormClose, yaitu prosedur yang akan diberi perintah agar program dapat dijalankan.
Pertama, masing-masing komponen disusun dalam form seperti berikut:
Selanjutnya:
Untuk mengedit Label1, Label2, Label3, Ukuran TImage dan TOpenDialog dapat dilakukan di Object Inspector. Pada ukuran TImage kita atur dalam Object
Inspector>Height dan Width kita ganti masing-masing 300. Artinya panjang
image yang dapat ditampilkan kita batasi berukuran 300x300. Atau dapat diganti Edit di sini...
Ini dia Object Inspector...
sesuka kita jika ingin menurut ukuran gambar yang dimiliki. Label1, Label2, Label3 digunakan untuk menampilkan X,Y,dan Z.
Untuk mengedit grafik dapat dilakukan dengan meng-klik kanan komponen
TChart, kemudian pilih Chart--series untuk membuat garis grafik, pada
praktikum ini kita buat 3 buah series untuk masing-masing Red, Green dan Blue. Edit label pada Line Chart dapat dilakukan di Chart--Title, sedangkan edit bentuk grafik terdapat pilihan bentuk (pie, Histogram, panah, diagram bagian dsb) serta pilihan 2D atau 3D dapat dilakukan di Chart—Series—Change—TeeChart Gallery. Edit warna line chart dapat dilakukan di Chart--Series--Border. Edit nama Grafik di Chart—Titles.
Sedangkan source code secara lengkapnnya adalah sebagai berikut: unit Unit1;
interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, jpeg;
type TForm1 = class(TForm) Image1: TImage; OpenDialog1: TOpenDialog; Chart1: TChart; Series1: TLineSeries; Series2: TLineSeries; Series3: TLineSeries; Label1: TLabel; Label2: TLabel; Label3: TLabel; ScrollBar1: TScrollBar; Button1: TButton;
procedure Button1Click(Sender: TObject); procedure ScrollBar1Change(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Image1Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction); private
{ Private declarations }
public
Part 1
{ Public declarations } end; var Form1: TForm1; gambar2 :Tbitmap; implementation {$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var red,green,blue:byte; a,b,lebar:Integer; warna:TColor; open:string; begin OpenDialog1.Execute; open:=OpenDialog1.FileName; Image1.Picture.LoadFromFile(open); scrollbar1.Enabled := True; gambar2.Assign(Image1.Picture); ScrollBar1.Max:=Image1.Picture.Height; end;
procedure TForm1.FormCreate(Sender: TObject); begin
gambar2:=TBitmap.Create;
// ScrollBar1.Max:=Image1.Picture.Height;
end;
procedure TForm1.ScrollBar1Change(Sender: TObject); var red,green,blue:byte; a,b,lebar:Integer; warna:TColor; garis:TBitmap; begin Series1.Clear; Series2.Clear; Series3.Clear; b:=ScrollBar1.Position; lebar:=Image1.Picture.Bitmap.Width; garis:=TBitmap.Create; garis.Assign(gambar2); garis.Canvas.MoveTo(0,b); Part 3 Part 4
garis.Canvas.LineTo(lebar,b); for a:=0 to lebar -1 do
begin warna:=Image1.Picture.Bitmap.Canvas.Pixels[a,b]; red:=GetRValue(warna); green:=GetGValue(warna); blue:=GetBValue(warna); Series1.AddXY(a,red); Series2.AddXY(a,green); Series3.AddXY(a,blue); end; Image1.Picture.Assign(garis); garis.Free; end;
procedure TForm1.Button2Click(Sender: TObject); var open:string; begin OpenDialog1.Execute; open:=OpenDialog1.FileName; Image1.Picture.LoadFromFile(open); end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); var warna:TColor; begin warna:=Image1.Picture.Bitmap.Canvas.Pixels[X,Y]; Label1.Caption:= inttostr(GetRValue(warna)); Label2.Caption:= IntToStr(GetGValue(warna)); Label3.Caption:= IntToStr(GetBValue(warna)); end;
procedure TForm1.Image1Click(Sender: TObject); begin
gambar2:=TBitmap.Create;
ScrollBar1.Max:=Image1.Picture.Height; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin
gambar2.Free; end;
end.
Selebihnya akan diulas pada pembahasan per-part-nya. Part 5
E. Pembahasan
Penjelasan Tiap Part untuk source code diatas: Part 1
Uses dalam source code Delphi7 adalah kode umum yang harus ada untuk
mengawali source code dan merupakan macam-macam perintah yang digunakan dalam pembuatan program aplikasi.
Part 2
Type, yang dibawahnya bertuliskan TForm dan macam-macam komponen lain,
yaitu TChart, TScrollBar, Label, Button dan Series. Maksudnya adalah dalam satu form ini dapat kita tempelkan berbagai macam komponen lain sesuai program aplikasi yang kita buat. Dalam kode inilah, komponen apasaja yang akan kita gunakan dideklarasikan. Tak lupa, di setiap komponen yang kita masukkan tadi harus disertai prosedur dibawahnya. Ini menerangkan bagaimana komponen-komponen tersebut bekerja.
Part 3
Bagian dibawah Implementation adalah urutan kerja sebuah program yang sebenarnya. Pada prosedur Button1.Click, pertama harus mendeklarasikan variable, yaitu byte yangdipakai sebagai perintah untuk membaca warna dalam bite, kemudian variable batasan integer yang digunakan sebagai perintah untuk pembacaan batas yang digunakan dalam gambar berupa integer, yaitu angka real yang kita definisikan sendiri dan Tcolor untuk membaca warna Tcolor, agar program dapat membaca Red Green Blue. Selanjutnya TOpenDialog digunakan sebagai prosedur agar ketika button di eksekusi dengan klik, akan membuka kotak dialog yang bertujuan untuk membuka file image. Nah, pada program ini kita batasi file image ber-ekstensi Bitmap saja, sehingga ketika kita klik Button, membuka Open Dialog yang terdeteksi hanya image yang Bitmap saja.
Part 4
Prosedur TScrollBar1.Change merupakan prosedur yang menjalankan Scrollbar, meliputi apa yang terjadi apabila Scrollbar tergeser. Source code pada bagian ini merupakan perintah untuk menjalankan komponen scrollbar sesuai variable yang sudah dideklarasikan sebelumnya, yaitu integer. garis:TBitmap merupakan perintah agar image yang dapat dibaca adalah bitmap saja dan pembacaan
TColor berdasarkan garis. Selanjutnya, Series1.Clear merupakan perintah agar
disetiap perubahan geser yang ada, mengalami looping sesuai posisi terupdate sesuai TScrollBar Change-nya, posisi-clear-posisi dan seterusnya. Dan
garis:=TBitmap.Create adalah Garis yang menyatakan TScrollBar yang ada,
perintah dibuat dengan memunculkan garis ketika posisi scrollbar diubah-ubah pada batas (0,b).
Part 5
Selanjutnya adalah perintah warna:=Image1.Picture.Bitmap.Canvas.Pixels[a,b]; ini menyatakan warna yang dibaca dari image bitmap dengan menggunakan canvas yang bersatuan pixel, mengapa gambar harus bitmap?? Jawabnya karena bitmap adalah gambar yang tersusun dari titik-titik atau dot dan banyaknya dot disetiap luasan dinyatakan sebagai pixel, sehingga suatu gambar ber-ekstensi bitmap dengan luasan per-inci yang memiliki satu juta dot dinyatakan sebagai 1MegaPixel. Itulah mengapa semakin besar pixel suatu kamera atau semakin besar dpi (dot per-Inch) suatu printer, maka akan menghasilkan kualitas gambar yang semakin baik. Semakin besar pixel berarti semakin baik pula resolusi gambar, karena pixel menyatakan kepadatan titik yang men-detailkan gambar. Kemudian red:=GetRValue(warna);… Series1.AddXY(a,red); menyatakan warna yang harus dipilih oleh masing-masing series. Sedangkan Garis.Free digunakan untuk memunculkan garis jika posisi scrollbar diubah.
Part 6
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y:
Integer); merupakan perintah yang dijalankan ketika mouse digerakkan di atas
Hasil Running Program setelah klik button dan sebelum Scrollbar digeser:
Running setelah ScrollBar tergeser:
Kita lihat dalam program ini, ketika scrollbar digeser maka intensitas juga berubah seiring berubahnya posisi garis dan ketika kita menggeser posisi mouse diatas gambar maka angka pada label berhighlight biru tersebut jga berubah sesuai posisi kita meletakkan mouse pointer.
Pada grafik interpretasi RGB, sumbu Y menyatakan intensitas yang mana skala warna ini adalah 255 sesuai dengan byte. Sedangkan sumbu X menyatakan 0-300 skala garis yang kita buat untuk menyatakan gambar bitmap. Pembacaan skala warna di tiap posisi titik menyatakan intensitas masing-masing Red, Green dan Blue. Pada gambar ini dapat kita lihat pada bagian mana dominan warna merah, hehe karena kebetulan saya memakai baju merah. Dan juga dapat kita simpulkan bahwa setiap warna sebenarnya adalah campuran dari warna-warna lain. Setiap warna terdiri dari campuran 3 warna dasar yaitu merah, hijau dan biru. Warna yang kita lihat, warna yang terdefinisi pada mata kita adalah warna dominan dari campuran tersebut. Warna dominan dalam Image Processing ini sering disebut sebagai Hue. Sedangkan warna putih dapat diuraikan sebagai campuran maksimum semua warna(Red+Green+Blue), jika putih sempurna maka Red, Green, Ble masing-masing bernilai 255.
Daftar Pustaka
Soelistiono, Soegianto. 2010. Delphi5; dibuat untuk Mata Kuliah Fisika Komputasi UNAIR. Halaman 136-155.