Rabu, 31 Oktober 2018

Konvolusi Matlab

Konvolusi

Secara umum konvolusi didefinisikan sebagai cara untuk mengkombinasikan dua buah deret angka yang menghasilkan deret angka yang ketiga. Didalam dunia seismik deret-deret angka tersebut adalah wavelet sumber gelombang, reflektivitas bumi dan rekaman seismik.
Secara matematis, konvolusi adalah integral yang mencerminkan jumlah lingkupan dari sebuah fungsi a yang digeser atas fungsi b sehingga menghasilkan fungsi c. Konvolusi dilambangkan dengan asterisk ( *).
Sehingga, a*b = c berarti fungsi a dikonvolusikan dengan fungsi b menghasilkan fungsi c.

Konvolusi Image dengan Matlab

Konvolusi adalah salah satu proses filtering image yang sering dilakukan pada proses pengolahan
gambar. Pada MATLAB terdapat banyak sekali cara yang dapat dilakukan untuk melakukan proses
konvolusi. Proses konvolusi dilakukan dengan menggunakan matriks yang biasa disebut mask yaitu
matriks yang berjalan sepanjang proses dan digunakan untuk menghitung nilai representasi lokal
dari beberapa piksel pada image.
 
Gambar 
 
 
Contoh implementasi  konvolusi gambar d atas yaitu:

gambar=imread(‘smile.jpg’);
mask = [-1 -1 -1; -1 8 -1; -1 -1 -1];
gray=rgb2gray(gambar);
thresh=graythresh(gray);
imbw=im2bw(gray,thresh);
hasil=conv2(double(imbw),mask,’valid’);
imshow(gambar)
figure, imshow(hasil)

Penjelasan : 

