Anda di halaman 1dari 76

Modul Praktikum Pengolahan Citra Digital

MODUL I
MENGENAL PEMROGRAMAN DELPHI
I. TUJUAN

1. Mahasiswa dapat mengenal Elemen IDE Delphi


2. Mahasiswa mampu mengenal komponen Delphi
3. Mahasiswa mampu membuat aplikasi sederhana
4. Mahasiswa mampu menambahkan komponen kedalam form
II. TEORI

Delphi adalah suatu program berbasis bahasa Pascal yang berjalan dalam lingkungan
Windows. Delphi juga merupakan sebuah perangkat lunak pengembangan program yang
terintegrasi, yang meliputi fungsi untuk penulisan program, kompilasi sampai dengan
pelacakan kesalahan (debugging). Delphi adalah suatu bahasa pemrograman yang telah
memanfaatkan metode pemrograman Object Oriented Programming (OOP).
Secara default elemen IDE (Integrated Development Environment) terdiri atas
beberapa bagian sebagaimana terlihat pada gambar 1.1, yaitu Menu Bar, Tool Bar,
Component Palette, Object Treeview, Object Inspector, Form Designer, dan Code Editor.

Tool Bar
Menu bar
Component
Palette
Object
TreeView
Code
Explorer

Form
Designer

Object
Inspector

Gambar 1.1 IDE Delphi


1. Menu Bar digunakan untuk memilih perintah (Command) yang diberikan kepada
Delphi untuk melakukan suatu pekerjaan

tertentu, misalnya menyimpan

file,menampilkan elemen tertentu, menginstal komponen baru dan lain-lain.


Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 1

Modul Praktikum Pengolahan Citra Digital


2. Tool Bar berisi icon (gambar kecil) yang mengilustrasikan perintah yang diberikan,
misalnya icon disket untuk perintah menyimpan file, icon buku untuk perintah
bantuan(Help).
3. Component Palette berisi icon yang menunjukan komponen yang dapat ditambahkan
ke dalam form yang kita buat, baik komponent visual seperti button (tombol), text
box, combo box dan lain-lain.
4. Form Designer merupakan jendela untuk mendesain tampilan aplikasi yang kita buat.
Bentuk dasar dari tampilan program yang dibuat menggunakan Delphi ini adalah
berbentuk form. Didalam form ini dapat ditempatkan komponen-komponen visual dan
non visual.
5. Code Explorer digunakan untuk menambahkan dan mengedit program yang kita buat.
Dalam Delphi, beberapa bagian program akan dibuat secara otomatis ketika kita
memulai membuat sebuah proyek. Ada juga bagian program yang akan dibuat
otomatis ketika kita buat suatu event pada komponent yang ditambahkan ke form.
6. Object TreeView berisi daftar komponen (disebut juga objek) yang kita tambahkan
dalam form yang dibuat di Form Editor.
7. Object Inspector Berisi daftar property dan event dari komponen yang sedang dipilih
di form editor. Object Inspector mempunyai 2 buah tab yaitu tab Properties dan
Events. Property komponen dapat diubah dengan mengetikan pada bagian kanan dari
object inspector. Setiap komponen dapat memiliki event untuk menentukan
perilakunya apabila dilakukan hal tertentu pada komponen tersebut.

Komponen pada Delphi terdiri atas komponen visual dan komponen non visual.
Komponen visual akan ditampilkan apa adanya dalam form yang dibuat, sedangkan
komponen visual tidak terlihat pada waktu dieksukusi.
Beberapa komponen yang sering digunakan adalah:
Tabel 1.1. Tabel Komponen
Komponen

Icon

Palet

Keterangan

Label

Standar

Menambahkan tulisan dalam form

Button

Standar

Berupa tombol tekan dengan tulisan


diatasnya

Edit

Standar

Kotak isian untuk mengisikan teks atau


angka biasanya untuk input program

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 2

Modul Praktikum Pengolahan Citra Digital


Image

Additional

Untuk menampilkan gambar yang dimuat


dari file

Timer

System

Untuk membuat event yang berulang


setiap rentang waktu tertentu.

OpenPictureDialog

Dialogs

Untuk menampilkan kotak dialog untuk


memilih file citra yang akan dimuat

III. PRAKTEK
Praktek 1
1. Buka Program Aplikasi Delphi
2. Untuk memulai Proyek baru pilih Menu File New Application
3. Rancanglah Form seperti gambar dibawah ini

Gambar 1.2. Form Haloo


4. Pada label1 (Klik label1), pada Object Inspector Tab properties nilai Caption ganti
dari label1 menjadi Masukan Nama anda
5. Pada Button1 (Klick Button1), pada Object Inspector Tab properties nilai Caption
juga ganti menjadi Ok
6. Pada Form (Klik Bagian Form yang kosong), pada Object Inspector Tab properties
nilai caption ganti menjadi Haloo
7. Setelah selesai Coba Jalankan Programnya dengan cara tekan F9 atau pada Menu Run
| Run atau pilih tombol Run pada menu SpeedBar
8. Simpanlah Project anda dengan cara klik Menu File - Save Project As Beri Nama
Project1.dpr

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 3

Modul Praktikum Pengolahan Citra Digital

Praktek 2
1. Bukalah File Project 1.dpr dengan cara klik Menu File Open Project [atau bisa juga
tekan ctrl+F11] pilih Project1.dpr
2. Pada tombol Ok klik2 kali sehingga muncul source code sebagai berikut:

3. Pada baris ke 3 tambahkan kode program Panel1.Caption =Haloo Apa


Kabar+edit1.text. Pada baris 1,2 dan 4 biarkan seadanya.

4. Setelah selesai Coba Jalankan Programnya dengan cara tekan F9 atau pada Menu Run
| Run atau pilih tombol Run pada menu SpeedBar
5. Simpanlah Project anda dengan cara klik Menu File - Save Project As Beri Nama
Project2.dpr
TUGAS
Buatlah sebuah form aplikasi seperti gambar dibawah ini:
Setelah anda masukan Nim, Nama dan Jurusan dan begitu anda Clik tombol Ulangi maka
Form Nim, Nama dan Jurusan menjadi Kosong kembali.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 4

Modul Praktikum Pengolahan Citra Digital

MODUL II
MEMAHAMI PENGGUNAAN EVENT HANDLER
I. TUJUAN
1. Mahasiswa dapat memahami tentang event handler
2. Mahasiswa mampu mengenal komponen Delphi
3. Mahasiswa mampu membuat aplikasi sederhana
4. Mahasiswa mampu menambahkan komponen kedalam form

II. TEORI
Event Handler adalah mekanisme pemicuan yag dilakukan oleh sistem operasi (dalam
hal ini windows) untuk menjalankan procedure tertentu apabila komponen mengalami
sesuatu kejadian (event). Setiap komponen memiliki event tertentu yang dapat dibuatkan
event handlernya. Misalnya, komponen Button memiliki event di antaranya adalah OnClick,
OnEnter, OnExit, OnKeyDown, OnKeyPress, OnMouseDown dan lain-lain.

Cara melihat event apa saja yang dimiliki oleh suatu komponen adalah dengan
mengklik komponen yang hendak dicek, lalu pilih tab event pada Object Inspector. Di
bawahnya akan muncul daftar event yang dimiliki oleh komponen tersebut.

Praktek 1
1. Buka Program Aplikasi Delphi
2. Untuk memulai Proyek baru pilih Menu File New Application
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 5

Modul Praktikum Pengolahan Citra Digital


3. Rancanglah Form seperti gambar dibawah ini

Komponen
Form

Properti

Nilai

Name

Form1

Caption

Hitung

Width

340

Height

135

Name

ButtonTambah

Caption

Tambah

Name

ButtonKurang

Caption

Kurang

Label

Caption

Angka 1 =

Label

Caption

Angka 2 =

Label

Caption

Hasil =

Label

Name

LabelZ

Caption

10

Name

EditX

Text

Name

EditY

Text

Button

Button

Edit

Edit

4. Masukan kode Program di bawah ini:


unit Unit1;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 6

Modul Praktikum Pengolahan Citra Digital


Label1: TLabel;
Label2: TLabel;
EditX: TEdit;
EditY: TEdit;
ButtonTambah: TButton;
Label3: TLabel;
LabelZ: TLabel;
ButtonKurang: TButton;
procedure ButtonTambahClick(Sender: TObject);
procedure ButtonKurangClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
X, Y, Z: double;

implementation
{$R *.dfm}

procedure TForm1.ButtonTambahClick(Sender: TObject);


begin
X := StrToFloat(EditX.Text);
Y := StrToFloat(EditY.Text);
Z := X+Y;
LabelZ.Caption := FloatToStr(Z);
end;

procedure TForm1.ButtonKurangClick(Sender: TObject);


begin
X := StrToFloat(EditX.Text);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 7

Modul Praktikum Pengolahan Citra Digital


Y := StrToFloat(EditY.Text);
Z := X-Y;
LabelZ.Caption := FloatToStr(Z);
end;
end.
5. Jalankan kode program dengan menekan tombol F9

