Klik tombol start lalu Program, Borland Delphi 7, Delphi 7. Nanti akan muncul Simpan project dan unitnya dengan cara save all.

6. Berinama Projectnya dengan nama ProjectGlobalThresolding.

Gambar 4.6 Save Project Global Thresolding

7. Doble clik button open, lalu keting program berikut:

var GlobalThreshold: TGlobalThreshold; FileNameImg: string; implementation {R .dfm} procedure TGlobalThreshold.btOpenClickSender: TObject; begin if OpenPictureDialog1.Execute then begin FileNameImg := OpenPictureDialog1.FileName; Caption := Mammo Analisys : + OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile OpenPictureDialog1.FileName; Image2.Visible := False; end; end; end. 8. Tambahkan button ke form, beri nama captionnya dengan Global Thresolding dan namenya dengan btGlobalThresholding dan tambahkan juga ProgresBar kedalam form. Gambar 4.7 Button Thresolding

9. Tambahkan unit dengan cara file new unit.

Gambar 4.8 New Unit

10. Simpan unitnya dengan cara file save as, beri nama dengan ImageProses.

Gambar 4.9 Save Image Proses

11. Kemudian ketik program berikut pada unit imageproses:

unit ImageProses; 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 ImgGlobalThresholding var Image:TImage; var thres:real; 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; procedure ImgGlobalThresholding var Image:TImage; var thres:real; var ProgressBar1: TProgressBar; var x,y,counter:integer; m1,m2,n1,n2:real; Clr:TColor; ClrGray:byte; thresOld:real; begin ProgressBar1.Max := 5; ProgressBar1.Position := 0; counter := 0; repeat thresOld := thres; m1:=0; m2:=0; n1:=0; n2:=0;