15. Tambahkan button pada form, pada object inspector rubah properties captionnya dengan nama Equalization dan Namenya dengan nama
btEqualization.
Gambar 2.17 Button Equalization
16. Tambahkan ProgressBar ke form dengan cara, pilih menu Win32, ProgressBar. Lalu klik ke form, lalu geser kekanan.
Gambar 2.18 Menu ProgresBar
17. Hasilnya sebagai berikut.
Gambar 2.19 Hasil ProgresBar
18. Tambahkan unit baru, dengan cara file, new unit.
Gambar 2.20 New Unit
19. Simpan unitnya dengan cara save as.
Gambar 2.21 Save All
20. Berinama unitnya dengan nama UnitImageProses.
Gambar 2.22 Save UnitImageProses 21. Hasilnya sebagai berikut.
Gambar 2.23 Hasil Save UnitImageProses
22. Ketik program berikut ke dalam UnitImageProses.
unit UnitImageProses; interface
uses WINPROCS, Graphics, ExtCtrls, ComCtrls;
type TFreqHist = array [0..255] of longint;
function ImgGetGray var Image:TImage; x,y:integer : byte; procedure
ImgHistogramEqu var
Image:TImage; 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
ImgHistogramEqu var
Image:TImage; var
ProgressBar1: TProgressBar;
var x,y,i:integer; Clr:TColor; ClrGray:byte;
Freq, NewColor: TFreqHist; TotFreq, ImgSize: longint;
begin ProgressBar1.Max := Image.Width-1;
ProgressBar1.Position := 0; { set Frek[i]=0 }
for i:=0 to 255 do Freq[i]:=0; { hitung frekuensi tiap warna }
for x:=0 to Image.Width-1 do for y:=0 to Image.Height-1 do
begin ClrGray := ImgGetGray Image,x,y;
Inc Freq[ClrGray]; end;