Catatan : Fungsi StrToFloat mengubah nilai string (karena properti text pada komponen edit
adalah bertipe string) menjadi bilangan riil (double atau real). Sebaliknya fungsi FloatToStr
mengubah bilangan riil menjadi string (karena properti caption pada komponen label bertipe
string juga)

TUGAS
1. Buatlah aplikasi sederhana untuk perkalian dan pembagian seperti gambar form
dibawah ini:

2. Buatlah aplikasi sederhana untuk penjualan seperti gambar form dibawah ini:

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 8

Modul Praktikum Pengolahan Citra Digital

MODUL III
MENAMPILKAN CITRA
I. TUJUAN
1. Mahasiswa dapat mengenal komponen yang digunakan untuk menampilkan citra
2. Mahasiswa mampu menjelaskan cara mengakses data citra
3. Mahasiswa mampu menjelaskan cara mengolah citra menggunakan Delphi
4. Mahasiswa mampu membuat aplikasi menampilkan citra

II. TEORI
Dalam Delphi terdapat sebuah komponen yang telah disediakan untuk menampilkan
citra, yaitu komponen Image. Komponen ini terdapat dalam palet Additional. Komponen ini
memiliki beberapa properti penting yang sering digunakan dalam menampilkan citra di dalam
form, yaitu:
Width

: Lebar Komponen Image

Height

: Tinggi Komponen Image

Picture

: Objek berisi data citra berbentuk bitmap

AutoSize

: Untuk mengubah agar ukuran image secara otomatis mengikuti

ukuran citra dalam picture


Center

: Untuk mengatur agar posisi citra dalam Picture di tengah komponen

Image
Proportional

: Mempertahankan aspect ratio (Perbandingan lebar dan tinggi citra)

III. PRAKTEK
Praktek 1
1. Buka Program Aplikasi Delphi
2. Untuk memulai Proyek baru pilih Menu File New Application
3. Persiapkan form seperti gambar dibawah ini:

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 9

Modul Praktikum Pengolahan Citra Digital

4. Klik tab palet Additional double klik Image

maka di dalam form akan

terdapat komponen Image.

5. Untuk memuat citra ke komponen Image pada waktu desain, klik pada komponen
Image. Kemudian pada object inspector, klik pada tombol berisi elipses (.....) di
sebelah kanan properti picture.
6. Maka akan muncul kotak dialog picture editor

7. Selanjutnya tekan tombol load picture dan muncul dialog Load Picture pilih salah
satu gambar open.
8. Maka focus akan kembali ke Picture Editor
9. Lalu tekan Ok jalankan dengan menekan F9
10. Save File dengan nama menampilkancitra.dpr

Praktek 2
1. Buka Program Aplikasi Delphi
2. Untuk memulai Proyek baru pilih Menu File New Application
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 10

Modul Praktikum Pengolahan Citra Digital


3. Persiapkan form seperti gambar dibawah ini:

4. Klik tab palet Additional double klik Image

maka di dalam form akan

terdapat komponen Image.

5. Pada Object Inspector rubahlah Properti Stretch menjadi True

6. Double klik didalam form maka akan muncul Source code tambahkan code
Image1.Picture.LoadFromFile('AA.bmp');

7. Jalankan dengan menekan F9


8. Simpan project dengan nama menampilkancitra2.dpr

Praktek 3 Program Penampil Citra


1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama TampilCitra.dpr
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 11

Modul Praktikum Pengolahan Citra Digital


3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Komponen
Form

Properti

Nilai

Name

Form1

Caption

Tampil Citra

Name

ButtonMuatCitra

Caption

Muat citra

Name

CheckBoxCenter

Caption

Center

Name

CheckBoxStretch

Caption

Stretch

Name

CheckBoxProportional

Caption

Proportional

Name

CheckBoxAutoSize

Caption

AutoSize

Name

ButtonUkuranSemula

Caption

Ukuran semula

Image

Name

Image1

OpenPictureDialog

Name

OpenPictureDialog1

Filter

Bitmaps(*.bmp) | *.bmp

InitialDir

Button

CheckBox

CheckBox

CheckBox

CheckBox

Button

4. Definisikan variabel yang diperlukan dan tuliskan di bagian pendefinisan variabel(


dibawah Form1:TForm1).
var
Form1: TForm1;
LebarSemula: integer;
TinggiSemula: integer;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 12

Modul Praktikum Pengolahan Citra Digital


5. Diperlukan event handler OnCreate pada Form1 untuk menyimpan nilai lebar dan
tinggi semula Image1 kedalam variabel diatas. Buatlah event handler seperti kode
program dibawah ini:
procedure TForm1.FormCreate(Sender: TObject);
begin
LebarSemula := Image1.Width;
TinggiSemula := Image1.Height;
end;
6. Kemudian buatlah event handler

untuk menangani event OnClick dari

ButtonMuatCitra. Double Klik ButtonMuatCitra dan masukan kode program dibawah


ini:
procedure TForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if (OpenPictureDialog1.Execute) then
begin
Image1.Picture.LoadFromFile(
OpenPictureDialog1.FileName);
end
end;
7. Kemudian untuk mengetahui efek dari properti Center, Stretch, Proportional, dan
AutoSize maka buatlah event handler OnClick untuk keempat Check Box dalam
Form1 sebagai berikut:
procedure TForm1.CheckBoxCenterClick(Sender: TObject);
begin
Image1.Center := CheckBoxCenter.Checked;
end;

procedure TForm1.CheckBoxStretchClick(Sender: TObject);


begin
Image1.Stretch := CheckBoxStretch.Checked;
end;

procedure TForm1.CheckBoxProportionalClick(Sender: TObject);


begin
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 13

Modul Praktikum Pengolahan Citra Digital


Image1.Proportional := CheckBoxProportional.Checked;
end;

procedure TForm1.CheckBoxAutoSizeClick(Sender: TObject);


begin
Image1.AutoSize := CheckBoxAutoSize.Checked;
end;
8. Selanjutnya apabila tombol ButtonUkuranSemula diklik maka ukuran Image1 akan
dikembalikan ke nilai semula. Tambahkan kode program:
procedure TForm1.ButtonUkuranSemulaClick(Sender: TObject);
begin
Image1.AutoSize := false;
CheckBoxAutoSize.Checked := false;
Image1.Width := LebarSemula;
Image1.Height := TinggiSemula;
end;
9. Jalankan Program di atas dengan menekan tombol Run/F9

TUGAS
Berikan kesimpulan dan amati kode program yang telah anda kerjakan.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 14

Modul Praktikum Pengolahan Citra Digital

MODUL IV
OPERASI PENGOLAHAN CITRA
I. TUJUAN
1. Mahasiswa dapat memahami bagaimana cara mengakses data piksel dalam sebuah
citra
2. Mahasiswa mampu memahami tentang citra keabuan
3. Mahasiswa mampu memahami tentang citra negatif
4. Mahasiswa mampu membuat aplikasi pengolahan citra

II. TEORI
Citra yang disimpan dalam komponen Image seringkali tidak hanya ditampilkan saja,
tetapi juga diolah sehingga diperoleh citra baru. Terdapat 2 cara di dalam Delphi untuk
mengakses data piksel yang ada dalam citra tersebut, yaitu:
1. Menggunakan Properti Pixels dari canvas
2. Menggunakan Properti ScanLine dari Bitmap
Dalam modul praktek kali ini akan dijabarkan penggunaan ScanLine. Untuk
menggunakan ScanLine diperlukan

variabel bertipe PbyteArray yang digunakan untuk

menunjuk ke alamat memori tempat penyimpanan data piksel citra.


Pendeklarasian:
var
PC: PbyteArray

Dengan menggunakan properti ScanLine, PC akan menunjuk ke alamat awal dari data
piksel untuk setiap barisnya, di mana nomor baris menjadi indeks dari properti tersebut. Jadi
perintah berikut akan membuat PC seolah-olah akan menjadi variabel larik byte untuk data
piksel baris ke y.
PC := Image1.Picture.Bitmap.ScanLine[y];
Selanjutnya untuk sumbu x, gunakan sebagai indeks dari PC. Untuk format citra 24
bit maka:
Elemen biru (B), posisi indeks larik 3*x
Elemen hijau (G), posisi indeks larik 3*x+1
Elemen merah (R), posisi indeks larik 3*x+2

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 15

Modul Praktikum Pengolahan Citra Digital


III. PRAKTEK
Praktek 1
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama ElemenWarna.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Komponen
Form

Properti

Nilai

Name

Form1

Caption

Elemen Warna

Name

ButtonMuatCitra

Caption

Muat citra

Name

LabelPosisi

Caption

Posisi

Caption

Merah (R)

Name

EditR

ReadOnly

True

Caption

Hijau(G)

Name

EditG

ReadOnly

True

Caption

Biru (B)

Name

EditB

ReadOnly

True

Image

Name

Image1

OpenPictureDialog

Name

OpenPictureDialog1

Filter

Bitmaps(*.bmp) | *.bmp

InitialDir

Button

Label

Label

Edit

Label

Edit

Label

Edit

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 16

Modul Praktikum Pengolahan Citra Digital


