Anda di halaman 1dari 5

[image processing]

June 11, 2012

IMAGE FADE IN AND FADE OUT WITH MATLAB

Saya iseng-iseng mencoba menggunakan matlab untuk manipulasi piksel menjadi citra fade in fade out dengan menggunakan Matlab. Bayangkan jika anda sedang menggunakan Ms Power Point sedang membuat slide show presentasi, lalu anda menambahkan animasi fade in dan fade out. Nah itulah yang saya coba untuk hadirkan di sini. Dalam demo ini, saya akan menghadirkan sebuah citra digital yang akan saya beri aksi fade out lalu isi piksel dari citra tersebut akan saya pindahkan ke matriks lain sehingga seolah-olah sedang fade in. Kita akan coba bahas perbagian dari program tersebut. Sebenarnya tidak begitu susah untuk mengerti dari program ini. Untuk memberikan gambaran dari cara kerja program ini, saya membuat sebuah program lain yang menunjukkan bagaimana pemindahan anggota matriks dari 1 matriks ke matriks lainnya terjadi. Konsep ini mirip sekali dengan konsep pada program fade in fade out citra digital. #Demo
% test program untuk pemindahan nilai dari matriks A % ke matriks B

Hal pertama yang dilakukan adalah menyiapkan matriks A, matriks buffer D dan matriks hasil B.
clear all; close all; clc a=[1,2,3;3,2,1;4,5,6] d=a; b=zeros(size(a,1),size(a,2));

Konsep dalam pemindahan ini sederhana. Kita melakukan pemindahan anggota matriks secara acak, untuk itu concern (perhatian) kita berada pada indeks dari matriks A. Matriks A memiliki ukuran m x n, namun oleh matlab bisa juga diakses dengan menggunakan skalar sehingga pembacaan dimulai dari nilai 1 hingga m x n. Untuk itu kita persiapkan sebuah vektor yang berisi indeks semua anggota matriks yang telah menjadi skalar (nilai indeksnya).

idx=(1:size(a,1)*size(a,2));

Lalu kita gunakan loop while dengan stopping condition berupa jumlah dari semua index =0. Karena pada program, kita akan menggantikan semua nilai dari vektor indeks

[janshendry@gmail.com{EE of Univ. Gadjah Mada, Indonesia}]

Page 1

[image processing]

June 11, 2012

menjadi 0 bila telah digunakan (telah dipindahkan isi dari matriks pada indeks tersebut) sehingga tidak lagi terjadi pengulangan pemanggilan. Stopping condition mensyaratkan agar looping berhenti ketika semua anggota vektor indeks telah terpakai atau nilai anggotanya menjadi 0.

m=1; N=2; while sum(idx)~=0 m=randi(length(idx),[1 N]); while idx(m)==0 m=randi(length(idx),[1 N]); end b(m)=d(m) a(m)=0 idx(m)=0; pause(1); end

Dalam program di atas, kita bisa mengambil jumlah anggota sebanyak yang kita inginkan. Jadi pemindahan piksel atau anggota matriks tidak hanya pada single point tetapi bisa multipoint. Keunggulannya adalah pemindahan bisa lebih cepat dan keindahannya terletak pada nilai random (acak) yang dibangkitkan. Sehingga kesannya fade in dan fade out menjadi lebih dramatis (). Kita juga meletakkan loop while yang lain di dalam loop utama. Tujuannya untuk mengecek apakah indeks yang sedang dipilih, sudah pernah dipanggil atau belum. Jika sudah, maka program akan meminta nilai indeks acak lainnya. Hal ini akan terus berulang hingga semua anggota vektor berhasil dipindahkan. Saya juga meletakkan timer selama 1 detik (pause) agar mudah dalam mengamati dinamika dari program saat runtime. Hasil eksekusi dari program di atas adalah

[janshendry@gmail.com{EE of Univ. Gadjah Mada, Indonesia}]

Page 2

[image processing]

June 11, 2012

Anda bisa memperhatikan dinamika dari perpindahan tiap anggota vektor ke vektor yang lain. Berdasarkan konsep tersebut, kita coba kembangkan program baru untuk fade in dan fade out citra digital. Perlu dicatat bahwa citra masukan merupakan citra RGB sehingga perlakuan dilakukan pada tiap komponen warna R, G, dan B. Sementara itu, konsep lainnya sama dengan program di atas. Program fade in dan fade out adalah
clear all; close all; clc %% Import image filename='image2.jpg'; a=imread(filename); imshow(a); %% %% Memisahkan komponen warna RGB a1=a(:,:,1); a2=a(:,:,2); a3=a(:,:,3); d1=a1; d2=a2; d3=a3; N=round(size(a,1)*size(a,2)/10); b1=zeros(size(a,1),size(a,2)); b2=zeros(size(a,1),size(a,2)); b3=zeros(size(a,1),size(a,2)); %%

[janshendry@gmail.com{EE of Univ. Gadjah Mada, Indonesia}]

Page 3

[image processing]

June 11, 2012

%% Operasi scanning dan pemindahan % terciptalah fade in fade out citra m=1; idx=(1:size(a,1)*size(a,2)); figure, while sum(idx)~=0 m=randi(length(idx),[1 N]); while idx(m)==0 m=randi(length(idx),[1 N]); end b1(m)=d1(m); b2(m)=d2(m); b3(m)=d3(m); b=uint8(cat(3,b1,b2,b3)); a1(m)=0; a2(m)=0; a3(m)=0; a=cat(3,a1,a2,a3); subplot(1,2,1), imshow(a); subplot(1,2,2), imshow(b); idx(m)=0; pause(.001); end %%

Hasil eksekusi dari program di atas agak susah ditampilkan untuk menunjukkan bahwa telah terjadi dinamika saat runtime. Tapi saya akan tampilkan beberapa citra contoh keberhasilan program. Perhatikan gambar-gambar di bawah ini:

[janshendry@gmail.com{EE of Univ. Gadjah Mada, Indonesia}]

Page 4

[image processing]

June 11, 2012

Tampak bahwa citra berhasil fade out dan fade in. Waktu yang dibutuhkan untuk citra berukuran yang cukup besar pun tidak terlalu besar. Semoga program ini bisa membantu anda, setidaknya untuk memahami manipulasi piksel pada citra digital. Semoga anda tidak melupakan untuk menggunakan copyright dari program pada artikel ini dan artikel-artikel saya yang lain.

@ thanks...

[janshendry@gmail.com{EE of Univ. Gadjah Mada, Indonesia}]

Page 5