"Dosen Pembimbing MK Statistika Fadlisyah"
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtDlgs, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
MainMenu1: TMainMenu;
Image1: TImage;
OpenPictureDialog1: TOpenPictureDialog;
File1: TMenuItem;
OpenImageBMP1: TMenuItem;
Perlakuan1: TMenuItem;
Grayscale1: TMenuItem;
EdgeDetection1: TMenuItem;
Statistik1: TMenuItem;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure OpenImageBMP1Click(Sender: TObject);
procedure Grayscale1Click(Sender: TObject);
procedure EdgeDetection1Click(Sender: TObject);
procedure Statistik1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
gambar : Tbitmap;
Fi,Fj,Fk,Fl : Textfile;
NamaArsip : String;
stdfi : real;
stdfj : real;
stdfk : real;
stdfl : real;
tampung_std : real;
c1,c2,c3,c4 : byte;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
button4.Visible:=true;
tampung_std:=strtofloat(edit5.Text);
stdfi:=stdfi+tampung_std;
inc(c1,1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
button5.Visible:=true;
tampung_std:=strtofloat(edit5.Text);
stdfj:=stdfj+tampung_std;
inc(c2,1);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
button7.Visible:=true;
tampung_std:=strtofloat(edit5.Text);
stdfk:=stdfk+tampung_std;
inc(c3,1);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
writeln(Fi,floattostr(stdfi/c1));
CloseFile(Fi)
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
writeln(Fj,floattostr(stdfj/c2));
CloseFile(Fj)
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
openimagebmp1.click;
Grayscale1.click;
EdgeDetection1.Click;
statistik1.Click;
button8.Visible:=true;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
writeln(Fk,floattostr(stdfk/c3));
CloseFile(Fk)
end;
procedure TForm1.Button8Click(Sender: TObject);
var bebank1, bebank2, bebank3, bebank4 : string;
probabilitas1 : real;
begin
//probabilitas kategori 1..............................
NamaArsip:='k1.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
while not Eof(Fi) do Readln(Fi,bebank1);
closefile(fi);
if edit5.text<>'' then
begin
if strtofloat(bebank1)>=strtofloat(edit5.Text) then
edit6.text:= floattostr(strtofloat(edit5.Text)/strtofloat(bebank1));
if strtofloat(bebank1)<strtofloat(edit5.Text) then
edit6.text:= floattostr(strtofloat(bebank1)/strtofloat(edit5.Text));
end;
//probabilitas kategori 2..............................
NamaArsip:='k2.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
while not Eof(Fi) do Readln(Fi,bebank2);
closefile(fi);
if edit5.text<>'' then
begin
if strtofloat(bebank2)>=strtofloat(edit5.Text) then
edit7.text:= floattostr(strtofloat(edit5.Text)/strtofloat(bebank2));
if strtofloat(bebank2)<strtofloat(edit5.Text) then
edit7.text:= floattostr(strtofloat(bebank2)/strtofloat(edit5.Text));
end;
//probabilitas kategori 3..............................
NamaArsip:='k3.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
while not Eof(Fi) do Readln(Fi,bebank3);
closefile(fi);
if edit5.text<>'' then
begin
if strtofloat(bebank3)>=strtofloat(edit5.Text) then
edit8.text:= floattostr(strtofloat(edit5.Text)/strtofloat(bebank3));
if strtofloat(bebank3)<strtofloat(edit5.Text) then
edit8.text:= floattostr(strtofloat(bebank3)/strtofloat(edit5.Text));
end;
//probabilitas kategori 4..............................
NamaArsip:='k4.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
while not Eof(Fi) do Readln(Fi,bebank4);
closefile(fi);
if edit5.text<>'' then
begin
if strtofloat(bebank4)>=strtofloat(edit5.Text) then
edit9.text:= floattostr(strtofloat(edit5.Text)/strtofloat(bebank4));
if strtofloat(bebank4)<strtofloat(edit5.Text) then
edit9.text:= floattostr(strtofloat(bebank4)/strtofloat(edit5.Text));
end;
end; //end procedural loadklasi
procedure TForm1.Button9Click(Sender: TObject);
begin
button10.Visible:=true;
tampung_std:=strtofloat(edit5.Text);
stdfl:=stdfl+tampung_std;
inc(c4,1);
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
writeln(Fl,floattostr(stdfl/c4));
CloseFile(Fl)
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
button1.Visible:=true;
//----------------------------------
NamaArsip:='k1.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------
c1:=0;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
button2.Visible:=true;
//----------------------------------
NamaArsip:='k2.txt';
AssignFile(Fj,NamaArsip);
rewrite(Fj);
//------------------------------------
c2:=0;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
button3.Visible:=true;
//----------------------------------
NamaArsip:='k3.txt';
AssignFile(Fk,NamaArsip);
rewrite(Fk);
//------------------------------------
c3:=0;
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
button9.Visible:=true;
//----------------------------------
NamaArsip:='k4.txt';
AssignFile(Fl,NamaArsip);
rewrite(Fl);
//------------------------------------
c4:=0;
end;
procedure TForm1.OpenImageBMP1Click(Sender: TObject);
begin
if not OpenPictureDialog1.Execute then exit else
begin
gambar := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
end;
if gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit;
Image1.Picture.Bitmap := gambar;
end;
procedure TForm1.Grayscale1Click(Sender: TObject);
var temp : PByteArray;
i,j : integer;
x,cek : byte;
begin
gambar := TBitmap.Create;
gambar.LoadFromFile(OpenPictureDialog1.filename);
Form1.Caption:='Image Processing - '+ExtractFileName(OpenPictureDialog1.Filename);
if gambar.PixelFormat <> pf24bit then gambar.PixelFormat := Pf24bit;
Image1.Picture.Bitmap := gambar;
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
i:=0;
repeat
x :=round((0.11*temp[i])+(0.59*temp[i+1])+(0.3*temp[i+2]));
for cek:=0 to 2 do
temp[i+cek]:=x;
inc(i,3);
until i >= 3*gambar.Width-1;
end;
Image1.Picture.Bitmap := gambar;
gambar.SaveToFile('-grayscale.bmp');
end;
procedure TForm1.EdgeDetection1Click(Sender: TObject);
const sobel : array[0..1,0..2,0..2] of smallint =
(((-1,0,1),(-2,0,2),(-1,0,1)),
((-1,-2,-1),(0,0,0),(1,2,1)));
prewitt : array[0..1,0..2,0..2] of smallint =
(((-1,0,1),(-1,0,1),(-1,0,1)),
((-1,-1,-1),(0,0,0),(1,1,1)));
var row : array[0..8] of pbytearray;
col : pbytearray;
x,y : smallint;
i,j,k,peka : smallint;
image : tbitmap;
sum,jum : longint;
begin
Peka:=-120;
image := tbitmap.Create;
Image.Assign(gambar);
for y:=1 to gambar.Height-2 do
begin
for i:=-1 to 1 do
row[i+1]:= Image.ScanLine[y+i];
col := gambar.ScanLine[y];
x:=3;
repeat
sum := 0;
for i:=-1 to 1 do
for j:=-1 to 1 do
sum:=sum+(sobel[0,i+1,j+1]*row[i+1,x+j*3]);
jum:=0;
for i:=-1 to 1 do
for j:=-1 to 1 do
jum:=jum+(sobel[1,i+1,j+1]*row[i+1,x+j*3]);
sum := (sum + jum)+peka;
if sum>255 then sum:=255;
if sum<0 then sum:=0;
for k:=0 to 2 do col[x+k]:=sum;
inc(x,3);
until x>=3*(gambar.Width-4);
end;
Image1.Picture.bitmap := gambar;
gambar.SaveToFile('EDGEDE.bmp');
Image.free;
end;
procedure TForm1.Statistik1Click(Sender: TObject);
var temp : PByteArray;
i,j : integer;
x : byte;
Nit : byte;
Total : integer;
Jumtot: integer;
rata : real;
tampung : array [0..256] of integer;
varians : real;
begin
Total:=0;
Jumtot:=0;
for i:=0 to 255 do
tampung[i]:=0;
gambar := TBitmap.Create;
gambar := Image1.Picture.Bitmap;
//Image3.Picture.Bitmap := gambar;
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
i:=0;
repeat
Nit:=round((temp[i]+temp[i+1]+temp[i+2])/3);
Total:=Total+Nit;
tampung[nit]:=tampung[nit]+1;
inc(Jumtot,1);
inc(i,3);
until i >= 3*gambar.Width-1;
end;
//--------------------------------
rata:=Total/Jumtot;
edit1.Text:=inttostr(Total);
edit2.Text:=inttostr(Jumtot);
edit3.Text:=floattostr(rata);
//-----------------varians setara dengan nilai inten - rata kuadrat kali prob
for j:=0 to gambar.Height-1 do
begin
temp := gambar.ScanLine[j];
i:=0;
repeat
Nit:=round((temp[i]+temp[i+1]+temp[i+2])/3);
varians:=varians+(sqr(nit-rata)*(tampung[nit]/Jumtot));
inc(i,3);
until i >= 3*gambar.Width-1;
end;
//-------------------------------------------------
edit4.Text:=floattostr(varians);
edit5.Text:=floattostr(sqrt(varians));
end;
end.



0 komentar:
Posting Komentar