4. Selanjutnya double klikpada tombol ButtonMuatCitra dan masukan kode program
dibawah ini:
procedure TForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if (OpenPictureDialog1.Execute) then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end
end;
5. Selanjutnya buat juga event handler untuk OnMouseDown (yaitu event yang terjadi
ketika tombol mouse ditekan ketika mouse berada di atas Image1. Tambahkan kode
program ini dibawah kode program diatas:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
PC: PbyteArray;
R, G, B: byte;
begin
if (Image1.Picture.Bitmap.PixelFormat = pf24bit) then
begin
PC := Image1.Picture.Bitmap.ScanLine[Y];
R := PC[3*X+2];
G := PC[3*X+1];
B := PC[3*X];
LabelPosisi.Caption := 'Posisi: ('+IntToStr(X)+','+IntToStr(Y)+')';
EditR.Text := IntToStr(R);
EditG.Text := IntToStr(G);
EditB.Text := IntToStr(B);
end
end;
6. Jalankan Program di atas dengan menekan tombol Run/F9

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 17

Modul Praktikum Pengolahan Citra Digital

Praktek 2 Konversi ke Citra Keabuan


1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama Keabuan.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Komponen
Form

Properti

Nilai

Name

Form1

Caption

Konversi True Color ke Skala


Keabuan

Button

Button

Image

Image

OpenPictureDialog

Name

ButtonMuatCitra

Caption

Muat citra

Name

ButtonRerata

Caption

Keabuan rerata

Name

Image1

Stretch

True

Name

Image2

Stretch

True

Name

OpenPictureDialog1

Filter

Bitmaps(*.bmp) | *.bmp

InitialDir

4. Selanjutnya double klik pada tombol ButtonMuatCitra dan masukan kode program
dibawah ini:
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 18

Modul Praktikum Pengolahan Citra Digital


procedure TForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if (OpenPictureDialog1.Execute) then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Image2.Picture := Image1.Picture;
end
end;
5. Selanjutnya Double klik pada tombol ButtonRerata dan masukan kode program di
bawah ini:
procedure TForm1.ButtonRerataClick(Sender: TObject);
var
PC, PH: PByteArray;
x, y: integer;
R, G, B, K: byte;
begin
for y:=0 to Image1.Picture.Height-1 do
begin
PC := Image1.Picture.Bitmap.ScanLine[y];
PH := Image2.Picture.Bitmap.ScanLine[y];
for x:=0 to Image1.Picture.Width-1 do
begin
R := PC[3*x+2];
G := PC[3*x+1];
B := PC[3*x];
K := Round((R+G+B)/3);
PH[3*x+2] := K;
PH[3*x+1] := K;
PH[3*x] := K;
end;
end;
Image2.Refresh;
6. Jalankan Program di atas dengan menekan tombol Run/F9

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 19

Modul Praktikum Pengolahan Citra Digital

Praktek 3
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama CitraNegatif.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Komponen
Form

Button

Image

Image

OpenPictureDialog

Properti

Nilai

Name

Form1

Caption

Citra Negatif

Name

ButtonMuatCitra

Caption

Muat citra

Name

Image1

Stretch

True

Name

Image2

Stretch

True

Name

OpenPictureDialog1

Filter

Bitmaps(*.bmp) | *.bmp

InitialDir

4. Selanjutnya buat event handler untuk event OnClick pada tombol ButtonMuatCitra
procedure TForm1.ButtonMuatCitraClick(Sender: TObject);
var
PC, PH: PByteArray;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 20

Modul Praktikum Pengolahan Citra Digital


x, y: integer;
begin
if (OpenPictureDialog1.Execute) then
begin
Image1.Picture.LoadFromFile(
OpenPictureDialog1.FileName);
Image2.Picture := Image1.Picture;
for y:=0 to Image1.Picture.Height-1 do
begin
PC := Image1.Picture.Bitmap.ScanLine[y];
PH := Image2.Picture.Bitmap.ScanLine[y];
for x:=0 to Image1.Picture.Width-1 do
begin
PH[3*x+2] := 255-PC[3*x+2];
PH[3*x+1] := 255-PC[3*x+1];
PH[3*x] := 255-PC[3*x];
end;
end;
Image2.Refresh;
end
end;
5. Jalankan Program dengan menekan tombol F9

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 21

Modul Praktikum Pengolahan Citra Digital

MODUL V
OPERASI KECEMERLANGAN DAN PENGHALUSAN
I. TUJUAN
1. Mahasiswa dapat memahami bagaimana cara mengubahnilai ketiga elemen warna
2. Mahasiswa mampu memahami operasi penghalusan

II. TEORI
Modifikasi kecemerlangan (brightness) adalah salah satu operasi dasar pengolahan
citra. Operasi ini digunakan untuk mengubah nilai ketiga elemen warna menggunakan
persamaan berikut ini:
Ro = Ri + CR
Go = Gi + CG
Bo = Bi + CB
Di mana CR , CG , CB adalah konstanta yang digunakan untuk memodifikasi elemen warna
merah, hijau dan biru. Konstanta ini bernilai antara -255 sampai dengan 255. Nilai negatif
konstanta ini akan menyebabkan citra menjadi lebih gelap

sedangkan nilai positif

menyebabkan citra menjadi lebih cemerlang.


Perlu diingat bahwa nilai piksel adalah dari 0 sampai dengan 255 untuk format 8 bit
tiap elemen warna sehingga tidak pernah negatif.

III. PRAKTEK
Praktek 1
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama Kecemerlangan.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 22

Modul Praktikum Pengolahan Citra Digital


Komponen

Properti

Form

Nilai

Name

Form1

Caption

Modifikasi Kecemerlangan

Name

ButtonMuatCitra

Caption

Muat citra

Label

Caption

Merah

Label

Caption

Hijau

Label

Caption

Biru

TrackBar

Name

TrackBarMerah

Min

-250

Max

250

Frequency

50

Name

TrackBarHijau

Min

-250

Max

250

Frequency

50

Name

TrackBarBiru

Min

-250

Max

250

Frequency

50

Name

CheckBoxSeragam

Caption

Seragam

Name

Image1

Stretch

True

Name

Image2

Stretch

True

Name

OpenPictureDialog1

Filter

Bitmaps(*.bmp) | *.bmp

InitialDir

Button

TrackBar

TrackBar

CheckBox

Image

Image

OpenPictureDialog

4. Selanjutnya

buatlah

event

handler

untuk

event

OnClick

pada

tombol

ButtonMuatCitra. Masukan kode program di bawah ini:


procedure TForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if (OpenPictureDialog1.Execute) then
begin
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 23

Modul Praktikum Pengolahan Citra Digital


Image1.Picture.LoadFromFile(
OpenPictureDialog1.FileName);
Image2.Picture := Image1.Picture;
TrackBarMerah.Position := 0;
TrackBarHijau.Position := 0;
TrackBarBiru.Position := 0;
end
end;
5. Selanjutnya karena event handler untuk ketiga komponen TrackBar adalah sama yaitu
menghitung nilai semua piksel dalam citra untuk setiap kali ada perubahan posisi
thumb pada komponen tersebut. Tambahkan deklarasi fungsi Proses dalam
pendefinisian kelas Tform1, di bagian deklarasi privat:
private
procedure Proses;
{ Private declarations }
6. Selanjutnya tambahkan prosedur Tform1.Proses di bagian awal implementasi sebagai
berikut:
implementation

{$R *.dfm}

procedure TForm1.Proses;
var
PC, PH: PByteArray;
x, y, cR, cG, cB, Ro, Go, Bo: integer;
begin
cR := TrackBarMerah.Position;
cG := TrackBarHijau.Position;
cB := TrackBarBiru.Position;
for y:=0 to Image1.Picture.Height-1 do
begin
PC := Image1.Picture.Bitmap.ScanLine[y];
PH := Image2.Picture.Bitmap.ScanLine[y];
for x:=0 to Image1.Picture.Width-1 do
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 24

Modul Praktikum Pengolahan Citra Digital


begin
Ro := PC[3*x+2]+cR;
if (Ro<0) then
Ro := 0;
if (Ro>255) then
Ro := 255;
Go := PC[3*x+1]+cG;
if (Go<0) then
Go := 0;
if (Go>255) then
Go := 255;
Bo := PC[3*x]+cB;
if (Bo<0) then
Bo := 0;
if (Bo>255) then
Bo := 255;
PH[3*x+2] := Ro;
PH[3*x+1] := Go;
PH[3*x] := Bo;
end;
end;
Image2.Refresh;
end;
7. Selanjutnya buat event handler

untuk event OnChange pada komponen

TrackBarMerah , masukan kode dibawah ini:


procedure TForm1.TrackBarMerahChange(Sender: TObject);
begin
if CheckBoxSeragam.Checked then
begin
TrackBarHijau.Position := TrackBarMerah.Position;
TrackBarBiru.Position := TrackBarMerah.Position;
end;
Proses;
end;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 25

Modul Praktikum Pengolahan Citra Digital


8. Selanjutnya buat juga event handler

OnChange untuk TrackBarHijau dan

TrackBarBiru, masukan kode program dibawah ini:


procedure TForm1.TrackBarHijauChange(Sender: TObject);
begin
if CheckBoxSeragam.Checked then
begin
TrackBarMerah.Position := TrackBarHijau.Position;
TrackBarBiru.Position := TrackBarHijau.Position;
end;
Proses;
end;

procedure TForm1.TrackBarBiruChange(Sender: TObject);


begin
if CheckBoxSeragam.Checked then
begin
TrackBarMerah.Position := TrackBarBiru.Position;
TrackBarHijau.Position := TrackBarBiru.Position;
end;
Proses;
end;
9. Jalankan dengan menekan tombol F9

Praktek 2
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama Penghalusan.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 26

Modul Praktikum Pengolahan Citra Digital

Komponen
Form

Properti

Nilai

Name

Form1

Caption

Penghalusan Seragam

Name

ButtonMuatCitra

Caption

Muat citra

Label

Caption

Edit

Name

EditN

Text

ReadOnly

True

Name

UpDownN

Min

Max

Associate

EditN

Name

Image1

Stretch

True

Name

Image2

Stretch

True

Name

OpenPictureDialog1

Filter

Bitmaps(*.bmp) | *.bmp

InitialDir

Button

UpDown

Image

Image

OpenPictureDialog

4. Selanjutnya tambahkan deklarasi procedure Proses di dalam deklarasi kelas Tform1 di


bagian private.
private
procedure Proses;
5. Selanjutnya tambahkan procedure Proses di bagian awal implementasi (di bawah
{$R*.dfm})
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 27

Modul Praktikum Pengolahan Citra Digital

implementation
{$R *.dfm}

procedure TForm1.Proses;
var
x, y, w, h, N, i, j: integer;
PC, PH: PByteArray;
Ri, Gi, Bi, Ro, Go, Bo: array of array of byte;
sumR, sumG, sumB, bobot: double;
begin
N := StrToInt(EditN.Text);
bobot := 1/((2*N+1)*(2*N+1));
w := Image1.Picture.Width;
h := Image1.Picture.Height;
SetLength(Ri, w, h);
SetLength(Gi, w, h);
SetLength(Bi, w, h);
SetLength(Ro, w, h);
SetLength(Go, w, h);
SetLength(Bo, w, h);
for y := 0 to h-1 do
begin
PC := Image1.Picture.Bitmap.ScanLine[y];
for x := 0 to w-1 do
begin
Ri[x,y] := PC[3*x+2];
Gi[x,y] := PC[3*x+1];
Bi[x,y] := PC[3*x];
end;
end;
for y := N to h-1-N do
for x := N to w-1-N do
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 28

Modul Praktikum Pengolahan Citra Digital


begin
sumR := 0;
sumG := 0;
sumB := 0;
for j := -N to N do
for i := -N to N do
begin
sumR := sumR+Ri[x+i,y+j];
sumG := sumG+Gi[x+i,y+j];
sumB := sumB+Bi[x+i,y+j];
end;
Ro[x,y] := Round(bobot*sumR);
Go[x,y] := Round(bobot*sumG);
Bo[x,y] := Round(bobot*sumB);
end;
for y := 0 to h-1 do
begin
PH := Image2.Picture.Bitmap.ScanLine[y];
for x := 0 to w-1 do
begin
PH[3*x+2] := Ro[x,y];
PH[3*x+1] := Go[x,y];
PH[3*x] := Bo[x,y];
end;
end;
Ri := nil; Gi := nil; Bi := nil; Ro := nil; Go := nil; Bo := nil;
Image2.Refresh;
end;
6. Selanjutnya

buatlah

event

handler

untuk

event

OnClick

pada

tombol

ButtonMuatCitra.
procedure TForm1.ButtonMuatCitraClick(Sender: TObject);
begin
if (OpenPictureDialog1.Execute) then
begin
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 29

Modul Praktikum Pengolahan Citra Digital


Image1.Picture.LoadFromFile(
OpenPictureDialog1.FileName);
Image2.Picture := Image1.Picture;
Proses;
end
end;
7. Terakhir tambahkan event handler OnChanging untuk komponen UpDownN yang
hanya berisi perintah memanggil procedure Proses.
procedure TForm1.UpDownNChanging(Sender: TObject;
var AllowChange: Boolean);
begin
Proses;
end;
8. Jalankan Program

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 30

Modul Praktikum Pengolahan Citra Digital

MODUL VI
INSTALASI PAKET KOMPONEN JHVIDEOCAP
I. TUJUAN
1. Mahasiswa dapat memahami komponen untuk menangkap citra/frame dari kamera
2. Mahasiswa mampu menginstal paket komponen JHVideoCap

II. TEORI
Komponen standar dari Delphi tidak dapat digunakan untuk mengakses kamera digital
atau webcam. Oleh karenaitu diperlukan komponen tambahan untuk menangkap citra atau
frame dari webcam, baik itu untuk penangkapan citra secara tunggal maupun dalam bentuk
citra dinamik.
Pada modulmpraktikum kali ini akan digunakan komponen JHVideoCap. Paket ini
dibuat oleh J Huebler dari jerman. Produk ini bersifat freeware danboleh digunakan untuk
sembarang aplikasi tanpa harus membayar. Paket JHVideoCap terdiri atas 2 komponen yaitu:
1. TVideoCap, yang digunakan untuk menangkap frame langsung dari webcam.
2. TvideoDisp, yang digunakan untuk menampilkan frame bitmap.
Paket

JHVideoCap

dapat

diunduh

secara

bebas

di

http://www.torry.net/vcl/mmedia/video/jhvideocap. Untuk mendapatkannya bisa meminta ke


Aslab atau ke Dosen Pengampu.

III. PRAKTEK
Praktek 1 Menginstal Paket JHVideoCap
Sebelum menginstal JHVideoCap, perlu diperhatikan hal berikut ini. Jika pada Delphi yang
digunakan terdapat komponen GLScene, yaitu sebuah paket komponen yang digunakan
untuk menampilkan gambar 3 dimensi, maka paket JHVideoCap tidak dapat diinstal karena
pada paket GLScene memiliki unit yang memiliki nama yang sama dengan yang terdapat
dalam Tvideo yaitu unit vfw. Oleh karena itu paket GLScene harus dinonaktifkan dahulu.
1. Klik Menu Component Install Packages..
2. Muncul kotak dialog Default Project Options, Hilangkan centangan pada GLScene

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 31

Modul Praktikum Pengolahan Citra Digital

3. Centang pada CheckBox default


4. Ok
Menginstal Paket JHVideoCap
1. Extract File Component.zip yang telah anda download/yang telah anda copy dari
Dosen ke folder untuk menginstal paket JHVideoCap, disarankan di folder tempat
mengintal delphi.Contoh di C:\Program Files\Delphi7SE\Imports

2. Untuk Delphi versi 6 atau 7 gunakan file videocap5.dpk. double click saya filenya.
Maka akan muncul kotak konfirmasi untuk mengkonversi paket ke versi lebih baru
tekan tombol yes.

3. Kemudian akan muncul jendela paket JHVideoCap. Untuk Delphi 7 unit drvedit.pas
harus dihilangkan karena akan menimbulkan error ketika dicompile.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 32

Modul Praktikum Pengolahan Citra Digital

4. Klik drvedit.pas klik remove


5. Munculkotak dialog remove from project, klik drvedit dan tekan ok

6. Tekan tombol yes untuk menghapus unit yang dipilih tadi dari paket.
7. Setelah unit drvedit sudah dihapus, tekan icon compile

8. Setelah itu tekan Install

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 33

Modul Praktikum Pengolahan Citra Digital


9. Selamat JHVideoCap telah terinstal, Informasi diatas menandakan paket JHVideoCap
telah berhasil diinstal dan siap untuk digunakan. Maka akan muncul palet baru dalam
palet komponen, yaiut palet video, dengan 2 buah komponen didalamnya,yaitu
VideoCap dan VideoDisp

Praktek 2 Setting Proyek Menggunkan TVideoCap


Setelah diinstal JHVideoCap, untuk dapat menggunakan komponen TVideoCap dalam
proyek perlu disetting dahulu.
1. Pilih Menu Project Options
2. Muncul kotak dialog Project Options pilih tab Directories /Conditionals

3. Pada search path isikan folder dimana videocap.pas berada (dalam contoh ini ada di,
C:\Program Files\Borland\Delphi7\Imports\jhvideocap\component)
4. Tekan OK

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 34

Modul Praktikum Pengolahan Citra Digital

MODUL VII
PENGAKSESAN KAMERA
I. TUJUAN
1. Mahasiswa dapat memahami program untuk menangkap citra/frame dari kamera
2. Mahasiswa mampu memahami cara pembuatan program untuk penyimpanan frame
tunggal

II. TEORI
Ada beberapa cara untuk menampilkan frame yang ditangkap dari kamera, yaitu:
1. Menggunakan video preview
2. Menggunakan Video stream
3. Menggunakan singleframe yang ditangkap dengan fungsi GrabFrame

III. PRAKTEK
Praktek 1. MenampilkanPreview Frame dari Kamera
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama TampilPreview.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Komponen
Form

Button

Properti

Nilai

Name

Form1

Caption

Tampil Preview Kamera

Name

ButtonPreview

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 35

Modul Praktikum Pengolahan Citra Digital

Button

Button

Label

Label

CheckBox

CheckBox

Edit

UpDown

VideoCap

Caption

Preview

Name

ButtonFormat

Caption

Format

Name

ButtonDisplay

Caption

Display

Name

LabelDriverKamera

Caption

Driver Kamera:

Name

LabelFormatVideo

Caption

Format Video:

Name

CheckBoxScale

Caption

PreviewScale to Window

Name

CheckBoxProportional

Caption

PreviewScale Proportional

Name

EditFps

Text

15

Read Only

True

Name

UpDownFps

Min

Max

30

Position

15

Asociate

EditFps

Name

VideoCap1

Width

320

Height

240

VideoPreview

false

4. Tambahkan deklarasi variabel yang diperlukan yaitu: LebarVideo, TinggiVideo, Bpp,


Ukuran Video. Masukan kode program dibawah ini:
var
Form1: TForm1;
LebarVideo, TinggiVideo, Bpp, UkuranVideo: integer;
5. Tambahkan deklarasi procedure Info didalam deklarasi kelas Tform1 di bagian
private.
private
procedure Info;
6. Tambahkan procedure Info di bagian awal implementasi (dibawah {$R*.dfm})
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 36

Modul Praktikum Pengolahan Citra Digital

implementation
{$R *.dfm}

procedure TForm1.Info;
begin
LebarVideo := VideoCap1.BitMapInfoHeader.biWidth;
TinggiVideo := VideoCap1.BitMapInfoHeader.biHeight;
Bpp := VideoCap1.BitMapInfoHeader.biBitCount;
UkuranVideo := VideoCap1.BitMapInfoHeader.biSizeImage;
LabelFormatVideo.Caption := 'Format video: '+
IntToStr(LebarVideo)+'x'+IntToStr(TinggiVideo)+
', '+IntToStr(Bpp)+' bit ('+IntToStr(UkuranVideo)+
' byte/frame)';
end;
7. Procedure Info diatas akan dipanggil setiap kali terjadi perubahan status, yaitu dengan
terjadinya event OnStatus. Tambahkan kode program dibawah ini:
procedure TForm1.VideoCap1Status(Sender: TObject);
begin
Info;
end;
8. Selanjutnya buatlah event handler untuk event OnCreate pada Form1. Caranya
tambahkan kode program berikut ini:
procedure TForm1.FormCreate(Sender: TObject);
begin
VideoCap1.DriverIndex := 0;
LabelDriverKamera.Caption := 'Driver kamera: '+
VideoCap1.DriverName;
VideoCap1.DriverOpen := true;
Info;
end;
9. Selanjutnya tambahkan kode program dibawah ini kedalam ButtonPreview. Double
click ButtonPreview masukan kode program berikut:
procedure TForm1.ButtonPreviewClick(Sender: TObject);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 37

Modul Praktikum Pengolahan Citra Digital


begin
VideoCap1.VideoPreview := not VideoCap1.VideoPreview;
end;
10. Selanjutnya tambahkan kode program dibawah ini kedalam ButtonFormat. Double
click ButtonFormat masukan kode program berikut:
procedure TForm1.ButtonFormatClick(Sender: TObject);
begin
if (VideoCap1.HasDlgFormat) then
VideoCap1.DlgVFormat
else
ShowMessage('Driver tidak memiliki dialog Format');
end;
11. Selanjutnya tambahkan kode program dibawah ini kedalam ButtonDisplay. Double
click ButtonDisplay masukan kode program berikut:
procedure TForm1.ButtonDisplayClick(Sender: TObject);
begin
if (VideoCap1.HasDlgDisplay) then
VideoCap1.DlgVDisplay
else
ShowMessage('Driver tidak memiliki dialog Display');
end;
procedure TForm1.FormResize(Sender: TObject);
begin
VideoCap1.Width := Width-VideoCap1.Left-18;
VideoCap1.Height := Height-VideoCap1.Top-42;
end;
12. Selanjutnya untuk

melihat

efek dari Properti

PreviewScaletoWindow dan

PreviewScaleProportional tambahkan event handler untuk event OnClick pada


komponen CheckBoxScale dan CheckBoxProportional. Kode programnya dibawah
ini:
procedure TForm1.CheckBoxScaleClick(Sender: TObject);
begin
VideoCap1.PreviewScaleToWindow := CheckBoxScale.Checked;
end;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 38

Modul Praktikum Pengolahan Citra Digital

procedure TForm1.CheckBoxProportionalClick(Sender: TObject);


begin
VideoCap1.PreviewScaleProportional := CheckBoxProportional.Checked;
end;
13. Terakhir tambahkan event handler OnChanging untuk komponen UpDownFps yang
digunakan untuk mengatur banyaknya frame tiap detik yang akan di preview. Kode
programnya dubawah ini:
procedure TForm1.UpDownFpsChanging(Sender: TObject;
var AllowChange: Boolean);
begin
VideoCap1.PreviewRate := StrToInt(EditFps.Text);
end;
14. Jalankan dengan menekan tombol F9

Praktek 2 Menyimpan Frame ke file


Seringkali frame yang ditangkap oleh kamera perludisimpan kedalam file sehingga
dapat digunakan/dianalisis pada kesempatan yang lain. Pada modul praktikum kali ini akan
dibahas cara menyimpan frame tunggal ke dalam file bitmap menggunakan fungsi
SaveAsDIB.
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama SimpanFrame.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 39

Modul Praktikum Pengolahan Citra Digital


Komponen
Form

Button

Button

Label

OpenPictureDialog

VideoCap

Properti

Nilai

Name

Form1

Caption

Penyimpanan Frame Tunggal

Name

ButtonNamaFile

Caption

Nama file

Name

ButtonSimpan

Caption

Simpan

Name

LabelNamaFile

Caption

Frame.bmp

Name

SavePictureDialog1

Filter

Bitmap(*.bmp)|*.bmp

InitialDir

DefaultExt

bmp

Name

VideoCap1

Width

320

Height

240

VideoPreview

False

Color

clWhite

4. Pertama-tama buatlah event handler untuk event OnCreate pada Form1, kode
programnya sebagi berikut:
procedure TForm1.FormCreate(Sender: TObject);
begin
VideoCap1.DriverIndex := 0;
VideoCap1.DriverOpen := true;
VideoCap1.VideoPreview := true;
end;
5. Tombol ButtonNamaFile digunakan untuk mengganti atau memilih nama file yang
akan digunakan untuk menyimpan frame. Double click ButtonNamaFile, masukan
kode program dibawah ini:
procedure TForm1.ButtonNamaFileClick(Sender: TObject);
begin
if (SavePictureDialog1.Execute) then
LabelNamaFile.Caption := SavePictureDialog1.FileName;
end;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 40

Modul Praktikum Pengolahan Citra Digital


6. Tombol ButtonSimpan digunakan untuk menyimpan frame ke file dengan nama file
seperti tercantum pada LabelNamaFile.Double click ButtonSimpan, masukan kode
program dibawah ini:
procedure TForm1.ButtonSimpanClick(Sender: TObject);
begin
VideoCap1.SingleImageFile := LabelNamaFile.Caption;
VideoCap1.GrabFrameNoStop;
if VideoCap1.SaveAsDIB then
ShowMessage('Frame tersimpan')
else
ShowMessage('Gagal menyimpan')
end;
7. Kompile dan jalankan program tersebut.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 41

Modul Praktikum Pengolahan Citra Digital

MODUL VIII
PENGAKSESAN KAMERA2
I. TUJUAN
1.

Mahasiswa dapat memahami program untuk menangkap citra/frame dari kamera

2.

Mahasiswa mampu memahami cara pembuatan program untuk penyimpanan file


video stream

II. TEORI
Frame yang ditangkap oleh driver kamera dapat pula disimpan dalam bentuk file
video. Untuk membuatnya, properti komponen TVideoCap yang diperlukan antara lain
adalah BufferFileSize,

CapIndexSize, CapTimeLimit, CapToFile, FrameRate,

dan

VideoFileName.

III. PRAKTEK
Praktek 1
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama SimpanVideo.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Komponen
Form

Properti

Nilai

Name

Form1

Caption

Penyimpanan

Video

dari

Kamera

Button

Width

510

Name

ButtonNamaFile

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 42

Modul Praktikum Pengolahan Citra Digital

Button

Button

Button

Edit

Edit

Label

SavePictureDialog

VideoCap

Image

Caption

Nama file

Name

ButtonSimpan

Caption

Simpan

Name

ButtonFormat

Caption

Format

Name

ButtonKompresi

Caption

Kompresi

Name

EditLama

Text

Name

EditIndeks

Text

Name

LabelNamaFile

Caption

Video.bmp

Name

SavePictureDialog1

Filter

Video(*.avi)|*.avi

InitialDir

DefaultExt

Avi

Name

VideoCap1

Width

320

Height

240

VideoPreview

False

Color

clWhite

Frame rata

30

Cap to File

True

Name

Image1

Width

320

Height

240

4. Masukan kode program seperti dibawah ini:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 43

Modul Praktikum Pengolahan Citra Digital


Dialogs, ComCtrls, StdCtrls, ExtCtrls, Videocap, vfw, ExtDlgs;

type
TForm1 = class(TForm)
VideoCap1: TVideoCap;
ButtonSimpan: TButton;
ButtonNamaFile: TButton;
LabelNamaFile: TLabel;
SavePictureDialog1: TSavePictureDialog;
ButtonKompresi: TButton;
ButtonFormat: TButton;
Label1: TLabel;
EditLama: TEdit;
EditIndeks: TEdit;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure ButtonNamaFileClick(Sender: TObject);
procedure ButtonSimpanClick(Sender: TObject);
procedure ButtonKompresiClick(Sender: TObject);
procedure ButtonFormatClick(Sender: TObject);
procedure VideoCap1StatusCallback(Sender: TObject; nID: Integer;
status: String);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 44

Modul Praktikum Pengolahan Citra Digital

procedure TForm1.FormCreate(Sender: TObject);


begin
VideoCap1.DriverIndex := 0;
VideoCap1.DriverOpen := true;
VideoCap1.VideoPreview := true;
end;

procedure TForm1.ButtonNamaFileClick(Sender: TObject);


begin
if (SavePictureDialog1.Execute) then
LabelNamaFile.Caption := SavePictureDialog1.FileName;
end;

procedure TForm1.ButtonSimpanClick(Sender: TObject);


begin
VideoCap1.VideoFileName := LabelNamaFile.Caption;
if VideoCap1.CapInProgess then
begin
VideoCap1.StopCapture;
ButtonSimpan.Caption := 'Simpan';
end
else
begin
VideoCap1.CapTimeLimit := StrToInt(EditLama.Text);
VideoCap1.CapIndexSize := StrToInt(EditIndeks.Text);
VideoCap1.StartCapture;
ButtonSimpan.Caption := 'Stop';
end
end;

procedure TForm1.ButtonFormatClick(Sender: TObject);


var
lebar: integer;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 45

Modul Praktikum Pengolahan Citra Digital


begin
if VideoCap1.HasDlgFormat then
begin
VideoCap1.DlgVFormat;
VideoCap1.Width := VideoCap1.BitMapInfoHeader.biWidth;
VideoCap1.Height := VideoCap1.BitMapInfoHeader.biHeight;
lebar := VideoCap1.Left+VideoCap1.Width+18;
if lebar>510 then
Width := lebar
else
Width := 510;
Height := VideoCap1.Top+VideoCap1.Height+42;
end;
end;

procedure TForm1.ButtonKompresiClick(Sender: TObject);


begin
VideoCap1.DlgVCompression;
end;

procedure TForm1.VideoCap1StatusCallback(Sender: TObject; nID: Integer;


status: String);
begin
if nID = IDS_CAP_End then
ButtonSimpan.Caption := 'Simpan';
end;
end.
5. Jalankan dengan menekan tombol F9
6. Lihat hasil video penyimpanan

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 46

Modul Praktikum Pengolahan Citra Digital

MODUL IX& X
ANALISIS CITRA DENGAN
FEATURE EXTRACTION
I. TUJUAN
1.

Mahasiswa dapat memahami analisis citra

2.

Mahasiswa mampu memahami cara pembuatan program feature extraction

II. PRAKTEK
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama SimpanVideo.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

4. Masukan kode program dibawah ini:


unit image1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, ExtDlgs;

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 47

Modul Praktikum Pengolahan Citra Digital


type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

SpeedButton4: TSpeedButton;

SpeedButton5: TSpeedButton;

SpeedButton6: TSpeedButton;

SpeedButton7: TSpeedButton;

SpeedButton8: TSpeedButton;

Image1: TImage;
OpenPictureDialog1: TOpenPictureDialog;
BitBtn1: TBitBtn;
SpeedButton9: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
gambar:Tbitmap; mampat:Tbitmap; akhir:Tbitmap;
implementation
{$R *.dfm}
procedure TForm1.SpeedButton1Click(Sender: TObject);
{begin
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 48

Modul Praktikum Pengolahan Citra Digital


Form2.show;}
var temp : PByteArray;

i,j : integer;

: byte;

digit : byte;

begin
gambar := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename);
if gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit;
Image1.Picture.Bitmap := gambar;
gambar.SaveToFile('Gray_Scale.bmp');
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
i:=0;
repeat
x :=round((0.11*temp[i])+(0.59*temp[i+1])+(0.3*temp[i+2]));
for digit:=0 to 2 do
temp[i+digit]:=x;
inc(i,3);
until i >= 3*gambar.Width-1;
end;
Image1.Picture.Bitmap := gambar;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
const sobel : array[0..1,0..2,0..2] of smallint =
(((-1,0,1),(-2,0,2),(-1,0,1)),
((-1,-2,-1),(0,0,0),(1,2,1)));
prewitt : array[0..1,0..2,0..2] of smallint =
(((-1,0,1),(-1,0,1),(-1,0,1)),
((-1,-1,-1),(0,0,0),(1,1,1)));

