Pengolahan Citra Digital Dengan Menggunakan MATLAB
-
Upload
simesterious-themaster -
Category
Education
-
view
978 -
download
4
Transcript of Pengolahan Citra Digital Dengan Menggunakan MATLAB
PENGOLAHAN CITRA DIGITAL DENGAN MENGGUNAKAN MATLAB
PRODI MATEMATIKA
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS HASANUDDIN
MAKASSAR
2015
OLEH:
NAMA : SUKARDI
NIM : H111 11 002
1
DAFTAR ISI
DAFTAR ISI ....................................................................................................... 1
BAB I TOERI CITRA DIGITAL ......................................................................... 3
1.1 Representasi Citra Digital ........................................................................... 3
1.2 Gambar Sebagai Matriks ............................................................................ 4
1.3 Resolusi Citra ............................................................................................. 4
1.3.1. Resolusi Spasial .................................................................................. 4
1.3.2 Resolusi kecemerlangan ...................................................................... 4
1.4 Citra warna (True Colour) .......................................................................... 5
1.5 Citra warna (24 bit) .................................................................................... 5
1.6 Format File Citra ........................................................................................ 5
BAB II PENGOLAHAN CITRA DIGITAL ........................................................ 7
2.1 Pengolahan Citra Digital ............................................................................ 7
2.1.1 Membaca/Memanggil Citra (Image) .................................................... 7
2.1.2 Menampilkan Gambar ......................................................................... 9
2.2 Tipe Citra ................................................................................................. 10
2.2.1 Ekstraksi Nilai Piksel Red, Green dan Blue (RGB) ............................ 11
2.2.2 Konversi Gambar RGB ke Grayscale ................................................. 12
2.2.3 Konversi Gambar ke Hitam-Putih ...................................................... 15
2.2.4 Komversi Gambar ke Biner ............................................................... 16
2.2.5 Perbandingan Matriks Warna dan Hitam Putih .................................. 17
2.3 Function imadjust ..................................................................................... 19
2.4 Histogram Processing and Function Plotting ............................................ 21
2.4.1 Generating and Plotting Image Histograms ........................................ 21
2.4.2 Histogram Equalizati ......................................................................... 24
2
2.5 Spatial Filtering ........................................................................................ 28
2.5.1 Linear Spatial Filtering ...................................................................... 28
2.6 Transformasi Fourier Diskrit 2-Dimensi ................................................... 37
2.7 Menghitung dan Menvisualisasikan 2-D DFT dalam MATLAB ............... 38
2.8 Filtering In The Frequency Domain .......................................................... 47
3
BAB I
TEORI CITRA DIGITAL
1.1 Representasi Citra Digital
Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari
suatu objek. Citra terbagi 2 yaitu ada citra yang bersifat analog dan ada citra yang
bersifat digital. Citra analog adalah citra yang bersifat kontinu seperti gambar pada
monitor televisi, foto sinar X, hasil CT scan dll. Sedangkan pada citra digital adalah
citra yang dapat diolah oleh computer.
Sebuah citra digital dapat mewakili oleh sebuah matriks yang terdiri dari M
kolom N baris, dimana perpotongan antara kolom dan baris disebut piksel (piksel =
picture element), yaitu elemen terkecil dari sebuah citra. Piksel mempunyai dua
parameter, yaitu koordinat dan intensitas atau warna. Nilai yang terdapat pada
koordinat (𝑥, 𝑦) adalah 𝑓(𝑥, 𝑦), yaitu besar intensitas atau warna dari piksel di titik
itu.Oleh sebab itu, sebuah citra digital dapat ditulis dalam bentuk matriks berikut.
𝑓(𝑥, 𝑦) = [
𝑓(0,0) 𝑓(0,1) … 𝑓(0, 𝑀 − 1)
𝑓(1,0) … … 𝑓(1, 𝑀 − 1) …
𝑓(𝑁 − 1,0)…
𝑓(𝑁 − 1,1)……
…𝑓(𝑁 − 1, 𝑀 − 1)
] (1.1)
Berdasarkan gambaran tersebut, secara matematis citra digital dapat
dituliskan sebagai fungsi intensitas 𝑓 (𝑥, 𝑦), dimana harga x (baris) dan y (kolom)
merupakan koordinat posisi dan 𝑓(𝑥, 𝑦) adalah nilai fungsi pada setiap titik (𝑥, 𝑦)
yang menyatakan besar intensitas citra atau tingkat keabuan atau warna dari piksel
di titik tersebut. Pada proses digitalisasi (sampling dan kuantitas) diperoleh besar
baris M dan kolom N hingga citra membentuk matriks M x N dan jumlah tingkat
keabuan piksel G.
Pengolahan citra digital adalah sebuah disiplin ilmu yang mempelajari hal-
hal yang berkaitan dengan perbaikan kualitas gambar (peningkatan kontras,
transformasi warna, restorasi citra), transformasi gambar (rotasi, translasi, skala,
transformasigeometrik), melakukan pemilihan citra ciri (feature images) yang
4
optimal untuk tujuan analisis, melakukan proses penarikan informasi atau deskripsi
objek atau pengenalan objek yang terkandung pada citra, melakukan kompresi atau
reduksi data untuk tujuan penyimpanan data, transmisi data, dan waktu proses data.
Input dari pengoalahan citra adalah citra, sedangkan outputnya adalah citra hasil
pengolahan.
1.2 Gambar Sebagai Matriks
Matriks adalah kumpulan bilangan- bilangan yang disusun dalam larik baris
dan kolom. Umumnya matriks diberi notasi huruf kapital A, B,....
Jika matriks A terdiri dari m baris dan n kolom (sering disebut ordo mxn), maka
dapat ditulis sebagai :
𝐴 = 𝑎𝑖𝑗 = [
𝑎11 𝑎12 … 𝑎1𝑛
𝑎21 𝑎22… 𝑎2𝑛
…𝑎𝑚1
…𝑎𝑚2
……
…𝑎𝑚𝑛
] (1.2)
Perhatikan bahwa matriks yang terdiri dari 1 kolom sama dengan vektor.
1.3 Resolusi Citra
Resolusi citra merupakan tingkat detailnya suatu citra. Semakin tinggi
resolusinya semakin tinggi pula tingkat detail dari citra tersebut. Menurut T,Sutoyo
ada dua jenis resolusi yang perlu diketahui, yaitu :
1.3.1. Resolusi Spasial
Resolusi spasial ini merupakan ukuran halus atau kasarnya pembagian kisi-
kisi baris dan kolom pada saat sampling.Resolusi ini dipakai untuk menentukan
jumlah pixel per satuan panjang. Biasanya satuan resolusi ini adalah dpi (dot per
inchi).
Resolusi ini sangat berpengaruh pada detail dan perhitungan gambar.
1.3.2 Resolusi kecemerlangan
Resolusi kecemerlangan (intensitas/ brightness) atau biasanya disebut
dengan kedalaman bit/ kedalaman warna (Bit Depth) adalah ukuran halus kasarnya
pembagian tingkat gradasi warna saat dilakukan kuantisasi. Bit Depth menentukan
5
berapa banyak informasi warna yang tersedia untuk ditampilkan dalam setiap
piksel. Semakin besar nilanya, semakin bagus kualitas gambar yang dihasilkan dan
tentu ukuran juga semakin besar.
1.4 Citra warna (True Colour)
Setiap piksel pada citra warna mewakili warna yang merupakan kombinasi
dari tiga warna dasar (RGB = Red Green Blue). Setiap warna dasar menggunakan
penyimpanan 8 bit = 1 byte, yang berarti mempunyai gradasi sebanyak 255 warna
berarti setiap piksel mempunyai kombinasi warna sebanyak 28. 28. 28 = 224 =
16 𝑗𝑢𝑡𝑎 𝑤𝑎𝑟𝑛𝑎 𝑙𝑒𝑏𝑖ℎ. Penyimpanan citra true color didalam memori berbeda
dengan citra grayscale. Setiap piksel dari citra grayscale 256 gradasi warna diwakili
oleh 1 byte. Sedangkan 1 piksel citra true color diwakili oleh 3 byte yang masing-
masing byte merepresentasikan warna merah (Red), hijau (Green), biru (Blue) (T,
Sutoyo et al.2009: 22).
1.5 Citra warna (24 bit)
Setiap pixel dari citra warna 24 bit diwakili dengan 24 bit sehingga total
16.777.216 variasi warna. Variasi ini sudah lebih dari cukup untuk
memvisualisasikan seluruh warna yang dapat dilihat penglihatan manusia.
Penglihatan manusia dipercaya hanya dapat membedakan hingga 10 juta warna
saja.
Setiap poin informasi pixel (RGB) disimpan kedalam 1 byte data. 8 bit
pertama menyimpan nilai biru, kemudian diikuti dengan nilai hijau pada 8 bit kedua
dan 8 bit terakhir merupakan warna merah.
1.6 Format File Citra
Sebuah format file citra harus dapat menyatukan kualitas citra, ukuran file
dan kompabilitas dengan berbagai aplikasi. Format file citra standar yang
digunakan saat ini terdiri dari beberapa jenis. Format- format ini digunakan untuk
menyimpan citra dalam sebuah file. Setiap format memiliki karakteristik masing-
masing. Ini adalah contoh format umum, yaitu : Bitmap (.bmp), tagged image
format (.tif, .tiff), Portable Network Graphics (.png), JPEG (.jpg), dll.
6
Bahkan menurut Sutoyo,T.Mulyanto,E, ada dua jenis format file citra yang
sering digunakan dalam pengolahan citra, yaitu citra bitmap dan citra vektor. Pada
citra bitmap ini sering disebut juga citra raster. Citra bitmap ini menyimpan data
kode citra secara digital dan lengkap (cara penyimpanannya adalah per piksel).
Citra bitmap ini dipresentasikan dalam bentuk matriks atau dipetakan dengan
menggunakan bilangan biner atau sistem bilangan yang lain. Citra ini memiliki
kelebihan untuk memanipulasi warna, tetapi untuk mengubah objek lebih sulit.
Tampilan bitmap mampu menunjukkan kehalusan gradasi bayangan dan warna dari
sebuah gambar. Tetapi bila tampilan diperbesar maka tampilan di monitor akan
tampak pecah-pecah (kualitas citra menurun). Contoh format file citra antara lain
adalah BMP, GIFF, TIF, WPG, IMG, dll. Sedangkan pada format file citra vektor
merupakan citra vektor yang dihasilkan dari perhitungan matematis dan tidak
terdapat piksel, yaitu data yang tersimpan dalam bentuk vektor posisi, dimana yang
tersimpan hanya informasi vektor posisi dengan bentuk sebuah fungsi. Pada citra
vektor, mengubah warna lebih sulit dilakukan, tetapi membentuk objek dengan cara
mengubah nilai lebih mudah. Oleh karena itu, bila citra diperbesar atau diperkecil,
kualitas citra relatif tetap baik dan tidak berubah. Citra vektor biasanya dibuat
menggunakan aplikasi- aplikasi citra vektor seperti CorelDRAW, Adobe Illustrator,
Macromedia Freehand, Autocad, dll.
7
BAB II
PENGOLAHAAAN CITRA DIGITAL
2.1 Pengolahan Citra Digital
Pengolahan citra adalah pemrosesan citra, khususnya dengan menggunakan
computer, menjadi citra yang kualitasnya lebih baik.
MATLAB adalah bahasa pemrograman computer yang tidak memerlukan
definsi variasi secara khusus , secara sederhana MATLAB bekerja seperti
kalkulator . cukup kita menuliskan intruksi operasi yang digunakan kemudian tekan
enter.
Dalam menyelesaikan tugas Rangkuman ini saya memncoba menjalankan
MATLAB untuk pengolahan citra digital, berikut adalah beberapa fungsi
MATLAB dalam pengolahan citra digital:
2.1.1 Membaca/Memanggil Citra (Image)
Pada program matlab fungsi untuk melakukan pembacaan image standar adalah:
𝑖𝑚𝑟𝑒𝑎𝑑(′𝑓𝑖𝑙𝑒𝑛𝑎𝑚𝑒′)
Contoh penggunaan Imread
Ganbar Asli:
>>𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(‘𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔’)
8
Ket: Menampilkan matriks tidak menggunakan ; namun jika hanya membaca saja
akhir perintah harus menggunakan ;.
>>Hasil Pembacaan Citra dalm bentuk MAtriks:
Hasil dari pembacaan imread(‘filename’) bisa berupa matriks dua dimensi jika
gambar yang dibaca adalah gambar grayscale dan matriks 3 dimensi jika berupa
gambar 3 dimesi.
Perintah imread(‘filename’) dapat digunakan untuk membaca/memanggil beberapa
format file. Antara lain:
Tabel 1. Format file yang bias digunakan untuk membaca perintah imread.
Format Deskripsi Extension
TIFF Tagged Image File Format .tif.tiff
JPEG Join Photographic Expert’s Group .jpeg.jpg
GIF Graphics Interchange Format .gif
BMP Windws Bitmap .bmp
9
PNG Portable Network Graphics .png
XWD X-Window Dump .xwd
Berikut contoh penggunaan sintaks imread(‘filename’):
>> 𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚1. 𝑗𝑝𝑔′);
>> 𝑠𝑖𝑧𝑒(𝑃)
𝑎𝑛𝑠 =
320 529
>> [𝑀, 𝑁] = 𝑠𝑖𝑧𝑒(𝑃);
>> 𝑀 = 𝑠𝑖𝑧𝑒(𝑃, 1);
>> 𝑤ℎ𝑜𝑠 𝑃
𝑁𝑎𝑚𝑒 𝑆𝑖𝑧𝑒 𝐵𝑦𝑡𝑒𝑠 𝐶𝑙𝑎𝑠𝑠 𝐴𝑡𝑡𝑟𝑖𝑏𝑢𝑡𝑒𝑠
𝑃 320𝑥529𝑥3 507840 𝑢𝑖𝑛𝑡8
Penjelasan:
𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(‘𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔’); Perintah imread digunakan untuk membaca image
dan file grafis polinom.jpg yang hasilnya berupa matriks dan di simpan dalam
sebuah variabel bernama P. Matriks citra disini akan memiliki bentuk tiga dimensi
dengan ukuran 320 × 529 × 3 karena didapat dari file citra warna RGB berukuran
320 × 529 dengan tiga lapisan warna dasar red,green dan blue.
[𝑀, 𝑁] = 𝑠𝑖𝑧𝑒(𝑃); perintah size digunakan untuk membaca ukuran matriks P. M
digunakan untuk menampung jumlah M, N menampung jumlah N dari matriks P.
2.1.2 Menampilkan Gambar
Untuk menampilkan gambar dengan nama file polinom.jpg di gunakan
source code sebagai berikut:
10
>> 𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(‘𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔’);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑃);
>> Hasilnya:
Gambar 1: Hasil Imshow(P)
Penejelasan:
Source code baris pertama membaca citra dengan nama file polinom.jpg dan
kemudian disimpan dalam variable a dalam bentuk matriks sedangkan baris kedua
untuk menampilkan file citra yang telah di baca.
2.2 Tipe Citra
Terdapat 4 tipe dari Citra yaitu:
1. Gray-Scale Images
2. Binary images
3. Indexed Images
4. RGB Images
Dibawah ini dijelaskan tentang pengolahan tipe Citra.
11
2.2.1 Ekstraksi Nilai Piksel Red, Green dan Blue (RGB)
MATLAB menyediakan fasilitas yang cukup baik dalam memisahkan
RGB(Red,Green,Blue).
Berikut contoh Ekstraksi Nilai Pikse(RGB):
>> 𝑐𝑙𝑒𝑎𝑟;
>> 𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚1. 𝑗𝑝𝑔′);
>> 𝑟𝑒𝑑 = 𝑃(: , : ,1);
>> 𝑔𝑟𝑒𝑒𝑛 = 𝑃(: , : ,2);
>> 𝑏𝑙𝑢𝑒 = 𝑃(: , : ,3);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,1);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑃);
>> 𝑡𝑖𝑡𝑙𝑒(′𝐼𝑛𝑖 𝐶𝑖𝑡𝑟𝑎 𝑎𝑠𝑙𝑖′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,2);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑟𝑒𝑑);
>> 𝑡𝑖𝑡𝑙𝑒(′𝐼𝑛𝑖 𝐶𝑖𝑡𝑟𝑎 𝑀𝑒𝑟𝑎ℎ′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,3);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔𝑟𝑒𝑒𝑛);
>> 𝑡𝑖𝑡𝑙𝑒(′𝐼𝑛𝑖 𝐶𝑖𝑡𝑟𝑎 𝐻𝑖𝑗𝑎𝑢′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,4);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑏𝑙𝑢𝑒);
>> 𝑡𝑖𝑡𝑙𝑒(′𝐼𝑛𝑖 𝐶𝑖𝑡𝑟𝑎 𝐵𝑖𝑟𝑢′);
>>
12
Hasilnya:
Gambar 3: hasil dari pemisahan RGB
Penjelasan:
𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔′); perintah ini berfungsi untuk membaca gambar..
𝑟𝑒𝑑 = 𝑃(: , : ,1); perintah ini berfungsi hanya berisi piksel warna merah, 𝑔𝑟𝑒𝑒𝑛 =
𝑃(: , : ,2); perintah ini berfungsi untuk membaca hanya pada piksel warna hijau
begitu pula dengan perintah 𝑏𝑙𝑢𝑒 = 𝑃(: , : ,3); hanya berisi piksel warna biru.
2.2.2 Konversi Gambar RGB ke Grayscale
Grayscaling adalah teknik yang digunakan untuk mengubah citra
berwarna(RGB) menjadi bentuk grayscale atau tingkat keabuan(dari hitam ke
putih).
Berikut contoh Ekstraksi Nilai Piksel (RGB);
>> 𝑐𝑙𝑒𝑎𝑟;
>> 𝑅𝐺𝐵 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔′);
>> 𝑃 = 𝑟𝑔𝑏2𝑔𝑟𝑎𝑦(𝑅𝐺𝐵);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,1);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑅𝐺𝐵);
13
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐴𝑠𝑙𝑖′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,2);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑃)
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐺𝑟𝑎𝑦𝑠𝑐𝑎𝑙𝑒′);
>>
Hasilnya:
Gambar 4: Hasil dari pengubahan warna ke abu abuan
Untuk perubahan bentuk grayscale ini tidak menggunakan fungsi MATLAB
yang sudah ada yang merupakan nilai rata-rata piksel RGB tetapi masing-masing
nilai RGB diberi nilai bobot yang berbeda-beda, hal ini dengan mudah dilakukan
dengan menggunakan nilai seperti yang telah dilakukan diatas. Contoh sebagai
berikut:
>> 𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔′);
>> 𝑟𝑒𝑑 = 𝑃(: , : ,1);
>> 𝑔𝑟𝑒𝑒𝑛 = 𝑃(: , : ,2);
>> 𝑏𝑙𝑢𝑒 = 𝑃(: , : ,3);
>> 𝑔𝑟𝑎𝑦2 = 0.3 ∗ 𝑟𝑒𝑑 + 0.5 ∗ 𝑔𝑟𝑒𝑒𝑛 + 0.2 ∗ 𝑏𝑙𝑢𝑒;
14
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,1);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑟𝑒𝑑)
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝑀𝑒𝑟𝑎ℎ′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,2);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔𝑟𝑒𝑒𝑛);
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐻𝑖𝑗𝑎𝑢′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,3);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑏𝑙𝑢𝑒)
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐵𝑖𝑟𝑢′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,4);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔𝑟𝑎𝑦2)
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝑔𝑟𝑎𝑦𝑠𝑐𝑎𝑙𝑒′);
>>
Hasilnya:
Gambar 5: hasil dari pemisahan RGB dan Grayscale
15
2.2.3 Konversi Gambar ke Hitam-Putih
MATLAB menyediakan fungsi untuk meubah gambar yang memiliki warna
menjadi Hitam-Putih(BW)
>> 𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,1);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑃)
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐴𝑠𝑙𝑖′);
>> 𝐵𝑊 = 𝑖𝑚2𝑏𝑤(𝑃);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,2);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝐵𝑊)
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐵𝑊′);
>> 𝑖𝑚𝑤𝑟𝑖𝑡𝑒(𝐵𝑊, ′𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔′, ′𝑗𝑝𝑔′)
>>
Hasilnya:
Gambar 6: Hasil Konversi Warna ke Hitam Putih
16
2.2.4 Komversi Gambar ke Biner
Binerisasi citra adalah salah satu proses penting yang biasanya dilakukan
dalam pengolahan citra.
>> 𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔′);
>> 𝑔𝑟𝑎𝑦 = 𝑟𝑔𝑏2𝑔𝑟𝑎𝑦(𝑃);
>> 𝑡ℎ𝑟𝑒𝑠ℎ = 𝑔𝑟𝑎𝑦𝑡ℎ𝑟𝑒𝑠ℎ(𝑔𝑟𝑎𝑦);
>> 𝑖𝑚𝑏𝑤 = 𝑖𝑚2𝑏𝑤(𝑔𝑟𝑎𝑦, 𝑡ℎ𝑟𝑒𝑠ℎ);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,1);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑃)
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐴𝑠𝑙𝑖′);
>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(1,2,2);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑖𝑚𝑏𝑤)
>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐵𝑖𝑛𝑒𝑟′)
>>
Hasilnya:
Gambar 7: Hasil konvers dari Citra Hitam Putih ke Citra Biner
17
Ada 2 fungsi penting dalam proses diatas yaitu thresh=graythresh(gray);
yang digunakan untuk mendapatkan nilai ambang batas dan
imbw=im2bw(gray,thresh); yang melakukan proses binerisasi citra itu sendiri.
2.2.5 Perbandingan Matriks Warna dan Hitam Putih
Gambar 8: Indeks Citra dengan x=17 dan y=22
Gambar 9: Hasil nilai matrik pada citra warna
18
Gambar 10: Indeks Citra pada x=17 dan y=22
Gambar 11: Hasil nilai Matrik pada Citra Hitam Putih
19
2.3 Function imadjust
>> 𝑔 = 𝑖𝑚𝑎𝑑𝑗𝑢𝑠𝑡(𝑓. [𝑙𝑜𝑤_𝑖𝑛 ℎ𝑖𝑔ℎ_𝑖𝑛], . . . [𝑙𝑜𝑤_𝑜𝑢𝑡 ℎ𝑖𝑔ℎ_𝑜𝑢𝑡], 𝑔𝑎𝑚𝑚𝑎)
>> 𝑓 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚2011. 𝑗𝑝𝑔′);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑓);
Hasilnya adalah:
>> 𝑔1 = 𝑖𝑚𝑎𝑑𝑗𝑢𝑠𝑡(𝑓, [0 1], [1 0]);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔1);
Hasilnya adalah:
20
>> 𝑔2 = 𝑖𝑚𝑎𝑑𝑗𝑢𝑠𝑡(𝑓, [0.5 0.75], [0 1]);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔2);
Hasilnya adalah:
>> 𝑔3 = 𝑖𝑚𝑎𝑑𝑗𝑢𝑠𝑡(𝑓, [], [],2);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔3);
Hasilnya adalah:
21
2.4 Histogram Processing and Function Plotting
2.4.1 Generating and Plotting Image Histograms
>> 𝑓 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚2011. 𝑗𝑝𝑔′);
>> ℎ = 𝑓(: , : ,1);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑓), 𝑖𝑚ℎ𝑖𝑠𝑡(ℎ)
Hasilnya adalah:
>> 𝑔 = 𝑖𝑚ℎ𝑖𝑠𝑡(ℎ);
>> 𝑔1 = 𝑔(1: 10: 256);
>> ℎ𝑜𝑟𝑧 = 1: 10: 256;
>> 𝑏𝑎𝑟(ℎ𝑜𝑟𝑧, 𝑔1)
22
𝑎𝑥𝑖𝑠([0 255 0 15000])
>> 𝑎𝑥𝑖𝑠([0 255 0 15000])
>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑥𝑡𝑖𝑐𝑘′, 0: 50: 255)
>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑦𝑡𝑖𝑐𝑘′, 0: 2000: 15000)
𝐻𝑎𝑠𝑖𝑙𝑛𝑦𝑎 𝑎𝑑𝑎𝑙𝑎ℎ:
>> 𝑔 = 𝑖𝑚ℎ𝑖𝑠𝑡(ℎ);
>> 𝑔1 = 𝑔(1: 10: 256);
>> ℎ𝑜𝑟𝑧 = 1: 10: 256;
>> 𝑠𝑡𝑒𝑚(ℎ𝑜𝑟𝑧, 𝑔1, ′𝑓𝑖𝑙𝑙′)
>> 𝑎𝑥𝑖𝑠([0 255 0 15000])
>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑦𝑡𝑖𝑐𝑘′, 0: 50: 255)
>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑥𝑡𝑖𝑐𝑘′, 0: 2000: 15000)
>>
Hasilnya adalah:
23
>> 𝑔 = 𝑖𝑚ℎ𝑖𝑠𝑡(ℎ);
>> 𝑝𝑙𝑜𝑡(𝑔)
>> 𝑎𝑥𝑖𝑠([0 255 0 15000])
>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑥𝑡𝑖𝑐𝑘′, 0: 50: 255)
>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑦𝑡𝑖𝑐𝑘′, 0: 2000: 15000)
>>
Hasilnya adalah:
2.4.1.1 Some Useful Plotting Function
• 𝑝𝑙𝑜𝑡(ℎ𝑜𝑟𝑧, 𝑣, ’𝑐𝑜𝑙𝑜𝑟_𝑙𝑖𝑛𝑒𝑠𝑡𝑦𝑙𝑒_𝑚𝑎𝑟𝑘𝑒𝑟’)
• 𝑏𝑎𝑟(ℎ𝑜𝑟𝑧, 𝑣, 𝑤𝑖𝑑𝑡ℎ)
24
• 𝑠𝑡𝑒𝑚(ℎ𝑜𝑟𝑧, 𝑣, ’𝑐𝑜𝑙𝑜𝑟_𝑙𝑖𝑛𝑒𝑠𝑡𝑦𝑙𝑒_𝑚𝑎𝑟𝑘𝑒𝑟’, ’𝑓𝑖𝑙𝑙’)
• 𝑎𝑥𝑖𝑠([ℎ𝑜𝑟𝑧𝑚𝑖𝑛 ℎ𝑜𝑟𝑧𝑚𝑎𝑥 𝑣𝑒𝑟𝑡𝑚𝑖𝑛 𝑣𝑒𝑟𝑡𝑚𝑎𝑥])
• 𝑥𝑙𝑎𝑏𝑒𝑙(’𝑡𝑒𝑥𝑡 𝑠𝑡𝑟𝑖𝑛𝑔’, ’𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒’, 𝑠𝑖𝑧𝑒)
• 𝑦𝑙𝑎𝑏𝑒𝑙(’𝑡𝑒𝑥𝑡 𝑠𝑡𝑟𝑖𝑛𝑔’, ’𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒’, 𝑠𝑖𝑧𝑒)
• 𝑡𝑒𝑥𝑡(𝑥𝑙𝑜𝑐, 𝑦𝑙𝑜𝑐, ’𝑡𝑒𝑥𝑡 𝑠𝑡𝑟𝑖𝑛𝑔’, ’𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒’, 𝑠𝑖𝑧𝑒)
• 𝑡𝑖𝑡𝑙𝑒(’𝑡𝑖𝑡𝑙𝑒𝑠𝑡𝑟𝑖𝑛𝑔’)
Symbol Color Symbol Line Style Symbol Marker
k Black - Solid + Plus sign
w White -- Dashed o Circle
r Red : Dotted * Asterisk
g Green -. Dash-dot . Point
b Blue none No line x Cross
c Cyan s Square
y Yellow d Diamond
m Magenta none No marker
2.4.2 Histogram Equalizati
>> 𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚2011. 𝑗𝑝𝑔′);
>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑃);
Hasilnya adalah:
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚ℎ𝑖𝑠𝑡(𝑓);
25
>> 𝑦𝑙𝑖𝑚(′𝑎𝑢𝑡𝑜′);
Hasilnya adalah
>> 𝑔 = ℎ𝑖𝑠𝑡𝑒𝑞(𝑓, 256);
≫ 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔);
Hasilnya adalah
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚ℎ𝑖𝑠𝑡(𝑔);
Hasilnya adalah
26
>> 𝑦𝑙𝑖𝑚(′𝑎𝑢𝑡𝑜′);
Hasilnya adalah
>> ℎ𝑛𝑜𝑟𝑚 = 𝑖𝑚ℎ𝑖𝑠𝑡(𝑓)./𝑛𝑢𝑚𝑒𝑙(𝑓);
>> %𝐶𝑢𝑚𝑚𝑢𝑙𝑎𝑡𝑖𝑣𝑒 𝑑𝑖𝑠𝑡𝑟𝑖𝑏𝑢𝑡𝑖𝑜𝑛 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛:
>> 𝑐𝑑𝑓 = 𝑐𝑢𝑚𝑠𝑢𝑚(ℎ𝑛𝑜𝑟𝑚);
>> 𝑥 = 𝑙𝑖𝑛𝑠𝑝𝑎𝑐𝑒(0,1,256);
>> 𝑝𝑙𝑜𝑡(𝑥, 𝑐𝑑𝑓)
27
>> 𝑎𝑥𝑖𝑠([0 1 0 1])
>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑦𝑡𝑖𝑐𝑘′, 0: .2: 1)
>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑥𝑡𝑖𝑐𝑘′, 0: .2: 1)
>> 𝑥𝑙𝑎𝑏𝑒𝑙(′𝐼𝑛𝑝𝑢𝑡 𝑖𝑛𝑡𝑒𝑛𝑠𝑖𝑡𝑦 𝑣𝑎𝑙𝑢𝑒𝑠′, ′𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒′, 9)
>> 𝑦𝑙𝑎𝑏𝑒𝑙(′𝑂𝑢𝑡𝑝𝑢𝑡 𝑖𝑛𝑡𝑒𝑛𝑠𝑖𝑡𝑦 𝑣𝑎𝑙𝑢𝑒𝑠′, ′𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒′, 9)
>> %𝑆𝑝𝑒𝑐𝑖𝑓𝑦 𝑡𝑒𝑥𝑡 𝑖𝑛 𝑡ℎ𝑒 𝑏𝑜𝑑𝑦 𝑜𝑓 𝑡ℎ𝑒 𝑔𝑟𝑎𝑝ℎ:
>> 𝑡𝑒𝑥𝑡(0.18,0.5, ′𝑇𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛′, . . . ′𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒′, 9)
Hasilnya adalah
28
2.5 Spatial Filtering
Neighborhood processing consists of
Defining a center point, (x, y);
Performing an operation that involves only the pixels in a predefined
neighborhood about that center point;
Letting the result of that operation be the "response" of the process at that
point; and
Repeating the process for every point in the image. If the computations
performed on the pixels of the neighborhoods are linear, the operation is
called linear spatial filtering; otherwise it is called nonlinear spatial
filtering.
2.5.1 Linear Spatial Filtering
The mechanics of linear spatial filtering:
29
Berikut contoh penggunaan Korelasi dan Konvolusi dalam pemfilteran spasial
sebuah cittra.
Correlation
(a) 0 0 0 1 0 0 0 0 2 8 0 6 0
(b) 0 0 0 1 0 0 0 0
2 8 0 6 0
Starting position alignment
Zero padding
(c) (0 0 0 0) 0 0 0 1 0 0 0 0 (0 0 0 0)
2 8 0 6 0
(d) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
2 8 0 6 0
Position after one shift
(e) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
2 8 0 6 0
Position after four shifts
(f) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
2 8 0 6 0
Final position
Origin 𝑓 𝑤
30
‘Full’ correlation result
(g) 0 0 0 0 2 8 0 6 0 0 0 0 0 0 0 0
‘Same’ correlation result
(h) 0 0 2 8 0 6 0 0
Convolution
Origin 𝑓 w rotated 180°
(i) 0 0 0 1 0 0 0 0 0 6 0 8 2
(j) 0 0 0 1 0 0 0 0
0 6 0 8 2
(k) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 6 0 8 2
(l) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 6 0 8 2
(m) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 6 0 8 2
(n) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 6 0 8 2
(o) ‘full’ convolution resul
0 0 0 2 8 0 6 0 0 0 0 0
(p) 0 0 2 8 0 6 0 0 0
31
Terlihat pada Gambar diatas baik Korelasi maupun konvulusi, barisan terakhir pada
w diletakkan tepat pada baris pertama dari f kemudian yang kosong ditambahkan
dengan angka 0, kemudian dari posisi itu w mulai digeser dan setiap pergeseran f
dikalikan dengan w sehingga akan menghasilkan barisan pada “full correlation
result”, cara mengkalikannya adalah
(0 × 2) + (0 × 8 ) + (0 × 0) + (0 × 6 ) + ( 0 × 0) = 0
Sehingga baris pertama pada “full correlation result” nilainya 0, kemudian setelah
itu w digeser lagi dan setiap pergeserannya dikalikan lagi dengan f sampai pada
ujung f , contoh pada saat w berada pada barisan kelima pada f maka akan
menghasilkan nilai =2, berikut buktinya:
(0 × 2) + (0 × 8 ) + (0 × 0) + (1 × 6) + (0 × 0 ) = 6
Sehingga diperoleh nilai full correlation result seperti berikut:
0 0 0 0 2 8 0 6 0 0 0 0
Karena ukuran f adalah 8 maka hasil full correlation diubah ukurannya menjadi 8,
sehingga menjadi seperti berikut ini:
0 0 2 8 0 6 0 0
Begitupun dengan Konvolusi, caranya sama dengan Korelasi hanya saja
perbedaannya adalah nilai w, nilai w pada konvulusi di putar 180o sehingga w-nya
menjadi seperti berikut:
0 6 0 8 2
Untuk mendapatkan “full convolution result”, caranya sama dengan cara mencari
“full korrelation result” yaitu dengan menggeser w sampai ujung f dengan disetiap
pergeseran w dikalikan dengan f .
Contoh diatas adalah penggunaan Korelasi dan Konvolution pada satu dimensi,
bagaiman jika penggunaan korelasi dan konvolusi pada dua dimensi.
32
Untuk melakukan proses pemfilteran, maka proses tersebut dimulai dari pojok kiri
atas dengan mengambil f(x, y) dengan ordo 3 x 3.langka pertama sama dengan
proses yang dilakukan pada satu imensi yaitu menempatkan barisan terakhir dari w
tepat pada barisan pertama dari f,
Origin of f(x,y)
0 0 0 0 00 0 0 0 0000
000
100
000
000
1 3 57 9 24 6 8
(a)
Padded f
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 1 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
(b)
Initial position for w
𝟏 𝟑 𝟓𝟕 𝟗 𝟐𝟒 𝟔 𝟖
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 1 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
(c)
w(x,y)
)
33
‘full’ correlation result
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
𝟖 𝟔 𝟒𝟐 𝟗 𝟕𝟓 𝟑 𝟏
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
(d)
‘same’ correlation result
0 0 0 0 00 8 6 4 0000
250
930
710
000
(e)
Rotated w
𝟖 𝟔 𝟒𝟐 𝟗 𝟕𝟓 𝟑 𝟏
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 1 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
(f)
‘full’ convolution result
34
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
𝟏 𝟑 𝟓𝟕 𝟗 𝟐𝟒 𝟔 𝟖
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
(g)
‘same’ convolution result
0 0 0 0 00 1 3 5 0000
740
960
280
000
(h)
kemudian yang kosong diisi dengan angka 0 sehingga menghasilkan sebagai
berikut
𝟏 𝟑 𝟓𝟕 𝟗 𝟐𝟒 𝟔 𝟖
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 1 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
Kemudian w dikalikan dengan f, seperti berikut:
0 0 00 0 00 0 0
1 3 57 9 24 6 8
(1×0)+(3×0 )+(5×0)+(7 ×0 )+(9×0)+(2×0 )+(4×0)+(6×0)+(8×0)=0
35
Maka diperoleh nilai 0, untuk mendapatkan nilai 8 pada titik (4,4), berikut
caranya:
0 0 00 0 00 0 1
1 3 57 9 24 6 8
(1×0)+(3×0 )+(5×0)+(7 ×0 )+(9×0)+(2×0 )+(4×0)+(6×0)+(8×1)=8
Begitupun untuk mendapatkan nilai 9 pada titik (5,5)
0 0 00 1 00 0 0
1 3 57 9 24 6 8
(1×0)+(3×0 )+(5×0)+(7 ×0 )+(9×1)+(2×0)+(4×0)+(6×0 )+(8×0)=9
Begitupun untuk mendapatkan nilai 3 pada titik (5,6)
0 1 00 0 00 0 0
1 3 57 9 24 6 8
(1×0)+(3×1)+(5×0 )+(7×0)+(9×0 )+(2×0)+(4×0)+(6×0)+(8×0)=3
Sehingga setelah pergeseran sampai pada ujung f maka diperoleh berikut ini:
36
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
𝟖 𝟔 𝟒𝟐 𝟗 𝟕𝟓 𝟑 𝟏
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
Hasil diatas sama saja dengan hasil dibawah ini:
0 0 0 0 00 8 6 4 0000
250
930
710
000
Begitun dengan Konvolusi, caranya sama dengan Korelasi diatas hanya saja w-
nya yang berbeda, karena pada konvolusi sebelum dilakukan prosesnya maka
w harus di putar 180o sehingga menghasilkan w seperti berikut:
8 6 42 9 75 3 1
Dengan cara yang sama dengan korelasi maka didapatkanlah hasil konvolusi
berikut:
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
𝟏 𝟑 𝟓𝟕 𝟗 𝟐𝟒 𝟔 𝟖
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
0 0 00 0 00 0 0
Hasil di atas sama saja dengan hasil dibawah ini:
37
0 0 0 0 00 1 3 5 0000
740
960
280
000
2.6 Transformasi Fourier Diskrit 2-Dimensi
Misalkan 𝑓(𝑥, 𝑦) untuk 𝑥 = 0,1,2, … , 𝑀 − 1 dan 𝑦 = 0,1,2, … , 𝑁 − 1
melambangkan citra digital dari partisi matrik berukuran 𝑀 × 𝑁. Transformasi
Fourier Diskrit (TFD) dari 𝑓(𝑥, 𝑦) disimbolkan 𝐹(𝑢, 𝑣), diberikan dari persamaan:
𝐹(𝑢, 𝑣) = ∑ ∑ 𝑓(𝑥, 𝑦)𝑒−𝑗2𝜋(𝑢𝑥𝑀
+𝑣𝑦𝑁
)
𝑁−1
𝑦=0
𝑀−1
𝑥=0
Untuk 𝑢 = 0,1,2, … 𝑀 − 1 𝑑𝑎𝑛 𝑣 = 0,1,2, … 𝑁 − 1. Fungsi eksponensial dapat
diubah menjadi fugsi cosinus dan fungsi sinus, dengan variable baru 𝑢 dan 𝑣 yang
menentukan nilai frekuensinya (𝑥 𝑑𝑎𝑛 𝑦𝑎 𝑑𝑖𝑗𝑢𝑚𝑙𝑎ℎ𝑘𝑎𝑛 𝑘𝑒𝑙𝑢𝑎𝑟). Domain
frekuensi adalah system koordinat yang dibangun oleh 𝐹(𝑢, 𝑣) dimana 𝑢 dan 𝑣
sebagai variable (frekuensi).
Inverse dari transformasi Fourier Diskrit (IDFF) adalah
𝑓(𝑥, 𝑦) =1
𝑀𝑁∑ ∑ 𝐹(𝑢, 𝑣)𝑒𝑗2𝜋(
𝑢𝑥𝑀
+𝑣𝑦𝑁
)
𝑁−1
𝑦=0
𝑀−1
𝑥=0
Dimana 𝑥 = 0,1,2, … 𝑀 − 1 dan 𝑦 = 0,1,2, … , 𝑁 − 1. 𝑓(𝑥, 𝑦) dapat diperoleh dari
IDFF. Nilai dari 𝐹(𝑢, 𝑣) dalam persamaan ini biasa disebut sebagai koefisien
Fourier dari ekspansi.
Nilai dari ransformasi di titik asal “dari’ domain frekuensi (contoh F(0,0)
disebut component dc dari TRansformasi Fourier, dimana dc menyatakan direct
current.
Meskipun jika 𝑓(𝑥, 𝑦) adalah fungsi real, secara umum transformasinya
adalah kompleks. Metode dasar untuk menganalisis transformasi visualnya adalah
38
menghitung nilai spektrumnya (Gelombang dari fungsi 𝐹(𝑢, 𝑣), yang merupakan
fungsi bilangan real) dan menampilkan dalam bentuk gambar.
Misalkan 𝑅(𝑢, 𝑣) dan 𝐼(𝑢, 𝑣) melambangkan komponen real dan imajiner dari
𝐹(𝑢, 𝑣), Spektrum Fourier didefinisikan sebagai:
|𝐹(𝑢, 𝑣)| = [𝑅2(𝑢, 𝑣) + 𝐼2(𝑢, 𝑣)]12
Nilai sudut fase dari transformasi didefinsikan sebagai
𝜃(𝑢, 𝑣) = arctan [𝐼(𝑢, 𝑣)
𝑅(𝑢, 𝑣)]
2.7 Menghitung dan Menvisualisasikan 2-D DFT dalam MATLAB
DFT dan inversnya diperoleh dengan menggunakan algoritma fast Fourier
transform (FFT). FFT dari matriks gambar 𝑓 yang diperoleh menggunakan fungsi
𝑓𝑓𝑡2, yang memiliki syntax:
𝐹 = 𝑓𝑓𝑡2(𝑓)
𝑓 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑡𝑢𝑔𝑎𝑠4. 𝑗𝑝𝑔′);
𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑓)
Hasilnya adalah
Gambar 1. Citra asli
39
>> 𝐹 = 𝑓𝑓𝑡2(𝑓);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);
Hasilnya adalah
Gambar 2. Hasil transformasi dengan FFT
Fungsi ini menghasilkan matriks baru yang juga memiliki ukuran 𝑀 × 𝑁.
Jika transformasi Fourier digunakan untuk filtering. Syntaksnya berubah menjadi
𝐹 = 𝑓𝑓𝑡2(𝑓, 𝑃, 𝑄)
Dengan syntax diatas akan menghasilkan hasil matriks transformasi berukuran 𝑃 ×
𝑄
>> 𝐹 = 𝑓𝑓𝑡2(𝑓, 128,128);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);
Hasilnya adalah
40
Gambar3 fft dengan dimensi filtering
Spetrum Fourier diperoleh dengan menggunakanfungsi abs:
𝑆 = 𝑎𝑏𝑠(𝐹)
Yang menghitung nilai magnitude (akar kuadrat dari penjumlahan kuadrat dari
bagian imajiner dan bagian real) dari setiap elemen dari array.
>> 𝑆 = 𝑎𝑏𝑠(𝐹);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑆)
Gambar 4 Visualisasi Spektrum Fourier
Fungsi 𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡, dapat digunakan untuk memindahkan titik asal dari transformasi
ke tengah dari segiempat frekuensi, syntaksnya adalah
𝐹𝑐 = 𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝐹)
Dimana F adalah hasil transformasi yang dihitung dengan menggunakan 𝑓𝑓𝑡2 dan
𝐹𝑐 adalah transformasi yang focus ditengah. Fungsi 𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡 dioperasikan dengan
mengganti kuadran dari F. contoh, jika 𝑎 = [2 8; 0 6], maka 𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝑎) =
[6 0; 8 2].
41
>> 𝐹 = 𝑓𝑓𝑡2(𝑓, 128,128);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);
Hasilnya adalah:
Gambar 6a 𝑓𝑓𝑡 𝑏𝑖𝑎𝑠𝑎
>> 𝐹𝑐 = 𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝐹);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹𝑐);
Hasilnya adalah
Gambar 6b. Menggunakan 𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡
42
Interval dari nilai spectrum ini sangat besar yaitu (0 – 420.495) dibandingkan
dengan 8 bit sehingga nilai terang mendominasi hasilnya. Kesulitan ini dapat
diperbaiki dengan menggunakan transformasi log.
>> 𝑆2 = 𝑙𝑜𝑔(1 + 𝐹𝑐);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑆2);
Hasilnya adalah
Gambar 8. Hasil transformasi dengan fungsi log biasa
>> 𝑆2 = 𝑙𝑜𝑔(1 + 𝑎𝑏𝑠(𝐹𝑐));
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑆2);
Hasilnya adalah
Gambar 9. Hasil transformasi dengan fungsi log dengan fungsi abs
Fungsi 𝑖𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡, dapat digunakan untuk membalikkan Fc(mengembalikan ke
gambar semula), Syntaksnya adalah:
>> 𝐹 = 𝑖𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝐹𝑐)
>> 𝐹 = 𝑖𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝐹𝑐);
43
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);
Hasilnya adalah
Gambar 10 ℎ𝑎𝑠𝑖𝑙 𝑖𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡
Fungsi ini juga dapat digunakan untuk mengkoversi sebuah fungsi awalnya
berpsat disegi empat ke fungsi yang berpusat dibagian atas sebelah kiri segiempat.
Untuk menghitung nilai sudut fase. Karena komponen bagian real dan
imajiner dari transformasi Fourier 2-D, 𝑅(𝑢, 𝑣)𝑑𝑎𝑛 𝐼(𝑢, 𝑣), array dari ukuran yang
sama sebagai 𝐹(𝑢, 𝑣). Karena elemen dari R dan I saling bebas dan dapat bernilai
positif maupun negative, kita harus menghitung arctan dalaminterval [−𝜋, 𝜋]
(fungsi dengan sifat ini disebut arctan empat kuadran).
Fungsi MATLAB atan2, dapat menghitung perhitungan ini. Syntaksnya adalah:
≫ 𝑝ℎ𝑖 = 𝑎𝑡𝑎𝑛2(−1,1)
𝑝ℎ𝑖 =
−0.7854
Untuk membuat fungsi phi digunakan syntax:
>> 𝐹 = 𝑖𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝐹𝑐);
>> 𝑝ℎ𝑖 = 𝑎𝑡𝑎𝑛2(𝑖𝑚𝑎𝑔(𝐹), 𝑟𝑒𝑎𝑙(𝐹));
44
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑝ℎ𝑖)
Hasilnya adalah
Gambar 11 Fungsi phi
Selain menginput langsung bagian real dan bagian imajiner dari array F, dapat juga
diperoleh dengan menggunakan fungsi sudut secara langsung:
> > 𝑃ℎ𝑖 = 𝑎𝑛𝑔𝑙𝑒(𝐹);
> > 𝐹𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑝ℎ𝑖)
Gambar 12. Fungsi sudut
Hasilnya juga sama, selain itu dapat diperoleh DFT dengan menggunakan ekspresi
>> 𝑆 = 𝑎𝑏𝑠(𝐹);
>> 𝐹 = 𝑆.∗ 𝑒𝑥𝑝(𝑖 ∗ 𝑝ℎ𝑖);
45
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑆);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹)
Hasilnya adalah
Gambar 13, hasil DFT
Akhirnya, diperoleh invers dari transformasi Fourier dapat dihitung dengan
menggunakan fungsi 𝑖𝑓𝑓𝑡2, yang memiliki syntaks dasar:
𝑓 = 𝑖𝑓𝑓𝑡2(𝐹)
Dimana F adalah transformasi Fourier dan f adalah gambar asli. Karena fft2
mengkonversi gambar input ke kelas double tanpa menggunakaaan penskalaan.
Hasil dari operasi 𝑖𝑓𝑓𝑡2(𝐹) akan menghasilkan matriks baru berukuran sama
dengan f dengan nilai yang berada di interval [0255]. Tetapi menggunakan kelas
double.
>> 𝐹 = 𝑓𝑓𝑡2(𝑓);
>> 𝑔 = 𝑖𝑓𝑓𝑡2(𝐹);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔)
Hasilnya adalah
46
Gambar14 Hasil invers dari 𝑓𝑓𝑡2 double
Jika gambar input F adalah real, invers dari input ini adalah real. Tetapi
kadang ouput dari ifft2 kadang memiliki komponen imajiner yang kecil hasil dari
pembulatan saat perhitungan, untuk menghasilkan bagian realnya saja, digunakan
syntax.
>> 𝑓 = 𝑟𝑒𝑎𝑙(𝑖𝑓𝑓𝑡2(𝐹));
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑓)
>>
Hasilnya adalah
47
Gambar15. Hasil real dari 𝑖𝑓𝑓𝑡2
2.8 Filtering In The Frequency Domain
>> 𝑓 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑡𝑢𝑔𝑎𝑠4. 𝑗𝑝𝑔′);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑓);
Hasilnya adalah:
>> 𝐹 = 𝑓𝑓𝑡2(𝑓);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);
48
Hasilnya adalah:
[𝑀, 𝑁] = 𝑠𝑖𝑧𝑒(𝑓);
>> 𝑠𝑖𝑔 = 10;
>> 𝐻 = 𝑓𝑠𝑝𝑒𝑐𝑖𝑎𝑙(′𝑔𝑎𝑢𝑠𝑠𝑖𝑎𝑛′, [𝑀, 𝑁], 𝑠𝑖𝑔);
>> 𝐺 = 𝑖𝑚𝑓𝑖𝑙𝑡𝑒𝑟(𝐹, 𝐻, ′𝑠𝑎𝑚𝑒′);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺, []);
Hasilnya adalah:
>> ℎ = 𝑟𝑒𝑎𝑙(𝑖𝑓𝑓𝑡2(𝐻));
49
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(ℎ);
Hasilnya adalah:
Untuk N=10 dan M=10 maka
>> 𝑓 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑡𝑢𝑔𝑎𝑠4. 𝑗𝑝𝑔′);
>> 𝐹 = 𝑓𝑓𝑡2(𝑓);
>> 𝑠𝑖𝑔 = 10;
>> 𝐻 = 𝑓𝑠𝑝𝑒𝑐𝑖𝑎𝑙(′𝑔𝑎𝑢𝑠𝑠𝑖𝑎𝑛′, [10,10], 𝑠𝑖𝑔);
>> 𝐺 = 𝑖𝑚𝑓𝑖𝑙𝑡𝑒𝑟(𝐹, 𝐻, ′𝑠𝑎𝑚𝑒′);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺);
Hasilnya adalah:
>> ℎ = 𝑟𝑒𝑎𝑙(𝑖𝑓𝑓𝑡2(𝐻));
50
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(ℎ);
>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(ℎ[]);
𝐻𝑎𝑠𝑖𝑙𝑛𝑦𝑎 𝑎𝑑𝑎𝑙𝑎ℎ: