DASAR TEORI MORPOLOGI PROGRAM MORPOLOGI SELENGKAPNYA ADALAH SEBAGAI BERIKUT

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