- M.Fikri (50409011)
- Octa Haris (50409604)
Sabtu, 24 November 2012
Definisi Dasar
Pengolahan citra adalah salah satu cabang dari ilmu
informatika. Pengolahan citra berkutat pada usaha untuk melakukan transformasi
suatu citra /gambar menjadi citra lain dengan menggunakan teknik tertentu.
Citra adalah gambar dua dimensi yang dihasilkan dari gambar analog dua
dimensi yang kontinu menjadi gambar diskrit melalui proses sampling.
Gambar analog dibagi menjadi N baris dan M kolom sehingga menjadi gambar
diskrit. Persilangan antara baris dan kolom tertentu disebut dengan piksel.
Contohnya adalah gambar/titik diskrit pada baris n dan kolom m disebut dengan
piksel [n,m].
Steganografi adalah seni dan ilmu menulis pesan tersembunyi atau menyembunyikan pesan dengan
suatu cara sehingga selain si pengirim dan si penerima, tidak ada seorangpun
yang mengetahui atau menyadari bahwa ada suatu pesan rahasia. Sebaliknya, kriptografi menyamarkan arti dari suatu pesan, tapi
tidak menyembunyikan bahwa ada suatu pesan. Kata "steganografi"
berasal dari bahasa Yunani steganos,
yang artinya “tersembunyi atau terselubung”, dan graphein, “menulis”.
Pada umumnya, pesan steganografi muncul dengan rupa lain
seperti gambar, artikel, daftar belanjaan, atau pesan-pesan lainnya. Pesan yang
tertulis ini merupakan tulisan yang menyelubungi atau menutupi. Contohnya,
suatu pesan bisa disembunyikan dengan menggunakan tinta yang tidak terlihat di
antara garis-garis yang kelihatan.
Teknik steganografi meliputi banyak sekali metode komunikasi
untuk menyembunyikan pesan rahasia (teks atau gambar) di dalam berkas-berkas
lain yang mengandung teks, image, bahkan audio tanpa menunjukkan
ciri-ciri perubahan yang nyata atau terlihat dalam kualitas dan struktur dari
berkas semula. Metode ini termasuk tinta yang tidak tampak, microdots,
pengaturan kata, tanda tangan digital, jalur tersembunyi dan komunikasi
spektrum lebar.
Tujuan dari steganografi adalah merahasiakan atau
menyembunyikan keberadaan dari sebuah pesan tersembunyi atau sebuah informasi.
Dalam prakteknya, kebanyakan pesan disembunyikan dengan membuat perubahan tipis
terhadap data digital lain yang isinya tidak akan menarik perhatian dari
penyerang potensial, sebagai contoh sebuah gambar yang terlihat tidak
berbahaya. Perubahan ini bergantung pada kunci (sama pada kriptografi) dan
pesan untuk disembunyikan. Orang yang menerima gambar kemudian dapat
menyimpulkan informasi terselubung dengan cara mengganti kunci yang benar ke
dalam algoritma yang digunakan.
Pada metode steganografi cara ini sangat berguna jika
digunakan pada cara steganografi komputer karena banyak format berkas digital
yang dapat dijadikan media untuk menyembunyikan pesan. Format yang biasa
digunakan di antaranya:
·
Format
image : bitmap (bmp), gif, pcx, jpeg, dll.
·
Format
audio : wav, voc, mp3, dll.
·
Format
lain : teks file, html, pdf, dll.
Kelebihan steganografi jika dibandingkan dengan kriptografi
adalah pesan-pesannya tidak menarik perhatian orang lain. Pesan-pesan berkode
dalam kriptografi yang tidak disembunyikan, walaupun tidak dapat dipecahkan,
akan menimbulkan kecurigaan. Seringkali, steganografi dan kriptografi digunakan
secara bersamaan untuk menjamin keamanan pesan rahasianya.
Langkah – Langkah Pembuatan Program MatLab Steganografi:
Untuk
membuat program stegano pada matlab,kita instal matlab terlebih dahulu. Cara
menginstalnya cukup mudah, pertama kita ekstrak dan pilih matlab.exe sehingga
akan tampil seperti gambar berikut :
1. penginstalan matlab
Setelah tampil gambar
di atas kita pilih pilihan yg paling bawah “instal whithout using the internet” setelah
itu klik next.
Dan setelah di next maka akan muncul
tampilan berikutnya kita pilih yes, seperti pada gambar diatas lalu klik next.
Setelah itu ada dua pilihan,pilih yang
paling atas dan masukan serial number. Setelah serial sudah di masukan kita
klik next.
Setelah memasukan seril number dan klik
next maka akan masuk pada gambar di atas, pilih typical dan klik next. Setelah kita next maka akan tampil
dimana tempat penginstalan itu
diletakan, disini saya menaruh di C:/program file/… dan setelah itu klik next
kembali.
Setelah penginstalan selesai maka akan
muncul gambar diatas kita klik next saja.
Setelah itu kita ceklis pilihan “active
matlab” seperti gambar diatas dan kli next
dan nantinya akan ada 2 pilihan lagi kita pilih
pilihan yang paling bawah. Kemudian klik next
Nah pada gambar diatas kita pilih
pilihan “provide thr path” disini kita disuruh memasukan crack path yang sudah
kita download,klok browse -> pilih lokasi pathnya -> open-> next. Setelah langkah diatas sudah di kerjakan
dengan benar maka selesai lah penginstalan matlab untuk mengakhirinya klik
finish sekarang kita bias menggunakan aplikasi matlab dengan enjoy.
2. Cara pembuatan
Setelah selesai
penginstalan kita buat terlebih dah lu modelnya dengan cara klik new->
GUI->blank Gui -> ok. Untuk
tampilan model awal saya membuat seperti gambar berikut:
Pada tampilan diatas
saya membuatnya dengan push button,radio button dan axes. Penggunaan axes digunakan sebagai tampilan
gambar, dan push button untuk mengeksekusi gambarnya dan radio button di
gunakan sebaigai menampilkan sebuah gambar tersembunyi jika kita ingin
membukanya kembali. Setelah selai membuat model lalu save dengan ekstensi .fig.
Kemudian pada push button select cover
image, klik kanan-editor. Maka nanti akan muncul tampilan editor untuk
memasukkan script pendeteksian tepi untuk program Matlab yang kami buat.
Perintah untuk
memanggil “'Select secret Image”
lsb=1;
[handles.cfilename,handles.cpathname] = uigetfile( {'*.jpg';'*.png';'*.bmp';'*.*'}, ...
'Select cover image');
axes(handles.axes1);
I=imread([handles.cpathname
handles.cfilename]);
imageinfo_cover=imfinfo([handles.cpathname
handles.cfilename]);
val_red=I(:,:,1);
perintah untuk memanggil “select
cover image”
lsb=1;
[handles.cfilename,handles.cpathname] = uigetfile( {'*.jpg';'*.png';'*.bmp';'*.*'}, ...
'Select cover image');
axes(handles.axes1);
I=imread([handles.cpathname
handles.cfilename]);
imageinfo_cover=imfinfo([handles.cpathname
handles.cfilename]);
val_red=I(:,:,1);
if handles.rad2==1
emb=zeros(3,7);
emb(1,:)=bitget(val_red(1,50:56),lsb);
emb(2,:)=bitget(val_red(1,57:63),lsb);
emb(3,:)=bitget(val_red(1,64:70),lsb);
emb_double=bi2de(emb);
emb=char(emb_double);
emb=emb';
if ~strcmp(emb,'yes')
axes(handles.axes1);cla
errordlg(['No hidden
image in ' handles.cfilename],'Select another Image');
else
image(I),axis off
set(handles.pushbutton3,'Enable','on');
end
else
image(I),axis off
image_height=imageinfo_cover.Height;
image_width=imageinfo_cover.Width;
handles.equ=((image_height-1)*(image_width-mod(image_width,8)))/8;
set(handles.pushbutton2,'Enable','on');
end
guidata(hObject,
handles);
Perintah untuk memanggil “'Select
secret Image”
if handles.rad2==1
else
[handles.sfilename
handles.spathname]=uigetfile({'*.jpg';'*.png'},'Select secret Image');
imageinfo_cover=imfinfo([handles.spathname
handles.sfilename]);
image_height=imageinfo_cover.Height;
image_width=imageinfo_cover.Width;
equ=image_width*image_height;
if equ <=handles.equ
I=imread([handles.spathname
handles.sfilename]);
set(handles.pushbutton3,'Enable','on');
axes(handles.axes2);
image(I);axis off
else
errordlg('Select another Image','Image too
big');
end
guidata(hObject, handles);
end
untuk menggunakan push button3 “hide”
if handles.rad1==1
lsb=1;
I=imread([handles.cpathname
handles.cfilename]);
imageinfo_cover=imfinfo([handles.cpathname
handles.cfilename]);
image_height=imageinfo_cover.Height;
image_width=imageinfo_cover.Width;
val_red=I(:,:,1);
%get
the red color matrix
I_sec=imread([handles.spathname
handles.sfilename]);
imageinfo_sec=imfinfo([handles.spathname handles.sfilename]); %get
information of secret image
i_sec_height=imageinfo_sec.Height; % secret image height
i_sec_width=imageinfo_sec.Width; % secret image width
val_red=double(val_red);
%hide the
secret image height
i_sec_height_bin=de2bi(i_sec_height,16);
val_red(1,1:16)=bitset(val_red(1,1:16),1,i_sec_height_bin);
%hide the
secret image width
i_sec_width_bin=de2bi(i_sec_width,16);
val_red(1,17:32)=bitset(val_red(1,17:32),1,i_sec_width_bin);
%hide an
identity, that this image has a secret image.
emb=('yes');
emb_bin=de2bi(double(emb));
val_red(1,50:56)=bitset(val_red(1,50:56),lsb,emb_bin(1,1:7));
val_red(1,57:63)=bitset(val_red(1,57:63),lsb,emb_bin(2,1:7));
val_red(1,64:70)=bitset(val_red(1,64:70),lsb,emb_bin(3,1:7));
I(:,:,1)=val_red;
i_sec_length=i_sec_height*i_sec_width;
I_sec_bin=zeros(i_sec_length*3,8);
I_sec_bin=de2bi(double(I_sec)); %convert the secret image to
binary
Ipix_counter=1; %set a
counter for the pixels
len=mod(image_width,8);
len=image_width-len;
for
count_hi=2:image_height
count_wi=1;
for count_wi=1:8:len-8
val_red(count_hi,count_wi:count_wi+7)=...
bitset(val_red(count_hi,count_wi:count_wi+7),1,I_sec_bin(Ipix_counter,:));
Ipix_counter=Ipix_counter+1;
if
Ipix_counter>i_sec_length*3
break;
end
end
if Ipix_counter>i_sec_length*3
break;
end
end
I(:,:,1)=val_red;
[filename,
pathname] = uiputfile('.png', 'Save Image as');
imwrite(I,[pathname
filename ],'png');
set(handles.pushbutton3,'Enable','off');
set(handles.pushbutton2,'Enable','off');
axes(handles.axes1);cla
axes(handles.axes2);cla
msgbox(['The secret
image ' handles.sfilename ' is in ' filename]);
else
%case 2:Dercyption(Reocver the
secret image from cover image)
lsb=1;
I=imread([handles.cpathname
handles.cfilename]);
imageinfo_cover=imfinfo([handles.cpathname handles.cfilename]);%cover
image information
image_height=imageinfo_cover.Height; %cover image height
image_width=imageinfo_cover.Width; %cover image width
val_red=I(:,:,1); %get the
red color matrix
%extract the secret image height and width from 1st 32pixel
of cover image
i_sec_height=bi2de(bitget(double(val_red(1,1:16)),1));
i_sec_width=bi2de(bitget(double(val_red(1,17:32)),1));
i_sec_length=i_sec_height*i_sec_width;
I_sec_bi=zeros(i_sec_length*3,8);%initialize
a zero matrix
Ipix_counter=1; %counter
for pixels
len=mod(image_width,8);
len=image_width-len;
for
count_hi=2:image_height
count_wi=1;
for count_wi=1:8:len-8
I_sec_bi(Ipix_counter,1:8)=...
bitget(val_red(count_hi,count_wi:count_wi+7),1);
Ipix_counter=Ipix_counter+1;
if Ipix_counter>i_sec_length*3
break;
end
end
if Ipix_counter>i_sec_length*3
break;
end
end
image1=reshape(bi2de(I_sec_bi),i_sec_height,i_sec_width,3);
image1=uint8(image1);
rn=num2str(rand(1,1));
imwrite(image1,[num2str(rn(3:end))
'.png'],'png');
axes(handles.axes2);
image(image1);axis
off
msgbox(['The image ' rn(3:end) '.png is
extracted from ' handles.cfilename ' ,it is in your current directory']);
end
switch get(hObject,'Tag') % Get Tag of selected object
case 'radiobutton1'
handles.rad1=1;
handles.rad2=0;
guidata(hObject, handles);
% code piece when radiobutton1 is
selected goes here
axes(handles.axes1);cla
Perintah
dibawah ini menggunakan radio button
axes(handles.axes2);cla
set(handles.pushbutton3,'String','Hide');
set(handles.pushbutton3,'Enable','on');
set(handles.pushbutton2,'Enable','off');
set(handles.pushbutton1,'Enable','on');
case 'radiobutton2'
% code piece when radiobutton2 is
selected goes here
% ...
handles.rad2=1;
handles.rad1=0;
guidata(hObject, handles);
axes(handles.axes1);cla
axes(handles.axes2);cla
set(handles.pushbutton3,'String','Recover');
set(handles.pushbutton3,'Enable','off');
set(handles.pushbutton2,'Enable','off');
set(handles.pushbutton1,'Enable','on');
end
Berikut ini adalah tampilan program setelah di RUN
Pada tampilan pertama memilih Hide Imege
terlebih dahulu. Lalu klik select cover imege untuk mengeluarkan image seperti
gambar dibawah ini :
Maka akan mucul gambar seperti tampilan
dibawah ini:
Lalu klik "select secret imege “ untuk meneluarkan image seperti gambar dibawah ini :
Selanjutnya menyembunyikan kedua foto
yang sudah ada dengan meng-klik “hide” maka foto akan tersembunyi dengan format
.PNG , tetapi yang tersimpan hanya yang ada di select secret image seperti
tampilan dibawah ini:
Selanjutnya mengeluarkan foto yang sudah
di hiden dengan meng-klik Recover Imege terlebih dahulu. Lalu klik select cover
imege Open dengan type .PNG untuk meneluarkan image seperti gambar
dibawah ini :
Jika gambar pertama muncul. Kemudian ingin memunculkan gambar kedua dengan meng-klik Recover maka hasilnya akan tampilan seperti dibawah ini:
Langganan:
Postingan (Atom)