Internet kini menjadi media yang efektif dan efisien untuk memperoleh informasi. Baik itu berupa teks biasa (plain text) seperti artikel maupun berupa gambar. Salah satu jenis gambar yang sering disertakan dalam suatu halaman web (web page) adalah citra (image). Besar kecilnya ukuran citra akan mempengaruhi cepat lambatnya halaman tersebut terbuka. Oleh karena itu, dilakukan beberapa cara untuk mempercepat terbukanya sebuah halaman yang memuat citra.

Salah satu cara mempercepatnya adalah dengan memampatkan data (compress the data) citra tersebut. Tujuannya adalah agar citra yang disertakan ukurannya menjadi lebih kecil. Sehingga beban yang diberikan kepada browser dalam membuka halaman tersebut menjadi lebih kecil dengan tanpa kehilangan kelayakan citra tersebut untuk dilihat secara kasat mata. Selain itu juga dapat mengurangi ruang penyimpanan di dalam media penyimpanan data, dalam hal ini storage device, seperti hard disk, floppy disk, zip drive, flash drive, CD dan lain-lain. Ada banyak metode pemampatan data. Dalam tulisan ini dibahas suatu metode pemampatan data pada citra yang didasarkan pada teori dekomposisi (faktorisasi) matriks.

1.1 Latar Belakang Masalah

Dekomposisi nilai singular atau singular value decomposition (SVD) adalah salah satu dari sekian banyak dekomposisi matriks. Pada dasarnya ada banyak dekomposisi suatu matriks. Ada yang bergantung pada ukuran matriks seperti dekomposisi LU yang mensyaratkan matriks persegi, dan ada yang tidak mempermasalahkannya, seperti dekomposisi yang digunakan dalam metode pemampatan data ini, yaitu Singular Value Decomposition (SVD) atau Dekomposisi Nilai Singular. Dekomposisi ini memfaktorkan suatu matriks menjadi tiga bagian dengan karakterisasinya masing-masing.

Dekomposisi ini memiliki banyak aplikasi pada berbagai bidang. Aplikasi SVD diantaranya adalah sebagai berikut (Scheick, J.T., 1997):

  1. Penyelesaian persamaan Ax = b dan Pseudo-Invers
  2. Penghitungan rank suatu matriks
  3. Menyelesaikan sensitifitas sistem persamaan
  4. Pattern Recognitions

Aplikasi yang lain diantaranya pada imunology, molecular dynamics, small-angle scattering, information retrieval, signal processing, dan image compression. Pada tulisan ini yang dibahas adalah aplikasi SVD yang terakhir, yaitu image compression. Image compression atau pemampatan citra merupakan aplikasi SVD yang paling umum. Sifat-sifat dari SVD yang memberikan aproksimasi terbaik untuk suatu matriks X, dapat digunakan dalam pemampatan citra.

Seperti metode pemampatan data yang lain, metode pemampatan data menggunakan SVD juga bertujuan meminimalisir ukuran data, tetapi dengan data yang lebih sedikit ini masih tetap bisa memberikan informasi yang mendekati informasi aslinya. Hanya saja pada metode ini ada perbedaan yang cukup mendasar dengan metode yang lain. Pada metode pemampatan data yang lain biasanya melibatkan kode-kode. Kode-kode yang berulang ditulis kembali dalam kode yang lain sehingga lebih singkat dan ini akan mengurangi ukuran data tersebut, atau dengan cara yang lain tetapi masih melibatkan kode-kode. Sedangkan pada metode yang dibahas disini, yang menjadi objek bukan kode-kode melainkan bit-bit bilangan. Bit-bit bilangan ini merepresentasikan intensitas citra di titik-titik tertentu (pixel). Citra adalah matriks dengan entrinya adalah bilangan-bilangan tersebut. Matriks inilah yang diolah untuk mendapatkan citra yang baru dengan metode ini.

Konsep dasar pemampatan data adalah mencari vektor yang menempati arah yang cukup tepat atau hampir sama dengan vektor-vektor data yang akan dimampatkan. Citra yang berukuran m x n pixel (picture element) merupakan suatu matriks berukuran m x n. Jika setiap kolom matriks ini diperlakukan sebagai kumpulan vektor-vektor data maka memampatkan citra tersebut adalah proses menentukan suatu matriks yang kolom-kolomnya merupakan vektor yang memiliki arah yang hampir sama dengan vektor-vektor kolom dari citra aslinya.