var row

: array[0..8] of pbytearray;

col

: pbytearray;

x,y

: smallint;

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 49

Modul Praktikum Pengolahan Citra Digital


i,j,k,p

: smallint;

image

: tbitmap;

sum,jum

: longint;

begin
P:=-120;
SpeedButton1.Click;
image := tbitmap.Create;
Image.Assign(gambar);
for y:=1 to gambar.Height-2 do
begin
for i:=-1 to 1 do
row[i+1]:= Image.ScanLine[y+i];
col := gambar.ScanLine[y];
x:=3;
repeat
sum := 0;
for i:=-1 to 1 do
for j:=-1 to 1 do
sum:=sum+(sobel[0,i+1,j+1]*row[i+1,x+j*3]);
jum:=0;
for i:=-1 to 1 do
for j:=-1 to 1 do
jum:=jum+(sobel[1,i+1,j+1]*row[i+1,x+j*3]);
sum := (sum + jum)+p;
if sum>255 then sum:=255;
if sum<0 then sum:=0;
for k:=0 to 2 do col[x+k]:=sum;
inc(x,3);
until x>=3*(gambar.Width-4);
end;
Image1.Picture.bitmap := gambar;
gambar.SaveToFile('Sobel1.bmp');
Image.free;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 50

Modul Praktikum Pengolahan Citra Digital


