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);

Minggu, 04 Oktober 2015

Filter Gaussian


       Filter Gaussian tergolong sebagai filter lolos-rendah yang didasarkan pada fungsi Gaussian. Model dua dimensinya berupa:                   

Dalam hal ini, adalah deviasi standar dan piksel pada pusat (y,x) mendapatkan bobot terbesar berupa 1.
       Filter Gaussian paling tidak berukuran 5x5. Sebagai contoh, bobot-bobotnya dapat diperoleh dengan membuat  bernilai 1. Dengan demikian:


Dengan mengatur nilai terkecil menjadi 1, maka setiap nilai di atas perlu dikalikan dengan 55 (diperoleh dari 1/0,0183 dan kemudian hasilnya dibulatkan ke atas). Dengan demikian,diperoleh hasil seperti berikut, yang diperoleh dengan mengalikan nilai G(x,y) di depan dengan 55.


Setelah dinormalisasi diperoleh filter seperti berikut:


Gambar dibawah memberikan contoh penerapan filter Gaussian pada dua buah citra.

Gambar Efek filter Gaussian


Hasilnya,  terjadi sedikit penghalusan pada daerah yang intensitasnya berbeda jauh.


Efek Emboss


       Gambar 4.29 menunjukkan contoh hasil embossing.Terlihat ada penebalan garis pada arah tertentu.


Gambar Efek emboss

Kernel yang digunakan seperti berikut:



Nilai negatif dan positif yang berpasangan menentukan perubahan kecerahan yang berefek pada  penggambaran garis gelap atau terang, Gambar 4.30 memperlihatkan efek beberapa kernel dan hasil yang didapatkan untuk citra lena256.png.


Gambar Efek emboss untuk berbagai kernel

       Rahasia pembuatan emboss terletak pada kernel konvolusi dengan sifat seperti berikut (Oliver, dkk., 1993).

1.      Tinggi dan lebar kernel gasal.
2.      Bobot dalam kernel bersifat tidak simetris terhadap piksel pusat.
3.      Bobot pusat kernel bernilai nol.
4.      Jumlah keseluruhan bobot bernilai nol.

Nilai negatif pada kernel emboss menentukan arah penebalan garis. Beberapa contoh yang dapat dicoba ditunjukkan pada gambar berikut.


Gambar Berbagai kernel untuk embossing


Filter High-Boost


       Filter “high boost” (Efford, 2000) dapat digunakan untuk menajamkan citra melalui konvolusi. Kernel yang dapat dipakai adalah kernel filter lolos-tinggi dengan nilai di pusat diisi dengan nilai yang lebih besar daripada nilai pada posisi tersebut untuk filter lolos-tinggi. Sebagai contoh, dapat digunakan kernel seperti berikut.

Gambar Contoh filter high boost

       Gambar berikut menunjukkan efek saat c diisi dengan 9, 10, dan 11.


Gambar Hasil pemrosesan dengan filter high boost


Tampak bahwa dengan menggunakan filter high boostbernilai tengah tertentu (pada contoh di atas berupa 9), diperoleh hasil berupa penajaman citra.


Filter Lolos-Tinggi (high pass filter)

Filter Lolos-Tinggi

       Filter lolos-tinggi adalah filter yang ditujukan untuk melewatkan frekuensi tinggi dan menghalangi yang berfrekuensi rendah. Hal ini biasa dipakai untuk mendapatkan tepi objek dalam citra atau menajamkan citra. Contoh filter lolos-tinggi dapat dilihat pada Gambar 4.23.
                                                                                         

Gambar Contoh tiga kernel filter lolos-tinggi

       Filter lolos-tinggi mempunyai sifat yaitu jumlah seluruh koefisien adalah nol.Selain itu terdapat sifat sebagai berikut (Efford, 2000).
 - Apabila dikenakan pada area dengan perubahan aras keabuan yang lambat (frekuensi rendah),hasil berupa nol atau nilai yang sangat kecil.
2.  - Apabila dikenakan pada area yang perubahan aras keabuannya cepat (frekuensi tinggi), hasil konvolusi bernilai sangat besar.

hasil dari filter lolos-tinggi

Gambar 4.25Hasil pemrosesan dengan filter lolos-tinggi


Filter lolos-bawah (low-pass filter)


Filter lolos-bawah(low-pass filteradalah filter yang mempunyai sifat dapat meloloskan yang berfrekuensi rendah dan menghilangkan yang berfrekuensi tinggi. Efek filter ini membuat perubahan aras keabuan menjadi lebih lembut. Filter ini berguna untuk menghaluskan derau atau untuk kepentingan interpolasi tepi objek dalam citra.

       Operasi penapisan lolos-bawah dilaksanakan melalui konvolusi atau tanpa konvolusi. Contoh yang tidak memakai konvolusi dapat dilihat pada filter median(filter median termasuk dalam filter lolos-bawah). Adapun yang melibatkan konvolusi menggunakan kernel antara lain berupa seperti yang terlihat pada Gambar dibawah (Phillips, 2000).

Gambar 4.17Contoh kernel untuk filter lolos-bawah

hasil filter lolos-rendah

Gambar Contoh penerapan konvolusi menggunakan kernel #2




Pengertian Konvolusi



Konvolusi seringkali dilibatkan dalam operasi ketetanggaan piksel.Konvolusi pada citra sering disebut sebagai konvolusi dua-dimensi (konvolusi 2D). Konvolusi 2D didefinisikan sebagai proses untuk memperoleh suatu piksel didasarkan pada nilai piksel itu sendiri dan tetangganya, dengan melibatkan suatu matriks yang disebut kernel yang merepresentasikan pembobotan. Wujud kernel umumnya bujur sangkar, tetapidapatpula berbentuk persegi panjang.Gambar dibawah menunjukkan contoh kernel untuk konvolusi.

Gambar Contoh kernel untuk konvolusi berukuran 3x3 dan mxn

Secara umum, proses penapisan di kawasan ruang (space domain), sebagai alternatif di kawasan frekuensi, dilaksanakan melalui operasi konvolusi.Operasi ini dilakukan dengan menumpangkan suatu jendela (kernel) yang berisi angka-angka pengali pada setiap piksel yang ditimpali.Kemudian, nilai rerata diambil dari hasil-hasil kali tersebut. Khusus bila angka-angka pengali tersebut semua adalah 1, hasil yang didapat sama saja dengan filter pererataan.
Pada pelaksanaan konvolusi, kernel digeser sepanjang baris dan kolom dalam citra (lihat Gambar diabawah) sehingga diperoleh nilai yang baru pada citra keluaran


Gambar Konvolusi dilakukan dengan melakukan proses
di sepanjang kolom dan baris pada citra

       Bagaimana konvolusi dilakukan? Prosesnya dirumuskan sebagai berikut:
  

Dalam hal ini,

·         m2 adalah separuh dari tinggi kernel (m2 = floor(m/2)),
·         n2 adalah separuh dari lebar kernel (n2 = floor(n/2)),
·         floor menyatakan pembulatan ke bawah, dan
·         h menyatakan kernel, dengan indeks dimulai dari 1.

contoh


g(x, y) =   -1 x 62 + 0 x 60 + 1 x 60 +
                 -2 x 60 + 0 x 68 + 2 x 78 +
                 -1 x 55 + 0 x 50 + 1 x 65
= -62 + 0 + 60 – 120 + 0 + 152 – 55 + 0 + 65
           = 40

Dengan demikian, nilai 68 akan diubah menjadi 40 pada citra keluaran.

hasilnya konvolusi citra