Pengolahan Citra Digital Dengan Menggunakan MATLAB

51
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

Transcript of Pengolahan Citra Digital Dengan Menggunakan MATLAB

Page 1: 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

Page 2: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 3: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 4: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 5: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 6: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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.

Page 7: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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.

Page 8: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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:

>>𝑃 = 𝑖𝑚𝑟𝑒𝑎𝑑(‘𝑝𝑜𝑙𝑖𝑛𝑜𝑚. 𝑗𝑝𝑔’)

Page 9: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 10: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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:

Page 11: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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.

Page 12: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑏𝑙𝑢𝑒);

>> 𝑡𝑖𝑡𝑙𝑒(′𝐼𝑛𝑖 𝐶𝑖𝑡𝑟𝑎 𝐵𝑖𝑟𝑢′);

>>

Page 13: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑅𝐺𝐵);

Page 14: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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 ∗ 𝑏𝑙𝑢𝑒;

Page 15: Pengolahan Citra Digital Dengan Menggunakan MATLAB

14

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,1);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑟𝑒𝑑)

>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝑀𝑒𝑟𝑎ℎ′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔𝑟𝑒𝑒𝑛);

>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐻𝑖𝑗𝑎𝑢′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,3);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑏𝑙𝑢𝑒)

>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝐵𝑖𝑟𝑢′);

>> 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,2,4);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔𝑟𝑎𝑦2)

>> 𝑡𝑖𝑡𝑙𝑒(′𝐶𝑖𝑡𝑟𝑎 𝑔𝑟𝑎𝑦𝑠𝑐𝑎𝑙𝑒′);

>>

Hasilnya:

Gambar 5: hasil dari pemisahan RGB dan Grayscale

Page 16: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 17: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 18: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 19: Pengolahan Citra Digital Dengan Menggunakan MATLAB

18

Gambar 10: Indeks Citra pada x=17 dan y=22

Gambar 11: Hasil nilai Matrik pada Citra Hitam Putih

Page 20: Pengolahan Citra Digital Dengan Menggunakan MATLAB

19

2.3 Function imadjust

>> 𝑔 = 𝑖𝑚𝑎𝑑𝑗𝑢𝑠𝑡(𝑓. [𝑙𝑜𝑤_𝑖𝑛 ℎ𝑖𝑔ℎ_𝑖𝑛], . . . [𝑙𝑜𝑤_𝑜𝑢𝑡 ℎ𝑖𝑔ℎ_𝑜𝑢𝑡], 𝑔𝑎𝑚𝑚𝑎)

>> 𝑓 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑝𝑜𝑙𝑖𝑛𝑜𝑚2011. 𝑗𝑝𝑔′);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑓);

Hasilnya adalah:

>> 𝑔1 = 𝑖𝑚𝑎𝑑𝑗𝑢𝑠𝑡(𝑓, [0 1], [1 0]);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔1);

Hasilnya adalah:

Page 21: Pengolahan Citra Digital Dengan Menggunakan MATLAB

20

>> 𝑔2 = 𝑖𝑚𝑎𝑑𝑗𝑢𝑠𝑡(𝑓, [0.5 0.75], [0 1]);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔2);

Hasilnya adalah:

>> 𝑔3 = 𝑖𝑚𝑎𝑑𝑗𝑢𝑠𝑡(𝑓, [], [],2);

>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔3);

Hasilnya adalah:

Page 22: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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)

Page 23: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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:

Page 24: Pengolahan Citra Digital Dengan Menggunakan MATLAB

23

>> 𝑔 = 𝑖𝑚ℎ𝑖𝑠𝑡(ℎ);

>> 𝑝𝑙𝑜𝑡(𝑔)

>> 𝑎𝑥𝑖𝑠([0 255 0 15000])

>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑥𝑡𝑖𝑐𝑘′, 0: 50: 255)

>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑦𝑡𝑖𝑐𝑘′, 0: 2000: 15000)

>>

Hasilnya adalah:

2.4.1.1 Some Useful Plotting Function