end;

procedure TForm1.SpeedButton3Click(Sender: TObject);


{begin
Form3.Show;}
const konvolusi : array[0..1,0..2,0..2] of smallint =
(((1,0,-1),(2,8,2),(1,0,-1)),
((0,0,0),(0,0,0),(0,0,0)));

var row

: array[0..8] of pbytearray;

col

: pbytearray;

x,y

: smallint;

i,j,k,p

: smallint;

image

: tbitmap;

sum,jum

: longint;

begin
P:=-120;
image := tbitmap.Create;
Image.Assign(gambar);
for y:=1 to gambar.Height-2 do
begin
for i:=-1 to 1 do
row[i+1]:= Image.ScanLine[y+i];
col := gambar.ScanLine[y];
x:=3;
repeat
sum := 0;
for i:=-1 to 1 do
for j:=-1 to 1 do
sum:=sum+(konvolusi[0,i+1,j+1]*row[i+1,x+j*3]);
jum:=0;
for i:=-1 to 1 do
for j:=-1 to 1 do
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 51

Modul Praktikum Pengolahan Citra Digital


jum:=jum+(konvolusi[1,i+1,j+1]*row[i+1,x+j*3]);
sum := (sum + jum)+p;
if sum>255 then sum:=255;
if sum<0 then sum:=0;
for k:=0 to 2 do col[x+k]:=sum;
inc(x,3);
until x>=3*(gambar.Width-4);
end;
Image1.Picture.bitmap := gambar;
gambar.SaveToFile('Konvolusi1.bmp');
Image.free;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);


