LAPORAN LENGKAP
PEMPROSESAN CITRA DIGITAL
NAMA NIM KELAS
: WARDIMAN : H11114021 : B
PRODI MATEMATIKA JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS HASANUDDIN 2016
i
KATA PENGANTAR
Tiada kata yang lebih indah selain ucapan syukur kehadirat Allah SWT yang telah melimpahkan karunia, taufik, hidayah, serta inayah-Nya sehingga laporan lengkap pemprosesan citra digital ini dapat terselesaikan. Tidak lupa pula senantiasa kita panjatkan salawat serta salam kepada junjungan dan panutan kita Muhammad SAW, dalam tahap penyusunan laporan lengkap ini, tidak terlepas dari berbagai kendala yang menghambat penyusunan. Namun berkat bantuan dan motivasi dari barbagai pihak, sehingga kendala dan halangan tersebut dapat teratasi.
Laporan lengkap ini disusun sebagai syarat nilai mid . Ucapan terima kasih saya sampaikan kepada teman-teman, serta pihak-pihak lainnya yang telah mambantu saya dalam menyelesaikan laporan lengkap ini yang tidak sempat disebutkan.
Dalam penyusunan laporan lengkap ini, disadari bahwa masih terdapat kekurangan karena hal ini masih terbilang baru bagi saya. Oleh Karena itu, kritik dan saran yang sifatnya membangun sangat saya harapkan, walau demikian, saya tetap berharap laporan lengkap pemprosesan citra digital ini dapat memberikan manfaat. Amin .
Makassar, 27 maret 2016 wardiman
i
KATA PENGANTAR
Tiada kata yang lebih indah selain ucapan syukur kehadirat Allah SWT yang telah melimpahkan karunia, taufik, hidayah, serta inayah-Nya sehingga laporan lengkap pemprosesan citra digital ini dapat terselesaikan. Tidak lupa pula senantiasa kita panjatkan salawat serta salam kepada junjungan dan panutan kita Muhammad SAW, dalam tahap penyusunan laporan lengkap ini, tidak terlepas dari berbagai kendala yang menghambat penyusunan. Namun berkat bantuan dan motivasi dari barbagai pihak, sehingga kendala dan halangan tersebut dapat teratasi.
Laporan lengkap ini disusun sebagai syarat nilai mid . Ucapan terima kasih saya sampaikan kepada teman-teman, serta pihak-pihak lainnya yang telah mambantu saya dalam menyelesaikan laporan lengkap ini yang tidak sempat disebutkan.
Dalam penyusunan laporan lengkap ini, disadari bahwa masih terdapat kekurangan karena hal ini masih terbilang baru bagi saya. Oleh Karena itu, kritik dan saran yang sifatnya membangun sangat saya harapkan, walau demikian, saya tetap berharap laporan lengkap pemprosesan citra digital ini dapat memberikan manfaat. Amin .
Makassar, 27 maret 2016 wardiman
ii
DAFTAR ISI KATA PENGANTAR PENGANTAR ...................................................................... ........................................................................................................ .................................. i DAFTAR ISI ..................................................................................................................... ..................................................................................................................... ii BAB I ................................................................................................................................ ................................................................................................................................ 1 TEORI CITRA DIGITAL ................................................................ ................................................................................................. ................................. 1
1.1
Definisi Citra Digital ................................................... .......................................................................... ............................ ..... 1
1.2
Representasi Gambar Digital ........................................... ............................................................... .................... 2
1.3
Pengenalan MATLAB ( Matrix Laboratory) Laboratory) .................................... .................................... 2
BAB II ......................................................................................................... ............................................................................................................................... ...................... 3 PENGOLAHAN PENGOLAHAN CITRA DIGITAL ................................................................................ ................................................................................ 3
2.1
Pengolahan Citra ......................................... ............................................................... ........................................... ..................... 3
2.1.1
Membaca Citra ........................................... .................................................................. ....................................... ................ 3
2.1.2 Menunjukkan Dimensi Citra ........................ ............................................... ....................................... ................ 5 2.1.3
Menampilkan Informasi Tambahan Citra ........................................ ........................................ 5
2.1.4 Menampilkan Gambar ............................................ ................................................................... ............................ ..... 5 2.1.5 Menulis Citra ........................................... .................................................................. ........................................... .................... 6 2.1.6 Mengubah Kualitas Citra ........................................... .................................................................. ......................... 6 2.1.7 Menampilkan Informasi Lengkap Citra ............................................. ............................................... 8 2.1.8 Menentukan Rasio Kompres (Compression Ratio) Ratio) Suatu Citra ....... 9 2.1.9 Menampilkan Banyak Banyak Gambar Dengan Kualitas Berbeda .............. 10 2.1.9.1 Untuk Menampilkan 3 Gambar Gambar Sekaligus (Matriks 1x3) ......... 10 2.1.9.2 Untuk Menampilkan 4 Gambar Gambar Sekaligus (Matriks 2x2): ........ 11 2.2
Merubah Warna Gambar Ke Hitam Hitam Putih........................................... .............................................. ... 13
2.3 Mengubah File Jpg Ke Tif Dengan Merubah Resolusi ........................... ........................... 13 2.4 Indeks Matriks di Matlab ........................................... .................................................................. .............................. ....... 14 2.4.1 2.5
Menukar Baris Matriks ............................................ .................................................................. ...................... 15
Memutar Citra ........................................... .................................................................. ............................................ ..................... 15
2.6 Fungsi Imadjust , Transformasi Logaritma dan Histogram Processing ... 18 2.6.1 Fungsi Imadjust .................................. ........................................................ ............................................. .......................... ... 18 2.6.2 Transformasi Logaritma, ......................................... ............................................................... .......................... .... 20 2.6.3 Histogram Processing and Function Plotting Plotti ng .................................... .................................... 21 2.7
Korelasi dan Konvolusi ........................................... .................................................................. .............................. ....... 23
2.7.1
Korelasi pada pada matriks 1-D ........................................... .............................................................. ................... 23
2.7.2 Konvolusi pada matriks 1-D ........................................ ............................................................. ..................... 26 2.7.3 Korelasi pada matriks 2-D ........................................... .............................................................. ................... 29 2.7.4
Konvolusi Matriks 2-D ........................ .............................................. ............................................ ...................... 37 37
2.7.5
Fungsi Imfilter ........................................................... ................................................................................. ...................... 47
iii
2.8
Transformasi Fourier............................................................................. 52
2.8.1
Transformasi Fourier Diskrit 2-Dimensi......................................... 52
2.8.2 Menghitung dan Menvisualisasikan 2-D DFT dalam
MATLAB53
2.8.3
Spektrum Fourier ............................................................................. 54
2.8.4
Fungsi fftshift ......................................................................... 56
2.8.5
Fungsi ifftshift ................................................................................ 58
2.8.6
fungsi ifft2 .................................................................................. 60
2.8.7
Filtering di Domain Frekuensi ....................................................... 62
2.8.8 Gaussian lowpass filter (GLPP) ........................................................ 64
1
BAB I TEORI CITRA DIGITAL 1.1 Definisi Citra Digital
Suatu citra adalah fungsi intensitas 2 dimensi f(x,y), dimana x dan y adalah koordinat spasial dan f pada titik (x,y) merupakan tingkat kecerahan (brightness) suatu citra pada suatu titik. Suatu citra diperoleh dari penangkapan kekuatan sinar yang dipantulkan oleh objek. Citra digital adalah citra f(x,y) yang telah dilakukan digitalisasi baik koordinat area maupun brightness level. Nilai f di koordinat (x,y) menunjukan brightness atau grayness level dari citra pada titik tersebut.
Pengolahan citra adalah proses pengolahan sinyal yang inputnya adalah citra. Ouputnya dapat berupa citra atau sekumpulan karakteristik atau parameter yang berhubungan dengan citra. Istilah pengolahan citra digital secara umum didefinisikan sebagai pemrosesan citra dua dimensi dengan komputer. Dalam definisi yang lebih luas, pengolahan citra digital juga mencakup semua data dua dimensi. Citra digital
adalah barisan bilangan nyata maupun kompleks yang diwakili oleh bit-bit tertentu. Citra ada 2 macam : a. Citra Kontinu yaitu, citra yang dihasilkan dari sistem optik yang menerima sinyal analog, misalnya, mata manusia dan kamera analog. b. Citra Diskrit yaitu, citra yang dihasilkan melalui proses digitalisasi terhadap. citra diskrit Beberapa sistem optik dilengkapi dengan fungsi digitalisasi sehingga mampu
menghasilkan citra diskrit, misalnya kamera digital dan scanner.
2
1.2 Representasi Gambar Digital
Sebuah gambar dapat diinpresentasikan menjadi matriks dalam MATLAB. Citra digital direpresentasikan sebagai matriks berukuran N x N dalam bentuk
((1,0,0)) (0,1) … (0,1) (,) ⋮ 0 (1,⋮ 1) …⋮ (1,1) ⋮ [ ( 1,0) ( 1,1) … ( 1,1)]
1.3 Pengenalan MATLAB ( Matri x Laboratory ) MATLAB merupakan salah satu software yang dapat digunakan untuk representasi citra digital. Cara membuka MATLAB yaitu klik Start-> Ketik “MATLAB” pada Search-> Klik ikon MATLAB.
Maka akan terbuka jendela seperti berikut :
3
BAB II PENGOLAHAN CITRA DIGITAL 2.1
Pengolahan Citra
2.1.1 Membaca Citra Pada MATLAB, citra dapat terbaca menggunakan fungsi imread , dengan syntax
berikut : f = imread(‘namafile’); Disini variabel ‘f’ digunakan sebagai pembaca dari citra yang ak an dibaca. Dan ‘namafile’ disini adalah nama file citra yang akan dibaca MATLAB beserta eksistensinya seperti gif, jpg, jpeg, dll. Agar tidak menuliskan lokasi file pada syntax, maka file tersebut disimpan di folder directory MATLAB seperti berikut :
Cara agar citra terbaca di MATLAB yaitu dengan mengetik syntax : >> f=imread(‘coba.jpg’);
4
Adapun cara membaca citra dalam bentuk matriks dengan menggunakan syntax yang sama tetapi tidak memakai “;”, artinya cukup dengan mengetik: f = imread(‘gambar.jpg’) Maka akan muncul representasi citra dalam bentuk matriks. Berikut contoh matriks citra :
>> f=imread(‘coba.jpg’)
5
2.1.2 Menunjukkan Dimensi Citra Agar dapat menunjukkan dimensi baris dan kolom matriks citra digunakan syntax
>>Size (f)
penjelasan : Matriks citra disini memiliki bentuk tiga dimensi dengan ukuran 268x 188x3 2.1.3
Menampilkan Informasi Tambahan Citra
Agar dapat menampilkan informasi tambahan citra, digunakan syntax :
>>Whos (f)
Fungsi whos fungsinya untuk memperoleh informasi tentang nama, ukuran, byte, dan class citra. Contoh di MATLAB
.
2.1.4 Menampilkan Gambar Citra yang telah dibaca MATLAB dapat ditampilkan dengan menggunakan fungsi imshow, yaitu dengan syntax : imshow(‘variabel’) Variabel yang kita gunakan pada contoh sebelumnya adalah ‘f’ sehingga syntaxnya menjadi seperti berikut :
6
Maka akan muncul jendela baru seperti berikut :
Gmabar 1. Hasil Imshow (f) 2.1.5 Menulis Citra
Untuk mengubah/menyimpan sebuah file gambar dengan nama tertentu pada direktori yang aktif digunakan fungsi imwrite dengan perintah dasar Imwrite (f, ‘namafile’) contoh syntaxnya:
Hasil dari penulisan citra tersebut akan disimpan pada folder MATLAB 2.1.6 Mengubah Kualitas Citra Citra terbaca pada disk atau penyimpanan dengan fungsi imwrite.. Syntax imwrite untuk mengubah kuliatas citra adalah sebagai berikut :
7
imwrite(f, ‘filename.jpg’,’quality’,p) dimana p adalah bilangan bulat dari 0 hingga 100 (semakin rendah nilainya, maka degradasi citra akan semakin tinggi sesuai kompresi). Dalam hal ini, nilai q yang digunakan adalah 5 dan 100 agar dapat dilihat perbedaan citra yang asli dan citra yang kualitasnya diubah . Untuk ‘imag1.jpg’ , dengan kualitas 5 syntaxnya adalah sebagai berikut:
Maka, secara langsung ‘imag1.jpg’ akan diduplikasi dengan nama filenya amagg dan dengan kualitas berbeda serta dapat mengubah ekstensi yang diinginkan seperti
jpg, tif dll. Hasil imwrite yang telah tersimpan
Sebelumnya file ‘imag1.jpg’ berukuran 13 KB, setelah menggunakan syntax fungsi imwrite dengan quality 5 kapasitasnya berkurang menjadi 3 KB. Untuk quality 100
8
Sebelumnya file ‘imag1.jpg’ berukuran 13 KB, setelah menggunakan syntax fungsi imwrite dengan quality 100 kapasitasnya bertambah menjadi 36 KB. Setelah mengubah kualitas citra maka citra yang ada di directory akan langsung berubah dengan nama yang telah kita kehendaki.
2.1.7 Menampilkan Informasi Lengkap Citra
Untuk mendapatkan informasi dari file citra , digunakan fungsi Imfinfo, yang mana syntaxnya Imfinfo namafile
Dimana namafile ini adalah nama file yang ada pada direktori yang aktif Contoh di matlab :
9
2.1.8 Menentukan Rasio Kompres ( Compression Ratio) Suatu Citra
Pertama – tama definisikan variabel misal K untuk imformasi lengkap dari suatu citra misalkan ubah.jpg. Kemudian karena K mengandung seluruh informasi citra ubah.jpg, pisahkan K dengan dot . Sebagai contoh, panjang dan lebar citra sekarang didefinisikan K.Height dan K.Width.
Untuk lebih jelasnya maka di MATLAB digunakan fungsi-fungsi seperti ini:
Rasio kompresnya dapat diuji dengan informasi asli yang dapat dilihat dari:
10
Untuk hasil uji rasio kompresnya maka dapat dilihat dengan menghitung pembagian Bytes dengan FileSize seperti dibawah ini:
2.1.9 Menampilkan Banyak Gambar Dengan Kualitas Berbeda
Suatu citra dapat diperbanyak sesuai kualitas gambar yang kita inginkan kemudian menampilkannya dan hasilnya dapat kita bandingkan . Maka pertama yang kita harus lakukan adalah menentukan file citra yang ingin diperbanyak dan diubah kualitasnya pada dokumen MATLAB dengan menuliskan nama file citranya yang di misalkan pada parameter tertentu di f ungsi imread contohnya : a= imread (‘ubah.jpg’); . Setelah itu barulah kita dapat memperbanyak citra dengan menggunakan fungsi imwrite dengan kualitas dan nama yang kita kehendaki , misalnya imwrite (a,’ubah 1.jpg’,’quality’,50); kemudian hasil dari imwrite ini harus di tuliskan dengan parameter baru agar dapat ditampilkan , misalnya b=imread(’ubah 1.jpg’); begitu seterusnya tergantung berapa gambar yang ingin kita tampilkan .Untuk pembagian jenis tampilan citranya atau susunan tampilannya maka dibawah ini akan dijelaskan jenis-jenisnya 2.1.9.1 Untuk Menampilkan 3 Gambar Sekaligus (Matriks 1x3)
Untuk menampilkan citra dalam bentuk susunan matriks 1X3 maka perintah yang digunkan yaitu subplot (a,b,c) dimana a, menunjukkan jumlah barisnya, b menunjukkan jumlah kolom, dan c menunjukkan letak citra ke-n pada susunannya
11
Contoh Syntaxnya yaitu sebagai berikut:
Hasil gambarnya yaitu :
Ket: berdasarkan syntaxnya maka gambar diatas dapat kita ketahui kualitasnya
masing- masing dimana gambar pertama adalah gambar aslinya , gambar ke-3 kualitasnya 50 dan gambar ke-2 kualitasnya 100 . 2.1.9.2 Untuk Menampilkan 4 Gambar Sekaligus (Matriks 2x2):
Untuk menampilkan 4 gambar maka kita tinggal menambah gambar dari gambar sebelumnya dan mengubah subplotnya menjadi ukuran 2x2xn , dimana n adalah posisi gambar ke-n .
Contoh syntaxnya yaitu:
12
Tampilan citranya yaitu:
13
2.2 Merubah Warna Gambar Ke Hitam Putih Warna suatu citra dapat diubah ke warna hitam putih dengan menggunakan
perintah rgb2gray , contoh syntaxnya pada matlab:
Tampilan gambarnya yaitu:
2.3 Mengubah File Jpg Ke Tif Dengan Merubah Resolusi
Untuk mengubah suatu citra dari yang berformat jpg ke tif dapat dilakukan dengan perintah imwrite pada parameter citra yang telah ditentukan dengan menambahkan kata tif setelah penulisan nama citra , contoh imwrite(f,‘ubah 1.tif') dan untuk menampilkan gambarnya kita dapat gunkan perintah imshow . Namun untuk mengubah file jpg ke format tif dengan resolusi juga diubah maka dapat digunakan perintah res = round(200*2.25/1.5); imwrite(f,’ubah 1.tif', 'compression', 'none','resolution', res)
14
Untuk lebih jelasnya syntaxnya yaitu:
Tampilan gambarnya yaitu :
2.4 Indeks Matriks di Matlab
Membuat matriks di MATLAB dapat menggunakan barisan dari vector baris yang diapit oleh kurung siku yang dipisahkan dengan ta nda ; Contoh :
Mengindeks matriks digunakan dua indeks, yang pertama untuk lokasi baris, dan yang kedua untuk lokasi kolom. Contoh:
15
2.4.1
Menukar Baris Matriks
Untuk menukar suatu baris terakhir suatu matriks pada matlab dapat dilakukan perintah dimana sebagai matriksnya. syntax end end pada perimtah tersebut mengisyaratkan bahwa bahwa baris terakhir akan ditukar
2.5
Memutar Citra
Adapun untuk memutar citra, syntaxnya adalah >>imrotate(a,n); Keterangan: a = variabel untuk mendefinisikan citra n = besarnya putaran yang diinginkan (degree) contoh synstaxnya:
16
Suatu citra merupakan representasi dari suatu matriks dan untuk membalik atau memutar suatu citra dapat kita gunakan perintah yang sama saat kita menukar baris matriks . perintah yang dapat digunakan yaitu: yaitu: Fungsi lainnya dapat digunakan sebagai berikut
Hasil citranya :
17
Untuk mengubah ke posisi awal perintahnya pada MATLAB yaitu:
Outputnya:
Selain itu citra dapat di crop dengan perintah
18
2.6 Fungsi Imadjust , Transformasi Logaritma dan Histogram Processing 2.6.1 Fungsi Imadjust
Imadjust adalah fungsi dasar yang digunakan untuk transformasi intensitas pada image grayscale, dengan syntax umum: g=imadjust (f, [low_inhigh_in], [low_out, high_out], gamma) Pada contoh kode diatas setiap nilai intensitas pada f dipetakan ke nilai baru pada g. Nilai pada f di antara low_in dan high_in dipetakan pada g di antara nilai low_out
dan
high_out.
Nilai
di
bawah
low_in
dan
di
atas
high_in
dipotong.Imadjust biasanya digunakan pada image dengan variasi dan dinamika intensitas yang rendah.Misalnya image pada hasil rontgen yang dominan gelap. Contoh:
19
0utputnya
Parameter gamma menentukan bentuk dari kurva yang memetakan nilai intensitas q untuk membuat b. Jika gamma < 1, output gambarakan semakin redup, jika gamma >1 output gambar akan semakin terang. Contoh:
20
Outputnya:
2.6.2 Transformasi Logaritma,
g = c* log(1+double(f)); Dengan berbagai synstax fungsi logaritma diatas bisa diganti menjadi beberapa misalkan 2 diganti dengan 100,dan lain-lain sebagainya, sebagai contoh berikut:
Contoh synstaxnya:
21
Hasil outputnya akan seperti ini dan dapat kita lihat perbedaan warna jika menggunakan fungsi logaritma
2.6.3 Histogram Processing and Function Plotting
Generating and plotting image Histogram
Syntaksnya yaitu : h = imhist(f, b) dimana f adalah input gambar, h adalah histogramnya, dan b adalah banyaknya bin yang digunakan untuk membuat histogram (nilai defaultnya adalah 255).
Bar
Histogram sering digambar menggunakan grafik batang
22
dengan syntax: bar (horz, v, width) dimana v adalah vector baris yang memuat titik-titik yang akan diplot, horz adalah vector yang memiliki dimensi yang sama dengan v yang memuat kenaikan dari skala horizontal, dan wodth adalah bilangan antara 0 sampai 1.
Stem
Syntax grafik stem adalah : stem(horz, v, ‘color_linestyle_marker’ ‘fill’) dimana v adalah vector baris yang memuat titik-titik yang akan digambar, dan horz samadengan yang dideskripsikan di grafik bat ang.
Jika dari keseluruhan synstax diatas digabungkan maka kita dapat melihat perbedaan bahwa untuk menggunakan synstax horz,bar, imhist dll, harus mengubah gambar menjadi warna abu-abu contoh
23
Hasil outputnya sebagai berikut:
2.7 2.7.1
Korelasi dan Konvolusi Korelasi pada matriks 1-D
Rumus dari korelasi yaitu:
−
() ∗() ()() =
Berikut contoh penggunaan korelasi dalam pemfilteran spasial sebuah citra Titik asal
f
00010000
a. Langkah1 :
w
12320
Himpitkan titik asal pada fungsi f dengan titik paling kiri fungsi w.
24
b. Langkah 2 : Tambahkan Zero Padding, agar setiap titik dari w bersusaian di f.
Kita korelasi dengan menghitung jumlah hasil kali dari dua fungsi yang bersesuaian. Diperoleh: Indeks pertama=
(1 ×0)(2 ×0)(3 ×0)(2 ×0)( 0 ×0) 0
c. Langkah 3: Lakukan proses korelasi, yakni geser posisi fungsi w kekanan ,hasil korelasi adalah jumlah hasil kali dari dua fungsi yang bersesuaian.
Indeks ke-2 = (
1 ×0) (2 ×0) (3 ×0) (2 ×0) (0 ×0)0
d. Langkah 4: Lakukan langkah seperti langkah 3 yaitu digeser kemudian dihitung jumlah hasil kalinya dan proses ini dilakukan sampai posisi w berada pada posisi terakhir diperoleh hasil pergeseran berikutnya:
Indeks ke-3=(
1 ×0)(2 ×0)(3 ×0)(2 ×0)( 0 ×0) 0
25
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 3 2 0 Posisi setelah 3 kali pergeseran Indeks ke-4 =
(1 ×0)(2 ×0)(3 ×0)(2 × 0) 0( ×1) 0
Indeks ke-5 =
(1 ×0) (2 ×0) (3 ×0) (2 ×1) (0 ×0)2
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 3 2 0 Posisi setelah 5 kali pergeseran
(1 ×0) (2 ×0) (3 ×1) (2 ×0) (0 ×0)3
Indeks ke-6 =
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 3 2 0 Posisi setelah 6 kali pergeseran Indeks ke-7=
(1 ×0) (2 ×1) (3 ×0) (2 ×0) (0 ×0)2
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 3 2 0 Posisi setelah 7 kali pergeseran Indeks ke-8=
(1 ×1) (2 ×0) (3 ×0) (2 ×0) (0 ×0)1
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 3 2 0 Posisi setelah 8 kali pergeseran Indeks ke-9=
(1 ×0) (2 ×0) (3 ×0) (2 ×0) (0 ×0)0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 Posisi setelah 9 kali pergeseran 1 2 3 2 0 Indeks ke-10=
(1 ×0) (2 ×0) (3 ×0) (2 ×0) (0 ×0) 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 Posisi setelah 10 kali pergeseran 1 2 3 2 0 Indeks ke-11=
(1 ×0) (2 ×0) (3 ×0) (2 ×0) (0 ×0) 0
26
Indeks ke-12=
(1 ×0) (2 ×0) (3 ×0) (2 ×0) (0 ×0) 0
Hasil lengkap proses korelasi yaitu : 0 0 0 0 2 3 2 1 0 0 0 0
‘Same’ correlation result: 0 0 2 3 2 10 0
‘same’ mengindikasikan jika hasil korelasi memiliki size yang sama dengan f.
Untuk membuktikan hasil yang diperoleh diatas kita coba gunakan MATLAB full ‘correlation’
‘Same’ correlation
Diperoleh hasil yang sama dengan cara manual ,terbukti langkah-langkah korelai diatas sudah tepat 2.7.2 Konvolusi pada matriks 1-D
27
Konvolusi adalah salah satu proses filtering image yang sering dilakukan pada proses pengolahan gambar.
, ∈ (ℝ), (∗)() ∫−∞ ()() ( ∗) ∑,= ()(1)
Definisi (Konvolusi) : Jika didefinisikan oleh: ∞
∞
maka konvolusi dari f dan g
(kontinu)
(Diskrit)
Berikut contoh penggunaan konvolusi dalam pemfilteran spasial
a. Langkah 1 : putar w sebesar 180
°
b. Langkah 2 : Himpitkan titik asal pada fungsi f dengan titik paling kiri fungsi w.
c.
Langkah 3 :
Tambahkan Zero Padding agar menjamin akan selalu ada titik untuk eskursi dari w melewati f.
Kita korelasi dengan menghitung jumlah hasil kali dari dua fungsi yang bersesuaian.
28
Diperoleh:
Indeks pertama=
d.
(0×0) (2 ×0) (3 ×0) (2 ×0) ( 1 ×0) 0
Langkah 4 :
Lakukan proses konvolusi, yakni geser posisi fungsi w ,hasil konvolusi adalah jumlah hasil kali dari dua fungsi yang bersesuaian. Hasil pergeseran:
Indeks kedua = (
0 ×0) (2 ×0) (3 ×0) (2 ×0) (1 ×0)0
Untuk indeks 3 dan 4 berdasarkan
pergeserannya maka kita dengan jelas
memperoleh hasil yang keduanya sama yaitu 0
Indeks kelima = (
0 ×0) (2 ×0) (3 ×0) (2 ×1) (1 ×0)2
Sehingga hasil konvolusi untuk sementara adalah :
Geser terus sehingga mencapai posisi akhir
Hasil lengkap proses konvolusi :
‘same’ mengindikasikan jika hasil konvolusi memiliki size yang sama dengan f Untuk menunjukkan hasil konvolusi diatas sudah benar , kita gunakan MATLAB
29
Full ‘convolution’
Same ‘convolution’
2.7.3 Korelasi pada matriks 2-D
Origin of f(x,y)
w(x,y)
Langkah 1 : Tempatkan titik paling kanan bawah dari w(x,y) sehingga titik itu berhimpit dengan titik origin dari f(x,y)
Langkah 2 :
30
Tambahkan zero padding agar tidak overlap
Jadi zero padding yang terbentuk :
Langkah 3 : Buat zero padding untuk matriks full korelasi
Langkah 4 : Himpitkan w(x,y)
lalu kalikan setiap elemen dengan elemen di f(x,y) yang
dihimpit.
Sehingga pada matriks full korelasi : elemen (2,2) =
57 6800 005.06.07.08.00
31
Pergeseran pertama (kearah kanan) saat w(x,y) di baris pertama
Sehingga pada matriks full korelasi : elemen (2,3) =
57 6800 005.06.07.08.00
Geser terus kearah kanan untuk baris pertama, sehingga baris kedua dari matriks full korelasi diperoleh
Kemudian pindahkan matriks w ke baris kedua
Sehingga pada matriks full korelasi : elemen (3,2) =
57 6800 005.06.07.08.00
32
Pergeseran pertama (kearah kanan) saat w(x,y) di baris kedua
Sehingga pada matriks full korelasi : elemen (3,3) =
57 6800 025.06.07.08.216
Geser terus ke arah kanan
Sehingga pada matriks full korelasi : elemen (3,4) =
57 6802 025.06.07.28.230
33
Geser lagi ke arah kanan
Sehingga pada matriks full korelasi : elemen (3,5) =
57 6802 005.06.07.28.014
Kemudian pindahkan matriks w ke baris ketiga
Sehingga pada matriks full korelasi : elemen (4,2) =
57 6800 005.06.07.08.00
Pergeseran pertama (kearah kanan) saat w(x,y) di baris ketiga
34
Sehingga pada matriks full korelasi : elemen (4,3) =
57 6800 205.06.27.08.012
Geser terus ke arah kanan
Sehingga pada matriks full korelasi : elemen (4,4) =
57 6820 205.26.22.09.022
Geser lagi ke arah kanan
Sehingga pada matriks full korelasi : elemen (4,5) =
57 6820 005.26.07.08.010
35
Kemudian pindahkan matriks w ke baris keempat
Sehingga pada matriks full korelasi : elemen (5,2) =
57 6800 005.06.07.08.00
Pergeseran pertama (kearah kanan) saat w(x,y) di baris keempat
Sehingga pada matriks full korelasi : elemen (5,3) =
57 6800 005.06.07.08.00
Geser terus hingga elemen terakhir
36
elemen (5,4) = elemen (5,5) =
57 57
6800 6800
005.06.07.08.00 005.06.07.08.00
Sehingga matriks full korelasi menjadi :
Jadi hasil korelasi dari f dan w adalah :
Untuk hasil korelasi ‘same’, kita hilangkan baris pertama dan kolom pertama sehingga menjadi :
Untuk hasil korelasi ‘same’, kita hilangkan 2 baris pertama dan 2 kolom pertama sehingga menjadi :
37
Hasil ini dapat diuji pada MATLAB dengan syntax berikut :
2.7.4
Konvolusi Matriks 2-D
Origin of f(x,y)
Rotated 180◦ w(x,y)
38
Titik asal berada di sudut kiri paling atas dari matriks fungsi f . Titik ini digunakan untuk mengaplikasikan konvolusi,
Langkah 1 : Tempatkan titik paling kanan bawah dari matriks fungsi w(x,y) sehingga titik itu berhimpit dengan titik origin dari matriks fungsi f(x,y)
Langkah 2 : Tambahkan zero padding agar tidak overlap
Jadi zero padding yang terbentuk :
Langkah 3 : Buat zero padding untuk matriks full konvolusi
39
Langkah 4 : Himpitkan w(x,y) lalu kalikan setiap elemen di w(x,y) dengan elemen di f(x,y) yang dihimpit.
Sehingga pada matriks full konvolusi : elemen (2,2) =
86 7500 008.07.06.05.00
Pergeseran pertama (kearah kanan) saat w(x,y) di baris pertama
Sehingga pada matriks full konvolusi : elemen (2,3) =
86 7500 008.07.06.05.00
Geser terus kearah kanan untuk baris pertama, sehingga baris kedua dari matriks full konvolusi diperoleh
40
Kemudian pindahkan matriks w ke baris kedua
Sehingga pada matriks full konvolusi : elemen (3,2) =
86 7500 008.07.06.05.00
Pergeseran pertama (kearah kanan) saat w(x,y) di baris kedua
Sehingga pada matriks full konvolusi : elemen (3,3) =
86 7500 028.07.06.05.210
41
Geser terus ke kanan
Sehingga pada matriks full konvolusi : elemen (3,4) =
86 7502 028.07.06.25.222
Geser lagi ke kanan
Sehingga pada matriks full konvolusi : elemen (3,5) =
86 7502 008.07.06.25.012
42
Kemudian pindahkan matriks w ke baris ketiga
Sehingga pada matriks full konvolusi : elemen (4,2) =
86 7500 008.07.06.05.00
Pergeseran pertama (kearah kanan) saat w(x,y) di baris ketiga
Sehingga pada matriks full konvolusi : elemen (4,3) =
86 7500 208.07.26.05.014
Geser terus ke kanan
43
Sehingga pada matriks full konvolusi : elemen (4,4) =
86 7520 208.27.26.05.030
Geser lagi ke kanan
Sehingga pada matriks full konvolusi : elemen (4,5) =
86 7520 008.27.06.05.016
Kemudian pindahkan matriks w ke baris keempat
Sehingga pada matriks full konvolusi :
44
elemen (5,2) =
86 7500 008.07.06.05.00
Pergeseran pertama (kearah kanan) saat w(x,y) di baris keempat
Sehingga pada matriks full konvolusi : elemen (5,3) =
86 7500 008.07.06.05.00
Geser terus ke kanan
Sehingga pada matriks full konvolusi elemen (5,4) =
86 7500 008.07.06.05.00
45
Geser lagi ke kanan
elemen (5,5) =
86 7500 008.07.06.05.00
Sehingga matriks full konvolusi menjadi :
Sehingga hasil konvolusi dari f dan w adalah :
Untuk hasil konvolusi ‘full’, kita hilangkan baris pertama dan kolom pertama sehingga menjadi :
Untuk hasil konvolusi ‘same’, kita hilangkan 2 baris pertama dan 2 kolom pertama sehingga menjadi :
46
Hasil ini dapat diuji pada MATLAB dengan syntax berikut :
output hasil konvolusinya :
47
Dapat dilihat hasilnya sama dengan menghitung secara manual. 2.7.5
Fungsi Imfilter
Imfilter adalah fungsi yang mengimplementasikan linear spatial filtering , yang memiliki syntax :
g = imfilter( f , w, filtering_mode , boundary_options , size_options) dimana f adalah gambar input, w adalah gambar partisi, g adalah hasil penyaringan
Parameter yang dihasilkan adalah Tabel 3.3 Options Description
F iltering Mode ‘corr’ ‘conv
Filtering menggunakan korelasi Filtering menggunakan konvolusi
Boundary Options P ‘replicate’ ‘symmetric’
Batas dari input gambar di perbesar dengan padding dengan sebuah nilai, P. Nilai defaultnya adalah 0. Ukuran dari gambar di perbesar dengan mereplikasi nilainya dalam bingkai terluar. Ukuran dari gambar di perbesar dengan mencermin nilainya melewati bingkai.
‘circular’ Ukuran dari gambar di perbesar dengan memperlakukan gambar sebagai sebuah fungsi periodic 2-D. Size Options
‘full’
Gambar ouput berukuran sama dengan gambar yang diperbesar (padded)
‘same’
Gambar Output memiliki ukuran yang samadengan gambar input
Penggunaan Fungsi imfilter untuk gambar dengan matriks Konvolusi Langkah 1 : Konversi array gambar menjadi double
48
Langkah 2 :Buat matriks w
Konvolusikan gambar dengan matriks , dibawah ini syntax lengkapnya
outpunya:
Untuk convolution ‘same’ outputnya:
49
korelasi
50
Laplacian
Toolbox mendukung banyaknya filter spasial linear 2D pada definisi sebelumnya, diperoleh dengan menggunakan fungsi fspecial, yang dibangkitkan dengan sebuah filter mask, w ,menggunakan sysntax:
W = fspecial (‘type’,parameters)
Dimana ‘type’ menunjukkan jenis filter, dan parameter didefinisikan sebagai spesifikan filter, digunakan untuk setiap filter.
51
Contoh synstaxnya :
Outputnya:
52
2.8
Transformasi Fourier
2.8.1
Transformasi Fourier Diskrit 2-Dimensi
Misalkan
(,)
melambangkan
untuk
gambar
0,1,2,…,1
digital
dari
partisi
Transformasi Fourier Diskrit (TFD) dari
(,)
dan
matriks
0,1,2,…,1 × (,)
berukuran
disimbolkan
.
, deiberikan
dari persamaan
− −
untuk
(,) (,)−+ = = 0,1,2,…1 0,1,2,…,1 dan
. Fungsi eksponensial dapat
diubah menjadi fungsi cosinus dan fungsi sinus, dengan variabel baru
yang menentukan nilai frekuensinya ( dan
dan
dijumlahkan keluar). Domain
frekuensi adalah sistem koordinat yang dibangun oleh
(,)
dimana
dan
sebagai variabel (frekuensi). Inverse dari Transformasi Fourier Diskrit (IDFF) adalah
dimana
− − 1 + (,) (,) = = 0,1,2,…1 0,1,2,…,1 (,) (,) dan
IDFF. Nilai dari
.
dapat diperoleh dari
dalam persamaan ini biasa disebut sebagai koefisien
Fourier dari ekspansi. Nilai dari transformasi di titik asal dari domain frekuensi (contoh
(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
53
menghitung nilai spektrumnya (Gelombang dari fungsi
(,)
, yang merupakan
fungsi bilangan real) dan menampilkannya dalam bentuk gambar. Misalkan
(,) (,) dan
melambangkan komponen real dan imajiner dari
(,)
,
Spektrum Fourier didefinisikan sebagai
|(,)| (,) (,) Nilai Sudut fase dari transformasi didefinisikan sebagai
(,) (,) arctan(,) 2.8.2 Menghitung dan Menvisualisasikan 2-D DF T dalam
MATLAB
DFT dan inversnya diperoleh dengan menggunakan algoritma
fast Fourier
transform (FFT). FFT dari matriks gambar f yang diperoleh menggunakan fungsi fft2,yang memiliki syntax : F = fft2(f)
Dengan synstax:
Hasil outputnya dapat kita lihat sebagai berikut:
54
Fungsi ini meghasilkan matriks baru yang juga memiliki ukuran
×
.Jika
Transformasi Fourier digunakan untuk filtering. Syntaksnya berubah menjadi F = fft2(f, P, Q)
Dengan syntaks diatas akan menghasilkan hasil matriks transformasi berukuran
×
Dengan synstax sebagai berikut:
2.8.3
Spektrum Fourier
Spektrum Fourier diperoleh dengan menggunakan fungsi abs:
()
yang menghitung nilai magnitude (akar kuadrat dari penjumlahan kuadrat dari bagian imajiner dan bagian real) dari setiap elemen dari array.
55
Dengan synstax
56
2.8.4
Fungsi
fftshift
Fungsi fftshift,dapat digunakan untuk memindahkan titik asal dari transformasi ke tengah dari segiempat frekuensi, syntaksnya adalah Fc = fftshift(F)
dimana F adalah hasil transformasi yang dihitung dengan menggunakan fft2 dan
Fc
adalah transformasi yang berfokus di tengah. Fungsi fftshift
dioperasikan dengan mengganti kuadran dari F. Contoh, jika a = [1 2; 3 4], maka fftshift(a) = [4 3 ; 2 1].
dengan synstax
57
Untuk lebih jelas dengan memotong matriks tersebut menjadi array baru
fft biasa
50×50
menggunakan fftshift
Interval dari nilai spektrum ini sangat besar yaitu (0 sampai 420.495) dibandingkan dengan 8 bit sehingga nilai terang mendominasi hasilnya. Kesulitan ini dapat diperbaiki dengan menggunakan transformasi log. Dengan synstax
Outputnya:
58
2.8.5
Fungsi ifftshift
Fungsi ifftshift,dapat digunakan untuk membalikkan Fc (mengembalikan ke gambar semula). Syntaksnya adalah:
fftshift Fungsi ini juga dapat digunakan untuk mengkonversi sebuah fungsi yang awalnya berpusat di segi empat ke fungsi yang berpusat di bagian atas sebelah kiri segiempat.
Untuk menghitung nilai sudut fase. Karena komponen bagian real dan imajiner dari transformasi Fourier 2-D, sebagai
(,)
(,) (,) dan
. Karena elemn dari
, array dari ukuran yang sama
dan saling bebas dan dapat bernilai positif
maupun negatif, kita harus menghitung arctan dalam interval
,
(fungsi
dengan sifat ini disebut arctan empat kuadran).
Fungsi MATLAB atan2,dapat menghitung penrhitungan ini. Syntaksnya adalah :phi = atan2(I, R)
dimana phi,adalah array yang berukuran dalam radian di interval
,
×
. Elemen dari phi adalah sudut
yang diperoleh dari sumbu real. Sebagai contoh
59
untuk membuat fungsi phi digunakan syntaks:
Fungsi phi Untuk lebih jelas:
Fungsi phi dengan array yang difilter
60
Selain menginput langsung bagian real dan bagian imajiner dari array F, dapat juga diperoleh dengan menggunakan fungsi sudut secara langsung:
Hasilnya juga adalah sama, Selain itu kita dapat memperoleh DFT dengan menggunakan ekspresi
2.8.6
fungsi
ifft2
Akhirnya, kita dapat memperoleh invers dari Transformasi Fourier dapat dihitung dengan mengunakan fungsi ifft2,yang memiliki syntaks dasar: f = ifft2(F)
dimana F adalah transformasi Fourier dan f adalah gambar hasil. Karena fft2 mengkonversi gambar input ke kelas double tanpa menggunakan penskalaan. Hasil dari operasi ifft2(F) akan menghasilkan matriks baru berukuran sama dengan f dengan nilai yang berada di interval [0 255], tetapi menggunakan kelas double.
61
Dengan syntax
Hasil outputnya:
Jika gambar input F adalah real, inverse dari input ini adalah real. Tetapi kadang output dari ifft2 kadang memiliki komponen imajiner yang kecil hasil dari pembulatan saat perhitungan, utuk menghasilkan bagian realnya saja. digunakan syntaks.
62
Maka hasilnya
2.8.7
Filtering di Domain Frekuensi
Dasar dari filtering linear dalam domain spasial dan domain frekuensi adalah teorema konvolusi, yang dapat dituliskan sebagai
(,) ℎ(,) ⟺ (,)(,) ê
sebaliknya
(,)ℎ(,) ⟺ (,) (,) ê
Simbol
ê menandakan
konvolusi dari dua fungsi, dan ekspresi di sebelah tanda
panah membuat sepasang transformasi Fourier. Contoh, ekspresi pertama menandakan konvolusi dari dua fungsi spasial (suku disebelah kiri) dapat diperoleh dari menghitung invers dari transformasi Fourier dari hasil kali transformasi Fourier dari dua fungsi (suku sebelah kanan dari persamaan di atas).
63
Sebaliknya, forward Fourier transform dari konvolusi dari dua fungsi spasial memberikan hasil kali dari transformasi dari dua fungsi. Gambar f adalah gambar berukuran 250
×
250 pixels. Akan digunakan fungsi
lpfilter untuk membangkitkan Gaussian lowpass filter , dengan nilai sigma
(standar deviasi) yang ditentukan (sig). Fungsi lpfilter dijelaskan di Section 4.5.2(Rafael C. Gonzalez-Digital Image Processing Using MATLAB (R)-Prentice Hall (2003))
Mengatur nilai standar deviasi (sig)
Dalam menggunakan fungsi Gaussian di Domain Frekuensi penting untuk menghitung fungsi jarak dari sembarang titik pada titik tertentu di frekuensi segiempat. Karena perhitungan FFT dalam MATLAB mengamsumsikan titik asal dari transformasi di bagian atas, kiri dari domain yang berberntuk segiempat, jaraknya dapat dihitung dari titik itu. Fungsi – M File yang digunakan adalah dpftuv yang menyediakan array meshgrid untuk menghitung jarak. (Array
meshgrid memiliki formula 3-D yang digunakan untuk mengevaluasi fungsi tiga variabel untuk mengkonstruksi plot volumetrik)
Adapun syntaks fungsi dpftuv yang dibuat dalam M-file adalah: function [U,V] = dftuv(M,N) %Atur range dari variabel u =single (0 :(M - 1)); v = single ( 0 : (N - 1)); %Hitung indeks yang digunakan dalam meshgrid idx = find ( u > M / 2 ) ; u(idx)= u(idx) - M ; idy = find ( v > N/2 ) ;
64
v ( idy ) = v ( idy ) - N ; % menghitung array meshgrid [ V , U ] = meshgrid ( v , u ) ;
2.8.8
Gaussian lowpass filter (GLPP)
2.8.8 Gaussian lowpass filter (GLPP)
Fungsi transfer dari sebuah Gaussian lowpass filter (GLPP) diberikan oleh
dimana
(,) −(,)/ adalah standar deviasi. Dengan memisalkan
diperoleh ekspresi
dalam bentuk parameter cutoff :
Dimana
(,)
(,) −(,)/ (,) √
adalah jarak dari titik
Konvolusi array
ke titik tengah dari filter.
(Gaussian ) dengan matriks (matriks hasil fast Fourier
transform) dapat dilakukan dengan menggunakan langsung Fungsi transfer dari sebuah Gaussian lowpass filter (GLPP). Adapun syntaks fungsi lpfilter yang dibuat dalam M-file adalah:
65
Dengan synstax di command window