Modul Pengolahan CItra Digital
Modul Pengolahan CItra Digital
MODUL I
MENGENAL PEMROGRAMAN DELPHI
I. TUJUAN
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
Page 1
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
Button
Standar
Edit
Standar
Page 2
Additional
Timer
System
OpenPictureDialog
Dialogs
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
Page 3
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:
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.
Page 4
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
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
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
var
Form1: TForm1;
X, Y, Z: double;
implementation
{$R *.dfm}
Page 7
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:
Page 8
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
Height
Picture
AutoSize
Image
Proportional
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:
Page 9
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
6. Double klik didalam form maka akan muncul Source code tambahkan code
Image1.Picture.LoadFromFile('AA.bmp');
Page 11
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
Page 12
Page 13
TUGAS
Berikan kesimpulan dan amati kode program yang telah anda kerjakan.
Page 14
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
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
Page 15
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
Page 16
Page 17
Komponen
Form
Properti
Nilai
Name
Form1
Caption
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
Page 19
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
Page 21
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
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.
Page 22
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
Page 23
{$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
Page 25
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
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
Page 27
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
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
Page 30
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
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
Page 31
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.
Page 32
6. Tekan tombol yes untuk menghapus unit yang dipilih tadi dari paket.
7. Setelah unit drvedit sudah dihapus, tekan icon compile
Page 33
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
Page 34
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
Name
ButtonPreview
Page 35
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
Page 36
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
melihat
PreviewScaletoWindow dan
Page 38
Page 39
Button
Button
Label
OpenPictureDialog
VideoCap
Properti
Nilai
Name
Form1
Caption
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
Page 41
MODUL VIII
PENGAKSESAN KAMERA2
I. TUJUAN
1.
2.
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,
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
Page 42
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
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 43
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
Page 45
Page 46
MODUL IX& X
ANALISIS CITRA DENGAN
FEATURE EXTRACTION
I. TUJUAN
1.
2.
II. PRAKTEK
1. Buka Program Aplikasi Delphi
2. Buat proyek baru dan beri nama SimpanVideo.dpr
3. Tambahkan Komponen-komponen berikut ke dalam Form1.
Page 47
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
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;
Page 49
: 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
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
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
: integer;
: byte;
: byte;
begin
gambar := TBitmap.Create;
mampat := TBitmap.Create;
Tito Sugiharto, M.Eng - Universitas Kuningan 2015
Page 53
Page 54
: 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
: 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
: 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;
Page 57
Page 58
Page 59
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;}
end;
Page 60
end.
Page 61
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
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
Page 64
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
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;
Page 66
Page 67
Page 68
Page 69
Page 70
Page 71
MODUL PRAKTIKUM
PENGOLAHAN CITRA DIGITAL
Page 72
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,
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
Nilai
Form1
Page 73
Button
Button
Button
Label
OpenPictureDialog
VideoCap
Caption
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
Page 74
Page 75
Page 76