2014-01-27 2 views
0

그림 3이 표시된 후에이 코드에 문제가 있습니다. 두 이미지가 추가되지 않습니다. 그것을 고치는 방법? 이 프로그램은이미지 스테 가노 그래피 - 이미지 내 이미지 숨기기

%covername = input('Enter image file name with extension (like jennifer.bmp): ', 's'); 
%read in message image filename 
%messagename = input('Enter message image file name with extension: ', 's'); 
%open cover and message image files 
cover = imread('hand.jpg'); 
message = imread('coins.png'); 
%display on screen the two images 
figure(1), imshow(cover); title('Original Image (Cover Image)'); 
figure(2), imshow(message);title('Image to Hide (Message Image)'); 
%change to double to work with addition below 
cover=double(cover); 
message=double(message); 
%imbed = no. of bits of message image to embed in cover image 
imbed=4; 
%shift the message image over (8-imbed) bits to right 
messageshift=bitshift(message,-(8-imbed)); 
%show the message image with only embed bits on screen 
%must shift from LSBs to MSBs 
showmess=uint8(messageshift); 
showmess=bitshift(showmess,8-imbed); 
figure(3),imshow(showmess);title('4 Bit Image to Hide'); 
%now zero out imbed bits in cover image 
coverzero = cover; 
for i=1:imbed 
coverzero=bitset(coverzero,i,0); 
end 
cove=uint8(coverzero); 
%now add message image and cover image 
stego = imadd(cove,messageshift); 
figure(4),imshow(stego);title('Stego image'); 
%save files if need to 
%4 bit file that was embedded = same as file extracted 
imwrite(showmess,'showmess4.bmp');   
%use bmp to preserve lower bits 
%jpg will get rid of them 
%stego file imwrite(stego,'stego4.bmp'); 

답변

1

내가 문제가 imadd 당신에게 오류를 제공하고 있다고 생각 표지 이미지 파일 이름에 읽을 표지 이미지의 낮은 비트 평면에 메시지 이미지를 숨 깁니다 "X와 Y는 같은 크기와 클래스가 있어야합니다 또는 Y는 스칼라 값이어야합니다. " 이것은 당신의 이미지가 비슷하지 않다는 것을 암시합니다.

whos cove messageshift을 수행하면 코브는 클래스 uint8이고 메시지 이동은 두 배입니다.

messageshift=uint8(bitshift(message,-(8-imbed)));

+0

예는 대단히 감사합니다 : 당신이 코브와 함께했던 것처럼 그냥 라인 (16)에 UINT8하는 messageshift 변환 – user3219263

관련 문제