ANALISIS DAN PERANCANGAN ALGORITMA
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
ditampilkanApakah dibutuhkan password guna
menjaga keamanan programBagaimana 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 pemakaiApakah manfaat dari informasi yang
dihasilkan tersebut Kapan informasi tersebut dibutuhkanApa bentuk help yang diinginkan oleh
para pemakaiMasalah Pendefinisian Masalah Deskripsi
Masalah Perancangan Aloritma
Pengkodean Algoritma Implementasi dan uji coba dengan komputer
Program Siap pakai A
A ALUR TAHAPAN ANALISIS DAN PERANCANGAN ALGORITMA Sesuai
Tidak Ya
Perancangan (Metode Penelitian) :
Pemodelan penggambaran,
peren-canaan dan pembuatan skema atau bagan umum sebagai satu kesatuan proses dalam memecahkanPerancangan Algoritma Extraksi dan Penghitunga Luas Area Nodul Paru Deteksi Hitung Citra Cropping Ekstraksi nodul luas area Input Citra Input Area paru dalam paru nodul
Algoritma :
Defnisi : Langkah-langkah
pemecahan suatu masalah atau pekerjaan, yang dinyatakan secara sistematis, rinci, dan jelas, sehingga bila dilaksanakan pada kondisi awal tertentu, akan berakhir dalamDesain 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 : berulang, sehingga akan Pengkajian diperoleh algoritma yang paling lengkap, tepat, benar dan relevan, dan siap untuk diimplementasikan dalam bentuk program. kajian akhir dilakukan untuk Fase memastikan sudah tidak ada lagi permasalahan lain yang terlupakan.
Karakteristik Algoritma
Terstruktur Efisien Rinci Tidak bermakna ganda
IndependenTerstruktur : 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 masalahStruktur Dasar Algoritma
1. Runtunan (Sequence)
2. Pemilihan (Selection)
3. 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 if kondisi then aksi1 else aksi2 endif
Pengulangan (Repetition)
for var awal to akhir do
aksi endfor repeat aksi until kondisi_stop while kondisi_ulang do aksi endwhileMembuat Kode-kode / perintah-perintah yang mirip dengan bahasa pemrograman.
Pengkodean :
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.
- Volume data multimedia sangat besar
- Bandwidth jaringan terbatas dan mahal
- Delay waktu transmisi besar
- Membutuhkan bandwidth komunikasi besar
Masalah “data yang sangat besar”
- – Membutuhkan memori yang besar
- – Delay waktu transmisi besar
- – – Biaya tinggi
- Memori menjadi lebih kecil
Solusi “Kompresi data”
- – – 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
- Contoh : "this is an example of a huffman tree"
Pohon Biner (Huffman coding)
- 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,
- Contoh : "this is an example of a huffman tree« 0011 1000 1001 1010
Pohon Biner (Huffman coding)
“ “= 000 a = 010 e = 011 f = 0010 t = 0011 h = 1000 s = 1010 n = 1011 m = 1100 x = 11010 p = 11011 l = 11100 u = 11101 o = 11110
- Pohon Biner (Huffman coding)
“ “= 7 a=4 e=4 f=3 t=2 h=2 i=2 s=2 m=2 x=1 p=1 l=1 u=1 0=1 r=1 2 2 2 4 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 1 4 4 4 5 8 8 8 12 16
20
“ “= 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 = 11111288 bit 135 bit 36
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.)
- 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, 2 b
- 1])
I N
89 63 77 93 69 78 119 89 79 119 89 76 107 79 81
I 88 134 97 73 129 90 73 127 88 56 114 75 40 115 80 79 110 73 75 122 84 73 126 88 62 120 84 55 97 66 81 107 77 77 112 81 84 127 94 83 121 90 78 123 91 79
I n m
I I
I N
I I
I M
97 90 88 75 80 73 84 88 84 66 77 81 94 90 91 63 69 89 89 79 41 55 78 81 75 Secara matematis :
I M
( 1 , ) , ( ) , ( N M
) 1 ( , 1 ( ) ( 1 , . . . )
)
1 ,
) 1 ( 1 ,) 1 ( , 1 ( . . .
) 1 , . 1 ( . . ) 1 ,
Representasi Citra Digital
71 41 71 84 55 91 106 78 70 110 81 69 100 75 134 129 127 114 115
110 122 126 120
97 107 112 127 121 123 89 93 119 119 107 71 84 106 110 100 88 73 73 56 40 79 75 73 62 55 81 77 84 83 78 79 77 78 79 76 81 71 91 70 69- Diperoleh dari citra berwarna,
- L = 0.299 R + 0.587 G + 0.114 B • Citra gray level I(m,n) = L [0, 2 b
- 1]
77
96
89
73
88 90 102
98
97
80
87
95
97
87
64
70
92
87
94
78
Citra gray level :
I M
) 1 ,
. 1 ( . . ) 1 , ) 1 ( , 1 (
. . .
) 1 , ) 1 ( 1 ,
) 1 ( , 1 ( ) ( 1 , . . . )
( 1 , ) , ( ) , ( N M
I M
I N
82
I I
I N
I
II n m
I Representasi Citra Digital 106
97
96
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 end- Diperoleh dari citra gray level, 1 jika L > Threshold • B = 0 jika L < Threshold • Citra biner I(m,n) = B [0, 1]
I Representasi Citra Digital
1
1
1
1
1
1
1
1
1
1
1
I n m
Citra Biner :
I I
I N
I I
I N
I M
I M
( 1 , ) , ( ) , ( N M
) 1 ( , 1 ( ) ( 1 , . . . )
) 1 , ) 1 ( 1 ,
. . .
. 1 ( . . ) 1 , ) 1 ( , 1 (
) 1 ,
1 Threshold < 90
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 endAlgoritma 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 end0.002 0.004 0.006 0.008 0.01 0.012 500 1000 1500 2000 2500 3000 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
1. For i = 1 to N
2. For j = 1 to M 3. h(I(i,j)) = h(I(i,j))+ 1
4. End for
5. End for 6. htsum =0
7. For np = 0 to 255 8. htsum = htsum+h(np) * np
9. End for 10. µ = htsum/(M*N) asli
11. Vtot=0
12. For np = 0 to 255
13. Vtot=Vtot+ (np - µ )^2) * h(np) asli
14. End for 15. σ = Vtot/M*N asli
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 ol Algoritmanya sangat sederhana dan
- memungkinkan untuk diimplementasikan dalam bentu peragkat keras.
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab 46
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 47
6.2.4 LEMPEL-ZIV-WELCH (LZW) CODING
Char Kata Keluaran Kamus (C) (W) (nilai) (kata dan nilai) W+C T O T TO T = 84 TO = 256 3 <NIL> T 2 1 E B BE B = 66 BE = 258 B O OB O = 79 OB = 257 O E EO E = 69 EO = 259 R O OR O = 79 OR = 260 O N NO N = 78 NO = 262 N R RN R = 82 RN = 261 T T TT T = 84 TT = 264 T O OT O = 79 OT = 263 O T TO B TO TOB 256 TOB = 265 O BE BEO 258 BEO = 266 E B BE Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab 48
6.2.4 LEMPEL-ZIV-WELCH (LZW) CODING Char Kata Keluaran Kamus
(C) (W) (nilai) (kata dan nilai)
O BE BEO 258 BEO = 266
W+CT OR ORT 260 ORT = 267
R O OR B TO TOB O T TO O E EOE TOB TOBE 265 TOBE = 268
N R RNR EO EOR 259 EOR = 269
T O OTO RN RNO 261 RNO = 270
EOF OT 263
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab 49
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
- Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
lebih kecil
50
6.2.4 LEMPEL-ZIV-WELCH (LZW) DECODING
Input C W Output Kamus W+C 1 79 O T TO O TO = 256
84 T T T 69 E B BE E BE = 258
66 B O OB B OB = 257 82 R O OR R OR = 260
79 O E EO O EO = 259
78 N R RN N RN = 261 79 O N NO O NO = 262 256 TO T TT TO TT = 264
84 T O OT T OT = 263 260 OR BE BEO OR BEO = 266 258 BE TO TOB BE TOB = 265 259 EO TOB TOBE EO TOBE = 268 265 TOB OR ORT TOB ORT = 267 Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab 263 OT RN RNO OT RNO = 270 261 RN EO EOR RN EOR = 269
51
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 Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab kerangkapan data. 52
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 53
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 54 Terkompresi dengan rasio kompresi 9/
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 55
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 56
Metode kuantisasi digunakan pada teknik
- kompresi data yang bersifat lossy: Q I =round( I/Q)
Data citra I = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), jika nilai
- kuantiasi Q=5 Q I = (0, 0, 1, 1, 1, 1, 1, 2, 2, 2)
- Q Proses rekonstruksi:
- I =round(I *Q)
Hasil rekonstruksi: I = (0, 0, 5, 5, 5, 5, 5, 10, 10,
- 10). Hampir semua nilai data berubah, secara visual
- Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
perubahan ini tidak begitu tampak 57
- 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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
- 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 Model zig-zag coding Hasil DCT dan kuantisasi Pada kompresi JPEG
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab 58
Susuan data dapat mempengaruhi rasio kmpresi
903 -4 3 1 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 3 1 0 0 0 0
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 data =
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 endPengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab 59