Selanjutnya, penyelesaian permasalahan mencari vektor-vektor yang memenuhi ketentuan di atas (menempati arah yang hampir sama) merupakan left-singular vector dari citra aslinya. Langkah ini tidak lain adalah untuk mengekstrak informasi yang cukup dari citra tersebut menggunakan SVD untuk menyusun kembali citra yang mendekati citra asal (original image). Pemahaman yang sederhana dari metode ini terlihat pada bilangan phi (). Sampai saat ini belum ditemukan nilai yang merepresentasikan secara tepat berapakah bilangan ini, yang ada hanyalah nilai pendekatan, seperti 22/7 atau 3,14 atau 3,1415926535897932 384626433832795 dan bilangan-bilangan ini tidak sepenuhnya tepat, karena dengan beberapa keterbatasan hanya mampu merepresentasikan pendekatannya saja. Begitu juga dengan metode pemampatan dalam tulisan ini, yaitu mendapatkan citra lain yang merupakan pendekatan yang cukup baik untuk merepresentasikan citra asli.

Konsep yang mendasari pemikiran ini berangkat dari teorema ‘extended maximal principle’ dari suatu bentuk Rayleigh Quotient. Dimana pemaksimum dari masalah ini tak lain adalah vektor eigen dari suatu matriks hermitian. Lebih lanjut jika dikaitkan dengan dekomposisi nilai singular, pemaksimum masalah ini (dengan suatu kendala) adalah left-singular vector dari matriksnya.

1.2 Perumusan Masalah

Masalah yang diteliti dalam tulisan ini adalah bagaimana dasar pemampatan data dalam tinjauan matematis dan bagaimana cara pemampatan citra menggunakan dekomposisi nilai singular, kemudian mengimplementasikan metode pemampatan citra menggunakan dekomposisi nilai singular ke dalam sebuah program MATLAB. Titik tekan yang dibicarakan dalam tulisan ini diberikan dalam Bab V.

Secara garis besar, perumusan masalah yang dibahas dalam tulisan ini terdiri dari beberapa langkah sebagai berikut:

  1. Bagaimana definisi nilai singular dan dekomposisi nilai singular.
  2. Bagaimana menentukan dekomposisi nilai singular dari suatu matriks.
  3. Bagaimana dasar-dasar pemampatan data secara matematis.
  4. Bagaimana definisi citra
  5. Bagaimana cara pemampatan citra menggunakan dekomposisi nilai singular.
  6. Bagaimana implementasi metode pemampatan citra menggunakan dekomposisi nilai singular ke dalam bahasa pemrograman MATLAB.

1.3 Batasan Masalah

Satu hal yang paling mendasar dan menjadi batasan dalam mengemukakan metode ini adalah pada teknik pemampatannya. Dalam dunia komputer, data compression secara lengkap melibatkan beberapa proses mulai dari compress sampai decompress. Data yang telah dimampatkan disimpan dalam format file (berkas) yang lain. File yang baru ini memiliki ukuran yang lebih kecil dari pada data sebenarnya. Artinya, hasil pemampatan hanya menyimpan data-data karakteristik dari data sebenarnya. Kemudian, untuk mendapatkan informasi dari file ini dilakukan proses balikan yang disebut dengan decompress. Informasi yang diperoleh dari data hasil decompress bisa sama (tidak ada data yang hilang) atau tidak sama (terjadi pengurangan data) dengan informasi sebenarnya.

Tulisan ini hanya sebatas memberikan metode secara umum. Tidak membicarakan mengenai file yang disimpan (dengan ukuran yang lebih kecil) seperti yang disebutkan di atas. Metode yang dibahas dalam tulisan ini bisa dikatakan bukan image compression melainkan membuat salinan suatu file citra dengan ukuran yang lebih kecil. ‘Salinan’ inilah yang disebut sebagai hasil pemampatan. Dilihat dari hasilnya, secara prinsip metode tersebut bisa dikatakan sebagai data compression. Tapi, dilihat dari langkah-langkah dalam metode tersebut, secara konsep ‘belum’ bisa dikatakan sebagai data compression.

Jadi, secara garis besar tulisan tidak memberikan uraian secara lengkap mengenai metode tersebut sesuai dengan kaidah-kaidah atau konsep dalam pemampatan data. Tulisan ini hanya memperlihatkan bagaimana aljabar linear secara sederhana dapat diterapkan pada sebuah file citra sedemikian sehingga diperoleh file citra yang lain dengan informasi yang cukup sama tetapi dengan ukuran file yang lebih kecil. Dengan kata lain, tulisan ini memberikan salah satu contoh aplikasi dekomposisi nilai singular. Untuk selanjutnya, pengertian yang sama dengan batasan ini tetap disebut dengan pemampatan data (data compression) khususnya citra (image compression).

