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



Ketetanggaan Piksel pada Filter

Ada tiga jenis filter yang menggunakan operasi ketetanggaan piksel yang akan dibahas sebagai pengantar pada bab ini. Ketiga filter tersebut adalah filter batas, filter pererataan, dan filter median. Sebagai filter atau tapis, operasi ketetanggaan piksel berfungsi untuk menyaring atau paling tidak mengurangi gangguan atau penyimpangan pada citra 


Filter Batas

            Filter batas adalah filter yang dikemukakan dalam Davies (1990). Idenya adalah mencegah piksel yang intensitasnya di luar intensitas piksel-piksel tetangga.Algoritma yang digunakan untuk keperluan ini dapat dilihat berikut ini



Gambar Contoh piksel dan tetangga

Berdasarkan keadaan tersebut,

·         minInt = minimum(5, 7, 7, 5, 4, 6, 7, 8) = 4;
·         maksInt = maksimum(5, 7, 7, 5, 4, 6, 7, 8) = 8;
·         mengingat f(y, x) bernilai 9 dan lebih besar daripada 8 (maksInt) maka g(y, x) bernilai 8;
·         seandainya f(y, x) pada keadaan di atas bernilai 2 (bukan 9),g(y,x) akan bernilai 4.


Gambar Efek filter batas terhadap citra yang mengadung derau

     Terlihat bahwa bintik-bintik putih pada citra mobil.pngdapat dihilangkan.Namun, kalau diperhatikan dengan saksama, operasi tersebut juga mengaburkan citra.Pada citra boneka2.png, derau malah diperkuat. Artinya, filter itu tidak cocok digunakan untuk menghilangkan jenis derau yang terdapat pada citra tersebut

Filter Pererataan

       Filter pererataan (Costa dan Cesar, 2001) dilakukan dengan menggunakan rumus:

                                          

Sebagai contoh, piksel pada f(y, x) dan kedelapan tetangganya memiliki nilai-nilai kecerahan seperti berikut.


Pada contoh di atas, yang diarsir (yaitu yang bernilai 68) merupakan nilai pada f(y, x). Nilai rerata pengganti untuk g(y, x) dihitung dengan cara seperti berikut:

       g(y, x) = 1/9 x (65+50+55+76+68+60+60+60+62) = 61,7778
      

     Jadi, nilai 68 pada f(y,x) diubah menjadi 62 pada g(y, x).

Gambar  menunjukkan efek pemrosesan dengan filter pererataan. Dibandingkan dengan filter batas, hasil pemrosesan filter pererataan tidak menghilangkan bintik-bintik putih pada citra mobil, tetapi hanya agak menyamarkan. Pada citra boneka2.png, deraulebih dihaluskan.



     Gambar Contoh penerapan filter pererataan

Filter Median

       Filter median sangat populer dalam pengolahan citra.Filter ini dapat dipakai untuk menghilangkan derau bintik-bintik. Nilai yang lebih baik digunakan untuk suatu piksel ditentukan oleh nilai median dari setiap piksel dan kedelapan piksel tetangga pada 8-ketetanggaan. Secara matematis,filter dapat dinotasikan seperti berikut:


Contoh untuk satu piksel ditunjukkan pada Gambar dibawah.

Gambar Gambaran operasi penggunaan filter median

   Pada contoh di atas terlihat bahwa untuk mendapatkan median, diperlukan pengurutan (sorting) terlebih dulu.


Gambar Contoh penerapan filter median
Hasilnya terlihat bahwa derau dapat dihilangkan, tetapi detail pada citra tetap dipertahankan.Namun, hal ini tentu saja didapat dengan tambahan beban komputasi “pengurutan”.