Di bawah ini adalah contoh penggunaan transformasi fourier pada pengolahan citra. Bahasa pemrograman yang dipakai adalah Visual Basic 6.0. Tampilan awal program terlihat seperti gambar di bawah ini :
Hasil dari transformasi fourier dan phase magnitude dapat di lihat pada gambar di bawah ini :
Listing program seperti di bawah ini:
Dim n1, n2, m1, m2 As Single Dim x(400, 400) As Single Dim xr(400, 400), xi(400, 400) As Single 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 Private Sub Command2_Click() Dim xa(100, 100), xg(100, 100) As Single 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 Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Load() m1 = 16: m2 = 16 End Sub
Advertisement


wah nice info ni..klo sempet nanti saya coba