{begin
Form4.show;}
const konvolusi : array[0..1,0..2,0..2] of real =
(((0.25,0,0.25),(0.75,1.25,0.75),(0.25,0,0.25)),
((0.5,0,-0.5),(0.75,1.25,-0.75),(0.5,0,-0.5)));

var row

: array[0..8] of pbytearray;

col

: pbytearray;

x,y

: smallint;

i,j,k,p

: smallint;

image
sum,jum

: tbitmap;
: longint;

begin
P:=-120;
image := tbitmap.Create;
Image.Assign(gambar);
for y:=1 to gambar.Height-2 do
begin
for i:=-1 to 1 do
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 52

Modul Praktikum Pengolahan Citra Digital


row[i+1]:= Image.ScanLine[y+i];
col := gambar.ScanLine[y];
x:=3;
repeat
sum := 0;
for i:=-1 to 1 do
for j:=-1 to 1 do
sum:=sum+round(konvolusi[0,i+1,j+1]*row[i+1,x+j*3]);
jum:=0;
for i:=-1 to 1 do
for j:=-1 to 1 do
jum:=jum+round(konvolusi[1,i+1,j+1]*row[i+1,x+j*3]);
sum := (sum + jum)+p;
if sum>255 then sum:=255;
if sum<0 then sum:=0;
for k:=0 to 2 do col[x+k]:=sum;
inc(x,3);
until x>=3*(gambar.Width-4);
end;
Image1.Picture.bitmap := gambar;
gambar.SaveToFile('Konvolusi2.bmp');
Image.free;
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);


{begin
Form5.Show;}
var temp,temp2 : PByteArray;
i,j
x
digit

: integer;
: byte;
: byte;

