ANALISIS DAN PERANCANGAN
ALGORITMA
Sarifuddin Madenda
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,
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
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
Masalah
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
Perancangan (Metode Penelitian) :
Pemodelan penggambaran,
peren-canaan
dan
pembuatan skema atau
bagan umum sebagai
satu kesatuan proses
dalam
memecahkan
Citra Input
Cropping Citra Input
Ekstraksi Area paru
Deteksi nodul dalam paru
Hitung luas area
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
dalam
selang waktu terbatas
dan
menghasilkan
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).
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
Terstruktur :
Terdiri dari sejumlah langkah, blok,
prosedur & fungsi
Satu pintu masuk dan satu pintu keluar
Aliran Kendali mengikuti pola tertentu
Efisien :
Penggunaan memori dan waktu
proses yang optimal
Processor : menjalankan setiap perintah
secara cepat dan tepat
Rinci :
Mudah dinyatakan dengan satu atau
beberapa perintah bahasa
pemrograman
Tidak menimbulkan keraguan makna
Independent :
Algoritma
: Terdiri atas langkah-langkah yang terdefinisi
dengan baik
Bisa dihitung (computable) atau bisa diukur (measurable)
Menerima input, menghasilkan output
Memungkinkan komputer melakukan proses
Struktur Dasar Algoritma
1. Runtunan (Sequence)
2. Pemilihan (
Selection
)
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
Pemilihan (
Selection
)
if kondisi then
aksi
endif
if kondisi then
aksi1
else
aksi2
Pengulangan (
Repetition)
for var awal to akhir do aksi
endfor
repeat
aksi
until kondisi_stop
while kondisi_ulang do aksi
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
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
Contoh masalah: Video conference
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
“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
Contoh kerangkapan data:
26 26 26 27 30 30 … (rangkap berurutan)
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)
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)
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…,
Pohon Biner (Huffman coding)
Contoh : "this is an example of a huffman tree« 0011 1000 1001 1010
Representasi Citra Digital
(data visual)
Citra Berwarna (RGB)
Citra Gray-level
Secara fisik : Representasi informasi pada suatu media; kertas, film, monitor dll.
Definisi Citra
Informasi dalam citra :
- informasi dasar (warna, bentuk dan texture) - informasi abstrak (Cantik, senang, dst.)
- informasi kejadian (pesta, perkawinan, dst.)
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 :
• 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])
Representasi Citra Digital
Citra gray level :
• Diperoleh dari citra berwarna,
• L = 0.299 R + 0.587 G + 0.114 B
Representasi Citra Digital
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
Citra Biner :
• Diperoleh dari citra gray level,
1 jika L > Threshold
Representasi Citra Digital
1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 0
0 0 1 0 0
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
end
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
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}
Program Matlab :
H(1:Lmax) =0; for i = 1 : N for j = 1 : M
H(Im(i,j)) = H(Im(i,j)) +1; end
0 50 100 150 200 250 300 0
0.002 0.004 0.006 0.008 0.01 0.012
0 50 100 150 200 250 300 0
500 1000 1500 2000 2500 3000
Histogram dari hasil eksekusi algoritma
Analisis tekstur citra
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. µasli = htsum/(M*N) 11. Vtot=0
12. For np = 0 to 255
13. Vtot=Vtot+ (np - µasli)^2) * h(np)
14. End for
6.2.4 LEMPEL-ZIV-WELCH (LZW) CODING
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 46
- 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
6.2.4 LEMPEL-ZIV-WELCH (LZW) CODING
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 47
- 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:
6.2.4 LEMPEL-ZIV-WELCH (LZW) CODING
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 48 (kata dan nilai)
T <NIL> T
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 49
Char (C)
Kata
(W) W+C
Keluaran (nilai)
Kamus (kata dan nilai)
O BE BEO 258 BEO = 266
R O OR
T OR ORT 260 ORT = 267
O T TO
B TO TOB
E TOB TOBE 265 TOBE = 268
O E EO
R EO EOR 259 EOR = 269
N R RN
O RN RNO 261 RNO = 270
T O OT
EOF OT 263
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 50
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
Oleh: Sarifuddin Madenda 51
6.2.4 LEMPEL-ZIV-WELCH (LZW) DECODING
Input C W W+C1 Output Kamus
84 T T T
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 52
- 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 53
- 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 54
- 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).
- Terkompresi dengan rasio kompresi 9/3 = 3
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 55
- Semakin banyak data rangkap, semakin tinggi
rasio kompresi.
- Kerangkapan data dapat diperbanyak melalui
proses deferensial dan quantisasi
- Deferensial merupakan selisih antara dua data
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 56
- 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.
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 57
- 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
Pengolahan Citra dan Video Digital: Teori, Algoritma dan Pemrograman Matlab
Oleh: Sarifuddin Madenda 58
- Susuan data dapat mempengaruhi rasio kmpresi
903 -4 3 1 0 0 0 0 Model zig-zag coding
Hasil DCT dan kuantisasi Pada kompresi JPEG
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 59
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