Metode atau algoritma pemampatan data yang dibahas dalam tulisan ini dibatasi pada data citra. Hal ini dikarenakan sejauh ini, yang penulis ketahui hanya data citra  yang dapat direpresentasikan ke dalam sebuah matriks. Karena metode ini didasarkan pada teori matriks maka operasi-operasi yang dapat dilakukan hanya terdefinisi pada matriks.

Kemudian, citra yang diperoleh dari hasil pemampatan merupakan citra yang independen (citra yang berbeda). Selain itu telah dijelaskan bahwa citra hasil ini merupakan citra ‘pendekatan’ dari citra asli. Seperti kasus pada bilangan phi, jika diambil bilangan 3,14 maka nilai ini dikatakan nilai yang cukup dekat dengan phi. Nilai pendekatan ini hanya menyertakan dua bagian pertama yang utama dari phi, yaitu 1 dan 4. Karena 3,14 merupakan nilai pendekatan maka tidak mungkin untuk mendapatkan nilai phi yang sebenarnya dari nilai ini. Sehingga dengan demikian dari hasil pemampatan sebuah citra amat mustahil untuk mendapatkan kembali citra dengan resolusi yang lebih baik (tentunya dengan ukuran yang lebih besar) dari pada citra tersebut, karena ada informasi yang tidak disertakan. Tulisan ini juga membatasi permasalahan pada pemampatan data yang tidak menggunakan kode-kode. Tetapi khusus dalam metode ini murni menggunakan operasi matriks.

Pada bagian akhir, diberikan program yang mengimplementasikan metode ini. Program tersebut ditulis dalam bahasa MATLAB dan sepenuhnya menggunakan fungsi-fungsi yang telah tersedia di dalam MATLAB atau fungsi bawaan (built in function). Selain fungsi-fungsi tersebut, juga memanfaatkan fungsi-fungsi yang disediakan dalam toolbox image processing dari MATLAB.

Sebagai sebuah catatan bahwa metode ini bekerja efektif pada format citra yang telah terkompresi (compressed image), contoh: JPEG. Sebaliknya tidak begitu baik pada citra tanpa kompresi (uncompressed image), contoh: BMP, ICO, dan CUR. Walaupun dihasilkan citra dengan kualitas yang tidak sebaik aslinya, bahkan lebih buruk, tetapi tidak banyak mengurangi besarnya ukuran file.

Batasan yang lain, MATLAB mendukung pengolahan citra hanya untuk beberapa format citra. Mulai dari pembacaan sampai menuliskannya kembali ke dalam sebuah file. Namun, ada beberapa format citra yang bisa dibaca oleh MATLAB tetapi tidak disediakan fungsi atau metode untuk menuliskan citra tersebut ke dalam sebuah file. Salah satunya adalah citra dengan format GIF (Graphic Interchange Format). Format ini dapat dibaca oleh MATLAB, tetapi MATLAB tidak menyediakan fungsi atau metode untuk menulis file citra dengan format ini. Oleh karena itu, program yang dibuat untuk mengimplementasikan metode ini ‘tidak menerima’ input file citra dengan format GIF dikarenakan tidak adanya metode untuk menulis file citra dengan format ini.

1.4 Maksud dan Tujuan Penulisan

Maksud penulisan tulisan ini adalah untuk memenuhi salah satu prasyarat untuk mendapatkan gelar sarjana strata satu dibidang matematika. Sedangkan tujuan penulisan tulisan ini adalah untuk:

  1. Mengetahui salah satu aplikasi dari SVD.
  2. Membahas teori-teori dasar  dekomposisi nilai singular dan konsep dasar pemampatan citra menggunakan dekomposisi nilai singular.
  3. Menerapkan metode pemampatan ke dalam program menggunakan bahasa pemrograman MATLAB

1.5 Tinjauan Pustaka

Dalam “Linear Algebra with Applications” (Scheick, J.T., 1997) menjelaskan tentang salah satu dekomposisi matriks dan beberapa aplikasinya. Salah satu dekomposisi matriks yang diberikan adalah dekomposisi nilai singular dengan aplikasinya pada pattern recoginition. Khususnya, pada feature capturing, yakni pemampatan citra. Beberapa konsep dasar yang digunakan adalah Rayleigh Quotients dan extended maximal principle.

Beberapa buku penunjang yang dijadikan sebagai referensi dalam menyusun landasan teori SVD diantaranya adalah Howard Anton (2000) dalam “Elementary Linear Algebra”,  Jack L. Goldberg (1991) dalam “Matrix Theory with Applications”, W. Keith Nicholson (2001) dalam “Elementary Linear Algebra”, dan Lyod N. Trefethen (1997) dalam “Numerical Linear Agebra” serta beberapa buku komputer yang membahas mengenai citra.