begin
gambar := TBitmap.Create;
mampat := TBitmap.Create;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 53

Modul Praktikum Pengolahan Citra Digital


gambar.LoadFromFile(OpenPictureDialog1.filename);
mampat.assign(gambar);
Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename);
gambar.PixelFormat := Pf24bit;
mampat.pixelformat:=pf8bit;
gambar.SaveToFile('Kompresi_1.bmp');
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
temp2 := mampat.Scanline[j];
i:=0;x:=i;
repeat
for digit:=0 to 2 do
temp2[x]:=round(temp[i+digit]*0.11);
inc(i,3);x:=x+1;
until i >= 3*gambar.Width-1;
end;
Image1.Picture.Bitmap := mampat;
akhir := TBitmap.Create;
akhir.assign(mampat);
for j:=0 to akhir.Height-1 do
begin
temp2 := mampat.Scanline[j];
temp := akhir.ScanLine[j];
i:=0;x:=i;
repeat
if x< mampat.Width-1 then
temp[i]:=round(temp2[x]);
inc(i,1);x:=x+1;
until i >= akhir.Width-1;
end;
Image1.Picture.Bitmap := akhir;
akhir.SaveToFile('Ndra5Akhir.bmp');
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 54

Modul Praktikum Pengolahan Citra Digital


end;

procedure TForm1.SpeedButton6Click(Sender: TObject);


{begin
form6.show;}
var temp,temp2 : PByteArray;
i,j,a

: integer;

: byte;

digit

: byte;

begin
gambar := TBitmap.Create;
mampat := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
mampat.assign(gambar);
Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename);
gambar.PixelFormat := Pf24bit;
gambar.SaveToFile('Kompresi2.bmp');
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
temp2 := mampat.Scanline[j];
i:=0;x:=i;digit:=0;
repeat
temp2[x]:=round(0.25*(temp[i+digit]+temp[i-digit]+temp[i])/3);
inc(i,3);x:=x+1;
until i >= 3*gambar.Width-1;
end;
a:=round((gambar.Width-1)/3);
mampat.pixelformat:=pf8bit;
for j:=0 to gambar.Height-1 do
begin
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 55

Modul Praktikum Pengolahan Citra Digital


temp := gambar.ScanLine[j];
temp2 := mampat.Scanline[j];
i:=0;x:=i;
repeat
temp[x]:=round(temp2[i]);
inc(i,1);x:=x+1;
until i >= a;
end;
gambar.PixelFormat := Pf8bit;
Image1.Picture.Bitmap := gambar;
gambar.SaveToFile('Kompresi2.Ndra');
end;

procedure TForm1.SpeedButton7Click(Sender: TObject);


{begin
Form7.show;}
var temp : PByteArray;
i,j : integer;
x

: byte;

begin
gambar := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename);
if gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit;
Image1.Picture.Bitmap := gambar;
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
i:=0;
repeat
for x:=0 to 2 do
temp[i+x]:=temp[i+x]-10;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 56

Modul Praktikum Pengolahan Citra Digital


inc(i,3);
until i >= 3*gambar.Width-1;
end;
Image1.Picture.Bitmap := gambar;
end;

procedure TForm1.SpeedButton8Click(Sender: TObject);


{begin
Form8.show;}
var temp : PByteArray;
i,j : integer;
x

: byte;

begin
gambar := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename);
if gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit;
Image1.Picture.Bitmap := gambar;
gambar.SaveToFile('Invert1.bmp');
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
i:=0;
repeat
for x:=0 to 2 do
temp[i+x]:=not temp[i+x];
inc(i,3);
until i >= 3*gambar.Width-1;
end;
Image1.Picture.Bitmap := gambar;
end;

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 57

Modul Praktikum Pengolahan Citra Digital

{procedure TForm1.SpeedButton9Click(Sender: TObject);


Image Processing dgn Metrik
var F : TextFile; FadliFile : string;
temp : PByteArray; i,j : integer; gambar: TBitmap;
begin
FadliFile:='matriks.txt'; AssignFile(F,FadliFile);
gambar := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
rewrite(F); writeln(F,'Tugas Hendra-P31.2007.00422');
memo1.Clear;
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
i:=0; writeln(F,' ');
repeat
if temp[i] > 99 then
write(F,inttostr(temp[i])+' ');
if temp[i] >9 then if temp[i] <=99 then
write(F,' '+'0' +inttostr(temp[i]));
if temp[i] >=0 then if temp[i]<=9 then
write(F,' '+'00' +inttostr(temp[i]));
i:=i+1; until i >= 3*gambar.Width-1;
CloseFile(F);
Memo1.Lines.LoadFromFile(FadliFile);
end;
Image1.Picture.Bitmap := gambar;
end;}

{procedure TForm1.SpeedButton10Click(Sender: TObject);


var temp, temp2 : PByteArray; tampung : PByteArray;
i,j,x : integer; water : integer; k,sensitif: byte;
begin
gambar := TBitmap.Create;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 58

Modul Praktikum Pengolahan Citra Digital


gambar.LoadFromFile(OpenPictureDialog1.filename);
if gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit;
gambar3.Assign(gambar); water:=0;j:=0;
temp2 := gambar2.ScanLine[j];sensitif:=1;
if gambar2.Height < gambar.height then
if gambar2.width < gambar.width then
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
if j<= gambar2.Height-1 then
temp2 := gambar2.ScanLine[j];
i:=0;x:=0; water:=0;
repeat
if j<= gambar2.Height-1 then
if x<=gambar2.Width-1 then
water := abs(temp[i]+temp2[i])
else water :=0;
if water>255 then if abs(temp[i]-temp2[i])<5 then water:=round(9*water/10)
else water:=round(abs(temp[i]-temp2[i])/2) else
if water>0 then if water<=255 then if abs(temp[i]-temp2[i])<5 then
water:=round(9*water/10)
else water:=round(abs(temp[i]-temp2[i])/2);
if water <> 0 then for k:=0 to 2 do temp[i+k]:=water
else
for k:=0 to 2 do temp[i+k]:=temp[i];
i:=i+3;
x:=x+1;
until i >= 3*gambar.Width-1;
end;
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
tampung := gambar3.ScanLine[j];
i:=0;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 59

Modul Praktikum Pengolahan Citra Digital


repeat
for k:=0 to 2 do

temp[i+k]:=round((temp[i]+tampung[i])/2)+sensitif;

i:=i+3;
until i >= 3*gambar.Width-1;
gambar.PixelFormat := Pf24bit;
Image3.Picture.Bitmap := gambar;
gambar.SaveToFile('watermarking.bmp');
end;}

procedure TForm1.BitBtn1Click(Sender: TObject);


begin
if not OpenPictureDialog1.Execute then exit else
begin
gambar := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
Form1.Caption:='Image Processing '+ExtractFileName(OpenPictureDialog1.Filename);
end;
Image1.Picture.Bitmap := gambar;
SpeedButton1.Enabled:=true;
SpeedButton2.Enabled:=true;
SpeedButton3.Enabled:=true;
SpeedButton4.Enabled:=true;
SpeedButton5.Enabled:=true;
SpeedButton6.Enabled:=true;
SpeedButton7.Enabled:=true;
SpeedButton8.Enabled:=true;

end;

procedure TForm1.SpeedButton9Click(Sender: TObject);


begin
close
end;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 60

Modul Praktikum Pengolahan Citra Digital

procedure TForm1.FormCreate(Sender: TObject);


begin
SpeedButton1.Enabled:=false;
SpeedButton2.Enabled:=false;
SpeedButton3.Enabled:=false;
SpeedButton4.Enabled:=false;
SpeedButton5.Enabled:=false;
SpeedButton6.Enabled:=false;
SpeedButton7.Enabled:=false;
SpeedButton8.Enabled:=false;
end;

end.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 61

Modul Praktikum Pengolahan Citra Digital

