i Universitas Kristen Maranatha
KOMPRESI CITRA MENGGUNAKAN
INDEPENDENT COMPONENT ANALYSIS
Lucky Khoerniawan / 0222104
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia
Email : khoerniawan.lucky@yahoo.com
ABSTRAK
Ukuran media penyimpanan data yang terbatas dan kebutuhan waktu transfer data yang cepat merupakan suatu masalah yang dihadapi dalam menyimpan dan mentransfer data. Data yang berukuran besar akan membutuhkan ruang penyimpanan yang besar, dan akan membutuhkan waktu yang lebih lama apabila ditransmisikan dalam jaringan komputer. Salah satu jenis file yang paling banyak membutuhkan proses kompresi adalah file citra. Kompresi merupakan salah satu cara yang dapat digunakan untuk memperkecil ukuran data, sehingga dapat membantu mengefisienkan penggunaan ruang media penyimpanan data dan mempercepat waktu transfer data.
ii Universitas Kristen Maranatha Kompresi dengan metoda ICA menghasilkan pengurangan jumlah bit dalam tiap piksel citra. Kualitas hasil dari kompresi cukup baik dilihat dari perbandingan citra kompresi dengan citra asli, terutama untuk citra natural yang memiliki matriks super-gaussian.
vii Universitas Kristen Maranatha
IMAGE COMPRESSION USING
INDEPENDENT COMPONENT ANALYSIS
Lucky Khoerniawan / 0222104
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia
Email : khoerniawan.lucky@yahoo.com
ABSTRAK
The size of data storage media is limited and the need for fast data transfer time is a problem faced in storing and transferring data. Large size of the data would require large storage space, and it takes longer when transmitted in a computer network. One of the most widely type of file requires a compression process is the image file. Compression is one way that can be used to reduce the size of data that can help streamline the use of space and speed up data storage media time data transfer.
Compression techniques and algorithms can be used for creating a duplicate of the original image file with different formats, but with a smaller size. To perform image compression methods that are available but can be used, one way of image compression is to use Independent Component Analysis (ICA). In compression using ICA, the matrix will be modified using the image of the
Matching Pursuit (MP) and the result is a matrix of non-gaussian. This underlying why ICA can be used for image compression.
viii Universitas Kristen Maranatha of the image compression ratio with the original image, especially for natural images with a matrix of super-gaussian.
viiii Universitas Kristen Maranatha
DAFTAR ISI
ABSTRAK………. i
ABSTRACT………... iii
KATA PENGANTAR………... v
DAFTAR ISI……….. vii
DAFTAR GAMBAR……….. ix
BAB I PENDAHULUAN I.1. Latar Belakang……… . 1
I.2. Identifikasi Masalah……….. 2
I.3 Tujuan………... 2
I.4 Pembatasan Masalah……….. 2
I.5 Sistimatika Laporan..………. 2
BAB II TEORI PENUNJANG II.1 Pengolahan Citra Digital... 4
II.1.1. KompresiCitra……… 6
II.2 Independent Component Analysis………. 8
II.2.1. Nongaussian……….. 12
II.2.2. Kurtosis………. 13
II .3. Algoritma FastICA……….. 14
II.4 Pemrograman Matlab... 16
II.4.1. Fungsi M-File………... 17
II.4.1.1. Aturan dan sifat M-file……….. 17
II.4.2. Sel Array dan Struktur………. 18
II.4.3. Struktur……… 20
II.4.4. Pengolahan Citra Menggunakan Matlab………. 20
viiiii Universitas Kristen Maranatha BAB III DIAGRAM ALIR KOMPRESI CITRA
III.1. Transform Coding Matching Pursuit………..…………..………… 25
III.2. Ekstraksi Fungsi Basis ICA……….………. 27
III.3. ICA Untuk Kompresi……….……….. 29
III.4. Kuantisasi………...……….. 30
III.5. Entropy Coding……….……….. 30
III.6. Dekompresi………. 31
BAB IV DATA DAN ANALISA IV.1. Pengujian……… 32
IV.2. Perangkat Lunak……… 32
IV.3. Perangkat Keras... 32
IV.4. Data Pengamatan dan Analisa……… 33
IV.4.1. Fungsi Basis ICA……….. 33
IV.4.2. Kompresi Citra……….. 34
IV.4.3. Perbandingan Incomplete, Complete, Over-complete…….. 35
IV.4.4. Pengaruh Kuantisasi Terhadap Kualitas Kompresi……….. 36
IV.4.5. Perbandingan Hasil Kompresi Dengan Citra Asli…………. 37
BAB V KESIMPULAN DAN SARAN V.1. Kesimpulan……… 40
V.2. Saran……….. 40
DAFTAR PUSTAKA……….. 41
ixii Universitas Kristen Maranatha
DAFTAR GAMBAR
Halaman
Gambar 2.1. Citra Digital………... 4
Gambar 2.2. Komposisi Warna RGB... 5
Gambar 2.3. Proses Konversi Citra Analog ke Citra Digital Beserta Pengirimannya... 7
Gambar 2.4. Proses Pencampuran Sinyal ICA... 9
Gambar 2.5. Diagram Blok ICA ………... 10
Gambar 2.6. Pengembangan ICA Dengan Komponen Bebas... 11
Gambar 3.1. Diagram Kompresi Secara Umum... 24
Gambar 3.2. Diagram Alir Algoritma Matching Pursuit………. 26
Gambar 3.3. Diagram Blok untuk Ekstraksi Fungsi Basis ICA……….. 28
Gambar 3.4. Diagram Blok Kompresi ICA……… 29
Gambar 4.1. Fungsi Basis Citra Natural……….………. 33
Gambar 4.2. Fungsi Basis Citra Wajah……… 33
Gambar 4.3. Fungsi Basis Citra Sidik Jari ………. 33
Gambar 4.4. Encoding Citra Lena ……….. 34
Gambar 4.5. ICA Incomplete, Complete, Over-complete……… 35
Gambar 4.6. Pengaruh Kuantisasi Terhadap Kualitas Kompresi………. 36
Gambar 4.7. Perbandingan Citra Asli Dengan Hasil Kompresi Citra Natural………. 37
Gambar 4.8. Perbandingan Citra Asli Dengan Hasil Kompresi Citra Wajah………. 38
function [A, W] = fpica(X, whiteningMatrix, dewhiteningMatrix, approach, ... numOfIC, g, finetune, a1, a2, myy, stabilization, ... epsilon, maxNumIterations, maxFinetune, initState, ... guess, sampleSize, displayMode, displayInterval, ... s_verbose);
%FPICA - Fixed point ICA. Algoritma utama FASTICA. %
% [A, W] = fpica(whitesig, whiteningMatrix, dewhiteningMatrix, approach, % numOfIC, g, finetune, a1, a2, mu, stabilization, epsilon,
% maxNumIterations, maxFinetune, initState, guess, sampleSize, % displayMode, displayInterval, verbose);
%
% Menampilkan independent component analysis menggunakan algoritma Hyvarinen's fixed point
%. Hasil adalah matriks A dan inversnya W. %
%
% Lihat juga FASTICA, FASTICAG, WHITENV, PCAMAT
% @(#)$Id: fpica.m,v 1.7 2005/06/16 12:52:55 jarmo Exp $
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Global variable untuk menghentikan perhitungan ICA dari GUI global g_FastICA_interrupt;
if isempty(g_FastICA_interrupt) clear global g_FastICA_interrupt; interruptible = 0;
else
interruptible = 1; end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Default values
if nargin < 3, error('Not enough arguments!'); end [vectorSize, numSamples] = size(X);
if nargin < 20, s_verbose = 'on'; end if nargin < 19, displayInterval = 1; end if nargin < 18, displayMode = 'on'; end if nargin < 17, sampleSize = 1; end if nargin < 16, guess = 1; end if nargin < 15, initState = 'rand'; end if nargin < 14, maxFinetune = 100; end if nargin < 13, maxNumIterations = 1000; end if nargin < 12, epsilon = 0.0001; end
if nargin < 11, stabilization = 'on'; end if nargin < 10, myy = 1; end
if nargin < 9, a2 = 1; end if nargin < 8, a1 = 1; end
if nargin < 7, finetune = 'off'; end if nargin < 6, g = 'pow3'; end
if nargin < 5, numOfIC = vectorSize; end % vectorSize = Dim if nargin < 4, approach = 'defl'; end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Memeriksa data
if ~isreal(X)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Memeriksa nilai verbose
switch lower(s_verbose) case 'on'
b_verbose = 1; case 'off' b_verbose = 0; otherwise
error(sprintf('Illegal value [ %s ] for parameter: ''verbose''\n', s_verbose)); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Memeriksa pendeketan
switch lower(approach) case 'symm'
approachMode = 1; case 'defl'
approachMode = 2; otherwise
error(sprintf('Illegal value [ %s ] for parameter: ''approach''\n', approach)); end
if b_verbose, fprintf('Used approach [ %s ].\n', approach); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Memeriksa nilai numOfIC
if vectorSize < numOfIC
error('Must have numOfIC <= Dimension!'); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Memeriksa sampleSize if sampleSize > 1
sampleSize = 1; if b_verbose
fprintf('Warning: Setting ''sampleSize'' to 1.\n'); end
if (sampleSize * numSamples) < 1000 sampleSize = min(1000/numSamples, 1); if b_verbose
fprintf('Warning: Setting ''sampleSize'' to %0.3f (%d samples).\n', ... sampleSize, floor(sampleSize * numSamples));
end end end
if b_verbose
if b_verbose & (sampleSize < 1)
fprintf(‘Menggunakan %0.0f%% dari sample random step.\n',sampleSize*100);
end end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Memeriksa nilai nonlinearity.
switch lower(g)
case 'tanh'
finetuningEnabled = 0; otherwise
error(sprintf('Illegal value [ %s ] for parameter: ''finetune''\n', ... finetune));
end
if b_verbose & finetuningEnabled
fprintf('Finetuning enabled (nonlinearity: [ %s ]).\n', finetune); end
switch lower(stabilization) case 'on'
stabilizationEnabled = 1; case 'off'
error(sprintf('Illegal value [ %s ] for parameter: ''stabilization''\n', ... stabilization));
end
if b_verbose & stabilizationEnabled fprintf('Using stabilized algorithm.\n'); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Parameter lainnya myyOrig = myy;
% Beberapa langkah untuk menkonvergen. failureLimit = 5;
usedNlinearity = gOrig; stroke = 0;
notFine = 1; long = 0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Memeriksa nilai initial state.
switch lower(initState) case 'rand'
initialStateMode = 0; case 'guess'
if size(guess,1) ~= size(whiteningMatrix,2) initialStateMode = 0;
if b_verbose
fprintf('Warning: ukuran initial state salah. Masukan initial secara random.\n'); end
else
initialStateMode = 1; if size(guess,2) < numOfIC if b_verbose
fprintf('Warning: Initial state hanya %d komponen. Menggunakan initial random yang lain.\n', size(guess,2));
end
guess(:, size(guess, 2) + 1:numOfIC) = ...
rand(vectorSize,numOfIC-size(guess,2))-.5; elseif size(guess,2)>numOfIC
guess=guess(:,1:numOfIC);
fprintf('Warning: Initial state terlalu besar. Colom dibuang.\n'); end
if b_verbose, fprintf(‘Mengunakan initial state.\n'); end end
otherwise
error(sprintf('Illegal value [ %s ] untuk parameter: ''initState''\n', initState)); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch lower(displayMode) case {'off', 'none'}
usedDisplay = 0; case {'on', 'signals'} usedDisplay = 1;
if (b_verbose & (numSamples > 10000))
fprintf('Warning: Data vectors terlalu panjang. Plotting membutuhkan waktu yang lama.\n');
end
if (b_verbose & (numOfIC > 25))
fprintf('Warning: Terlalu banyak sinyal yang diplot. Plot akan terlihat jelek.\n'); end
case 'basis' usedDisplay = 2;
if (b_verbose & (numOfIC > 25))
fprintf('Warning: Terlalu banyak sinyal yang diplot. Plot akan terlihat jelek.\n'); end
case 'filters' usedDisplay = 3;
if (b_verbose & (vectorSize > 25))
fprintf('Warning: Terlalu banyak sinyal yang diplot. Plot akan terlihat jelek.\n'); end
otherwise
error(sprintf('Illegal value [ %s ] untuk parameter: ''displayMode''\n', displayMode)); end
% The displayInterval tidak boleh kurang dari 1... if displayInterval < 1
displayInterval = 1; end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if b_verbose, fprintf('Starting ICA calculation...\n'); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SYMMETRIC APPROACH if approachMode == 1,
% set beberapa parameter yang lain... usedNlinearity = gOrig;
A = zeros(vectorSize, numOfIC); % Dewhitened basis vectors. if initialStateMode == 0
% ambil orthonormal initial vectors secara random. B = orth (randn (vectorSize, numOfIC));
elseif initialStateMode == 1
% Gunakan initial vector sebagai initial state B = whiteningMatrix * guess;
% actual fixed-point iteration loop. for round = 1:maxNumIterations + 1, if round == maxNumIterations + 1,
fprintf('No convergence after %d steps\n', maxNumIterations); fprintf(Plot kemungkinan salah.\n');
if ~isempty(B)
% Symmetric orthogonalization. B = B * real(inv(B' * B)^(1/2));
W = B' * whiteningMatrix; A = dewhiteningMatrix * B; else
if (interruptible & g_FastICA_interrupt) if b_verbose
fprintf('\n\nCalculation interrupted by the user\n'); end
if ~isempty(B)
% Symmetric orthogonalization.
if b_verbose, fprintf('Initial convergence, fine-tuning: \n'); end; notFine = 0;
elseif stabilizationEnabled
if (~stroke) & (1 - minAbsCos2 < epsilon) if b_verbose, fprintf('Stroke!\n'); end; stroke = myy;
myy = .5*myy;
if mod(usedNlinearity,2) == 0
usedNlinearity = usedNlinearity + 1; end
elseif stroke myy = stroke; stroke = 0;
if (myy == 1) & (mod(usedNlinearity,2) ~= 0) usedNlinearity = usedNlinearity - 1;
end
elseif (~long) & (round>maxNumIterations/2)
if b_verbose, fprintf('Taking long (reducing step size)\n'); end; long = 1;
myy = .5*myy;
if mod(usedNlinearity,2) == 0
usedNlinearity = usedNlinearity + 1; end
% There was and may still be other displaymodes... % 1D signals
B = (X * (( X' * B) .^ 3)) / numSamples - 3 * B;
Xsub=X(:, getSamples(numSamples, sampleSize)); B = (Xsub * (( Xsub' * B) .^ 3)) / size(Xsub,2) - 3 * B; case 13
% Optimoitu
Ysub=X(:, getSamples(numSamples, sampleSize))' * B; Gpow3 = Ysub .^ 3;
case 30
ones(size(B,1),1) * sum(dGauss)... .* B / numSamples ;
Xsub=X(:, getSamples(numSamples, sampleSize)); U = Xsub' * B;
case 42
Xsub=X(:, getSamples(numSamples, sampleSize)); B = (Xsub * ((Xsub' * B) .^ 2)) / size(Xsub,2);
error('Code for desired nonlinearity not found!'); end
switch usedDisplay case 1
% Ambil intial sembarang kemudian ortogonalkan % dengan mengikuti aturan
if initialStateMode == 0 w = randn (vectorSize, 1); elseif initialStateMode == 1
w=whiteningMatrix*guess(:,round); end
if (interruptible & g_FastICA_interrupt) if b_verbose
fprintf('\n\nCalculation interrupted by the user\n'); end
fprintf('\nComponent number %d did not converge in %d iterations.\n', round, maxNumIterations);
end
round = round - 1;
numFailures = numFailures + 1; if numFailures > failureLimit if b_verbose
fprintf('Too many failures to converge (%d). Giving up.\n', numFailures); end
% numFailures > failurelimit break;
end
% i == maxNumIterations + 1 else
% if notFine
if i >= endFinetuning
usedNlinearity = gFine; myy = myyK * myyOrig;
endFinetuning = maxFinetune + i;
end
%if finetuningEnabled & notFine elseif stabilizationEnabled
if (~stroke) & (norm(w - wOld2) < epsilon | norm(w + wOld2) < ... epsilon)
stroke = myy;
if b_verbose, fprintf('Stroke!'); end; myy = .5*myy;
if mod(usedNlinearity,2) == 0
usedNlinearity = usedNlinearity + 1;
elseif (notFine) & (~long) & (i > maxNumIterations / 2) if b_verbose, fprintf('Taking long (reducing step size) '); end; long = 1;
myy = .5*myy;
if mod(usedNlinearity,2) == 0
% tanh
Xsub=X(:,getSamples(numSamples, sampleSize));
error('Code for desired nonlinearity not found!'); end
if b_verbose, fprintf('Done.\n'); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Plot
if (usedDisplay > 0) & (rem(round-1, displayInterval) ~= 0) switch usedDisplay
case 1
% 1D signals temp = X'*B;
case 2
% ... and now there are :-) % 1D basis
icaplot('dispsig',A'); drawnow;
case 3
% ... and now there are :-) % 1D filters
icaplot('dispsig',W); drawnow;
otherwise end end end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%
% Cek data untuk security if ~isreal(A)
if b_verbose, fprintf('Warning: Memindahkan data A = real(A);
W = real(W); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Subfunction
% Menghitung tanh linier lebih cepat dari pada Matlab tanh. function y=tanh(x)
y = 1 - 2 ./ (exp(2 * x) + 1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1 Universitas Kristen Maranatha BAB 1
PENDAHULUAN
I.1. Latar Belakang Masalah
Perkembangan pengiriman data saat ini telah mengalami kemajuan yang cukup pesat. Dengan hadirnya jaringan internet dan didukung penyedia jaringan (Internet Service Provider), maka pengiriman data dapat dilakukan tanpa mengenal batas jarak.
Akan tetapi pengiriman data memiliki kendala yaitu ukuran data yang akan dikirim terlalu besar. Data untuk citra adalah salah satu data yang memiliki ukuran yang besar. Sehingga memerlukan suatu cara agar dapat meminimalkan ukuran data. Teknik kompresi merupakan salah satu cara untuk memperkecil ukuran data.
Kompresi citra merupakan hal penting dalam terapan-terapan seperti transmisi data dan penyimpanan dalam basis data. Tujuannya adalah mengurangi kapasitas penyimpanan tanpa menghilangkan kualitas citra secara signifikan. dari kebanyakan citra adalah korelasi yang erat (highly correlated) antara satu piksel dengan piksel tetangganya. Kompresi dilakukan dengan pengalih ragaman data atau memproyeksikan citra terhadap pustaka fungsi basis kemudian melakukan thresholding.
Saat ini teknik kompresi citra telah banyak berkembang. Teknik kompresi citra untuk generasi selanjutnya lebih dioptimalkan agar kualitas hasil kompresi yang dihasilkan mendekati citra aslinya. Salah satu cara kompresi citra dengan tetap menjaga kualitas hasil agar mendekati aslinya adalah menggunakan Independent Component Analysis (ICA).
ICA adalah suatu metode penemuan kembali sekelompok sinyal bebas dari campuran sinyal-sinyal, yang proses pencampurannya tidak diketahui. ICA dapat dimodelkan sebagai vektor acak dari X yang didapat dari:
x = As
2 Universitas Kristen Maranatha Bila ukuran kolom baris M > N pada matriks A (over-complete), maka matriks s hanya memiliki sedikit komponen nilai yang signifikan. Fakta ini mendasari potensi kegunaan dari ICA untuk kompresi dan denoising citra. Kasus over-complete sering ditemukan pada citra natural. Sehingga ICA dapat mengkompresi citra natural menghasilkan kualitas citra yang baik.
Pada tugas akhir ini akan dibuat sebuah program kompresi data dengan menggunakan metoda Independent Component Analysis (ICA).
I.2. Identifikasi Masalah
Masalah dalam tugas akhir ini adalah:
Bagaimana caranya metoda ICA dapat mengkompresi suatu data citra?
Bagaimana hasil dari kompresi dari metoda ICA?
I.3. Tujuan
Tujuan tugas akhir ini adalah untuk membuat program yang dapat menggunakan algoritma ICA untuk kompresi data citra.
I.4. Pembatasan Masalah
Tugas akhir ini diberikan batasan sebagai berikut :
Pembuatan program hanya untuk kompresi data citra.
Program dibuat menggunakan MATLAB.
Input citra memiliki format BMP dengan contoh citra natural (Lena), wajah, dan sidik
jari.
Citra input diambil dari internet sesuai dengan referensi.
1.5. Sistematika Laporan
Agar dalam penulisan laporan Tugas Akhir ini lebih terarah dan teratur serta terstruktur maka akan dibagi dalam:
Bab I : Pendahuluan
Dalam bab ini dibahas latar belakang, tujuan, identifikasi penelitian, pembatasan masalah serta sistematika laporan.
3 Universitas Kristen Maranatha Berisi teori-teori dasar yang mendukung laporan ini.
Bab III : Kompresi Citra Menggunakan Independent Component Analysis
Bab ini membahas perancangan dan pembuatan program untuk kompresi citra dengan metoda Independent Component Analysis dengan menggunakan MATLAB sebagai bahasa pemrogramannya.
Bab IV : Hasil Kompresi Citra
Bab ini membahas hasil dari kompresi citra dengan menggunakan program yang telah dirancang sebelumnya beserta analisis dan keterangan yang mendukung hasil pemrograman.
Bab V : Kesimpulan dan Saran
40 Universitas Kristen Maranatha BAB V
KESIMPULAN DAN SARAN
V.1. Kesimpulan
Dari analisa yang telah dilakukan maka dapat diambil kesimpulan:
Hasil kompresi ICA adalah pengurangan jumlah bit dalam tiap piksel citra input, dengan format input citra BMP yang memiliki 8 bit dalam tiap piksel.
Kualitas hasil kompresi pada citra natural yang memiliki dictionary overcomplete
lebih baik daripada citra wajah atau sidik jari.
Karena sifat non-ortogonal overcomplete, proses kuantisasi dilakukan sebelum transformasi agar menampilkan hasil yang lebih baik.
V.2. Saran
Citra untuk training yang digunakan untuk mendapatkan fungsi basis ICA, lebih
bervariasi dan lebih banyak.
Untuk pengembangan lebih lanjut, ICA dilakukan pada citra yang memiliki dictionary incomple dan complete.
41 Universitas Kristen Maranatha
DAFTAR PUSTAKA
[1] Oja,E., & Hyvarian, A. Independent Component Analysis : Algorithm and Application. 2000. Neural Networks Research Centre, Helsinki University of Technology. 14 juli 2009.
< http://www.cs.helsinki.fiua/hyvaeinpapers/NN00new.pdf>.
[2] James V.Stone., Independent Component Analysis A tutorial Introduction. 19 November 2009.
[3] James V.Stone., Independent Component Analysis: an introduction”, TRENDS in Cognitive Sciences Vol. 6 No. 2 February 2002.
[4] A. Hyvrinen, R. Cristescu, and E. Oja, “A fast algorithm for estimating overcomplete ica bases for image windows," in Int. Joint Conf. on Neural Networks, pp. 894{899, (Washington, D.C.), 1999.
[5] A. J. Ferreira and M. A. T. Figueiredo, “Class-adapted image compression using independent component analysis," in International Conference on Image Processing (ICIP) Barcelona, Spain (September 2003)., 1,pp. 625{8, Sept. 2003.
[6] A. J. Ferreira and M. A. T. Figueiredo, “On the use of independent component analysis for image compression," Signal Processing: Image Communication 21(5), pp. 378{389, 2006.
[7] P. Comon, “Independent component analysis, a new concept?," Signal Processing 36(3), pp. 287{314, 1994.
[8] http://nhielma.wordpress.com/2008/11/25/teori-dasar-pengolahan-citra/
[9] http://digilib.petra.ac.id/jiunkpe/s1/elkt/2005/jiunkpe-ns-s1-2005-23401056-8661-independent-chapter2.pdf