• 𝑝𝑙𝑜𝑡(ℎ𝑜𝑟𝑧, 𝑣, ’𝑐𝑜𝑙𝑜𝑟_𝑙𝑖𝑛𝑒𝑠𝑡𝑦𝑙𝑒_𝑚𝑎𝑟𝑘𝑒𝑟’)

• 𝑏𝑎𝑟(ℎ𝑜𝑟𝑧, 𝑣, 𝑤𝑖𝑑𝑡ℎ)

Page 25: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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:

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚ℎ𝑖𝑠𝑡(𝑓);

Page 26: Pengolahan Citra Digital Dengan Menggunakan MATLAB

25

>> 𝑦𝑙𝑖𝑚(′𝑎𝑢𝑡𝑜′);

Hasilnya adalah

>> 𝑔 = ℎ𝑖𝑠𝑡𝑒𝑞(𝑓, 256);

≫ 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑔);

Hasilnya adalah

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚ℎ𝑖𝑠𝑡(𝑔);

Hasilnya adalah

Page 27: Pengolahan Citra Digital Dengan Menggunakan MATLAB

26

>> 𝑦𝑙𝑖𝑚(′𝑎𝑢𝑡𝑜′);

Hasilnya adalah

>> ℎ𝑛𝑜𝑟𝑚 = 𝑖𝑚ℎ𝑖𝑠𝑡(𝑓)./𝑛𝑢𝑚𝑒𝑙(𝑓);

>> %𝐶𝑢𝑚𝑚𝑢𝑙𝑎𝑡𝑖𝑣𝑒 𝑑𝑖𝑠𝑡𝑟𝑖𝑏𝑢𝑡𝑖𝑜𝑛 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛:

>> 𝑐𝑑𝑓 = 𝑐𝑢𝑚𝑠𝑢𝑚(ℎ𝑛𝑜𝑟𝑚);

>> 𝑥 = 𝑙𝑖𝑛𝑠𝑝𝑎𝑐𝑒(0,1,256);

>> 𝑝𝑙𝑜𝑡(𝑥, 𝑐𝑑𝑓)

Page 28: Pengolahan Citra Digital Dengan Menggunakan MATLAB

27

>> 𝑎𝑥𝑖𝑠([0 1 0 1])

>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑦𝑡𝑖𝑐𝑘′, 0: .2: 1)

>> 𝑠𝑒𝑡(𝑔𝑐𝑎, ′𝑥𝑡𝑖𝑐𝑘′, 0: .2: 1)

>> 𝑥𝑙𝑎𝑏𝑒𝑙(′𝐼𝑛𝑝𝑢𝑡 𝑖𝑛𝑡𝑒𝑛𝑠𝑖𝑡𝑦 𝑣𝑎𝑙𝑢𝑒𝑠′, ′𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒′, 9)

>> 𝑦𝑙𝑎𝑏𝑒𝑙(′𝑂𝑢𝑡𝑝𝑢𝑡 𝑖𝑛𝑡𝑒𝑛𝑠𝑖𝑡𝑦 𝑣𝑎𝑙𝑢𝑒𝑠′, ′𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒′, 9)

>> %𝑆𝑝𝑒𝑐𝑖𝑓𝑦 𝑡𝑒𝑥𝑡 𝑖𝑛 𝑡ℎ𝑒 𝑏𝑜𝑑𝑦 𝑜𝑓 𝑡ℎ𝑒 𝑔𝑟𝑎𝑝ℎ:

>> 𝑡𝑒𝑥𝑡(0.18,0.5, ′𝑇𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛′, . . . ′𝑓𝑜𝑛𝑡𝑠𝑖𝑧𝑒′, 9)

Hasilnya adalah

Page 29: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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:

Page 30: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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 𝑓 𝑤

Page 31: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 32: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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.

Page 33: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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)

)

Page 34: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 35: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 36: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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:

Page 37: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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:

Page 38: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 39: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 40: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 41: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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].

