Selasa, 06 Oktober 2015

Pengolahan Citra Menggunakan Delphi

Citra merupakan fungsi kontinu dari intensitas cahaya pada bidang dua dimensi. Secara matematis  fungsi intensitas cahaya pada bidang dua dimensi dinotasikan sebagai f(x,y), dimana (x,y) merupakan koordinat pada bidang dua dimensi dan f(x,y) merupakan intensitas cahaya pada bidang dua dimensi.







Pada  button Open Picture ketikkan listing dibawah ini 
    if not openpicturedialog1.Execute then exit else
    begin
        gambar := tbitmap.Create;
        gambar.LoadFromFile(openpicturedialog1.FileName);
        image1.Picture.Bitmap := gambar;
    end; 

Pada  button Matrik ketikkan listing dibawah ini 
var text : TextFile;
    kata : String;
    temp : PByteArray;
    i,j  : Integer;
    gambar : TBitmap;
begin
    kata :='matrik.txt';
    assignfile(text,kata);
    gambar := image1.Picture.Bitmap;
    rewrite(text);
    writeln(text,'================================== MATRIKS ==============================');
    memo1.Clear;

    for j :=0 to gambar.Height-1 do
    begin
        temp := gambar.ScanLine[j];
        i:=0;
        repeat
            write(text,inttostr(temp[i])+ ' - ');
            i:=i+1;
        until i > 3*gambar.Height-1;
    end;
    closefile(text);
    memo1.Lines.LoadFromFile(kata);

pada button invert
var temp : pbytearray;
    x,y,k :integer;
begin

    for y :=0 to gambar.Height-1 do
    begin
        temp := gambar.ScanLine[y];
        x := 0;
        repeat
            for k := 0 to 2 do
            temp [x+k] := not temp[x+k];
           // temp [x+k] := 0; kasi hitam
            inc(x,3);
        until x>3* gambar.Width-1 ;
    end;
    image2.Picture.Bitmap := gambar;

Pada  button Matrik ketikkan listing dibawah ini // matrik invert
var text : TextFile;
    kata : String;
    temp : PByteArray;
    i,j  : Integer;
    gambar : TBitmap;
begin
    kata :='matrikinvert.txt';
    assignfile(text,kata);
    gambar := image2.Picture.Bitmap;
    rewrite(text);
    writeln(text,'============================== MATRIKS INVERT ==========================');
    memo1.Clear;

    for j :=0 to gambar.Height-1 do
    begin
        temp := gambar.ScanLine[j];
        i:=0;
        repeat
            write(text,inttostr(temp[i])+ ' - ');
            i:=i+1;
        until i > 3*gambar.Height-1;
    end;
    closefile(text);
    memo2.Lines.LoadFromFile(kata);

Pada  button Fourier ketikkan listing dibawah ini 
var n,u : integer;
    temp : pbytearray;
    x,y,k :integer;
    con,tampung : real;
    fourier : array[0..10000] of real;
begin
    n := (gambar.Height-1) * (gambar.Width-1);
    for u := 0  to n-1 do
    tampung := 0;
    begin
        for y :=0 to gambar.Height-1 do
        begin
            temp := gambar.ScanLine[y];
            x := 0;
            repeat
                for k := 0 to 2 do
                con := temp[x] * cos (2*pi*u*(x/n));
                tampung := tampung + con;
                temp [x+k] := 0;
                inc(x,3);
            until x>3* gambar.Width-1 ;
            fourier[x] := 1/n;
        end;
        image3.Picture.Bitmap := gambar;
    end;

Pada  button Matrik ketikkan listing dibawah ini // matrik fourier
var text : TextFile;
    kata : String;
    temp : PByteArray;
    i,j  : Integer;
    gambar : TBitmap;
begin
    kata :='matrikfourier.txt';
    assignfile(text,kata);
    gambar := image3.Picture.Bitmap;
    rewrite(text);
    writeln(text,'============================== MATRIKS FOURIER ==========================');
    memo1.Clear;

    for j :=0 to gambar.Height-1 do
    begin
        temp := gambar.ScanLine[j];
        i:=0;
        repeat
            write(text,inttostr(temp[i])+ ' - ');
            i:=i+1;
        until i > 3*gambar.Height-1;
    end;
    closefile(text);
    memo3.Lines.LoadFromFile(kata);

Tidak ada komentar:

Posting Komentar