Fungsi penapis g(x,y) disebut convolution filter, convolution mask, Convolution kernel, atau template. Dlm domain diskret kernel konvolusi dinyatakan dlm btk matriks (umumnya 3 x 3, namun ada jg yg berukuran 2x2 atau 2x1 atau 1x2 Ukuran matriks biasanya lebih kecil dr ukuran citra. Setiap elemen matriks disebut koefisien konvolusi T 1 T 2 T 4 T 8 T 7 T 3 T 6 T 5 T 9 A B D H G C F E I Kernel Citra f(i,j) f(i,j)= AT 1 + BT 2 + CT 3 + DT 4 + ET 5 + FT 6 + GT 7 + HT 8 + IT 9 
 
Contoh: Citra f(x,y) berukuran 5x5 dan sebuah kernel ukuran 3x3 sbb: Lakukan operasi konvolusi antara citra f(x,y) dgn kernel g(x,y) f(x,y)*g(x,y)= ??????? f(x,y) = 4 3 5 4 6 6 5 5 2 5 6 6 6 2 6 7 5 5 3 3 5 2 4 4 g(x,y)= 0 -1 0 -1 4 -1 0 -1 0 Posisi (0,0) dr kernel 

Pixel-pixel pinggir diabaikan, tdk dikonvolusi (tetap). Duplikasi elemen citra, misalnya elemen kolom pertama disalin ke kolom M+1, begitu sebaliknya. Elemen kosong diasumsikan 0. Catatan: Ada masalah untuk pinggiran citra, hal ini dpt diatasi dgn cara: Dpt dilihat bhw operasi konvolusi merupakan komputasi pd aras lokal, krn komputasi utk suatu pixel pd citra keluaran melibatkan pixel-pixel tetangga pd citra masukannya. Konvolusi berguna pd proses pengolahan citra al: Perbaikan kualitas citra Penghilangan derau Penghalusan/pelembutan citra Deteksi tepi, penajaman tepi dll Contoh: lakukan konvolusi suatu citra foto hitam putih Anda dgn penapis Gaussian utk mempertajam tepi-tepi di dlm citra. Penapis Gaussian adalah sebuah mask berukuran 3x3
 
Operasi konvolusi dilakukan perpixel & untuk setiap pixel dilakukan operasi perkalian dan penjumlahan, shg memerlukan komputasi yg besar. Jk citra berukuran NxN & kernel mxm, mk jumlah perkalian dlm orde N 2 m 2 Contoh: jk citra 512x512 & kernel 16x16 mk ada sekitar 32juta perkalian, tdk cocok untuk proses real time. Suatu cara mengurangi wkt komputasi adalah mentransformasi citra dan kernel ke dlm domain frekuensi dlm hal ini Transf. Fourier Keuntungan penggunaan domain frekuensi adalah proses konvolusi dpt diterapkan dlm btk perkalian langsung. g(x,y)= 1 2 1 2 4 2 1 2 1

Jumat, 26 Oktober 2018

Cara Menggunakan MATLAB

Hai teman-teman, pada kali ini saya akan berbagi tentang “Dasar Penggunaan MATLAB
Apa sih “MATLAB” itu? Ada yang sudah tau? Baiklah, MATLAB adalah sebuah bahasa dengan kinerja tinggi untuk komputasi masalah teknik. MATLAB mengintegrasikan komputasi, visualisasi, dan pemrograman dalam suatu model yang sangat mudah untuk pakai dimana masalah-masalah dan penyelesaiannya diekspresikan dalam notasi matematika yang familiar. Penggunaan Matlab meliputi
• Matematika dan komputasi
• Pembentukan algoritma
• Akusisi data
• Pemodelan, simulasi, dan pembuatan prototype
• Analisa data, explorasi, dan visualisasi
• Grafik keilmuan dan bidang rekayasa
Nama MATLAB merupakan singkatan dari matrix laboratory. Dalam lingkungan perguruan tinggi teknik, Matlab merupakan perangkat standar untuk memperkenalkan dan mengembangkan penyajian materi matematika, rekayasa dan kelimuan. Di industri, MATLAB merupakan perangkat pilihan untuk penelitian dengan produktifitas yang tingi, pengembangan dan analisanya. Fitur-fitur MATLAB sudah banyak dikembangkan, dan lebih kita kenal dengan nama toolbox. Sangat penting bagi seorang pengguna MATLAB, toolboxmana yang mandukung untuk learn dan apply technology yang sedang dipelajarinya. Toolbox ini merupakankumpulan dari fungsi-fungsi MATLAB (M-files) yang telah dikembangkan ke suatu lingkungan kerja MATLAB untuk memecahkan masalah dalam kelas particular. Area-area yang sudah bisa dipecahkan dengan toolbox saat ini meliputi pengolahan sinyal, system kontrol, neural networks, fuzzy logic, wavelets, dan lain-lain.
Sebagai sebuah system, MATLAB tersusun dari 5 bagian utama:
  1. Development Environment,merupakan sekumpulan perangkat dan fasilitas yang membantu kita untuk menggunakan fungsi-fungsi dan file-file MATLAB. Beberapa perangkat ini merupakan sebuah Graphical User Interfaces (GUI). Termasuk didalamnya adalah MATLAB desktopdan Command Window, Command History, sebuah editor dan debugger, dan browsers untuk melihat helpworkspace, files, dan search path.
  2. MATLAB Mathematical Function Library, merupakan sekumpulan algoritma komputasi mulai dari fungsi-fungsi dasar sepertri: sum, sin, cos, dan complex arithmetic, sampai dengan fungsi-fungsi yang lebih kompek seperti matrix inversematrix
    eigenvalues, Bessel functions, dan fast Fourier transforms.
  3. MATLAB Language, merupakan suatu high-level matrix/array languagedengan control flow statements, functions, data structures, input/output, dan fitur-fitur object-oriented programming. Ini memungkinkan bagi kita untuk melakukan kedua hal baik
    “pemrograman dalam lingkup sederhana ” untuk mendapatkan hasil yang cepat, dan “pemrograman dalam lingkup yang lebih besar” untuk memperoleh hasil-hasil dan aplikasi yang komplek.
  4. Graphics, MATLAB memiliki fasilitas untuk menampilkan vector dan matrices sebagai suatu grafik. Didalamnya melibatkan high-level functions (fungsi-fungsi level tinggi) untuk visualisasi data dua dikensi dan data tiga dimensi, image processing, animation, dan presentation graphics. Ini juga melibatkan fungsi level rendah yang memungkinkan bagi kita untuk membiasakan diri untuk memunculkan grafik mulai dari benutk yang sederhana sampai dengan tingkatan graphical user interfaces pada aplikasi MATLAB.
  5. MATLAB Application Program Interface (API), merupakan suatulibrary yang memungkinkan program yang telah kita tulis dalam bahasa Cdan Fortran mampu berinterakasi dengan MATLAB. Ini melibatkan fasilitas untuk pemanggilan routinesdari MATLAB (dynamic linking), pemanggilan MATLAB sebagai sebuah computational engine, dan untuk membaca dan menuliskan MAT-files.
Nah berikut ini adalah panduan secara singkat mengenai penggunaan MATLAB:
  • Memulai MATLAB
1. Perhatikan Dekstop pada layar monitor PC, kita mulai MATLAB dengan melakukan double-click pada shortcut icon MATLAB
Gambar 1. MATLAB icon
2. Selanjutnya kita akan mendapatkan tampilan seperti pada Gambar berikut ini.

Gambar 2. Tampilan awal MATLAB
3. Sedangkan untuk mengakhiri sebuah sesi MATLAB, kita bisa melakukan dengan dua cara, pertama pilih File -> Exit MATLAB dalam window utama MATLAB yang sedang aktif, atau cara kedua lebih mudah yaitu cukup ketikkan type quit dalam Command Window.
  • Menentukan Direktori Tempat Bekerja
Kita dapat bekerja dengan MATLAb secara default pada directory Work ada di dalam Folder MATLAB. Tetapi akan lebih bagus dan rapi jika kita membuat satu directory khusus dengan nama yang sudah kita khususkan, semisal “Erva_manis” atau nama yang lain yang mudah untuk diingat. Hal ini akan lebih baik bagi kita untuk membiasakan bekerja secara rapi dan tidak mencampur program yang kita buat dengan program orang lain. Untuk itu, arahkan pointer mouse pada kotak bertanda … yang ada disebelah kanan tanda panah kebawah (yang menunjukkan folder yang sedang aktif). Pilih new directory, selanjutnya ketikkan “dargombes”, dan diikuti dengan click Ok.
Gambar 3. Membuat Folder baru tempat program.
  • Memulai Perintah Sederhana
1. Langkah kita yang pertama adalah dengan menentukan variable skalar dengan cara melakukan pengetikan seperti berikut:
» x = 2 (selanjutnya tekan “Enter”)
x =
2
» y = 3
y =
3
» z = x + y
z =
5
2. Kita mulai dengan mendefinisikan dua buah vektor, yaitu vektor x dan vektor y:
» x = [1 2 3]
x =
1 2 3
» y = [4 5 6]
y =
4 5 6
3. Selajutnya ketik:
>> y(1)
ans =
4
4. Ulangi untuk y(2) and y(3). MATLAB menggunakan integer positif untuk index array. Elemen pertama adalah y(1), elemen kedua adalah y(2), dan seterusnya. Nol atau bilangan negatif tidak diperbolehkan untuk indek array. Sekarang kita jumlahkan keduanya:
» x+y
ans =
5 7 9
5. Dan sekarang hitung inner product:
» x*y’
ans =
32
Jawabannya adalah 1*4 + 2*5 + 3*6 = 32! Catat, bahwa y’ adalah transpose pada y dan merupakan suatu vektor kolom.
6. Untuk memeriksanya, ketikkan perintah berikut:
>> y’
ans =
4
5
6
7. Cara lain pada pengkombinasian dua vector adalah diakukan melalui perkalian element demi element:
>> x.*y
ans =
4 10 18
8. Catat periode sebelum perkalian simbol. Sekarang kita dapat mendefinisikan suatu matriks:
» A = [1 2 3
4 5 6
7 8 9];
9. Catat bahwa matrik tidak diulang kalau kita menggunakan semi colon. Kita sekarang kalikan A dengan transpose dari x:
» A*x’
ans =
14
32
50
10.Sekarang kita harus mentranspose x untuk memenuhi perkalian suatu matrik dan suatu vector kolom. Matrik-matrik ini dapat juga dikalikan satu sama lain diantara mereka:
» B = [1 2 3 4
5 6 7 8
7 6 5 4];
» A*B
ans =
32 32 32 32
71 74 77 80
110 116 122 128
11. Sekarang coba kita lakukan penjumlahan antara A dan B:
» A+B
??? Error using ==> +
Matrix dimensions must agree.
12. Baiklah, kita tidak dapat menambah suatu matrik 3 kali 3 dengan matrix 3 kali 4 , dan Matlab akan mendeteksi dimensi yang mismatch dan selanjutnya memberikan pesan error. Sekarang kita cari cara lain untuk mendefinisikan matrik dan vektor. Sebagai contoh suatu matrik nol dengan dimensi 3 baris dan 6 kolom dapat dinyatakan sebagai:
>> zeros(3,6)
ans =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
13. Tentu saja jika anda tambahkan suatu “;” setelah zeros(3,6), jawabannya tidak akan ditampilkan di layar monitor kita.
14. Angka pertama, 3 menunjukkan jumah baris, sedangkan angka kedua, 6, adalah jumlah kolom. Kita dapat pula melakukan hal yang sama untuk menampilkan angka satu seperti berikut:
>> ones(3,6)
ans =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
# Pendefinisian Vektor-vektor Besar
Suatu vektor 1 kali 100 yang menyusun sample pada sinyal cosinus dapat dibangkitkan dengan
>> x = cos(0.1*pi*(0:99));
Untuk membangkitkan suatu “ramp” dari 1 sampai 50 coba:
>> x = [1:1:50];
Bilangan kedua mengindikasikan step kenaikan dari dari 1 sampai 50. Untuk membangkitkan suatu fungsi “ramp” dari 1 sampai 50 coba berikut ini:
>> x = [1:1:50];

Gambar 4. Contoh tampilan grafik sederhana dengan perintah plot
Ketika akita tidak memasukkan angka kedua pada perintah diatas, maka secara otomatis (default) step kenaikan ditetapkan bernilai “1”: >> x = [1:50];
Kita bisa juga secara khusus mendefinisikan suatu rentang nilai pada x sebagai berikut::
>> x(51:100) = [50:-1:1]
Ini merupakan metode yang sangat bermanfaat untuk mensepsifikasi nilai “waktu” untuk penggambaran. Sebagai contoh, ditetapkan interval sampling dalam contoh diatas adalah 1 detik. Selanjutnya kita dapat mendefisnisikan seperti berikut:
>> time = [0:0.001:0.099];
  • Penggambaran Grafik
Salah satu kelebihan dari Matlab adalah kemudahan dalam mengolah grafik. Sehingga kita tidak perlu kesulitan untuk melihat suatu respon system, misalnya pada kasus melihat bentuk sinyal dalam domain waktu anda cukup mengikuti langkah berikut. Sekarang ketikkan:
>> time = [0:0.001:0.099];
>> x = cos(0.1*pi*(0:99));
>> plot(time,x)
>> xlabel(‘time (msec)’)
>> ylabel(‘x(t)’)
ini akan menghasilkan gambar seperti berikut

Gambar 5. Contoh tampilan grafik dengan perintah stem
Sedangkan cara untuk menampilkan sederetan nilai fungsi waktu diskrit adalah dengan menggunakan perintah “stem”. Dari contoh deretan perintah coba anda rubah beberapa bagian dengan perintah berikut
>> stem(time,x)
>> xlabel(‘time (msec)’)
>> ylabel(‘x(t)’)
Apakah hasilnya seperti berikut ini?
  • Menyusun Progam Sederhana
Kita dapat mengedit suatu file text yang tersusun dari beberapa perintah Matlab. Ini dapat dilakukan dengan menekan double-click pada icon “New M-File” icon in the Matlab toolbar.
Gambar 6. Langkah awal menyusun program sederhana
Selanjutnya kita akan mendapatkan sebuah tampilan Matlab Editor yang masih kosong seperti ini. Selanjutnya kita buat program seperti pada contoh sebelumnya

Gambar 7. Tampilan Matlab Editor tempat membuat program.
 
Gambar 8. Contoh penulisan program pada Matlab Editor
 
Gambar 9. Cara menyimpan dan mengeksekusi program
Lanjutkan dengan menekan toolbar Debug, dan jangan lupa pilih Save anda Run. Disitu kita harus menuliskan nama program. kita tuliskan coba_1, secara otomatis akan menjadi file coba_1.m dan akan kita lihat tampilan hasilnya. Seperti apa ya?
# Program kedua anda
Cobalah untuk membuat program seperti berikut ini pada Matlab editor, dan jangan lupa kita simpan dengan nama coba_2
x(1:52) = [0 0 1:1:50];
x(53:102) = [50:-1:1];
h = [1 2];
for n = 3:101,
y(n) = 0;
for m = 1:2,
y(n) = y(n) + h(m)*x(n-m);
end
end
plot(y)
Hasil apa yang kita dapatkan ? Dalam hal ini kita harus memahami arti setiap perintah yang kita tuliskan dalam MATLAB, tidak ada salahnya anda bertanya kepada instruktur apa arti perintah-perintah tersebut.
# Program ketiga anda
Satu contoh lain program untuk for adalah pembangkitan gambar seperti berikut.
%File Name:coba_3.m
n=201;
delx=10/(n-1);
for k=1:n
x(k)=(k-1)*delx;
y(k)=sin(x(k))*exp(-0.4*x(k));
end
%plot(x,y)
plot(x,y,’linewidth’,4)
title(‘Grafik yang pertama’)
xlabel(‘x’);ylabel(‘y’);
Bagiamana hasilnya?
  • Fungsi dalam Matlab
Matlab juga mampu untuk menuliskan fungsi yang didefinisikan oleh pemakainya. Buat sebuah fungsi dengan menuliskan program berikut ini:
function y = x2(t)
y = t^2;
kita simpan dengan nama “x2.m” selanjutnya anda dapat memanfaatkan fungsi tersebut
melalui Matlab line command dengan cara berikut:
>>t=0:1:10;
>> y_2=x2(t)
Hasilnya adalah seperti berikut:
y_2 =
0 1 4 9 16 25 36 49 64 81 100
Kita bisa juga memanggil fungsi tersebut melalui program pada panggil_1.m file yang kita buat seperti berikut:
t=0:1:10;
y_2=x2(t)