Page 42: Pengolahan Citra Digital Dengan Menggunakan MATLAB

41

>> 𝐹 = 𝑓𝑓𝑡2(𝑓, 128,128);

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);

Hasilnya adalah:

Gambar 6a 𝑓𝑓𝑡 𝑏𝑖𝑎𝑠𝑎

>> 𝐹𝑐 = 𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝐹);

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹𝑐);

Hasilnya adalah

Gambar 6b. Menggunakan 𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡

Page 43: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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:

>> 𝐹 = 𝑖𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝐹𝑐)

>> 𝐹 = 𝑖𝑓𝑓𝑡𝑠ℎ𝑖𝑓𝑡(𝐹𝑐);

Page 44: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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(𝑖𝑚𝑎𝑔(𝐹), 𝑟𝑒𝑎𝑙(𝐹));

Page 45: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

>> 𝑆 = 𝑎𝑏𝑠(𝐹);

>> 𝐹 = 𝑆.∗ 𝑒𝑥𝑝(𝑖 ∗ 𝑝ℎ𝑖);

Page 46: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 47: Pengolahan Citra Digital Dengan Menggunakan MATLAB

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

Page 48: Pengolahan Citra Digital Dengan Menggunakan MATLAB

47

Gambar15. Hasil real dari 𝑖𝑓𝑓𝑡2

2.8 Filtering In The Frequency Domain

>> 𝑓 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑡𝑢𝑔𝑎𝑠4. 𝑗𝑝𝑔′);

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝑓);

Hasilnya adalah:

>> 𝐹 = 𝑓𝑓𝑡2(𝑓);

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐹);

Page 49: Pengolahan Citra Digital Dengan Menggunakan MATLAB

48

Hasilnya adalah:

[𝑀, 𝑁] = 𝑠𝑖𝑧𝑒(𝑓);

>> 𝑠𝑖𝑔 = 10;

>> 𝐻 = 𝑓𝑠𝑝𝑒𝑐𝑖𝑎𝑙(′𝑔𝑎𝑢𝑠𝑠𝑖𝑎𝑛′, [𝑀, 𝑁], 𝑠𝑖𝑔);

>> 𝐺 = 𝑖𝑚𝑓𝑖𝑙𝑡𝑒𝑟(𝐹, 𝐻, ′𝑠𝑎𝑚𝑒′);

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺, []);

Hasilnya adalah:

>> ℎ = 𝑟𝑒𝑎𝑙(𝑖𝑓𝑓𝑡2(𝐻));

Page 50: Pengolahan Citra Digital Dengan Menggunakan MATLAB

49

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(ℎ);

Hasilnya adalah:

Untuk N=10 dan M=10 maka

>> 𝑓 = 𝑖𝑚𝑟𝑒𝑎𝑑(′𝑡𝑢𝑔𝑎𝑠4. 𝑗𝑝𝑔′);

>> 𝐹 = 𝑓𝑓𝑡2(𝑓);

>> 𝑠𝑖𝑔 = 10;

>> 𝐻 = 𝑓𝑠𝑝𝑒𝑐𝑖𝑎𝑙(′𝑔𝑎𝑢𝑠𝑠𝑖𝑎𝑛′, [10,10], 𝑠𝑖𝑔);

>> 𝐺 = 𝑖𝑚𝑓𝑖𝑙𝑡𝑒𝑟(𝐹, 𝐻, ′𝑠𝑎𝑚𝑒′);

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(𝐺);

Hasilnya adalah:

>> ℎ = 𝑟𝑒𝑎𝑙(𝑖𝑓𝑓𝑡2(𝐻));

Page 51: Pengolahan Citra Digital Dengan Menggunakan MATLAB

50

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(ℎ);

>> 𝑓𝑖𝑔𝑢𝑟𝑒, 𝑖𝑚𝑠ℎ𝑜𝑤(ℎ[]);

𝐻𝑎𝑠𝑖𝑙𝑛𝑦𝑎 𝑎𝑑𝑎𝑙𝑎ℎ: