Jumat, 26 November 2010

Pengolahan Citra Steganografi menggunakan MatLab 7.1

disusun oleh: NURLENA (50407640 ) dan Eky Widiya Hastuti (50407313)

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.


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

6. Berikut ini adalah tampilan program setelah di RUN

a. Pada tampilan pertama memilih Hide Imege terlebih dahulu. Lalu klik select cover imege untuk meneluarkan image seperti gambar dibawah ini :

Maka akan mucul gambar seperti tampilan dibawah ini:

b. Pada tampilan pertama memilih Hide Imege terlebih dahulu. Lalu klik "select secret imege “ untuk meneluarkan image seperti gambar 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:

Tidak ada komentar:

Posting Komentar