C
G
A,B = E
G
D
G
A,B
~
, B
~
………………….................................….6.8
6.2 CARA MEMBUAT PROGRAM MORPOLOGI LAKUKAN LANGKAH BERIKUT:
1. Buka program delphi, dengan cara pilih menu start, program borland delphi 7, delphi 7.
Gambar 6.1 Start Program
2. Kemudian pilih menu file, new, application.
Gambar 6.2 New Application
3. Pada object inspector, ubah properti captionnya dengan nama Morpologi, dan namenya dengan nama FormMorpologi.
Gambar 6.3 Form Morpologi
4. Simpan unit dan projectnya dengan cara save all.
Gambar 6.4 Save All
5. Beri nama unitnya dengan nama UnitMorpologi.
Gambar 6.5 Save UnitMorpologi
6. Beri nama projectnya dengan nama ProjectMorpologi.
Gambar 6.6 Save ProjectMorpologi
7. Tambahkan image ke form dengan cara pilih menu Additional, image, lalu klik
ke form.
Gambar 6.7 Menu Image
8. Rubah stretchnya ke true dan autosizenya true.
Gambar 6.8 Stretch True
9. Dengan cara yang sama tambahkan image2 di sebelah kanan image1 kemudian ubah stretchnya ke true dan autosizenya true.
Gambar 6.9 Penambahan Image 2
10. Tambahkan button ke form, dengan cara pilih menu standart, button, lalu
klik ke form
Gambar 6.10 Menu Button
11. Pada oject inspector rubah properti captionnya dengan nama Open, kemudian namenya dengan nama btOpen.
Gambar 6.11 Button Open
12. Tambahkan OpenPictureDialog ke form, dengan cara pilih menu dialog, OpenPictureDialog, lalu klik ke form.
Gambar 6.12 Menu OpenPictureDialog
13. Hasilnya sebagai berikut.
Gambar 6.13 Hasil OpenPictureDialog
14. Doble klik button open kemudian ketik program yang di hurup tebal
berikut. var
FormMorpologi: TFormMorpologi; FileNameImg: string;
implementation {R .dfm}
procedure TFormMorpologi.btOpenClickSender: TObject; begin
if OpenPictureDialog1.Execute then begin
FileNameImg := OpenPictureDialog1.FileName; Caption := Morpologi : + OpenPictureDialog1.FileName;
Image1.Picture.LoadFromFile OpenPictureDialog1.FileName; Image2.Visible := False;
end; end;
15. Tambahkan button pada form, pada object inspector rubah properties captionnya
dengan nama Morpologi dan Namenya dengan nama btMorpologi.
Gambar 6.14 Button Morpologi
16. Tambahkan ProgressBar ke form dengan cara, pilih menu Win32, ProgressBar. Lalu klik ke form.
Gambar 6.15 Menu ProgresBar
17. Hasilnya sebagai berikut.
Gambar 6.16 Hasil ProgresBar
18. Tambahkan unit baru, dengan cara file, new unit.
Gambar 6.17 New Unit
19. Simpan unitnya dengan cara save as.
Gambar 6.18 Save As
20. Berinama unitnya dengan nama UnitImageProses.
Gambar 6.19 Save UnitImageProses 21. Hasilnya sebagai berikut.
Gambar 6.20 Hasil Unit Image proses
22. Ketik program berikut ke dalam UnitImageProses.
unit UnitImageProses; interface
uses WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants;
type TFreqHist = array [0..255] of longint;
TMatrixFilter = array [1..16,1..16] of real; function RgbToGray Clr:TColor : byte;
function ImgGetGray var Image:TImage; x,y:integer : byte; procedure ImgConvertToGrayscale var Image1:TImage; var ProgressBar1:
TProgressBar; procedure
ImgFilterMorphology var
Image:TImage; Mtrx:TMatrixFilter;
nCol,nRow,MaxMin:byte; var ProgressBar1: TProgressBar; implementation
const PercentR = 0.299;
PercentG = 0.587; PercentB = 0.114;
function ByteRange r:double : byte; begin
if r0 then ByteRange:=0 else if r255 then ByteRange:=255
else ByteRange:=Roundr; end;
function RgbToGray Clr:TColor : byte; var r,g,b:byte;
begin r := GetRValueClr;
g := GetGValueClr; b := GetBValueClr;
RgbToGray := ByteRange rPercentR + gPercentG + bPercentB; end;
function ImgGetGray var Image:TImage; x,y:integer : byte; begin
Result := RgbToGray Image.Canvas.Pixels[x,y]; end;
procedure ImgConvertToGrayscale var Image1:TImage; var ProgressBar1: TProgressBar;
var x,y:integer; ClrGray:byte; begin
ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0;
for x:=0 to Image1.Width-1 do begin
for y:=0 to Image1.Height-1 do begin
ClrGray := ImgGetGray Image1,x,y; Image1.Canvas.Pixels[x,y] := RGB ClrGray,ClrGray,ClrGray;
end; Image1.Repaint;
ProgressBar1.Position := x; end;
end; MaxMin=1 : dilasi+ MaxMin=2 : erosi-
procedure
ImgFilterMorphology var
Image:TImage; Mtrx:TMatrixFilter;
nCol,nRow,MaxMin:byte; var ProgressBar1: TProgressBar; var dx,dy:byte; ImgTemp:TImage;
procedure CalculatePixel x,y:integer; var clrGray:byte; var row,col:integer; c,m:real;
begin if MaxMin=1 then m:=0 else m:=255;
for col:=1 to nCol do for row:=1 to nRow do
begin
clrGray := ImgGetGray ImgTemp, x+col-dx-1, y+row-dy-1; if MaxMin=1 then dilasi
begin c := clrGray + Mtrx[col,row];
if cm then m:=c; end
else begin erosi
c := clrGray - Mtrx[col,row]; if cm then m:=c;
end end;
clrGray := ByteRange m; end;
var x,y: integer;
clrGray: byte; begin
dx := nCol div 2; dy := nRow div 2;
ProgressBar1.Max := Image.Width; ProgressBar1.Position := 0;
ImgTemp := TImage.Create Image.Parent; ImgTemp.Picture.Graphic := Image.Picture.Graphic;;
{ filtering process } for x:=dx to Image.Width-1-dx do
begin for y:=dy to Image.Height-1-dy do
begin CalculatePixel x,y, clrGray;
Image.Canvas.Pixels[x,y] := RGB clrGray,clrGray,clrGray; end; { for y }
ProgressBar1.Position := x; end; { for x }
ProgressBar1.Position := ProgressBar1.Max; Image.Repaint;
end; end.
23. Kembali ke FormMorpologi, caranya klik unitMoepologi
Gambar 6.21 Kembali ke FormMorpologi
24. Lalu klik toggle form.
Gambar 6.22 Menu Toggle
25. Doble klik button morpologi.
Gambar 6.23 Klik Button Morpologi
26. Lalu ketik program berikut.
procedure TFormMorpologi.btMorpologiClickSender: TObject; var Mtrx:TMatrixFilter; nRow,nCol,r,c:integer;
begin Image2.Visible := True;
Image2.Picture.Graphic := Image1.Picture.Graphic; begin
nRow:=16; nCol:=16; nRow:=8; nCol:=8; coba coba
for c:=1 to nCol do for r:=1 to nRow do
Mtrx[r,c]:=1; ImgFilterMorphology Image2,Mtrx,nCol,nRow,2,ProgressBar1;
ImgFilterMorphology Image2,Mtrx,nCol,nRow,1,ProgressBar1; end;
end;
27. Dibawah implementasi ketik program yang tertulis huruf tebal berikut.
implementation {R .dfm}
uses UnitImageProses;
28. Tambahkan button ke form, lalu pada object inspector rubah properties captionnya dengan nama Exit dan namenya dengan nama btExit.
Gambar 6.24 Button Exit
29. Doble klik button Exit, lalu ketik program berikut.
procedure TFormMorpologi.btExitClickSender: TObject; begin
FormMorpologi.Close; end;
30. Compiler progran dengan cara pilih menu Project, Compile ProjectMorpologi.
Gambar 6.25 Compiler ProjectMorpologi 31. Lalu jalankan progran dengan cara pilih menu Run, Run.
Gambar 6.26 Menu Run 32. Hasil sebagai berikut.
Gambar 6.27 Hasil Program Morpologi 33. Keluar dari program klik button Exit.
6.3 PROGRAM MORPOLOGI SELENGKAPNYA ADALAH SEBAGAI BERIKUT
unit UnitMorpologi; interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, StdCtrls, ExtCtrls, ComCtrls; type
TFormMorpologi = classTForm Image1: TImage;
Image2: TImage; btOpen: TButton;
OpenPictureDialog1: TOpenPictureDialog; btMorpologi: TButton;
ProgressBar1: TProgressBar; btExit: TButton;
procedure btOpenClickSender: TObject; procedure btMorpologiClickSender: TObject;
procedure btExitClickSender: TObject; private
{ Private declarations } public
{ Public declarations } end;
var FormMorpologi: TFormMorpologi;
FileNameImg: string; implementation
{R .dfm} uses
UnitImageProses; procedure TFormMorpologi.btOpenClickSender: TObject;
begin if OpenPictureDialog1.Execute then
begin FileNameImg := OpenPictureDialog1.FileName;
Caption := Morpologi : + OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile OpenPictureDialog1.FileName;
Image2.Visible := False; end;
end;
procedure TFormMorpologi.btMorpologiClickSender: TObject; var Mtrx:TMatrixFilter; nRow,nCol,r,c:integer;
begin Image2.Visible := True;
Image2.Picture.Graphic := Image1.Picture.Graphic; begin
nRow:=16; nCol:=16; nRow:=8; nCol:=8; coba coba
for c:=1 to nCol do for r:=1 to nRow do
Mtrx[r,c]:=1; ImgFilterMorphology Image2,Mtrx,nCol,nRow,2,ProgressBar1;
ImgFilterMorphology Image2,Mtrx,nCol,nRow,1,ProgressBar1; end;
end; procedure TFormMorpologi.btExitClickSender: TObject;
begin FormMorpologi.Close;
end; end.
unit UnitImageProses; interface
uses WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants;
type TFreqHist = array [0..255] of longint;
TMatrixFilter = array [1..16,1..16] of real; function RgbToGray Clr:TColor : byte;
function ImgGetGray var Image:TImage; x,y:integer : byte; procedure
ImgConvertToGrayscale var
Image1:TImage; var
ProgressBar1: TProgressBar;
procedure ImgFilterMorphology
var Image:TImage;
Mtrx:TMatrixFilter; nCol,nRow,MaxMin:byte; var ProgressBar1: TProgressBar;
implementation const
PercentR = 0.299; PercentG = 0.587;
PercentB = 0.114; function ByteRange r:double : byte;
begin if r0 then ByteRange:=0
else if r255 then ByteRange:=255 else ByteRange:=Roundr;
end; function RgbToGray Clr:TColor : byte;
var r,g,b:byte; begin
r := GetRValueClr; g := GetGValueClr;
b := GetBValueClr; RgbToGray := ByteRange rPercentR + gPercentG + bPercentB;
end; function ImgGetGray var Image:TImage; x,y:integer : byte;
begin Result := RgbToGray Image.Canvas.Pixels[x,y];
end; procedure
ImgConvertToGrayscale var
Image1:TImage; var
ProgressBar1: TProgressBar;
var x,y:integer; ClrGray:byte; begin
ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0;
for x:=0 to Image1.Width-1 do begin
for y:=0 to Image1.Height-1 do begin
ClrGray := ImgGetGray Image1,x,y; Image1.Canvas.Pixels[x,y] := RGB ClrGray,ClrGray,ClrGray;
end; Image1.Repaint;
ProgressBar1.Position := x; end;
end; MaxMin=1 : dilasi+ MaxMin=2 : erosi-
procedure
ImgFilterMorphology var
Image:TImage; Mtrx:TMatrixFilter;
nCol,nRow,MaxMin:byte; var ProgressBar1: TProgressBar; var dx,dy:byte; ImgTemp:TImage;
procedure CalculatePixel x,y:integer; var clrGray:byte; var row,col:integer; c,m:real;
begin if MaxMin=1 then m:=0 else m:=255;
for col:=1 to nCol do for row:=1 to nRow do
begin clrGray := ImgGetGray ImgTemp, x+col-dx-1, y+row-dy-1;
if MaxMin=1 then dilasi begin
c := clrGray + Mtrx[col,row]; if cm then m:=c;
end else
begin erosi c := clrGray - Mtrx[col,row];
if cm then m:=c; end
end; clrGray := ByteRange m;
end; var
x,y: integer; clrGray: byte;
begin dx := nCol div 2;
dy := nRow div 2; ProgressBar1.Max := Image.Width;
ProgressBar1.Position := 0; ImgTemp := TImage.Create Image.Parent;
ImgTemp.Picture.Graphic := Image.Picture.Graphic;; { filtering process }
for x:=dx to Image.Width-1-dx do begin
for y:=dy to Image.Height-1-dy do begin
CalculatePixel x,y, clrGray; Image.Canvas.Pixels[x,y] := RGB clrGray,clrGray,clrGray;
end; { for y } ProgressBar1.Position := x;
end; { for x } ProgressBar1.Position := ProgressBar1.Max;
Image.Repaint; end;
end.
BAB 7 SUBTRAK
7.1 DASAR TEORI SUBTRAK
Pengurangan citra digunakan untuk memisahkan objek dengan latar belakang. Perbedaan dua citra u
1
x,y dan u
2
x,y yang dinyatakan sebagai: Ox,y = u
1
x,y – u
2
x,y………………..........................……………...7.1 Diperoleh dengan menghitung perbedaan antara semua pasangan pixel pada
koordinat yang bersesuaian dari u
1
dam u
2
Darma Putra,2010.
7.2 CARA MEMBUAT PROGRAM SUBTRAK LAKUKAN LANGKAH BERIKUT:
1. Buka program delphi, dengan cara pilih menu start, program borland delphi 7, delphi 7.
Gambar 7.1 Start Program
2. Kemudian pilih menu file, new, application.
Gambar 7.2 New Application
3. Pada object inspector, ubah properti captionnya dengan nama Subtrak, dan namenya dengan nama FormSubtrak.
Gambar 7.3 Form Substrak
4. Simpan unit dan projectnya dengan cara save all.
Gambar 7.4 Save All
5. Beri nama unitnya dengan nama UnitSubtrak.
Gambar 7.5 Save UnitSubtrak
6. Beri nama projectnya dengan nama ProjectSubtrak.
Gambar 7.6 Save ProjectSubstrak
7. Tambahkan image ke form dengan cara pilih menu Additional, image, lalu klik
ke form.
Gambar 7.7 Menu Image
8. Rubah stretchnya ke true dan autosizenya true.
Gambar 7.8 Strect True
9. Dengan cara yang sama tambahkan image2 di sebelah kanan image1 kemudian ubah stretchnya true dan autosizenya true.
Gambar 7.9 Penambahan Image 2
10. Tambahkan button ke form, dengan cara pilih menu standart, button, lalu
klik ke form
Gambar 7.10 Menu Button
11. Pada oject inspector rubah properti captionnya dengan nama Open, kemudian namenya dengan nama btOpen.
Gambar 7.11 Button Open
12. Tambahkan OpenPictureDialog ke form, dengan cara pilih menu dialog, OpenPictureDialog, lalu klik ke form.
Gambar 7.12 Menu OpenPictureDialog 13. Hasilnya sebagai berikut.
Gambar 7.13 Hasil OpenPictureDialog
14. Doble klik button open kemudian ketik program yang di hurup tebal
berikut. var
FormSubstak: TFormSubstak; FileNameImg: string;
implementation