ANALISIS DAN PERANCANGAN ALGORITMA Sarifuddin Madenda Universitas Gunadarma November 2013
Analisis : prosedur yang dilakukan untuk mengidentifikasi, merumuskan masalah dan menyusun metode serta langkah-langkah pemecahan masalah secara tepat Identifikasi dan fahami masalah secara tepat Definisikan masalah utama dan turunkan secara rinci, Batasi masalah (bila dibutuhkan).
Contoh: Analisis Masalah Citra Medis
Analisis kebutuhan meliputi : Siapa pemakai program Pesan-pesan apa saja yang ingin ditampilkan Apakah dibutuhkan password guna menjaga keamanan program Bagaimana format menu, input, proses atau output yang diinginkan Data apa saja yang akan diinputkan Seberapa tinggi tigkat presisi => Berapa digit angka yang akan diproses
Rumus apa yang akan digunakan atau bagaimana proses pengolahan data harus dilakukan Siapa saja yang membutuhkan informasi yang akan dihasilkan nanti Informasi apa yang dibutuhkan oleh masing-masing pemakai Apakah manfaat dari informasi yang dihasilkan tersebut Kapan informasi tersebut dibutuhkan Apa bentuk help yang diinginkan oleh para pemakai
ALUR TAHAPAN ANALISIS DAN PERANCANGAN ALGORITMA Masalah Pengkodean Algoritma Pendefinisian Masalah Implementasi dan uji coba dengan komputer Deskripsi Masalah Tidak Sesuai Perancangan Aloritma Ya Program Siap pakai A
Perancangan (Metode Penelitian) : Pemodelan penggambaran, peren-canaan dan pembuatan skema atau bagan umum sebagai satu kesatuan proses dalam memecahkan masalah
Deteksi nodul dalam paru Perancangan Algoritma Extraksi dan Penghitunga Luas Area Nodul Paru Deteksi nodul dalam paru Hitung luas area nodul Citra Input Cropping Citra Input Ekstraksi Area paru
Algoritma : Definisi : Langkah-langkah pemecahan suatu masalah atau pekerjaan, yang dinyatakan secara sistematis, rinci, dan jelas, sehingga bila dilaksanakan pada kondisi awal tertentu, akan berakhir dalam selang waktu terbatas dan menghasilkan keluaran seperti yang diharapkan.
Desain Algoritma : Uraian langkah-langkah dalam pemecahan masalah yang ada Permasalahan dibagi menjadi sub-masalah yang lebih mudah dikerjakan. Sub-masalah dibagi lagi menjadi sejumlah sub-masalah yang lebih kecil sampai menjadi bagian yang mudah diselesaikan (pemrograman modular).
Desain Algoritma : Pengkajian berulang, sehingga akan diperoleh algoritma yang paling lengkap, tepat, benar dan relevan, dan siap untuk diimplementasikan dalam bentuk program. Fase kajian akhir dilakukan untuk memastikan sudah tidak ada lagi permasalahan lain yang terlupakan.
Karakteristik Algoritma Terstruktur Efisien Rinci Tidak bermakna ganda Independen
Terstruktur : Terdiri dari sejumlah langkah, blok, prosedur & fungsi Satu pintu masuk dan satu pintu keluar Aliran Kendali mengikuti pola tertentu Mudah dikelola & dikembangkan
Efisien : Penggunaan memori dan waktu proses yang optimal Processor : menjalankan setiap perintah secara cepat dan tepat Variabel dibuat sesedikit mungkin sesuai kebutuhan
Rinci : Mudah dinyatakan dengan satu atau beberapa perintah bahasa pemrograman Tidak menimbulkan keraguan makna Independent : Tidak tergantung pada bahasa pemrog- raman tertentu
Algoritma : Terdiri atas langkah-langkah yang terdefinisi dengan baik Bisa dihitung (computable) atau bisa diukur (measurable) Menerima input, menghasilkan output Memungkinkan komputer melakukan proses penyelesaiain suatu masalah
Struktur Dasar Algoritma Runtunan (Sequence) Pemilihan (Selection) Pengulangan (Repetition)
Runtunan (Sequence) Algoritma merupakan runtunan (sequence) satu atau lebih instruksi/pernyataan, setiap pernyataan dikerjakan secara berurutan sesuai dengan urutan penulisannya. Sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan. Urutan instruksi menentukan keadaan akhir algoritma
Pemilihan (Selection) if kondisi then aksi endif aksi1 else aksi2
Pengulangan (Repetition) for var awal to akhir do aksi endfor repeat until kondisi_stop while kondisi_ulang do endwhile
Pengkodean : Membuat Kode-kode / perintah-perintah yang mirip dengan bahasa pemrograman. Tujuan yang harus dicapai dalam pengkodean adalah : EFISIENSI : Efisiensi kode, merupakan satu kesatuan dengan efisiensi algoritma yang telah didefinisikan pada tahap perancangan Efisiensi memori adalah keefisienan perintah dalam program dan dalam menggunakan memori baik untuk pelaksanaan perintah ataupun pada penyimpanan data
Efisiensi I/O : I/O yang berpengaruh langsung terhadap pemakai, maksudnya input yang dimasukkan oleh pemakai cukup jelas dan mudah dimengerti begitu juga untuk output yang dihasilkan. I/O yang berpengaruh secara langsung terhadap mesin.
Contoh masalah: Video conference Volume data multimedia sangat besar Bandwidth jaringan terbatas dan mahal Delay waktu transmisi besar
Masalah “data yang sangat besar” Membutuhkan bandwidth komunikasi besar Membutuhkan memori yang besar Delay waktu transmisi besar Biaya tinggi Solusi “Kompresi data” Memori menjadi lebih kecil Biaya dapat diperkecil
“Kompresi data” mengacu pada sifat redundancy (kerangkapan data) Bagaimana mentukan ada tidaknya kerangkapan data Bagaimana jenis kerangkapan datanya (berurutan, periodik, acak) Metode apa yang digunakan untuk memampatkan data yang rangkap/berulang
Contoh kerangkapan data: 26 26 26 27 30 30 … (rangkap berurutan) 26 30 27 26 25 26 (rangkap tidak berurutan) 26 30 27 26 25 26 26 30 27 26 25 26 (periodik)
Mentukan ada tidaknya atau besar kecilnya kerangkapan data : Hitung histogram data (frekuensi munculnya setiap nilai data) Hitung entropy-nya Contoh kerangkapan data: 26 26 26 27 30 30 … (rangkap berurutan) 26 30 27 26 25 26 (rangkap tidak berurutan) 26 30 27 26 25 26 26 30 27 26 25 26 (periodik)
Metode pemampatan data Run Length Encoding (RLE) Hitung jumlah perulangan data yang berurutan Catat jumlah perulangannya Contoh : 26 26 26 27 30 30 26 2 27 0 30 1 26 30 27 26 25 26 26 0 30 0 27 0 26 0 25 0 26 0 26 30 27 26 25 26 26 30 27 26 25 26 (periodik) 6 1 26 30 27 26 25 26
Pohon Biner (Huffman coding) Contoh : "this is an example of a huffman tree" - statistik munculnya karakter (histogram) : “ “= 7, a=4, e=4, f=3, t=2, h=2, i=2, s=2, n=2, m=2, x=1, p=1, l=1, u=1, 0=1, r=1. - Probabilitas munculnya karakter : “ “= 0.1944…, a=e=0.1111…, f=0.0833…, t=h=i=s=n=m=0.0556, x=p=l=u=o=r=0.0278.
Pohon Biner (Huffman coding) Contoh : "this is an example of a huffman tree« 0011 1000 1001 1010 “ “= 000 a = 010 e = 011 f = 0010 t = 0011 h = 1000 i = 1001 s = 1010 n = 1011 m = 1100 x = 11010 p = 11011 l = 11100 u = 11101 o = 11110 r = 11111
Pohon Biner (Huffman coding) 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 “ “= 7 a=4 e=4 f=3 t=2 h=2 i=2 s=2 n=2 m=2 x=1 p=1 l=1 u=1 0=1 r=1 12 20 36 “ “= 000 a = 010 e = 011 f = 0010 t = 0011 h = 1000 i = 1001 s = 1010 n = 1011 m = 1100 x = 11010 p = 11011 l = 11100 u = 11101 o = 11110 r = 11111 8 5 4 8 16 4 4 8 2 2 4 288 bit 135 bit 2
Representasi Citra Digital (data visual) Citra Berwarna (RGB) Citra Gray-level (Luminance) Citra Hitam-Putih (“0” & “1”)
Representasi Citra Digital (data visual) Definisi Citra Secara fisik : Representasi informasi pada suatu media; kertas, film, monitor dll. Informasi dalam citra : - informasi dasar (warna, bentuk dan texture) - informasi abstrak (Cantik, senang, dst.) - informasi kejadian (pesta, perkawinan, dst.)
Representasi Citra Digital Secara matematis : Fungsi dua dimensi I(x, y) yang menyatakan nilai intensitas atau warna I pada posisi x,y. Citra berwarna I(m,n,w) w = (R,G,B [0, 2b-1]) 88 134 97 73 129 90 127 56 114 75 40 115 80 79 110 122 84 126 62 120 55 66 81 107 77 112 94 83 121 78 123 91 89 63 93 69 119 76 71 41 106 70 100 97 90 88 75 80 73 84 66 77 81 94 91 63 69 89 79 41 55 78 134 129 127 114 115 110 122 126 120 97 107 112 121 123 89 93 119 71 84 106 100 88 73 56 40 79 75 62 55 81 77 84 83 78 76 71 91 70 69
Representasi Citra Digital Citra gray level : Diperoleh dari citra berwarna, L = 0.299 R + 0.587 G + 0.114 B Citra gray level I(m,n) = L [0, 2b-1] 106 97 96 82 78 87 94 89 73 88 90 102 98 77 80 95 64 70 92 81
citra berwarna gray level Program Matlab : Im = imread(‘nama file citea’); [N,M] = size(Im); for i = 1 : N for j = 1 : M R = Im(i,j,1) ; G = Im(i,j,2) ; B = Im(i,j,3) ; Im(i,j) = 0.299 R + 0.587 G + 0.114 B; end
Representasi Citra Digital Citra Biner : Diperoleh dari citra gray level, 1 jika L > Threshold B = 0 jika L < Threshold Citra biner I(m,n) = B [0, 1] Threshold < 90 1
citra gray level Citra Biner Program Matlab : Threshold = 90 Im = imread(‘nama file citea’); [N,M] = size(Im); for i = 1 : N for j = 1 : M if Im(i,j) >= Threshold Im(i,j) = 1; else Im(i,j) = 0; end
Algoritma pengitungan Histogram Citra,
Urutan proses algoritma Histogram Citra : Baca citra (format citra : jpg, bmp, png, …) Baca ukuran citra Berapa level intensitas dalam citra (8 bit/pixel maksimum 256) - Hitung histogram citra Tampilkan kurva histogram citra
Algortimanya adalah sebagai berikut : Procedure HistCitra(Input Im : ArrayInt, Output H : LarikInt) { K. Awal : Elemen Array Im Telah terdefinisi K. Akhir : Elemen Larik H Histogram Proses : Menghitung banyaknya pixel citra yang memiliki nilai intensitas yang sama} Deklarasi k : integer {Pencacah untuk jumlah langkah} j : integer {Pencacah untuk penelusuran array} N : integer {Ukuran baris citra} M : integer {Ukuran kolom citra}
Program Matlab : H(1:Lmax) =0; for i = 1 : N for j = 1 : M H(Im(i,j)) = H(Im(i,j)) +1; end
Histogram dari hasil eksekusi algoritma Histogram tak ternormalisasi Histogram ternormalisasi
Analisis tekstur citra Algoritma pengitungan Histogram Citra, mean dan variance
Algoritma pengitungan Histogram Citra, mean dan variance For i = 1 to N For j = 1 to M h(I(i,j)) = h(I(i,j))+ 1 End for htsum =0 For np = 0 to 255 htsum = htsum+h(np) * np µasli = htsum/(M*N) Vtot=0 Vtot=Vtot+ (np - µasli)^2) * h(np) σasli = Vtot/M*N
6.2.4 Lempel-Ziv-Welch (LZW) CODING Metode Lempel-Ziv-Welch (LZW )merupakan metode kompresi data yang bersifat umum dan dapat digunakan pada semua jenis data. LZW merupakan pengembangan dari metode LZ78 yang dikembangkan oleh Abraham Lempel, Jacob Ziv, and Terry Welch. Algoritmanya sangat sederhana dan memungkinkan untuk diimplementasikan dalam bentu peragkat keras. Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
6.2.4 Lempel-Ziv-Welch (LZW) CODING Telah digunakan secara meluas dalam kompresi file yang berbasis perangkat lunak Unix dan juga digunakan dalam kompresi citra format GIF Andaikan kita ingin mengkompres data teks berupa sebuah kalimat berikut: TOBEORNOTTOBEORTOBEORNOT Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
6.2.4 Lempel-Ziv-Welch (LZW) CODING Char (C) Kata (W) W+C Keluaran (nilai) Kamus (kata dan nilai) T <NIL> O TO T = 84 TO = 256 B OB O = 79 OB = 257 E BE B = 66 BE = 258 EO E = 69 EO = 259 R OR OR = 260 N RN R = 82 RN = 261 NO N = 78 NO = 262 OT OT = 263 TT TT = 264 TOB 256 TOB = 265 BEO 258 BEO = 266 2 1 3 Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
6.2.4 Lempel-Ziv-Welch (LZW) CODING Char (C) Kata (W) W+C Keluaran (nilai) Kamus (kata dan nilai) O BE BEO 258 BEO = 266 R OR T ORT 260 ORT = 267 TO B TOB E TOBE 265 TOBE = 268 EO EOR 259 EOR = 269 N RN RNO 261 RNO = 270 OT EOF 263 Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
6.2.4 Lempel-Ziv-Welch (LZW) CODING - Hasil encoding atau kompresi : 84 79 66 69 79 82 78 79 84 256 258 260 265 259 261 263. Setiap nilai dari deretan tersebut dapat dikodekan dengan jumlah bit maksimum adalah 9 bit. Total bit hasil kompresi adalah sebesar 16x9 bit = 144 bit, sedang jumlah bit data aslinya sebanyak 24x8 bit = 192 bit. Rasio kompresi sebesar 192/144 = 1,333 kali lebih kecil Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
6.2.4 Lempel-Ziv-Welch (LZW) DECODING Input C W W+C1 Output Kamus 84 T 79 O TO TO = 256 66 B OB OB = 257 69 E BE BE = 258 EO EO = 259 82 R OR OR = 260 78 N RN RN = 261 NO NO = 262 OT OT = 263 256 TT TT = 264 258 TOB TOB = 265 260 BEO BEO = 266 265 ORT ORT = 267 259 TOBE TOBE = 268 261 EOR EOR = 269 263 RNO RNO = 270 Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
6.1 Kerangkapan Data dan Informasi Teori kompresi dikembangkan mengacu pada kerangkapan data/informasi. Dua informasi auditif atau informasi visual yang mengandung makna yang sama dan terbentuk oleh data dengan nilai numerik yang sama, dinyatakan memiliki kerangkapan informasi dan kerangkapan data. Dua informasi auditif atau informasi visual yang mengandung makna yang sama tetapi terbentuk oleh data dengan nilai numerik yang berbeda, dinyatakan memiliki kerangkapan informasi tanpa kerangkapan data. Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
6.1 Kerangkapan Data dan Informasi Tiga buah objek pertama berwarna biru (segi tiga, R=0, G=51, B=204), (segi empat, R=1, G=52, B=205) dan (lingkaran, R=2, G=49, B=202). Tiga buah objek kedua berwarna ungu : (segi tiga, R=255, G=0, B=255), (segi empat, R=255, G=0, B=255) dan (lingkaran, R=255, G=0, B=255). Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
6.1 Kerangkapan Data dan Informasi Secara visual, tiga buah objek pertama memberi informasi warna biru yang sama (walau datanya berbeda), sehingga data warna biru ketiga objek dapat diwakilkan oleh salah satunya: (segi tiga, segi empat, lingkaran, R=1, G=52, B=205). Terkompresi dengan rasio kompresi 9/3 = 3 Secara visual, tiga objek kedua memberi informasi warna ungu yang sama dan datanya sama: (segi tiga, segi empat, lingkaran, R=255, G=0, B=255). Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
Semakin banyak data rangkap, semakin tinggi rasio kompresi. Kerangkapan data dapat diperbanyak melalui proses deferensial dan quantisasi Deferensial merupakan selisih antara dua data pixel yang saling berurutan: Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
Data citra I heterogen data DI homogen bernilai “1”.. Metode diferensial digunakan sebagai algoritma DPCM (Differential Pulse Code Modulation) biasa digunakan untuk kompresi citra lossless. Proses rekonstruksi: Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
Hasil rekonstruksi: I = (0, 0, 5, 5, 5, 5, 5, 10, 10, 10). Metode kuantisasi digunakan pada teknik kompresi data yang bersifat lossy: IQ =round( I/Q) Data citra I = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), jika nilai kuantiasi Q=5 IQ = (0, 0, 1, 1, 1, 1, 1, 2, 2, 2) Proses rekonstruksi: I =round(IQ *Q) Hasil rekonstruksi: I = (0, 0, 5, 5, 5, 5, 5, 10, 10, 10). Hampir semua nilai data berubah, secara visual perubahan ini tidak begitu tampak Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
Hasil DCT dan kuantisasi Susuan data dapat mempengaruhi rasio kmpresi 903 -4 3 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 Hasil DCT dan kuantisasi Pada kompresi JPEG data = Model zig-zag coding 903 -4 3 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 2 6 7 15 16 28 29 3 5 8 14 17 27 30 43 4 9 13 18 26 31 42 44 10 12 19 25 32 41 45 54 11 20 24 33 40 46 53 55 21 23 34 39 47 52 56 61 22 35 38 48 51 57 60 62 36 37 49 50 58 59 63 64 z = 903 -4 -1 0 0 3 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda
Program Matlab zig-zag coding: Udata(1:64)=0; for i = 1 : N for j = 1 : M Udata(z(i,j)) = data(i,j); end Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab Oleh: Sarifuddin Madenda