disusun oleh: Eky Widiya Hastuti (50407313), Nurlena ( )
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
1. Pertama buat
rancangan GUI terlebih dahulu dengan cara klik File pada Menu bar-New-GUI-Blank
GUI-Ok.
2.
Selanjutnya
buatlah sebuah rancangan GUI, jika sudah selesai simpan file dengan ekstensi
(.fig). berikut ini merupakan tampilan dari rancangan GUI :
3. Untuk merubah backgraound nama pada push button
dengan menggunakan :
4.
Kemudian pada push button select cover image, klik kanan-View
Callback-Callback.
5.
Maka 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
a.
Pada tampilan pertama memilih Hide Imege terlebih dahulu. Lalu
klik select cover imege untuk meneluarkan image seperti gambar dibawah ini :
b.
Pada tampilan pertama memilih Hide Imege terlebih dahulu. Lalu klik
"select secret imege “ untuk meneluarkan image seperti gambar dibawah ini :
Maka akan muncul gambar seperti tampilan dibawah ini:
c.
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:
d.
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 :
Maka akan muncul gambar seperti tampilan dibawah ini:
e.
Jika gambar pertama muncul. Kemudian ingin memunculkan gambar
kedua dengan meng-klik Recover maka hasilnya akan tampilan seperti dibawah ini:
hahaha panjang na...
BalasHapuskasih contoh program sederhana matlab untuk pemula
BalasHapusko ga jalan y matlabnya,eror..
BalasHapusbs dikirim gx mb filenya via email
agung.triayudi@gmail.com
mksh y mb
salam kenal
BalasHapusteh eky yang baik, aku minta scripnya dong, aku ga bisa tuh scripnya, tolong email yah ke zaymtsn@yahoo.com
nuhun terima kasih. ditunggu
salam kenal teteh..kok gak bisa ya dtmpat saya.. mohon bimbingannya.. kalo boleh minta skripnya teh.. email ke jenterpro@gmail.com makasih sebelumnya.. :-D
BalasHapusTeteh, sama ky yg komen sblm2nya, mohon bimbingannya nih...
BalasHapuskalau boleh mau skalian minta juga dikirimin ke edisuryana09@gmail.com
makasih teteh.. :-D
mbak tolong dong kirimkan scriptnya ke email saya. dinnayukarunniawati@gmail.com
BalasHapustolong ya mbak sedang butuh banget nih
Mbak, kok eror ya scriptnya, bisa dikirim ke email saya aribandung@yahoo.com tks Mbak
BalasHapusminta scriptx dong. error neh :(
BalasHapusmohon bntuuanx..
oya ne alamt emailx : zhary_bluezpiinn@yahoo.com
BalasHapusprogramnya kok error, bisa minta tolong scriptnya mbak, ke: thomas.hardy@bmkg.go.id, makasih
BalasHapuseror tuh :v pencerahan dong
BalasHapusarifnugroho666@gmail.com
ko error ia scriptnya, tolong kirim ke email ajihadycandra@gmail.com dong
BalasHapuska ko ga bs ya :( bs mnt script yg tnggl copy paste ga :D
BalasHapuske email sy ya she.al4gna@gmail.com
makasih ya :)
ditunggu lho
kok ga bisa ya.. tolong kirim kodingnya ke okkyfariz.03@gmail.com please.. makasih
BalasHapusgagal terus deh saya, boleh minta source codenya gak ? tolong send kesini yaa mr.kirwanto@gmail.com. Terimakasih banyak :)
BalasHapuskeren makasih
BalasHapusmas saya boleh minta scriptnya? hehe
Hapusviki.trinanda27@gmail.com
Asslamualaikum mbak? boleh saya minta scriptnya? hehe
BalasHapusAsslamualaikum mbak? boleh saya minta scriptnya? hehe
BalasHapusviki.trinanda27@gmail.com
assalamulaikum...
BalasHapusmba aku boleh minta file masternya gak ya buat bljar ?
mba kok error di function.nya yah.. itu kenapa??
BalasHapuskalo berkenan boleh kirimkan scriptnya ke rokhanahpujilestari1@gmail.com . terimakasih sebelumnya..