Nita Gici's Blog

^^trusted information found here^^

Membuat Program Transformasi Fourier Pada Citra April 17, 2010

Filed under: electronics — nitagici @ 11:20 am
Tags: ,

Pada dasarnya citra adalah fungsi 2D, sehingga transformasi fourier yang digunakan adalah transformasi fourier 2D. Langkah-langkah untuk membuat program transformasi fourier pada citra menggunakan Visual Basic adalah sebagai berikut :

1. Buat Project baru dengan menekan <Ctrl><Z>, sehingga muncul tampilan project baru dengan form kosong yang kemudian buatlah form seperti gambar berikut

Gambar 1. Form untuk proses transformasi fourier

2. Isilah property pada setiap obyek dan form sebagai berikut:

3. Click bagian form yang kosong, dan isikan program inisialisasi proses berikut ini:

Dim n1, n2, m1, m2 As Integer
Dim x(400, 400) As Integer
Dim xr(400, 400), xi(400, 400) As Single

Private Sub Form_Load()
m1 = 12: m2 = 12
End Sub

4. Click Command1, dan isikan program untuk proses perhitungan Transformasi Fourier menggunakan DFT:

Private Sub Command1_Click()
n1 = 0
For i = 1 To Picture1.ScaleWidth Step 15
n1 = n1 + 1
n2 = 0
For j = 1 To Picture1.ScaleHeight Step 15
warna = Picture1.Point(i, j)
r = warna And RGB(255, 0, 0)
g = Int((warna And RGB(0, 255, 0)) / 256)
b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
n2 = n2 + 1
x(n1, n2) = Int((r + g + b) / 3)
Picture1.PSet (i, j), RGB(x(n1, n2), x(n1, n2), x(n1, n2))
Next j
Next i
Picture2.ScaleHeight = m1 + 1
Picture2.ScaleWidth = m2 + 1
Picture3.ScaleHeight = m1 + 1
Picture3.ScaleWidth = m2 + 1
For i = 1 To m1
For j = 1 To m2
fr = 0
fi = 0
For k1 = 1 To n1
For k2 = 1 To n2
fr = fr + x(k1, k2) * Cos(6.28 * (i * k1 / m1 + j * k2 / m2))
fi = fi – x(k1, k2) * Sin(6.28 * (i * k1 / m1 + j * k2 / m2))
Next k2
Next k1
w = 255 * Abs(fr) / (n1 * n2)
Picture2.Line (i – 0.5, j – 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF
w = 255 * Abs(fi) / (n1 * n2)
Picture3.Line (i – 0.5, j – 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF
xr(i, j) = fr
xi(i, j) = fi
Next j
Next i
End Sub

5. Click Command2, dan isikan program untuk proses perhitungan magnitude dan phase berikut ini:

Private Sub Command2_Click()
Dim xa(100, 100), xg(100, 100) As Integer
Picture4.ScaleHeight = m1 + 1
Picture4.ScaleWidth = m2 + 1
Picture5.ScaleHeight = m1 + 1
Picture5.ScaleWidth = m2 + 1
xam = 0
xgm = 0
For i = 1 To m1
For j = 1 To m2
xa(i, j) = (xr(i, j) ^ 2 + xi(i, j) ^ 2) ^ 0.5
xg(i, j) = xi(i, j) / xr(i, j)
If xa(i, j) > xam Then xam = xa(i, j)
If Abs(xg(i, j)) > xgm Then xgm = Abs(xg(i, j))

Next j
Next i
For i = 1 To m1
For j = 1 To m2
w = Int(256 * xa(i, j) / xam)
Picture4.Line (i – 0.5, j – 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF
w = Int(256 * Abs(xg(i, j)) / xgm)
Picture5.Line (i – 0.5, j – 0.5)-(i + 0.5, j + 0.5), RGB(w, w, w), BF
Next j
Next i
End Sub

6. Click Command3, dan isikan program untuk proses keluar dari program berikut ini:

Private Sub Command3_Click()
Unload Me
End Sub

7. Simpan form ini dengan nama formFourier seperti nama formnya, dan simpan projectnya dengan nama Project Fourier.

Contoh hasil transformasi fourier adalah sebagai berikut :

Gambar 2. Contoh transformasi fourier dengan 12×12

Untuk mengubah ukuran window dari hasil transformasi fourier dapat dilakukan dengan mengganti nilai m1 dan m2 pada fungsi form load.

Gambar 3. Contoh transformasi fourier dengan 9×9

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s