Perbandingan Algoritma Alternate Reverse Unary Codes dan Algoritma Run-Length Encoding(RLE) pada Kompresi Citra.JPG

(1)

A - 2

LISTING PROGRAM

1. Main Form using System;

using System.Collections.Generic; using System.Drawing;

using System.Windows.Forms; namespace Skripsi

{

/// <summary>

/// Description of MainForm. /// </summary>

public partial class MainForm : Form {

public MainForm() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

//

// TODO: Add constructor code after the InitializeComponent() call.

// }

void KOMPRESIToolStripMenuItemClick(object sender, E ventArgs e)

{

Kompresi k = new Kompresi(); k.Show();

this.Hide(); }

void DEKOMPRESIToolStripMenuItemClick(object sender, EventArgs e)

{

Dekompresi k = new Dekompresi(); k.Show();

this.Hide(); }

void Label1Click(object sender, EventArgs e) {

}

void Label4Click(object sender, EventArgs e) {


(2)

A - 2

}

void Label2Click(object sender, EventArgs e) {

} } }

2. Form Kompresi

using System;

using System.Collections.Generic; using System.Diagnostics;

using System.Drawing; using System.IO; using System.Text;

using System.Windows.Forms; namespace Skripsi

{

/// <summary>

/// Description of Kompresi. /// </summary>

public partial class Kompresi : Form {

public Kompresi() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

//

// TODO: Add constructor code after the InitializeComponent() call. // } Image file; Bitmap bmp; long fileLength; Color p;

List<int> ch1 = new List<int>(); List<int> ch2 = new List<int>(); List<int> ch3 = new List<int>();

List<int> hs1 = new List<int>(); List<int> hs2 = new List<int>(); List<int> hs3 = new List<int>();


(3)

A - 2

List<string> ch4 = new List<string>(); List<int> hs4 = new List<int>();

List<string> ch5 = new List<string>(); List<int> hs5 = new List<int>();

List<string> ch6 = new List<string>(); List<int> hs6 = new List<int>();

public static String[] aruc1; public static String[] aruc2; public static String[] aruc3;

int[] fr1, fr2, fr3;

int width,height,sss;

void Button1Click(object sender, EventArgs e) {

OpenFileDialog open = new OpenFileDialog(); open.Filter = "JPEG ( *.jpg)|*.jpg|BITMAP (*.bmp)|*.bmp";

if (open.ShowDialog() == DialogResult.OK) {

file = Image.FromFile(open.FileName); bmp = new Bitmap(open.FileName); pictureBox1.Image = file;

textBox1.Text = open.FileName; width = bmp.Width;

height = bmp.Height; fileLength

= new FileInfo(open.FileName).Length;

} }

bool cek1(int x) {

for(int i=0; i<ch1.Count; i++) {

if(ch1[i] == x) return false; }

return true; }

bool cek2(int x) {

for(int i=0; i<ch2.Count; i++) {

if(ch2[i] == x) return false; }


(4)

A - 2

}

bool cek3(int x) {

for(int i=0; i<ch3.Count; i++) {

if(ch3[i] == x) return false; }

return true; }

void freq1(int x) {

for(int i=0; i<ch1.Count; i++) {

if(ch1[i] == x) fr1[i]++; }

}

void freq2(int x) {

for(int i=0; i<ch2.Count; i++) {

if(ch2[i] == x) fr2[i]++; }

}

void freq3(int x) {

for(int i=0; i<ch3.Count; i++) {

if(ch3[i] == x) fr3[i]++; }

}

void RLE() {

label1.Text = "RLE";

label1.Text += Environment.NewLine + "Ukuran : " + height.ToString() + " x

" + width.ToString() + Environment.NewLine; label1.Text += "Ukuran Asli :

" + fileLength.ToString()+" bytes"+Environment.NewLine;

Stopwatch watch = new Stopwatch();// running time

watch.Start(); ch4.Clear(); hs4.Clear(); ch5.Clear();


(5)

A - 2

hs5.Clear(); ch6.Clear(); hs6.Clear(); RLECode1(); RLECode2(); RLECode3();

watch.Stop();

double Siz = (sss*1.0);

label1.Text += "Ukuran Kompresi : " + Siz.ToString() + " bytes"+Environment.NewLine; double CR = (Siz/(fileLength*1.0))*100; double RC = (fileLength/Siz);

double RD = 100-CR; label1.Text += "CR :

" + Math.Round(CR,2).ToString()+" %"+Environment.NewLine; label1.Text += "RC :

" + Math.Round(RC,2).ToString()+" %"+Environment.NewLine; label1.Text += "RD :

" + Math.Round(RD,2).ToString()+" %"+Environment.NewLine; label1.Text += "Waktu :

" + Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/ 1000,4).ToString()+" ms";

}

double siz = ukuran() * 1.0;

label2.Text += "Ukuran Kompresi : " + siz.ToString() + " bytes"+Environment.NewLine; double CR = (siz/(fileLength*1.0))*100; label2.Text += "CR :

" + Math.Round(CR,2).ToString() + "%" +Environment.NewLine; double RC = (fileLength/siz);

label2.Text += "RC :

" + Math.Round(RC,2).ToString()+" %" + Environment.NewLine; double RD = 100-CR;

label2.Text += "RD :

" + Math.Round(RD,2).ToString()+" %" + Environment.NewLine; label2.Text += "Waktu :

" + Math.Round(Convert.ToDecimal(watch.Elapsed.TotalMillisec onds)/1000,4).ToString()+"

ms" + Environment.NewLine; }

SaveFileDialog simpan = new SaveFileDialog();

simpan.Filter = "Compressed Files( *.aruc)|*.aruc";

simpan.FileName = "*.aruc";

if (simpan.ShowDialog() == DialogResult.OK) {

FileStream

fstream=new FileStream(simpan.FileName,FileMode.OpenOrCreate );


(6)

A - 2

= new StreamWriter(fstream);

SeekOrigin seekorigin = new SeekOrigin();

sw.BaseStream.Seek(0, seekorigin); sw.WriteLine(hs1.Count);

for(int i=0; i<hs1.Count; i++) {

sw.WriteLine(hs1[i]); }

sw.WriteLine(hs2.Count);

for(int i=0; i<hs2.Count; i++) {

void DEKOMPRESIToolStripMenuItemClick(object sender, Eve ntArgs e)

{

Dekompresi k = new Dekompresi(); k.Show();

this.Close(); }

void MENUToolStripMenuItemClick(object sender, Event Args e)

{

MainForm k = new MainForm(); k.Show();

this.Close(); }

}

3. Form Dekompresi

using System;

using System.Collections.Generic; using System.Diagnostics;

using System.Drawing; using System.IO; using System.Text;

using System.Windows.Forms; namespace Skripsi

{

/// <summary>

/// Description of Dekompresi. /// </summary>

public partial class Dekompresi : Form {

public Dekompresi() {

//

// The InitializeComponent() call is required for Windows Forms designer support. //


(7)

A - 2

//

// TODO: Add constructor code after the InitializeComponent() call.

// }

int w ,h; Bitmap bmp;

List<int> ch1 = new List<int>(); List<int> hs1 = new List<int>(); List<int> ch2 = new List<int>(); List<int> hs2 = new List<int>(); List<int> ch3 = new List<int>(); List<int> hs3 = new List<int>();

List<int> picr = new List<int>(); List<int> picg = new List<int>(); List<int> picb = new List<int>();

List<string> ch4 = new List<string>(); List<int> hs4 = new List<int>();

List<string> ch5 = new List<string>(); List<int> hs5 = new List<int>();

List<string> ch6 = new List<string>(); List<int> hs6 = new List<int>();

public String[] aruc1; public String[] aruc2; public String[] aruc3;

string metode;

void Button1Click(object sender, EventArgs e) {

OpenFileDialog open = new OpenFileDialog(); open.Filter = "Compressed Files(

*.rle)|*.rle|Compressed Files( *.aruc)|*.aruc";

if (open.ShowDialog() == DialogResult.OK) string temp;

string nama =

open.FileName.Substring(0, open.FileName.Length); FileStream fstream

= new FileStream(nama, FileMode.Open,FileAccess.ReadWrit e);

StreamReader sreader = new StreamReader(fstream);

sreader.BaseStream.Seek(0, SeekOrigi n.Begin);

int n = 0; while (n < w) {


(8)

A - 2

ch4.Add(temp); n++;

} n = 0;

while (n < w) {

temp = sreader.ReadLine(); ch5.Add(temp);

n++; }

n = 0;

while (n < w) {

temp = sreader.ReadLine(); ch6.Add(temp);

n++; }

sreader.Close(); }

void Decompress_ARUC(String stbr, String stbg, String stbb)

{

StringBuilder st = new StringBuilder(); StringBuilder bit = new StringBuilder(); StringBuilder stb2;

int t = stbr.Length;

int pad = BinToDec(stbr.Substring(t 8, 8));

stb2

= new StringBuilder(stbr.Substring(0, t - pad - 8)); for (int i = 0; i < stb2.Length; i++) {

bit.Append(stb2[i]); List<string> list = new List<string>(aruc1);

if (list.Contains(bit.ToString())) {

int x = list.IndexOf(bit.ToString());

picr.Add(ch1[x]);

bit = new StringBuilder(); }

}

void KOMPRESIToolStripMenuItemClick(object sender, Event Args e)

{

Kompresi k = new Kompresi(); k.Show();

this.Close(); }

} }


(9)

A - 2

DAFTAR PUSTAKA

Ginting, A.M. 2012, Implementasi Algoritma Huffman Pada Kompresi Citra.BMP.Skripsi.Universitas Sumatera Utara

Levitin, A. 2011. Introduction to the Design and Analysis of Algorithm 3rd Edition. United States of America. Pearson Education, Inc.

Munir, R. 2007. Pengolahan Citra. Informatika : Bandung.

Napitupulu, H.S. 2012,Analisa Perbandingan Kinerja Teknik KompresiCitra Menggunakan Metode Jpeg Dan Wavelet Multi Variabel.Skripsi,Universitas Indonesia

Purbasari, I. Y. 2007. Desain & Analisis Algoritma. Graha Ilmu: Yogyakarta. Putra,2010. Pengolahan Citra Digital. Yogyakarta: Andi.

Putri, E., Henggraini, 2011, Kompresi Citra, Draft Skripsi, Pendidikan Teknik Elektornika UNP.

Salomon, D. 2007. Run Length Encoding For Data Compression. Springer: London.

Salomon,D & Motta,G. 2010. Handbook of DataCompression Fifth Edition. Spinger: London.

Salomon& Giovanni. 2010. Handbook of Data Compression. Fifth Edition.

Computer Science Department. California State University, Northridge, Springer-Verlag, London

Saputro, N. C., Suwarno, S., Santosa, R. G., 2011, Pengolahan Citra Digital : Transformasi Citra (Bagian 1 : FT-DCT),Fakultas Ilmu Komputer. Universitas Indonesia.

Yuandi, Hendry. 2010. Perancangan Perangkat Lunak Pengenkripsian Citra *.BMP, *.GIF, dan *.JPG dengan Metode Hill. Skripsi. Universitas Smatera Utara.


(10)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini penulis memaparkan analisis permasalahan yang diangkat yang disajikan dengan diagram dan flowchart serta dipaparkan juga perancangan sistem yang dibangun, baik yang berupa perangkat keras ataupun perangkat lunak, cara melakukan pengujian dan bentuk topologi.

3.1 Analisis

Analisis sistem adalah tahap awal dalam sebuah penelitian yang bertujuan mengetahui masalah terkait dalam pembuatan sebuah sistem dan menggambarkan proses-proses yang ada di dalam sistem untuk menghasilkan keluaran yang sesuai dengan kebutuhan pemakai (user).Untuk menganalisis sebuah sistem ada beberapa hal yang biasa dilakukan, yaitu sebagai berikut:

3.1.1 Analisis Masalah

Analisis masalah sebuah sistem dapat dirancang dengan menggunakan cause-and-effect analisis.

3.1.1.1 Cause-and-Effect analisis

Cause-and-Effectanalisis merupakan teknik di mana masalah yang dipelajari untuk menentukan sebab dan efek. Dalam prakteknya, efek bisa menjadi gejala dari masalah yang lebih berakar yang pada gilirannya harus dianalisis sebab dan akibat sampai tidak menghasilkan gejala masalah lain. Seperti yang terlihat pada table 3.1.


(11)

Cause-and-EffectAnalysis SystemImprovementObjective Problemor

Opportunit

Causeand Effects System Objective System Constraint Pada umumnya citra digital berformat JPG memiliki ukuran yang besar.

1. Dibutuhkan media Penyimpanan yang besar untuk

menyimpan citra berformat JPG. 2. Pengiriman file citra melalui saluran komunikasimenjadi lambat.

Diperlukan perangkat lunak yang dapat melakukan penggabungan kompresi/ dekompresi serta membandingkan hasil berupa rasio Kompresi dan waktu proses.

Tidak tersedianya Perangkat lunak kompresi yang dapat menggabungkan antara metode Alternate Reverse Unary Codedengan Run Length Encoding.

Diagram Ishikawa (fishbone diagram) biasanya disebut juga diagram sebab akibat yang biasanya digunakan untuk mengidentifikasi masalah yang ada pada sistem yang akan dirancang. Dengan diagram ini kita dapat mengidentifikasi, mengeksplorasi dan menggambarkan suatu masalah dengan mengikutsertakan sebab dan akibat dari permasalahan dalam visual grafis. Dengan demikian proses pencapaian sistem akan sangat dibantu dengan adanya Diagram Ishikawa ini. Diagram Ishikawa pada analisis masalah dapat dilihat pada gambar 3.1 berikut ini.


(12)

Gambar 3.1 Diagram Ishikawa Pada Analisis Masalah

3.1.2 Analisis Kebutuhan

Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis kebutuhan sistem. Analisis kebutuhan sistem dapat dikelompokkan menjadi 2 bagian yaitu kebutuhan fungsional dan kebutuhan non-fungsional.

3.1.2.1 Fungsional Sistem

Kebutuhan fungsional sistem merupakan segala sesuatu yang dibutuhkan sistem. Dalam pengimplementasian sistem kompresi dan dekompresi citra dengan menggunakan metode Alternate Reverse Unary Code dan Run Length Encoding ini memiliki kebutuhan fungsional yang harus dipenuhi, antara lain:

a. Citra digital yang dikompresi berformat *.jpg.

b. Proses implementasi pada sistem ini dilakukan dengan melakukan kompresi dan dekompresi menggunakan metode Alternate Reverse Unary Codedan Run Length Encoding.

c. Sistem akan menampilkan citra yang telah berhasil dikompresi dan berusaha mengembalikan citra kembali dengan proses dekompresi.

Umumnya file citra JPG yg berukuran besar

Material

Manusia Mesin

Penyimpanan Media yang terbatas

Proses pertukaran informasi lama

Metode

Belum adanya perbandingan metode ARUC

dengan RLE

Butuh penyimpanan media yang besar

Lamanya waktu pengiriman

Mengurangi ukuran file dengan teknik kompresi


(13)

3.1.2.2 Non Fungsional Sistem

Non Fungsional Sistem adalah karakteristik atau batasan yang menentukan kepuasan sebuah sistem seperti performa, kemudahan penggunaan, anggaran, efisien serta dokumentasi yang mampu bekerja tanpa mengganggu fungsionalitas perangkat lunak lainnya.

Non Fungsional Sistem dari perangkat lunak yang dibangun dari segi performa adalah perangkat lunak memiliki kemampuan melakukan kompresi dan dekompresi file citra dengan baik. Dari segi kemudahan penggunaan adalah perangkat lunak memiliki tampilan yang user friendly dan simpel sehingga user tidak mengalami kesulitan dalam mempelejari sistem. Dari segi anggaran adalah perangkat lunak memiliki kemampuan bekerja dengan baik tanpa menggunakan tambahan biaya (cost) perangkat keras dan perangkat lunak sehingga pengunaannya tidak mengeluarkan biaya ekstra.

Dari segi efisien adalah setiap proses pada perangkat lunak tidak membutuhkan waktu yang cukup lama tergantung dari ukuran berkas yang akan diolah. Sedangkan dari segi dokumentasi perangkat lunak memiliki kemampuan untuk merekam semua proses kompresi maupun dekompresi, misalnya nama file serta ukuran citra setelah kompresi dan setiap saat hasil rekaman dapat ditampilkan.

3.1.3 Analisis Proses

Tujuan dari tahap analisis proses adalah mengetahui tahapan dan cara kerja dari system yang digunakan secara spesifik. Analisis proses dilakukan pada tahapan pemodelan sistem. Hal ini dilakukan guna mengetahui apa saja yang harus dilakukan oleh system sehingga dengan mudah melakukan pemrograman pada sistem yang akan dibangun.

Dalam sistem ini terdapat dua proses utama yaitu proses kompresi dan dekompresi dengan menggunakan metode Alternate Reverse Unary Codedan Run Length Encoding. Secara umum, proses kompresi maupun dekompresi dari kedua metode ini serupa, hanya saja nilai dari pixel yang akan digunakan yang akan berbeda menurut perhitungan masing-masing metode. Pada proses kompresi, sistem awalnya membaca gambar yang terdapat pada file. Setelah itu sistem membangkitkan kode Alternate Reverse Unary Code atau Run Length Encoding berdasarkan banyaknya pixel pada tabel pixel yang telah dibuat. Kemudian sistem melakukan proses kompresi


(14)

berdasarkan tabel pixel dan tabel kode yang telah dibangkitkan itu. Pada proses dekompresi, awalnya sistem membaca file hasil kompresi. Setelah mendapatkan bit-bit string hasil kompresi dan tabel pixel dan kodenya.

3.2 Perancangan Sistem

Untuk memudahkan pengoperasian aplikasi ini, maka perlu dibuatkan rancangan perangkat lunak berupa rancangan Flowchart, Use Case, Activity, Sequence Diagram, dan pseudocode.

3.2.1 Diagram Flowchart Pada Kompresi Dan Dekompresi Citra

Rancangan diagram Flowchart digunakan untuk menggambarkan aliran data citra dari User ke sistem kompresi dan dekompresi Alternate Reverse Unary Code dengan Run Length Encoding secara global. Pada sistem kompresi terdapat proses-proses pengolahan citra serta proses kompresi dan dekompresi dengan algoritma Alternate Reverse Unary Code dengan Run Length Encoding. Selanjutnya citra hasil kompresi akan kembali ke User.

3.2.1.1 Rancangan Flowchart Kompresi

Rancangan diagram aliran data kompresi Alternate Reverse Unary Code dengan Run Length Encoding dapat dilihat pada gambar 3.2 berikut ini.


(15)

Gambar 3.2 Flowchart Proses Kompresi Citra Kompresi dengan

Algoritma Alternate Reverse

Unary Code

Kompresi dengan Algoritma Run-Length Encoding MULAI

SELESAI

Input File.JPG

Pilih Algoritma Kompresi

Run Length Encoding?

Ya Tidak

Output: Waktu dan Hasil Kompresi,Rc, dan Rd


(16)

3.2.2.2 Rancangan Flowchart Dekompresi

Rancangan diagram aliran data dekompresi Alternate Reverse Unary Code dengan Run Length Encoding dapat dilihat pada gambar 3.3 berikut ini.

Gambar 3.3 Flowchart Proses Dekompresi Citra Dekompresi

dengan Algoritma Alternate Reverse

Unary Code

Dekompresi dengan Algoritma

Run-Length Encoding MULAI

SELESAI Input

File.JPG yang telah terkompresi

Pilih Algoritma Dekompresi

Run Length Encoding?

Ya Tidak

Output: Waktu Dekompresi


(17)

3.2.2. Use case diagram

Use Case Diagram merupakan bentuk pemodelan dari sistem yang menggambarkan functional requirements dari sebuah sistem. Functional requirements dibuat berdasarkan informasi dari kebutuhan sistem dan aktor yang berperan di dalamnya. Use Case Diagram untuk sistem dalam penelitian ini dapat dilihat pada Gambar 3.4.

Gambar 3.4. Use Case Diagram Pada Sistem

Use Case pada Gambar 3.4 menjelaskan bahwa user dapat melakukan proses kompresi dan dekompresi. Pada proses kompresi user membuka file citra, kemudian menentukan direktori untuk menyimpan file hasil kompresi, user dapat memilih metode yang digunakan yaitu Alternate Reverse Unary Code dengan Run Length Encoding, dan user dapat melakukan kompresi. Setelah user melakukan kompresi maka akan ditampilkan informasi hasil kompresi dan user dapat menghapus informasi tersebut. Pada proses dekompresi, user membuka file hasil kompresi kemudian menentukan direktori untuk file hasil dekompresi, dan user dapat melakukan dekompresi. Spesifikasi setiap UseCase dapat diuraikan pada tabel-tabel sebagai berikut.


(18)

Tabel 3.1 Spesifikasi Use Case Kompresi

Name Kompresi

Actors Pengguna

Trigger Pengguna memilih Button Kompresi Preconditions -

Post Conditions Sistem menampilkan form untuk proses kompresi Success Scenario Pengguna mengeksekusi Button Kompresi

Alternative Flows -

Tabel 3.2 Spesifikasi Use Case Dekompresi

Name Dekompresi

Actors Pengguna

Trigger Pengguna memilih Button Dekompresi Preconditions -

Post Conditions Sistem menampilkan form untuk proses dekompresi Success Scenario Pengguna mengeksekusi Button Dekompresi

Alternative Flows -

Tabel 3.3 Spesifikasi Use Case Buka File Gambar Name Buka File Citra

Actors Pengguna

Preconditions Pengguna mengakses Button Buka File Citra Post Conditions Sistem membaca File Input dari File citra (*.jpg). Success Scenario 1. Pengguna mengeksekusi tombol Buka File Citra.

2. Sistem menampilkan window untuk mencari File Input. 3. Pengguna memilih File Input (*.jpg).

4. Pengguna mengeksekusi tombol Ambil. Alternative Flows -

Tabel 3.4 Spesifikasi Use Case Kompres

Name Kompres

Actors Pengguna

Trigger Pengguna mengakses Button Kompres.


(19)

Kompresi.

2. Pengguna mengeksekusi ButtonOpen File Citra. 3. Pengguna mengeksekusi ButtonPilih Algoritma. 4. Pengguna mengeksekusi ButtonSave FileCitra. Post Conditions Sistem melakukan proses kompresi file citra(*.jpg) Success Scenario 1. Pengguna mengeksekusi tombol Kompresi.

2. Sistem melakukan proses kompresi.

3. Sistem menghasilkan File Output hasil kompresi (*.rle atau *.aruc).

Alternative Flows -

Tabel 3.5 Spesifikasi Use Case Pilih Algoritma Name Pilih Algoritma

Actors Pengguna

Trigger Pengguna mengakses Button Pilih Algoritma. Preconditions Pengguna memilih Button Kompresi.

Post Conditions Sistem memilih kode Alternate Reverse Unary Code atau Run Length Encoding sebagai metode kompresi.

Success Scenario 1. Pengguna memilih kode melalui radio button kode Alternate Reverse Unary Code atau Run Length Encoding

Alternative Flows -

Tabel 3.6 Spesifikasi Use Case Simpan File Terkompresi Name Save File Terkompresi

Actors Pengguna

Trigger Pengguna mengakses Button Simpan File Terkompresi. Preconditions Pengguna memilih Button Kompresi.

Post Conditions Sistem menentukan direktori untuk menyimpan File hasil kompresi.

Success Scenario 1. Pengguna mengeksekusi tombol Save File Terkompresi. 2. Sistem menampilkan window untuk mencari direktori penyimpanan File.

3. Pengguna memilih direktori penyimpanan. 4. Pengguna mengeksekusi tombol Simpan. Alternative Flows -


(20)

Tabel 3.7 Spesifikasi Use Case Buka File Terkompresi Name Buka File Terkompresi

Actors Pengguna

Preconditions Pengguna mengakses Button Buka File Terkompresi

Post Conditions Sistem membaca File Input dari File citra(*.rle atau *.aruc). Success Scenario 1. Pengguna mengeksekusi tombol Open File Terkompresi.

2. Sistem menampilkan window untuk mencari File Input hasil kompresi (*.rle atau *.aruc).

3. Pengguna memilih File Input (*.rle atau *.aruc). 4. Pengguna mengeksekusi tombol Ambil.

Alternative Flows -

Tabel 3.8 Spesifikasi Use Case Dekompres

Name Dekompres

Actors Pengguna

Trigger Pengguna mengakses Button Dekompres.

Preconditions 1. Pengguna memilih Button Dekompresi dan menuju form Dekompresi.

2. Pengguna mengeksekusi ButtonOpen File Terkompresi. 3. Pengguna mengeksekusi ButtonPilih Algoritma.

4. Pengguna mengeksekusi ButtonSave FileCitra. Post Conditions Sistem melakukan proses kompresi file citra (*.jpg). Success Scenario 1. Pengguna mengeksekusi tombol Decompress.

2. Sistem melakukan proses dekompresi.

3. Sistem menghasilkan File Output hasil dekompresi (*.jpg). Tabel 3.9 Spesifikasi Use Case Simpan File Citra

Name Simpan File Citra

Actors Pengguna

Trigger Pengguna mengakses Button Simpan File Citra. Preconditions Pengguna memilih Button Dekompresi.

Post Conditions Sistem menentukan direktori untuk menyimpan File hasil dekompresi.


(21)

Success Scenario 1. Pengguna mengeksekusi tombol Save File Citra. 2. Sistem menampilkan window untuk mencari direktori penyimpanan File.

3. Pengguna memilih direktori penyimpanan. 4. Pengguna mengeksekusi tombol Simpan. Alternative Flows -

3.2.3 Diagram Activity

Activity Diagram adalah diagram aktivitas dari sistem kompresi yang dilakukan user atau pengguna dalam melakukan kompresi dan dekompresi file citra. Activity Diagram Kompresi dan Dekompresi dapat dilihat seperti pada Gambar 3.5 berikut ini.

Gambar 3.5 Activity Diagram Proses Kompresi dan Dekompresi Diagram Sequence


(22)

Squence diagram adalah berfungsi menunjukkan hubungan statis antara actor dan lifeline. Hubungan tersebut pada proses kompresi citra terdiri dari proses pemanggilan file citra dan pemilihan proses metode.

Diagram Sequence pada proses kompresi untuk sistem yang dirancang pada penelitian ini dapat dilihat pada gambar 3.6.

Gambar 3.6Sequence Diagram Pada Proses Kompresi

Sedangkan Diagram Sequence pada proses dekompresi untuk sistem yang dirancang pada penelitian ini dapat dilihat pada gambar 3.7.


(23)

38

3.2.5 Alur Proses Sistem

3.2.5.1 Alur Proses Pembangkitan Run-Length Encoding

Alur proses untuk Encode dengan Run-Length Encoding dapat digambarkan dengan pseudocode berikut.

void RLECode() { sss=0

k=0, m, cur=-1 for i to width do

first=true m=0

for j to height do

p=bmp.GetPixel(i,j) if(first)

cur=p

first=false k=1

else

if(cur==p) k++ else

sss=cur().Length + k().sss=length +

m=m+2

sb=sb + cur() + " " + k ()+" " cur=p

1=k

sb=sb + cur () + " " + k () + " " charset.Add(sb ())

hasil.Add(m + 2)


(24)

38

Untuk melakukan decode dengan Run Length Encoding, dapat digambarkan dengan pseudocode sebagai berikut.

void RLEDecode(String) {

get_hasil()

for j=0 to hasil

for k=0 to k < hasil[j+1] pic.add(hasil[j]) j+=2

return pic }

3.2.5.2 Alur Proses Pembangkitan Alternate Reverse Unary Codes

Alur proses untuk Encode dengan Alternate Reverse Unary Codes dapat digambarkan dengan pseudocode berikut.

void ARUCEncode() {

chrgb=getcharset(picture) frrgb=freqcount(picture) sorting(chrgb,frrgb) kode aruc()

stb=new StringBuilder() for pixel in picture

stb.append(aruc[index(pixel)]) x=stb.length%8

if(x!=0)

for i=0 to 8-x

stb.append(“0”)

stb.append(dectobin(8-x)) Hasil=encode(stb)

return Hasil }


(25)

38

Untuk melakukan decode dengan Alternate Reverse Unary Codes, dapat digambarkan dengan pseudocode sebagai berikut.

void ARUCDecode(String) {

getcharset() getaruc() getHasil()

sb=new StringBuilder() for i=0 to Hasil.length

sb.append(dectobin(hasil([i])) pic=new Picture

for i=0 to sb.length

if(aruc.contains(sb[i]) pic.add(chrgb[i]) sb.clear()

}

3.3 Rancangan User

Rancangan User berfungsi sebagai perantara antara pengguna dengan perangkat lunak. Agar perangkat lunak dapat digunakan dengan baik oleh pengguna perlu dibuatkan rancangan menu.

3.3.1 Rancangan Menu Utama

Pada perancangan sistem terdapat pembuatan Graphic User Interface (GUI) yang akan mempermudah user dalam menggunakan sistem yang ada. Pada sistem, terdapat 4 buah Form yang akan ditampilkan antara lain Form Home, Form Menu Kompresi dan Dekompresi, dan Form About.


(26)

Gambar 3.8 Rancangan Menu Utama

Keterangan:

1. Tab Home berguna untuk menampilkan tampilan Home dari sistem yang ada. 2. Tab Menu berguna untuk memilih dan menampilkan form Kompresi dan

Dekompresi.

3. Tab About berguna untuk menampilkan menu About mengenai sistem yang dibangun.

4. Label Text berisi keterangan mengenai judul sistem. 5. Label Text berisi keterangan mengenai skripsi 6. Label Text berisi keterangan mengenai identitas diri 7. Picture Box berisi gambar logo berformat .jpeg 8. Label Text berisi keterangan mengenai fakultas

Home Menu About

1 2 3

4

5

6

7


(27)

3.3.2 Rancangan Form Menu Kompresi dan Dekompresi

3.3.2.1Rancangan Form Kompresi

Pada formKompresi terdapat beberapa button dan juga text box yang akan digunakan dalam melakukan kompresi.

3.3.2.2

Gambar 3.9 Rancangan Form Kompresi

1. Tab Home berguna untuk menampilkan tampilan Home dari sistem yang ada. 2. Tab menu Compress berguna untuk menampilkan form Compress pada sistem 3. Tab About berguna untuk menampilkan menu About mengenai sistem yang

dibangun.

4. Button Open berguna untuk membuka file yang akan digunakan untuk kompresi 5. Picture Box berguna untuk menampilkan gambar yang akan di kompresi.

6. Radio Button berguna sebagai inputan dalam memilih metode yang akan digunakan.

7. Button Compress berguna untuk mengeksekusi data yang ada sehingga terkompresi

Home Menu Kompresi About

1 2 3

Open

o RLE

o ARUC

KOMPRESI

SAVE

4

5 9

6

7

8 10


(28)

8. Button Save berguna untuk menyimpan hasil dari kompresi yang diinginkan

9. Label1 berguna untuk menampilkan informasi berdasarkan hasil kompresi metode RLE.

10.Label2 berguna untuk menampilkan informasi berdasarkan hasil kompresi metode ARUC.

3.3.2.2 Rancangan Form Dekompresi

Gambar 3.10 Form Dekompresi Pada Sistem

1. Tab Home berguna untuk menampilkan tampilan Home dari sistem yang ada. 2. Tab menu Compress berguna untuk menampilkan form Compress pada sistem 3. Tab About berguna untuk menampilkan menu About mengenai sistem yang

dibangun.

4. Button Open berguna untuk membuka file yang akan digunakan untuk dekompresi 5. Picture Box berisi gambar yang telah didekompres.

6. Button Decompress berguna untuk mengembalikan data yang telah terkompresi 7. Radio Button berguna sebagai inputan dalam memilih metode yang akan

digunakan.

8. Label1 berguna untuk menampilkan hasil dari dekompresi yang dilakukan.

Home Menu Dekompresi About

1 2 3

Open DEKOMPRESI

4

8

5 6

o RLE

o ARUC

7


(29)

3.3.4.Rancangan Form About

Pada halaman About terdapat keterangan mengenai sistem yaitu biodata misalnya nama, nim, alamat dan foto dapat dilihat pada gambar 3.11

Gambar 3.11 Rancangan Form About Me

Keterangan :

1. Tab Home berguna untuk menampilkan tampilan Home dari sistem yang ada. 2. Tab menu Compress berguna untuk menampilkan formCompress pada sistem 3. Tab About berguna untuk menampilkan menu About mengenai sistem yang

dibangun.

4. Label Text berisi keterangan mengenai sistem

5. Picture Box berisi gambar logo berformat .jpeg sebagai keterangan dari sistem

Home Menu Kompresi About

1 2 3


(30)

A - 2

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada bab 4 ini penulis memaparkan bagaimana implementasi dari sistem dan juga hasil pengujian aplikasi yang dilakukan pada metode Alternate Reverse Unary Code dan Run Length Encoding(RLE) yang sudah dibangun menggunakan C#.

4.1. Implementasi Sistem

Implementasi sistem merupakan proses menerjemahkan hasil analisis dan perancangan sistem ke dalam sebuah bahasa pemrograman. Implementasi sistem pada penelitian ini dibangun menggunakan bahasa pemrogaman C# dan untuk tampilan antarmuka akan ditangani menggunakan bahasa C#. Adapun perangkat lunak yang digunakan sebagai Integrated Development Environment (IDE) untuk C# adalah SharpDevelop versi 4.4.1.9729-7196a277. Proses implementasi yang dirancang pada sistem ini dibagi menjadi 3form dalam bahasa C#, di antaranya yaitu form home untuk halaman utama, form menuuntuk menu kompresi dan dekompresi, dan form untuk profil penulis tentang aplikasi.

4.1.1. Form Home

Form Home merupakan form yang pertama kali muncul pada saat aplikasi dijalankan. Form ini terdiri dari 3, yaitu Tab Home, Tab Menu, dan Tab About. Halaman utama pada aplikasi dapat dilihatpada Gambar 4.1.


(31)

A - 2

Gambar 4.1 Form Home

4.1.2. Tab Menu

4.1.2.1 Menu Kompresi

Menu Kompresi merupakan form yang digunakan untuk melakukan proses kompresi. Pada tab ini disediakan interface untuk input file citra, picture box untuk menampilkan isi file citra, menentukan direktori output file hasil kompresi, group boxuntuk memilih algoritma proses kompresi dan label yang berisi beberapa informasi hasil kompresi. Tampilan untuk menu kompresi dapat dilihat pada Gambar 4.2.


(32)

A - 2

Gambar 4.2 Tab Menu Kompresi

4.1.2.2 Menu Dekompresi

Menu Dekompresi merupakan form yang digunakan untuk melakukan proses dekompresi. Pada form ini disediakan interface untuk input file hasil dekompresi yaitu

untuk file *.aruc dan *.rle, menentukan direktori file hasil dekompresi, label untuk menampilkan waktu yang diperlukan untuk dekompresi, dan text area untuk menampilkan isi file hasil dekompresi. Tampilan untuk Menu Dekompresi dapat dilihat pada Gambar 4.3.


(33)

A - 2

Gambar 4.3 Tab Menu Dekompresi

4.1.3. Tab About

Tab About merupakan form yang digunakan hanya untuk menampilkan informasi tentang sistem atau aplikasi yang dibuat dan informasi tentang penulis. Tampilan untuk Tab About dapat dilihat pada Gambar 4.5.


(34)

A - 2

4.2. Pengujian Sistem

Pengujian sistem merupakan tahap mengidentifikasi hasil dari implementasi sistem apakah sistem telah berjalan sesuai dengan fungsi-fungsi yang sebelumnya ditentukan pada tahap analisis dan perancangan sistem. Pengujian sistem ini dilakukan pada File citra yang berekstensi *.jpg. Pengujian sistem yang dilakukan pada penelitian ini dibagi dalam 2 proses utama yaitu pengujian proses kompresi dan pengujian proses dekompresi.

4.2.1. Pengujian Proses Kompresi

Untuk melakukan proses kompresi tahap awal yang dilakukan adalah memilih Tab Menu Kompresi. Setelah tampilan form Kompresi muncul maka lakukan langkah-langkahberikut ini untuk melakukan proses kompresi.

1. Menekan tombol pada Open File untuk membuka Open File Dialog, dan pilih File citra *.jpg sebagai Input File.


(35)

A - 2

2. Menekan tombol KOMPRESI untuk melakukan proses kompresi. Setelah proses kompresi berhasil sistem akan menampilkan informasi hasil kompresi pada label.

3. Memilih algoritma Run Length Encoding atau Alternate Reverse Unary Code yang akan digunakan untuk proses menyimpan file hasil kompresi *.jpg pada radio button yang telah disediakan.

4. Menekan tombol pada Save File untuk membuka Save File Dialog dan tentukan direktori untuk menyimpan file hasil kompresi *.jpg.

Proses kompresi menghasilkan sebuah File Output yaitu file dengan ekstensi *.rle (Run Length Encoding) atau *.aruc (Alternate Reverse Unary Code) sebagai file yang menyimpan informasi karakter dan string bit hasil kompresi. File-file hasil kompresi ini dapat dilihat menggunakan nilai piksel editor seperti pada Gambar 4.5 dan 4.6.


(36)

A - 2

Gambar 4.8 Run Length Encoding Code Hasil Kompresi

Gambar 4.5File Run Length Encoding Hasil Kompresi

Gambar 4.8 File Alternate Reverse Unary Code Hasil Kompresi


(37)

A - 2

4.2.2. Pengujian Proses Dekompresi

Untuk melakukan proses dompresi tahap awal yang dilakukan adalah memilih Menu Dekompresi. Setelah tampilan Form Dekompresi muncul maka lakukan langkah – langkah berikut ini untuk melakukan proses dekompresi.

1. Menekan tombol pada Open File untuk membuka Open File Dialog OpenFile, dan pilih file hasil kompresi *.jpg sebagai Input File.

2. Menekan tombol DEKOMPRESI untuk melakukan proses dekompresi. Setelah proses dekompresi berhasil sistem akan menampilkan informasi hasil dekompresi dan waktu dekompresi pada label seperti pada Gambar 4.7.

Gambar 4.7 Informasi Hasil Dekompresi 4.3 Analisis Hasil Pengujian Kompresi Sistem

Pada pengujian ini, akan terlihat secara terperinci mengenai citra uji yang akan dilakukan pada aplikasi untuk kompresi file citra *.jpg menggunakan metode Alternate Reverse Unary Code dengan Run Length Encoding. Setelah proses kompresi selesai dilakukan akan dilihat hasilnya kemudian dilakukan pengujian apakah file citra *.jpg tersebut bisa dikembalikan seperti semula. Pengujian dilakukan pada beberapa file citra *.jpg dengan ekstensi yang sama, yaitu


(38)

A - 2

ekstensi-ekstensi file yang didukung oleh aplikasi ini kemudian akan dilihat perubahan dari setiap ekstensi serta hasil kompresi dari masing-masing file citra *.jpg.

Pengujian dilakukan pada ukuran file yang berbeda dan membandingkan ukuran file kompresi, parameter rasio (Rc, CR), Redudancy Data(Rd), waktu kompresi, dan waktu dekompresi dalam menggunakan metode Alternate Reverse Unary Code dengan Run Length Encoding, untuk masing-masing proses kompresi. Hasil pengujian pada beberapa file di atas dapat dirangkum dalam tabel berikut yang menunjukkan parameter rasio (Rc, CR), Redudancy Data(Rd), waktu kompresi, dan waktu dekompresi untuk masing-masing file pada tiap proses kompresi. Hasil proses kompresi beberapa file yang berekstensi *.jpg berbeda menggunakan metode Alternate Reverse Unary Code dengan Run Length Encoding, dapat dilihat pada tabel 4.1.

Tabel 4.1 Hasil Perbandingan Kompresi File Citra Menggunakan Algoritma Alternate Reverse Unary Code denganRun Length Encoding

Hasil Pengujiaan Kompresi File Citra Dengan Alternate Reverse Unary Code dan Run Length Encoding(RLE) Nama File Citra Ukuran File Asli (bytes)

Alternate Reverse Unary Code Run Length Encoding Size

Kompres i (bytes)

CR % RC % RD % Time (ms)

Size Kompres i (bytes)

CR% RC % RD % Time (ms) Square .jpg 733by tes 57 bytes 7,78 %

12,86% 92,22% 0,10

ms 71

bytes

9,69 %

10,32% 90,31% 0,01

ms Liris.jp g 696 bytes 45 bytes 6,47 %

15,47% 93,53% 0,09

ms 99

bytes

14,2 2%

7,03% 85,78% 0,05

ms bendera .jpg 691 bytes 78 bytes 11,2 9%

8,86% 88,71% 0,04

ms

136

bytes

19,6 8%

5,08% 80,32% 0,02

ms Rata-Rata 706,7 bytes 60 bytes 8,51 %

12,39% 91,48% 0,05

ms

102

bytes

14,5 3%

7,48% 85,47% 0,03


(39)

A - 2

Dari hasil di atas dapat dilihat bahwa besarnya ukuran file mempengaruhi waktu atau lamanya proses kompresi. Dari ketiga file citra *.jpg yang dapat diproses oleh aplikasi ini dan dilakukan percobaan pada sebuah file citra *.jpg yang mewakili masing-masing ekstensi, terlihat bahwa semakin besar ukuran file citra*.jpg, maka semakin banyak waktu yang diperlukan untuk proses tersebut. Untuk rasio kompresi yang dihasilkan pada setiap citra tergantung dari metode yang digunakan dan banyaknya variasi warna yang berdekatan yang terdapat dalam sebuah citra, contohnya saja pada citra square.jpg dan liris.jpg menggunakan warna yang bervariasi dan berdekatan sehingga rasio kompresi yang dihasilkan lebih kecil dengan menggunakan metode RLE. Sedangkan pada citra bendera.jpg, menggunakan warna yang tidak terlalu variasi dan renggang sehingga citra ini dapat dikompresi lebih baik menggunakan metode ARUC.

Dari Tabel 4.1 dapat dibuat grafik perbandingan hasil pengujian String antara Alternate Reverse Unary Code dengan Run Length Encoding berdasarkanvariable Compression Ratio (CR) seperti yg terlihat pada gambar 4.8 berikut.

Gambar 4.8 Grafik Perbandingan Compression Ratio Algoritma

Alternate Reverse Unary CodedenganRun Length Encoding

0 2 4 6

8

10 12 14 16 18 20

Square Liris Bendera

Compression Ratio

ARUC


(40)

A - 2

Berdasarkan hasil pengujian yang dilakukan pada tiga citra uji seperti diperoleh pada tabel 4.1 maka dapat disimpulkan pada nilai rata-rata Compression Ratio terhadap tiga citra uji, maka dapat dilihat bahwa algoritma Alternate Reverse Unary Code lebih baik daripada algoritma Run Length Encoding, di mana file citra dengan menggunakan algoritma Alternate Reverse Unary Code dapat dikompresi sebesar 8,51 % dari file citra aslinya, sedangkan nilai rata-rata untuk rasio kompresi citra dengan algoritma Run Length Encodinghanya dapat mengkompresi citra sebesar 14,53% dari file aslinya.

Dari Tabel 4.1juga dapat dibuat grafik perbandingan hasil pengujian String antara Alternate Reverse Unary Code dengan Run Length Encoding berdasarkan variable Ratio of Compression (RC) seperti yg terlihat pada gambar 4.9 berikut.

Gambar 4.9 Grafik Perbandingan Ratio of Compression Algoritma

Alternate Reverse Unary CodedenganRun Length Encoding

0 2 4 6 8 10 12 14 16

Square Liris Bendera

Ratio of Compression

ARUC


(41)

A - 2

Gambar 4.10 Grafik Perbandingan Waktu Kompresi AlgoritmaAlternate

Reverse Unary Code dengan Run Length Encoding

Berdasarkan hasil pengujian yang dilakukan pada tiga citra seperti dapat dilihat pada tabel 4.1 kecepatan rata rata proses kompresi dengan metode Run Length Encodinglebih baik (0,03ms) daripada kecepatan Alternate Reverse Unary Code (0.05ms). Dengan demikian Run Length Encoding lebih baik dibanding metode Alternate Reverse Unary Code dari segi kecepatan waktu kompresi.

4.4 Analisis Hasil Pengujian Dekompresi Sistem

Pengujian dekompresi juga dilakukan pada ukuran file yang berbeda dan membandingkan waktu proses, ukuran size untuk masing-masing proses dekompresi. Hasil pengujian pada beberapa file di atas dapat dirangkum dalam tabel berikut yang menunjukkan waktu prosesuntuk masing-masing file pada dekompresi. Hasil proses dekompresi beberapa file yang berekstensi *.jpg berbeda menggunakan metode metode Alternate Reverse Unary Code dan Run Length Encoding dapat dilihat pada tabel 4.11.

0

0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1

Square Liris Bendera

W

a

kt

u

K

om

p

re

si

Waktu Kompresi

ARUC


(42)

A - 2

Tabel 4.2 Hasil Perbandingan Dekompresi File Citra Menggunakan AlgoritmaAlternate Reverse Unary Code dengan Run Length Encoding

Nama File Citra

ARUC RLE

Time Dekompresi (detik)

Time Dekompresi (detik)

Square 0,01 ms 0,03 ms

Liris 0,05 ms 0,03 ms

Bendera 0,09 ms 0,06 ms

Rata-rata 0,05 ms 0,04 ms

Gambar 4.11 Grafik Perbandingan Waktu Dekompresi AlgoritmaAlternate Reverse Unary Code dan Run Length Encoding

Dari hasil di atas dapat dilihat bahwa besarnya ukuran file mempengaruhi waktu atau lamanya proses dekompresi. Dari ketiga file *.jpg yang dapat diproses oleh aplikasi ini dan dilakukan percobaan pada sebuah file *.jpg yang mewakili masing-masing ekstensi menggunakan metode metode Alternate Reverse Unary Code dan Run Length Encoding. Perbedaan ukuran antara file *.jpg ini

0.01 0.02 0.03 0.04 0.05 0.06

Square Liris Bendera

w

a

kt

u

d

e

kom

p

re

si

(m

s)

Waktu Dekompresi

ARUC


(43)

A - 2

mengakibatkan waktu proses yang diperlukan untuk dekompresi sedikit lebih besar dibandingkan untuk proses kompresi. Penambahan jumlah byte dalam file *.jpg diakibatkan penambahan beberapa byte untuk proses kompresi. Tetapi ketika dekompresi kembali, ukuran file juga kembali.

4.5 Hasil Perhitungan Kompleksitas Big Theta (�)

Untuk mengetahui algoritma mana yang lebih efektif pada kompresi maka dibutuhkan perhitungan kompleksitas waktu. Kompleksitas waktu algoritma Alternate Reverse Unary Code dapat dilihat pada tabel 4.2 dan kompleksitas waktu algoritma Run Length Encoding dapat dilihat seperti pada tabel 4.3.

Tabel 4.3 Perhitungan Big Theta Pada Alternate Reverse Unary Code

Step Pseudocode T(n)

1 void ARUCCode() { C # C*#

2 Chrgb=getcharset(picture) C1 1 C1

3 frrgb=freqcount(picture) C1 1 C1

4 sorting(chrgb, frrgb) C2 n2 C2n2

5 Kode aruc() C3 n2 C3n2

6 stb=new StringBuilder() C1 1 C1

7 for pixel in picture C4 n C4n

8 Stb.append

(aruc[index(pixel)])

C5 n C5n

9 x=stb.length%8 C1 1 C1

10 if(x!=0) C6 1 C6

11 for i=0 to 8-x C4 n C4n


(44)

A - 2

13 stb.append(Dectobin(8-x)) C5 1 C5

14 Hasil=encode(stb) C1 n C1n

15 return hasil C7 1 C7

Dari perhitungan running time pada tabel maka didapat:

T(n) = C1 + C1 + C2n2 + C3n2+ C1+ C4n + C5n + C1 + C6 +C4n+C5n +C5+C1n +C7

= 4 C1 + C1n + C2n2+ C3n2+ 2 C4n + C5 + 2 C5n + C6 + C7 = 4 C1 + C5 +C6 + C7 +(C1 + 2C4 + 2C5) n + (C2+C3) n2 T(n)=θ(n)

Tabel 4.4 Perhitungan Big Theta Pada Run Length Encoding

Step Pseudocode T(n)

1 void RLECode(){ C # C*#

2 sss = 0; C1 1 C1

3 K=0, m, cur=-1 C1 1 C1

4 for i to width do C2 n C2n

5 first=true C1 n C1n

6 m=0 C2 n2 C2n2

7 for j to height do C3 n2 C3n2

8 P=bmp.GetPixel(i,j) C4 n2 C4n2

9 If(first) C1 n2 C1n2

10 cur=p

first=false k=1

C1 n2 C1n2


(45)

A - 2

12 If(cur==p)

k++

C4 n2 C4n2

13 else

sss=cur().Length+ k().sss=length+

m=m+2

C1 n2 C1n2

14 Sb=sb+cur()+” ”+k()+” ”

cur=p 1=k

C1 n2 C1n2

15 Sb=sb+cur()+” “+k()+” “ C1 n C1n

16 Charset.Add(sb ()) C5 n C5n

17 Hhasil.Add9m+2) C5 n C5n

Dari perhitungan running time pada tabel maka didapat:

T(n) = C1 + C1 + C2n + C1n +C1n + C2n2 + C3n2 + C4n2 + C1n2 + C1n2 +C1n2+C4n2+C1n2+C1n2+C1n2+C5n +C5n

= 2 C1 + 3C1n + 5 C1n2 + C2n + C2n2 +C3n2 +2C4n2+ 2C5n = 2 C1 + (3 C1+ C2 + 2C5) n + (5C1+C2+ C3 + 2C4) n2


(46)

A - 2

BAB 5

KESIMPULAN DAN SARAN

Berdasarkan pembahasan dan pengujian dari bab-bab sebelumterhadap citra uji, maka dapat ditarik kesimpulan dan saran sebagai berikut.

5.1. Kesimpulan

Kesimpulan yang dapat diambil dari penelitian ini adalah:

1. Algoritma Alternate Reverse Unary Code dengan Run Length Encoding mampu melakukan proses kompresi dan dekompresi file citra.jpg

2. Penelitian ini telah mampu melakukan proses dekompresi file citra hasil kompresi menjadi file citra semula.

3. Hasil pengujian kompresi file citra berdasarkan parameter Ratio of Compression (RC), Compression Ratio (CR),Redudancy Data(RD) dan waktu kompresi menunjukkan bahwa metode Run Length Encoding lebih baik dibandingkan dengan metode Alternate Reverse Unary Code dengan rasio kompresi rata-rata sebesar 7,47%

4. Hasil pengujian dekompresi file citra dengan metode Alternate Reverse Unary Code dengan Run Length Encoding menunjukkan bahwa Run Length Encoding memerlukan waktu yang lebih sedikit untuk mengembalikan file citra hasil kompresi ke file citra semula dengan waktu dekompresi rata-rata 0,04 milisekon.


(47)

A - 2

5.2. Saran

Saran yang dapat diberikan pada penulis untuk pengembangan dan perbaikan sistemlebih lanjut adalah:

1. Diharapkan dapat mengkompresi jenis file citra lainnya yang berekstensi *.bmp , *.gif dan *.png.

2. Diharapkan untuk penelitian selanjutnya agar dapat menampilkan citra yang telah dikompresi.

3. Diharapkan perbandingan metode ARUC dengan RLE dalam mengkompresi citra dapat diimplementasikan ke dalam software yang lebih baik lagi dan userfriendly sehingga user lebih mudah untuk menggunakannya.


(48)

BAB 2

LANDASAN TEORI

Pada bab ini akan membahas landasan atas teori-teori ilmiah untuk mendukung penelitian ini. Teori-teori yang dibahas mengenai pengertian citra, kompresi citra, algoritma dan jenisnya, serta beberapa subpokok pembahasan lainnya yang menjadi landasan dalam penelitian ini.

2.1 Defenisi Citra

Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat sinyal-sinyal video seperti gambar pada monitor televisi, atau bersifat digital yang dapat langsung disimpan pada media penyimpanan (Sutoyo, et al. 2009).

Secara harfiah citra (image) adalah gambar pada bidang dwimatra atau dua dimensi. Citra juga dapat diartikan sebagai kumpulan titik-titik dengan intesitas warna tertentu yang membentuk suatu kesatuan dan mempunyai pengertian artistik. Citra sebagai salah satu komponen multimedia yang memegang peranan sangat penting sebagai salah satu bentuk informasi visual.

2.2 Citra Digital

Citra digital adalah citra yang dapat diolah oleh komputer. Citra digital disebut juga citra diskrit di mana citra tersebut dihasilkan melalui proses digitalisasi terhadap citra kontinu. Citra tersebut dikatakan sebagai citra digital karena bentuk representasinya yang berupa bilangan (numbers). Oleh komputer akan dikenal dalam urutan ‘0’ dan ‘1’.

Pada umumnya representasi citra digital membutuhkan memori yang besar. Semakin besar ukuran citra tentu semakin besar pula memori yang dibutuhkannya. Pada sisi lain, kebanyakan citra mengandung duplikasi data. Duplikasi data pada citra dapat berarti dua hal. Pertama, besar kemungkinan suatu pixel dengan pixel


(49)

tetangganyamemiliki intensitas yang sama, sehingga penyimpanan setiap pixel memboroskan tempat. Kedua, citra banyak mengandung bagian (region) yang sama, sehingga bagian yang sama ini tidak perlu dikodekan berulang kali karena redundan.

Citra tidak sama dengan teks yang hanya memberikan informasi secara jelas dengan kata-kata yang dipaparkan, sedangkan citra memberikan informasi yang jelas dengan memberikan gambaran visual dan terkadang informasi yang diberikan dapat memacu imajinasi dari orang yang melihat citra untuk menyimpulkan informasi dari citra tersebut.

Ada beberapa format citra digital, antara lain: BMP, PNG, JPG, GIF dan sebagainya. Masing-masing format mempunyai perbedaan satu dengan yang lain terutama pada header file. Namun ada beberapa yang mempunyai kesamaan, yaitu penggunaan palette untuk penentuan warna piksel. Sebagai studi kasus dalam tugas akhir ini akan digunakan format citra *.jpg yang dikeluarkan oleh Microsoft.

2.3 Citra Warna (True Color)

Pada citra warna (true color) setiap pixel-nya merupakan kombinasi dari tiga warna dasar merah, hijau, dan biru, sehingga citra warna ini disebut juga citra RGB (Red Green Blue). Setiap komponen warna memiliki intensitas sendiri dengan nilai minimum 0 dan nilai maksimum 255 (8-bit). Hal ini menyebabkan setiap pixel pada citra RGB membutuhkan media penyimpanan 3 byte. Jumlah kemungkinan kombinasi warna citra RGB adalah 224 = lebih dari 16 juta warna. (Novitasari, 2011). Contoh citra warna (true color)dapat dilihat pada gambar 2.1


(50)

Gambar 2.2 Palet warna kuning (255 255 0)

2.4 Joint Photograpic Expert Group (JPEG)

JPEG didirikan oleh komite Joint Photographic Expert Group yang mengeluarkan standart pada tahun 1992. JPEG menetapkan standart yaitu codec. Codec menjelaskan tentang bagaimana sebuah gambar dikompresi menjadi aliran byte dan dikompres kembali menjadi sebuah gambar serta digunakan sebagai streaming sebuah file. Citra Joint Photograpic Expert Group (JPEG)merupakan yang terbaik untuk foto-foto dan lukisan pemandangan yang realistis dengan variasi warna yang halus dan senada.

Kompresi yang umum pada JPEG adalah Lossy, yaitu beberapa kualitas visual akan hilang dalam proses dan tidak dapat dikembalikan. Metode kompresi Lossy data dari encoding ketika diterapkan untuk input yang memiliki 24 bit per pixel (masing-masing delapan untuk merah, hijau dan biru). Metode pertama dari metode kompresi Lossy data adalah transformasi warna, adapun langkah pertama adalah langkahnya adalah mengubah gambar dari RGB menjadi berbagai warna ruang (YCbCr). Y (kecerahan dan pixel), Cb dan Cr (Chrominance/biru dan merah komponen).

Ruang warna YCbCr konversi memungkinkan kompresi lebih besar tanpa perceptual signifikan terhadap kualitas gambar (atau lebih besar perceptual kualitas gambar yang sama untuk kompresi). Langkah selanjutnya adalah untuk mengurangi resolusi spasial dari komponen Cb dan Cr disebut dengan downsampling atau subsampling chroma. Gambar berikut adalah gambaran algoritma kompresi JPEG: (W.Y. Yang, 2009).

2.5 Kompresi Citra

Kompresi citra adalah proses pemampatan citra yang bertujuan untuk mengurangi duplikasi data pada citra sehingga memory yang digunakan untuk merepresentasikan citra menjadi lebih sedikit daripada representasi citra semula. (Sutoyo, 2009)


(51)

Pemampatan citra atau kompresi bertujuan untuk meminimalkan kebutuhan memori dalam merepresentasikan citra digital dengan mengurangi duplikasi data di dalam citra sehingga memori yang dibutuhkan menjadi lebih sedikit daripada representasi citra semula.

2.5.1 Teknik Kompresi Citra

Ada dua teknik yang dapat dilakukan dalam melakukan kompresi citra yaitu: 1. Lossless Compression

Metode Lossless merupakan kompresi citra dimana hasil dekompresi dari citra yang terkompresi sama dengan citra aslinya, tidak ada informasi yang hilang. Sayangnya, untuk ratio kompresi citra metode ini sangat rendah. secara umum teknik lossless digunakan untuk penerapan aplikasi yang memerlukan kompresi tanpa cacat, seperti pada aplikasi radiografi, kompresi citra hasil diagnose medis atau gambar satelit, di mana kehilangan gambar sekeil apa pun akan menyebabkan hasil yang tidak diharapkan. Contoh metode ini adalah Shannon-Fano Coding, Huffman Coding, Arithmetic Coding, Run-Length Encodingdan lain sebagainya(Sutoyo, 2009)

2. Lossy Compression

Metode Lossy merupakan kompresi citra dimana hasil dekompresi dari citra yang terkompresi tidak sama dengan citra aslinya, artinya bahwa ada informasi yang hilang, tetapi masih bisa ditolerir oleh persepsi mata. Metode ini menghasilkan ratio kompresi yang lebih tinggi dari pada metode lossless. Contohnya adalah color reduction, chroma subsampling, dan transform coding, seperti transformasi Fourier, Wavelet dll. (Sutoyo, 2009)

2.5.2 Kriteria Kompresi Citra

Dalam kompresi citra biasanya kriteria yang digunakan untuk mengukur pemampatan citra adalah:

1. Waktu kompresi dan waktu dekompresi

Proses kompresi merupakan proses mengkodekan citra (encode) sehingga diperoleh citra dengan representasi kebutuhan memori yang minimum. Citra terkompresi disimpan dalam file dengan format tertentu. Sedangkan proses dekompresi adalah


(52)

proses untuk menguraikan citra yang dimampatkan untuk dikembalikan lagi (decoding) menjadi citra yang tidak mampat (mengembalikan ke bentuk semula). Algoritma pemampatan yang baik adalah algoritma yang membutuhkan waktu untuk kompresi dan dekompresi paling sedikit (paling cepat). Gambar 2 merupakan gambar mengenai proses kompresi dan dekompresi citra (Sutoyo, et al. 2009).

2. Kebutuhan memori

Suatu metode kompresi yang mampu mengompresi file citra menjadi file yang berukuran paling minimal adalah metode kompresi yang baik. Dimana memori yang dibutuhkan untuk menyimpan hasil kompresi berkurang secara berarti. Akan tetapi biasanya semakin besar persentase pemampatan, semakin kecil memori yang diperlukan sehingga kualitas citra makin berkurang. Sebaliknya semakin kecil persentase yang dimampatkan, semakin bagus kualitas hasil pemampatan tersebut (Sutoyo, et al. 2009).

3. Kualitas pemampatan

Metode kompresi yang baik adalah metode yang dapat mengembalikan citra hasil kompresi menjadi citra semula tanpa kehilangan informasi apapun. Walaupun ada informasi yang hilang akibat pemampatan, sebaiknya hal tersebut ditekan seminimal mungkin. Semakin berkualitas hasil pemampatan, semakin besar memori yang dibutuhkan, sebaliknya semakin jelek kualitas pemampatan, semakin kecil kebutuhan memori yang harus disediakan (Sutoyo, et al. 2009).

2.5.3 Parameter Perbandingan 1. Compression Ratio (Cr)

Compression Ratio (Cr) adalah persentase besar data terkompresi, hasil

perbandingan antara data yang sudah dikompresi dengan data yang belum dikompresi (Salomon, 2007).


(53)

Cr = ���� �� ��� � ℎ���� � �� � X 100% (1)

2. Ratio of Compression (Rc)

Ratio of Compression (Rc) adalah hasil perbandingan antara data yang belum dikompresi dengan data yang sudah dikompresi (Salomon, 2007).

Rc = ����� �� ��� � ℎ���� � �� � X 100%(2)

3. Redundancy Data (Rd)

Redundancy Data adalah kelebihan yang terdapat di dalam data sebelum dikompresi. Jadi setelah data dikompresi dapat dihitung Redundancy data yaitu persentasi dari hasil selisih antara ukuran data sebelum dikompresi dengan data setelah dikompresi. (Salomon & Motta, 2010).

Rd= 100% – Cr(3) 4. Waktu Kompresi

Waktu kompresi merupakan waktu yang dibutuhkan oleh sebuah sistem untuk menginput file teks yang akan dikompresi sampai dengan selesainya proses kompresi. Semakin sedikit waktu yang dibutuhkan oleh sebuah sistem untuk melakukan sebuah kompresi, maka metode kompresi yang digunakan semakin efektif.

2.6 Kompleksitas Algoritma

Algoritma merupakan salah satu cabang ilmu komputer yang membahas prosedur penyelesaian suatu permasalahan. Dalam beberapa konteks, algoritma merupakan spesifikasi urutan langkah untuk melakukan pekerjaan tertentu. Algoritma adalah prosedur komputasi yang terdefenisi dengan baik yang menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. (Munir R, 2007).


(54)

Adanya algoritma yang baik mbaka komputer bisa menyelesaikan perhitungan dengan cepat dan benar. Sebaliknya jika algoritma kurang baik maka penyelesaian lambat dan bahkan tidak didapat solusi yang diharapkan. Baik buruknya sebuah algoritma dapat dibuktikan dari kompleksitas waktu yang digunakan.

Dua hal penting untuk mengukur efektivitas suatu algoritma yaitu kompleksitas ruang (keadaan) dan kompleksitas waktu. Kompleksitas ruang berkaitan dengan sistem memori yang dibutuhkan dalam eksekusi program. Kompleksitas waktu dari algoritma berisi ekspresi bilangan dan jumlah langkah yang dibutuhkan sebagai fungsi dari ukuran permasalahan. Analisa asimtotik menghasilkan notasi Ο (Big O) dan dua notasi untuk komputer sain yaitu ϴ(Big Theta) dan Ω (Big Omega) .

Kinerja algoritma dibuktikan dengan menjumlahkan bilangan bulat dari masing-masing operasi ketika algoritma di jalankan. Kinerja sebuah algoritma dievaluasi sebagai fungsi ukuran masukan n dan konstanta modulo pengali yang digunakan. Pada penelitian ini kompleksitas yang digunakan adalah Big(ϴ).

2.6.1 Big-O (O)

Secara informal, O(g(n)) adalah himpunan semua fungsi yang lebih kecil atau dengan urutan yang sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah fungsi t(n) dikatakan bagian dari Ο((g(n)) yang dilambangkan dengan t(n) Є Ο(g(n)), jika t(n) batas atasnya adalah beberapa konstanta g(n) untuk semua n besar, jika terdapat konstanta c positif dan beberapa bilangan bulat non-negatif n0 seperti t(n) ≤ cg(n) untuk semua n≥n0 . (Levitin A, 2011)

2.6.2 Big Omega (Ω)

Ω(g(n)) merupakan himpunan semua fungsi dengan tingkat pertumbuhan lebih besar atau sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah fungsi t(n) dikatakan bagian dari Ω(g(n)), dilambangkan dengan t(n) Є Ω(g(n)), jika t(n) batas bawahnya adalah beberapa konstanta positif dari g(n) untuk semua n besar. Terdapat konstanta c positif dan beberapa bilangan bulat non-negatif n0 seperti t(n) ≥ cg(n), (untuk setiap n ≥ n0). (Levitin A, 2011)

2.6.3 Big Theta (θ)

θ (g(n)) adalah himpunan semua fungsi yang memiliki tingkat pertumbuhan yang sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah


(55)

fungsi t(n) dikatakan bagian dari θ (g(n)), dilambangkan dengan t(n) Є θ (g(n)), jika t(n) batas atas dan bawahnya adalah beberapa konstanta positif g(n) untuk semua n yang besar, yaitu jika ada beberapa konstanta positif c1 dan c2 serta beberapa bilangan

bulat non-negatif n0 seperti c2g(n) ≤ t(n) ≤ c1g(n) untuk semua n ≥ n0. (Levitin A,

2011)

2.7 Dekompresi Citra

Sebuah citra yang sudah terkompresi tentunya harus dapat dikembalikan lagi kebentuk aslinya, prinsip ini dinamakan dekompresi. Untuk dapat merubah citra yang terkompresi diperlukan cara yang berbeda seperti pada waktu proses kompresi dilaksanakan. Jadi pada saat dekompresi catatan header yang berupa byte-byte tersebut terdapat catatan isi mengenai isi dari file tersebut. (Alkhudri, 2015)

Catatan header akan menuliskan kembali mengenai isi dari file tersebut, jadi isi dari file sudah tertulis oleh catatan header sehingga hanya tinggal menuliskan kembali pada saat proses dekompresi. Proses dekompresi sempurna dan kembali ke bentuk aslinya.

Parameter perbandingan dalam dekompresi adalah waktu dekompresi. Waktu dekompresi adalah waktu yang dibutuhkan oleh sebuah sistem untuk melakukan proses dekompresi dari mulai pembacaan data hingga proses decoding pada data tersebut. Semakin kecil waktu yang diperoleh maka semakin efisien metode yang digunakan dalam proses kompresi dan dekompresi itu. Alur proses kompresi dan dekompresi pada citra dapat dilihat pada gambar 2.3 berikut.

Gambar 2.3Alur kompresi-dekompresi citra (Alkhudri, 2015)

2.8Algoritma Alternate Reverse Unary Code

Metode ini sudah umum digunakan dalam kompresi data dan banyak digunakan dengan gabungan beberapa teknik modifikasi. Unary Coding direpresentasikan

Citra Asli Citra

Hasil Kompresi Kompresi


(56)

dalamsebuah string dari n bit 1 diikuti dengan satu bit 0 yang mengakhiri yang didefenisikan sebagai n-1 bit 1diikuti satu bit 0. Atau sebaliknya sebagai alternatif dapat juga secara ekuivalen dimulai dari n bit 0 diikuti dengan bit 1 yang mengakhiriyang didefenisikan sebagai n-1 bit 0 diikuti dengan satu bit 1.

Pada metode UnaryCoding tidak terdapat pembagian frekuensi simbol-simbol yang ada pada sebuah string. (Salomon, 2008). Data sebelum dikompresi Algoritma Alternate Reverse Unary Code dapat dilihat pada tabel 2.1

Tabel 2.1 Data Sebelum Dikompresi ARUC

Simbol Frekuensi 8 bit Bit Bit x Frek

2 3 00000010 8 24

3 5 00000011 8 40

8 1 00001000 8 8

50 1 00110010 8 8

51 2 00110011 8 16

Bit x Frekuensi 96

Pada Tabel 2.2 berikut ini akan ditunjukkan data setelah dikompresi menggunakan algoritma Alternate Reverse Unary Code sesuai dengan data pada tabel 2.1.

Tabel 2.2 Data Sesudah DikompresiARUC

Simbol Frekuensi ARUC Bit Bit x Frek

3 5 1 1 5

2 3 01 2 6

51 2 001 3 6

8 2 0001 4 4

50 1 00001 5 5

Bit x Frekuensi 26

2.9Algoritma Run-Length Encoding (RLE)

Algoritma Run Length Encoding adalah melakukan kompresi dengan memindahkan pengulangan byte yang sama berturut-turut atau secara terus menerus. Algoritma ini


(57)

digunakan untuk mengompresi citra yang memiliki kelompok-kelompok pixel yang berderajat keabuan yang sama. Pada metode ini dilakukan pembuatan rangkaian pasangan nilai (P,Q) untuk setiap baris pixel, dimana nilai P menyatakan nilai derajat keabuan, sedangkan nilai Q menyatakan jumlah pixel berurutan yang memiliki derajat keabuan tersebut. (Lubis, 2014)

Berbeda dengan teknik-teknik sebelumnya yang bekerja berdasarkan karakter per karakter, teknik run length ini bekerja berdasarkan sederetan karakter yang berurutan. Run Length Encoding adalah suatu algoritma kompresi data yang bersifat Lossless. Algoritma ini mungkin merupakan algoritma yang paling mudah untuk dipahami dan diterapkan.

Algoritma RLE ini cocok digunakan untuk mengkompres citra yang memiliki kelompok-kelompok pixel berderajat keabuan yang sama. Kompresi citra dengan algoritma RLE dilakukan dengan membuat rangkaian pasangan nilai (p,q) untuk setiap baris pixel, nilai pertama (p) menyatakan derajat keabuan, sedangkan nilai kedua (q) menyatakan jumlah pixel berurutan yang memiliki derajat keabuan tersebut (dinamakan Run-Length Encoding).

Langkah-langkah yang dibutuhkan untuk melakukan kompresi Run-Length Encoding adalah sebagai berikut:

1. Periksa nilai saat ini dengan nilai tetangga, apabila nilai saat ini sama dengan nilai tetangga maka gabungkan nilai tersebut menjadi satu dan tambahkan nilai counter untuk nilai tersebut.

2. Apabila nilai saat ini dengan nilai tetangganya tidak sama maka simpan nilai saat ini dan lanjut pemeriksaan seperti pada nomor 1.

3. Setelah proses 1 dan 2 telah dilakukan kemudian simpan hasil proses kompresi tersebut.

Untuk melakukan proses dekompresi terhadap file yang telah mengalami proses kompresi Run Length Encoding (RLE) dapat dilihat pada langkah-langkah berikut ini.

1. Baca nilai yang terdapat pada citra kemudian periksa apakah nilai saat ini berulang atau tidak, apabila nilai saat ini berulang maka ulang nilai sebanyak perulangan yang ada .


(58)

2. Apabila nilai tidak berulang maka nilai saat ini simpan dan lanjutkan ke nilai selanjutnya.

2.10 Penelitian Terkait

Berikut ini beberapa penelitian yang terkait dengan algoritma Alternate Reverse Unary Codes dan Run Length Encoding. Penelitian terkait untuk kedua algoritma tersebut dapat dilihat pada tabel 2.3.

Tabel 2.3 Tabel Penelitian Terkait

No Judul Peneliti

&Tahun Metode yang digunakan Keterangan 1. 1. Studi Perbandingan Kompresi Menggunakan Metode Shannon Fano Dan Unary Code Pada File Teks Eunike Johana, S. 2013 Algoritma Shannon Fano dan Unary Code

Dalam skripsi, dapat disimpulkan bahwa hasil perbandingan rata-rata rasiokompresimenunjukka n Shannon Fano sebesar 50.87%, Unary Code

sebesar 93.76%.

Sementara untuk

kecepatan kompresi Shannon Fano merupakan yang paling cepat dibandingkan Unary Code. 2. Implementasi

Algoritma Run Length Encoding (RLE) untuk Kompresi Citra Digital Ahmad, Yuliana 2012. Algoritma Run Length Encoding (RLE)

Tingkat efisiensi memori file hasil kompresi dengan menggunakan Metode Run Length Encoding diukur dari besarnya rasio kompresi yang dihasilkan. Citra yang mempunyai sebaran nilai


(59)

piksel tidak merata memiliki tingkat efisiensi lebih besar dibandingkan dengan citra dengan nilai piksel yang merata.

3. Perancangan

Perangkat Lunak Pengenkripsian Citra *.BMP, *.GIF, dan *.JPG dengan Metode Hill.

Yuandi, Hendry. 2010.

Metode Hill Hill Cipher sebenarnya merupakan salah satu teknik penyandian teks, tetapi dengan melakukan perubahan perhitungan pada nilai RGB (Red Green Blue) citra maka Hill Cipher juga dapat

dipakai untuk

menyandikan citra. Hasil dari tulisan ini adalah perancangandan

pembuatan suatu perangkat lunak yang dapat melakukan penyandian citra dengan Hill Cipher.


(60)

BAB 1

PENDAHULUAN

Pada bab ini penulis akan menguraikan tentang latar belakang, rumusan masalah, batasan masalah dari penelitian, tujuan dan manfaat dari penelitian, metodologi yang dipakai dalam melakukan penelitian ini serta sistematika penulisannya.

1.1 Latar Belakang

Perkembangan media penyimpan berkapasitas besar mengakibatkan orang tidak lagi menemui masalah jika mempunyai file dengan ukuran yang besar. Lebih-lebih jika file yang digunakan merupakan file citra. Walaupun demikian, adakalanya ukuran file yang besar tersebut terasa mengganggu jika diaplikasikan untuk mengatur media penyimpan yang ada untuk bermacam-macam data. Apalagi jika file tersebut akan dikirim secara elektronik, tentunya kapasitas file menjadi masalah tersendiri.

Kompresi citra (image compression) adalah proses untuk meminimalkan jumlah bit yang merepresentasikan suatu citra sehingga ukuran citra menjadi lebih kecil. Pada dasarnya teknik kompresi citra digunakan untuk proses transmisi data (data transmission) dan penyimpanan data (storage). Kompresi citra banyak diaplikasikan pada penyiaran televisi, penginderaan jarak jauh (remote sensing), komunikasi militer, radar dan lain-lain.Kompresi citra merupakan aplikasi dari teknik kompresi data untuk citra digital dengan tujuan untuk mengurangi redudansi yang ada di dalam citra sehingga lebih efisien dalam proses penyimpanan maupun proses transmisi.

Masalah pada citra adalah besarnya ruang penyimpanan yang diperlukan. Selain itu, data citra berukuran besar jika di kirim melalui jaringan juga membuat waktu pengiriman citra dari suatu tempat ke tempat lain menjadi lambat.

Kompresi citra memberikan manfaat yang sangat besar dalam industri multimedia saat ini. Salah satunya adalah pada proses pengiriman data (data transmission) pada saluran komunikasi data. Citra yang telah dikompresi


(1)

COMPARISON ALGORITHM ALTERNATE REVERSE UNARY CODE AND RUN LENGTH ALGORITHM

ENCODING (RLE) IN COMPRESSION IMAGE JPG

ABSTRACT

Development of technology that produces its image as a data have evolved with very rapidly so that resolution resulting image is getting higher and size of image data that is produced also the bigger. It makes appear issues such as time data exchange long and need much bandwith. Compression image is a solution to solve those problems. This study aims to to design a application computers that can compressing file jpg image. In this research the algorithms that used for compressing file that imagery is algorithm alternate reverse unary code and Run Length Encoding (RLE). The ratio comparison used is Ratio of Compression (RC) , Compression Ratio (CR) , Redudancy Data (RD) , Time compression ( ms ) and time decompress ( ms ). In experiments conducted got that second it provides different results where method run length encoding results from compressed better , where this method produce compression ratio an average of 7,48 % and time decompress file image the average 0.03 ms. While method alternate reverse unary codes produce compression ratio an average of 12,39 % and time decompress file image the average 0.05 ms.

Keywords: Image File Compression, Algorithm Reverse Unary Alternate Code, Run Length Encoding Algorithms


(2)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Daftar Lampiran xiii

Bab 1 Pendahuluan

..1.1. Latar Belakang 1

..1.2. Rumusan Masalah 2

..1.3. Batasan Masalah 2

..1.4. Tujuan Penelitian 3

..1.5. Manfaat Penelitian 3

..1.6. Metodologi Penelitian 3

..1.7. Sistematika Penulisan 4

Bab 2 Landasan Teori

. .2.1. Defenisi Citra 6

. .2.2. Citra Digital 6

. .2.3. Citra Warna (True Color) 7

. .2.4. Joint Photograpic Expert Group (JPEG) 8

2.5. Kompresi Citra 8

..2.3. .2.5.1. Teknik Kompresi Citra 9

..2.3 ..2.5.2. Kriteria Kompresi Citra 9

..2.3 ..2.5.3. Parameter Perbandingan 11

2.6. Kompleksitas Algoritma 12

..2.3.. 2.6.1. Big-O(O) 12


(3)

3.1.2 Analisis Kebutuhan 21 3.1.2.1. Fungsional Sistem 21 3.1.2.2. Non Fungsional Sistem 22

3.1.3 Analisis Proses 22

3.2. Perancangan Sistem 23

3.2.1. DiagramFlowchart Pada Kompresi dan Dekompresi Citra 23 3.2.1.1. Rancangan Flowchart Kompresi 23 3.2.1.2. Rancangan Flowchart Dekompresi 25

3.2.2 Use Case Diagram 26

3.2.3 Activity Diagram 30

3.2.4 Sequence Diagram 31

3.2.5Alur Proses Sistem 32

3.2.5.1. Alur Proses Pembangkitan Run Length Encoding 32 3.2.5.2. Alur Proses Pembangkitan Alternate Reverse Unary Code33

3.3. Perancangan User 34

3.3.1.Rancangan Menu Utama 34

3.3.2.Rancangan Form Menu Kompresi dan Dekompresi 36

3.3.3.Form About 38

Bab 4 Implementasi dan Pengujian Sistem

4.1. Implementasi Sistem 39

.4.1.1. Form Home 39

4.1.2. Tab Menu 40

.4.1.2.1.Menu Kompresi 40

.4.1.2.2. Menu Dekompresi 41

4.1.3. Tab About 42

4.2. Pengujian Sistem 43

4.2.1. Pengujian Proses Kompresi 43 4.2.2. Pengujian Proses Dekompresi 46 4.3. Analisis Hasil pengujian Kompresi Sistem 46 4.4. Analisis Hasil pengujian Dekompresi Sistem 50 4.5. Hasil Perhitungan Kompleksitas Big Theta (Θ) 52 Bab 5 Kesimpulan dan Saran

5.1. Kesimpulan 55

5.2. Saran 56

Daftar Pustaka


(4)

DAFTAR TABEL

Nomor

Tabel Nama Tabel Halaman

2.1 2.2 2.3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.1 4.2 4.3 4.4

Data Sebelum Dikompresi Alternate Reverse Unary Code Data Sesudah Dikompresi Alternate Reverse Unary Code Tabel Penelitian Terkait

Cause-and-Effect Analysis Spesifikasi Use Case Kompresi Spesifikasi Use Case Dekompresi Spesifikasi Use Case Buka File Gambar Spesifikasi Use Case Kompres

Spesifikasi Use Case Pilih Algoritma

Spesifikasi Use Case Simpan File Terkompresi Spesifikasi Use Case Buka File Terkompresi Spesifikasi Use Case Simpan File Citra

Hasil Perbandingan Kompresi File Citra Menggunakan Algoritma ARUC dan RLE

Hasil Perbandingan Dekompresi File Citra Menggunakan Algoritma ARUC dan RLE

Perhitungan Big Theta (Θ) Pada ARUC Perhitungan Big Theta (Θ) Pada RLE

13 13 15 17 23 24 24 24 25 25 26 27 45 50 60 51 52


(5)

DAFTAR GAMBAR

Nomor

Gambar Nama Gambar Halaman

2.1 2.2 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11

Citra Warna (True Color) Palet Warna Kuning (255 255 0)

Diagram Ishikawa Pada Analisis Masalah Flowchart Proses Kompresi Citra

Flowchart Proses Dekompresi Citra Use Case Diagram Pada Sistem

Activity Diagram Proses Kompresi dan Dekompresi Sequence Diagram Pada Proses Kompresi

Rancangan Menu Utama Rancangan Form Kompresi Form Dekompresi Pada Sistem Rancangan Form About Me Form Home

Tab Menu Kompresi Tab MenuDekompresi Tab About

File Run Length Encoding Hasil Kompresi

File Alternate Reverse Unary Code Hasil Kompresi Informasi Hasil Kompresi

Grafik Perbandingan Compression Ratio Algoritma ARUC dengan RLE

Grafik Perbandingan Ratio of Compression Algoritma ARUC dengan RLE Waktu Kompresi Waktu Dekompresi 6 7 18 21 22 23 27 28 32 33 34 35 37 38 39 39 42 42 43 45 46 47 48 xii


(6)

DAFTAR LAMPIRAN

Halaman

Lampiran 1 Listing Program A-1