The error I'm encountering is this –>
Warning: Size vector should be a row vector with integer elements.> In watermarkemb at 27??? Index exceeds matrix dimensions.Error in ==> watermarkemb at 36 dct_block=dct2(cover_object(x:x+blocksize-1,y:y+blocksize-1));
This is the code –>
clc;clear all;start_time=cputime;k=50;blocksize=8;file_name='scene.jpg';cover_object=double(rgb2gray(imread(file_name)));Mc=size(cover_object,1); Nc=size(cover_object,2); max_message=Mc*Nc/(blocksize^2);file_name='fishy.jpg';message=double(rgb2gray(imread(file_name)));Mm=size(message,1); Nm=size(message,2); message=round(reshape(message,Mm*Nm,1)./256);if (length(message) > max_message) error('Message too large to fit in Cover Object')endmessage_pad=ones(1,max_message);message_pad(1:length(message))=message;watermarked_image_r=cover_object;x=1;y=1;for (kk = 1:length(message_pad)) dct_block=dct2(cover_object(y:y+blocksize-1,x:x+blocksize-1)); if (message_pad(kk) == 0) if (dct_block(5,2) < dct_block(4,3)) temp=dct_block(4,3); dct_block(4,3)=dct_block(5,2); dct_block(5,2)=temp; end elseif (message_pad(kk) == 1) if (dct_block(5,2) >= dct_block(4,3)) temp=dct_block(4,3); dct_block(4,3)=dct_block(5,2); dct_block(5,2)=temp; end end if dct_block(5,2) > dct_block(4,3) if dct_block(5,2) - dct_block(4,3) < k dct_block(5,2)=dct_block(5,2)+(k/2); dct_block(4,3)=dct_block(4,3)-(k/2); end else if dct_block(4,3) - dct_block(5,2) < k dct_block(4,3)=dct_block(4,3)+(k/2); dct_block(5,2)=dct_block(5,2)-(k/2); end end watermarked_image(y:y+blocksize-1,x:x+blocksize-1)=idct2(dct_block); if (x+blocksize) >= Nc x=1; y=y+blocksize; else x=x+blocksize; end endwatermarked_image_int=uint8(watermarked_image);imwrite(watermarked_image_int,'dct1_watermarked_circuit.jpg','jpg');elapsed_time=cputime-start_time,subplot(211);imshow(cover_object,[]);title('Original Image')subplot(212);imshow(watermarked_image,[]);title('Watermarked Image')
Best Answer