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;