Tambahkan button ke form, dengan cara pilih menu standart, button, lalu Doble klik button open kemudian ketik program yang di hurup tebal Tambahkan unit baru, dengan cara file, new unit.

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;