Sumber-sumber dari internet juga membahas metode yang sama pada pemampatan data menggunakan dekomposisi nilai singular. Hanya saja tulisan-tulisan tersebut lebih banyak berbicara pada tinjauan komputer dan sedikit sekali mengupas sisi matematisnya. Bahkan beberapa diantaranya sama sekali tidak membicarakan latar belakang secara matematis mengapa metode ini bisa dilakukan, salah satunya pada artikel “The Singular Value Decomposition of an Image” oleh Kristian Sandberg (1998) yang hanya memberikan lab worksheet menggunakan MATLAB. Namun, bagaimanapun juga sumber-sumber tersebut bisa dijadikan rujukan dalam memperdalam pemahaman metode pemampatan ini.

Artikel yang lain adalah “Image Compression with Singular Value Decomposition” (http://www.prism.gatech.edu/~gtg874a/ imcomp.html) dan “Image Compression with Singular Value Decomposition” (http://peter/wreck.org/reports/Math4305/).

1.6 Sistematika Penulisan

Untuk memberikan gambaran tentang materi pada tulisan ini, maka materi tersebut disusun dalam sistematika tertentu. Sistematika penulisan tulisan ini adalah sebagai berikut:

BAB I: Pendahuluan

Berisi tentang latar belakang masalah, perumusan masalah, batasan masalah, maksud dan tujuan penulisan, serta tinjauan pustaka.

BAB II: Dasar Teori

Berisi tentang dasar-dasar teori yang melandasi teori dekomposisi nilai singular dari suatu matriks.

BAB III: Dekomposisi Nilai Singular

Berisi pembahasan mengenai dekomposisi nilai singular, pembuktian teorema eksistensi, sifat-sifat, contoh-contoh, serta penghitungan dekomposisi nilai singular suatu matriks menggunakan MATLAB

BAB IV: Citra dan Pengolahan Citra dalam MATLAB

Berisi tentang definisi citra secara umum dan pembahasan mengenai perintah-perintah pada MATLAB yang digunakan dalam pengolahan citra khususnya pemampatan citra yang berkaitan dengan dekomposisi nilai singular.

BAB V: Pemampatan Citra Menggunakan Dekomposisi Nilai Singular

Berisi konsep dasar pemampatan data dalam tinjauan matematis, khususnya dengan membawanya pada konsep dan karakteristik dekomposisi nilai singular dari suatu matriks melalui konstruksi permasalahan yang dihadapi. Juga definisi Rayleigh Quotient dari suatu matriks hermitian serta pembuktian teorema extended maximal principle.

BAB VI: Implementasi

Berisi tambahan penjelasan pemrograman di MATLAB, algoritma pemampatan data yang diterapkan dalam program MATLAB, dan melakukan uji coba pemampatan terhadap beberapa file citra.

BAB VII: Penutup

Berisi kesimpulan dan saran-saran yang didapatkan selama penyusunan tulisan ini.

Download Skripsi Lengkap Image Compression With Singular Value Decomposition


Posted Under Category: Matematika


4 Responses to Free Download Skripsi “Image Compression with Singular Value Decomposition”

  1. nani says:

    aslkm. maaf pa’, ap ada bukux Linear Algebra with Applications” (Scheick, J.T., 1997), dalam bentuk file???

    • Khaeroni says:

      Buku tersebut saya dapatkan dari perpustakaan FMIPA UGM (pinjam). Sedangkan untuk file/softcopy-nya saya tidak punya. Mungkin kalau di search di internet kayaknya ada…

  2. maratus sholihah says:

    Assalamu’alikum.Saya Mara MHS MTK Unair..blhkah saya minta script program matlab untuk dekomposisi SVD..

    • Khaeroni says:

      Wa’alaikumsalam. Script untuk dekomposisi ada di bagian lampiran. Tapi itu yang versi GUI, kalo yang versi text bisa pakai yang ini :

      function [Ar]=SVDGlobal(Citra,r);
      % Fungsi SVDGlobal.m
      % (c) Khaeroni, S.Si - Math IPB 2009/2011
      %
      % Deskripsi :
      % Script ini dibuat untuk mengimplementasikan metode pemampatan citra
      % menggunakan teknik SVD. Secara sederhana, metode kompresi citra dengan
      % menggunakan teknik SVD adalah memotong ekspansi citra sampai dengan
      % batas yang diinginkan.
      %
      % Cara penggunaan :
      % Ar = SVDGlobal(Citra,r)
      % SVDGlobal(Citra,r)
      % dimana
      % Ar : matriks citra hasil kompresi
      % Citra : nama file citra, lengkap dengan path-nya. Kecuali path sudah
      % didefinisikan pada MATLAB path, cukup dituliskan nama
      % file-nya saja.
      % r : parameter pemotongan rank
      %
      % Kebutuhan :
      % Script ini membutuhkan fungsi-fungsi yang terdapat pada toolbox image
      % processing. Jadi, pastikan toolbox image processing sudah terinstall
      % pada MATLAB Anda. Selain itu, script ini juga membutuhkan fungsi sbb:
      %
      % Built-in function
      % * svd.m
      %
      % Informasi :
      % * Tanggal dibuat = 08-02-2011
      % * Tanggal direvisi = 14-02-2011
      % * Revisi ke-2

      if (exist(Citra)==2)
      A = imread(Citra);
      figure('Name','Input image');
      imshow(A);
      else
      warndlg('The file does not exist.',' Warning ');
      Ar=[];
      return
      end

      if isrgb(A)
      if isa(A(:,:,1),'uint8')
      % The R layer
      red = double(A(:,:,1));
      [U,S,V] = svd(red);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imred = uint8(Ur*Sr*transpose(Vr));

      % The G layer
      green = double(A(:,:,2));
      [U,S,V] = svd(green);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imgreen = uint8(Ur*Sr*transpose(Vr));

      % The B layer
      blue = double(A(:,:,3));
      [U,S,V] = svd(blue);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imblue = uint8(Ur*Sr*transpose(Vr));

      Ar(:,:,1) = imred;
      Ar(:,:,2) = imgreen;
      Ar(:,:,3) = imblue;

      imwrite(Ar,strcat('Svd_r',num2str(r),'_',Citra));
      figure('Name','Output image');
      imshow(Ar);
      return;
      end

      if isa(A(:,:,1),'uint16')
      % The R layer
      red = double(A(:,:,1));
      [U,S,V] = svd(red);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imred = uint16(Ur*Sr*transpose(Vr));

      % The G layer
      green = double(A(:,:,2));
      [U,S,V] = svd(green);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imgreen = uint16(Ur*Sr*transpose(Vr));

      % The B layer
      blue = double(A(:,:,3));
      [U,S,V] = svd(blue);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imblue = uint16(Ur*Sr*transpose(Vr));

      Ar(:,:,1) = imred;
      Ar(:,:,2) = imgreen;
      Ar(:,:,3) = imblue;

      imwrite(Ar,strcat('Svd_r',num2str(r),'_',Citra));
      figure('Name','Output image');
      imshow(Ar);
      return;
      end

      if isa(A(:,:,1),'double')
      % The R layer
      red = double(A(:,:,1));
      [U,S,V] = svd(red);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imred = double(Ur*Sr*transpose(Vr));

      % The G layer
      green = double(A(:,:,2));
      [U,S,V] = svd(green);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imgreen = double(Ur*Sr*transpose(Vr));

      % The B layer
      blue = double(A(:,:,3));
      [U,S,V] = svd(blue);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);
      imblue = double(Ur*Sr*transpose(Vr));

      Ar(:,:,1) = imred;
      Ar(:,:,2) = imgreen;
      Ar(:,:,3) = imblue;

      imwrite(Ar,strcat('Svd_r',num2str(r),'_',Citra));
      figure('Name','Output image');
      imshow(Ar);
      return;
      end
      end

      if isgray(A)

      dvalue=double(A)+1;
      [U,S,V] = svd(dvalue);
      Ur=U(:,1:r);
      Vr=V(:,1:r);
      Sr=S(1:r,1:r);

      if isa(A,'uint8')
      Ar = uint8(Ur * Sr * transpose(Vr));
      end

      if isa(A,'uint16')
      Ar = uint16(Ur * Sr * transpose(Vr));
      end

      if isa(A,'double')
      Ar = (Ur * Sr * transpose(Vr));
      end

      imwrite(Ar,strcat('Svd_r',num2str(r),'_',Citra));
      figure('Name','Output image');
      imshow(Ar);
      return;
      end

      Jika ingin mencantumkan, harap menyertakan kredit di atas. Semoga bermanfaat.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Quranic Verse

"Allah membuat perumpamaan (yaitu) seorang laki-laki (budak) yang dimiliki oleh beberapa orang yang berserikat yang dalam perselisihan dan seorang budak yang menjadi milik penuh dari seorang laki-laki (saja); Adakah kedua [+] [Az-Zumar 39:29]


Categories


Portal Akademik


Portal E-Learning


My Affiliate



My Face-book


My Tweet


Yahoo! Messanger


My Count's