PROGRAM KALKULATOR

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonHapusClick(Sender: TObject);
begin
EditX.Text:='0';
EditY.Text:='0';
EditHasil.Text:='0';
end;
procedure TForm1.ButtonSelesaiClick(Sender: TObject);
begin
close;
end;
procedure TForm1.ButtonTambahClick(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=x+y;
EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonKurangClick(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=x-y;
EditHasil.Text:=FloatToStr(z);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 62

Modul Praktikum Pengolahan Citra Digital

end;
procedure TForm1.ButtonKaliClick(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=x*y;
EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonBagiClick(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=x/y;
EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonPangkatClick(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=exp(y*ln(x));
EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonAkarClick(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=exp((1/y)*ln(x));
EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonLogClick(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=ln(y)/ln(x);
EditHasil.Text:=FloatToStr(z);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 63

Modul Praktikum Pengolahan Citra Digital


end;
procedure TForm1.ButtonCombinasiClick(Sender: TObject);
var a,b,i,n,r,z,j:Integer;
t:Real;
begin
a:=StrToInt(EditX.Text);
b:=StrToInt(EditY.Text);
n:=1;
r:=1;
z:=1;
j:=a-b;
For i:=1 to a do
n:=i*n;
Begin
For i:=1 to j do
r:=i*r;
End;
Begin
For i:=1 to b do
z:=i*z;
End;
t:=n/(z*r);
EditHasil.Text:=FloatToStr(t);
if a<b then EditHasil.Text:='MAAF a<b';
end;
procedure TForm1.ButtonPermutasiClick(Sender: TObject);
var a,b,i,n,r,z,j:Integer;
t:Real;
begin
a:=StrToInt(EditX.Text);
b:=StrToInt(EditY.Text);
n:=1;
r:=1;
j:=a-b;
For i:=1 to a do
n:=i*n;
Begin
For i:=1 to j do
r:=i*r;
End;
t:=n/r;
EditHasil.Text:=FloatToStr(t);
if a<b then EditHasil.Text:='MAAF a<b';
end;
procedure TForm1.ButtonFaktorialClick(Sender: TObject);
var a,i,f:Integer;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 64

Modul Praktikum Pengolahan Citra Digital


begin
a:=StrToInt(EditX.Text);
f:=1;
for i:=1 to a do
f:=f*i;
EditHasil.Text:=IntToStr(f);

end;
procedure TForm1.ButtonPersenClick(Sender: TObject);
var a,z:Real;
begin
a:=StrToFloat(EditX.Text);
z:=a/100;
EditHasil.Text:=FloatToStr(z);

end;
procedure TForm1.ButtonP2Click(Sender: TObject);
Var x,z:Real;
begin
x:=StrToFloat(EditX.Text);
Z:=exp(2*ln(x));
EditHasil.Text:=FloatToStr(z);

end;
procedure TForm1.ButtonP3Click(Sender: TObject);
Var x,z:Real;
begin
x:=StrToFloat(EditX.Text);
Z:=exp(3*ln(x));
EditHasil.Text:=FloatToStr(z);
end;
procedure TForm1.ButtonA2Click(Sender: TObject);
Var x,z:Real;
begin
x:=StrToFloat(EditX.Text);
Z:=exp((1/2)*ln(x));
EditHasil.Text:=FloatToStr(z);

end;
procedure TForm1.ButtonA3Click(Sender: TObject);
Var x,z:Real;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 65

Modul Praktikum Pengolahan Citra Digital


begin
x:=StrToFloat(EditX.Text);
Z:=exp((1/3)*ln(x));
EditHasil.Text:=FloatToStr(z);

end;
procedure TForm1.ButtonLnClick(Sender: TObject);
Var x,z:Real;
begin
x:=StrToFloat(EditX.Text);
Z:=ln(x);
EditHasil.Text:=FloatToStr(z);

end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if label6.top=-700 then label6.top:=500;
Label6.top:=label6.top-1;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var a:integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'1';
end;
procedure TForm1.Button10Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'0';
end;
procedure TForm1.Button2Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);


Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'3';
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 66

Modul Praktikum Pengolahan Citra Digital


end;

procedure TForm1.Button4Click(Sender: TObject);


Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'4';
end;

procedure TForm1.Button5Click(Sender: TObject);


Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'5';
end;

procedure TForm1.Button6Click(Sender: TObject);


Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'6';
end;

procedure TForm1.Button7Click(Sender: TObject);


Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'7';
end;

procedure TForm1.Button8Click(Sender: TObject);


Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'8';
end;

procedure TForm1.Button9Click(Sender: TObject);


Var a,i :integer;
begin
a:=StrToInt(editX.Text);
editX.Text:=inttostr(a)+'9';
end;
procedure TForm1.Button20Click(Sender: TObject);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 67

Modul Praktikum Pengolahan Citra Digital


Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'0';
end;
procedure TForm1.Button11Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'1';
end;
procedure TForm1.Button12Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'2';
end;
procedure TForm1.Button13Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'3';
end;
procedure TForm1.Button14Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'4';
end;
procedure TForm1.Button15Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'5';
end;
procedure TForm1.Button16Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'6';
end;
procedure TForm1.Button17Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 68

Modul Praktikum Pengolahan Citra Digital


edity.Text:=inttostr(a)+'7';
end;
procedure TForm1.Button18Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'8';
end;
procedure TForm1.Button19Click(Sender: TObject);
Var a,i :integer;
begin
a:=StrToInt(editY.Text);
edity.Text:=inttostr(a)+'9';
end;
procedure TForm1.Button21Click(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=exp(x*ln(y));
EditHasil.Text:=FloatToStr(z);
end;

procedure TForm1.Timer2Timer(Sender: TObject);


begin
if label5.top=-700 then label5.top:=500;
Label5.top:=label5.top-1;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
if label9.top=-700 then label9.top:=500;
Label9.top:=label9.top-1;
end;
procedure TForm1.Timer4Timer(Sender: TObject);
begin
if label10.top=-700 then label10.top:=500;
Label10.top:=label10.top-1;
end;
procedure TForm1.Button22Click(Sender: TObject);
Var x,y,z:Real;
begin
x:=StrToFloat(EditX.Text);
y:=StrToFloat(EditY.Text);
Z:=exp((1/x)*ln(y));
EditHasil.Text:=FloatToStr(z);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 69

Modul Praktikum Pengolahan Citra Digital


end;
end.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 70

Modul Praktikum Pengolahan Citra Digital


REFERENSI
1. Pemrograman Delphi Untuk Aplikasi Mesin Visi Menggunakan Webcam, BALZA
AHMAD, Pnerbit GAVA Media
2. Www.Google.com

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 71

Modul Praktikum Pengolahan Citra Digital

MODUL PRAKTIKUM
PENGOLAHAN CITRA DIGITAL

PROGRAM STUDI TEKNIK INFORMATIKA - D3


FAKULTAS ILMU KOMPUTER
UNIVERSITAS KUNINGAN

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 72

Modul Praktikum Pengolahan Citra Digital

MODUL TAMBAHAN
PENGAKSESAN KAMERA
SIMPAN FRAMEIMAGE

I. TUJUAN
1. Mahasiswa dapat memahami program untuk menangkap citra/frame dari
kamera
2. Mahasiswa mampu memahami cara pembuatan program untuk penyimpanan
file video stream

II. TEORI
Frame yang ditangkap oleh driver kamera dapat pula disimpan dalam bentuk file
video. Untuk membuatnya, properti komponen TVideoCap yang diperlukan antara lain
adalah BufferFileSize,

CapIndexSize, CapTimeLimit, CapToFile, FrameRate,

dan

VideoFileName.

III. PRAKTEK
Praktek 1
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama SimpanVideo.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.

Komponen
Form

Properti
Name

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Nilai
Form1

Page 73

Modul Praktikum Pengolahan Citra Digital

Button

Button

Button

Label

OpenPictureDialog

VideoCap

Caption

Penyimpanan Frame Tunggal

Name

ButtonNamaFile

Caption

Nama file

Name

ButtonSimpan

Caption

Simpan

Name

ButtonClipboard

Caption

Clipboard

Name

LabelNamaFile

Caption

Frame.bmp

Name

SavePictureDialog1

Filter

Bitmap(*.bmp)|*.bmp

InitialDir

DefaultExt

bmp

Name

VideoCap1

Width

320

Height

240

VideoPreview

False

Color

clWhite

Masukan Kode dibawah ini


unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Videocap, vfw, ExtDlgs;
type
TForm1 = class(TForm)
VideoCap1: TVideoCap;
ButtonSimpan: TButton;
ButtonNamaFile: TButton;
LabelNamaFile: TLabel;
SavePictureDialog1: TSavePictureDialog;
Image1: TImage;
ButtonClipboard: TButton;
procedure FormCreate(Sender: TObject);
procedure ButtonNamaFileClick(Sender: TObject);
procedure ButtonSimpanClick(Sender: TObject);
procedure VideoCap1FrameCallback(sender: TObject; lpVhdr: PVIDEOHDR);
procedure ButtonClipboardClick(Sender: TObject);
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 74

Modul Praktikum Pengolahan Citra Digital


private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Simpan: boolean;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
VideoCap1.DriverIndex := 0;
VideoCap1.DriverOpen := true;
VideoCap1.VideoPreview := true;
Simpan := false;
end;
procedure TForm1.ButtonNamaFileClick(Sender: TObject);
begin
if (SavePictureDialog1.Execute) then
LabelNamaFile.Caption := SavePictureDialog1.FileName;
end;
procedure TForm1.ButtonSimpanClick(Sender: TObject);
begin
Simpan := true;
VideoCap1.GrabFrameNoStop;
end;
procedure TForm1.VideoCap1FrameCallback(sender: TObject;
lpVhdr: PVIDEOHDR);
var
info: TBitmapInfo;
begin
if Simpan then
begin
info := VideoCap1.BitMapInfo;
Image1.Canvas.Lock;
FrameToBitmap(Image1.Picture.Bitmap, lpVhdr^.lpData,
info);
Image1.Canvas.TextOut(10, 10, DateTimeToStr(Now));
Image1.Repaint;
Image1.Canvas.Unlock;
Image1.Picture.SaveToFile(LabelNamaFile.Caption);
Simpan := false;
end;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 75

Modul Praktikum Pengolahan Citra Digital


end;
procedure TForm1.ButtonClipboardClick(Sender: TObject);
begin
VideoCap1.SaveToClipboard;
end;
end.

Tito Sugiharto, M.Eng - Universitas Kuningan 2015

Page 76