%Scriptfile:dctblock.m%%Purpose:analgorithmtoachievetheembedingwatermarkingtoaimageby%dctblokingandhvs,thendetectthewatermarkingby%comparability.%%%Recordofrevisions:%DateProgrammerDescriptionofchange%===================================%11/19/03MaoLiOriginalcode%Definevariables:%a0--Originalgrayimagematrix%a1--Embededgrayimagematrix%da0--thedctoriginalgrayimagematrix%ca0--thecolumnvectorofa0%cda0--thecolumnvectorofda0%cda1--theembededcolumnvectorofcda0%da1--theimagematrixofcda1%r--imagematrixrow%c--imagematrixcolumn%k--thenumberofblocks%i--thesubscriptofamatrix%SNR--thesimilaritydegree%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%inputoriginaldata,blockbreakandconvertablockintoacolumnvector%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;clc;a0=imread('c:oat.png');%a0=rgb2gray(a0);[r,c]=size(a0);k=(r*c/64);da0=blkproc(a0,[8,8],'dct2');ca0=im2col(a0,[8,8],'distinct');cda0=im2col(da0,[8,8],'distinct');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%producethewatermarkingsignal(randomsequence)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%randn('state',110);w0=randn(1,5120);w0=reshape(w0,5,1024);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%changingsubmultiple%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%alpha=0.02;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%embedthewatermarkingintothelowfrequencescoefficients%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%cda1=cda0;fori=1:kcda1(2,i)=cda0(2,i)+alpha*w0(1,i);cda1(3,i)=cda0(3,i)+alpha*w0(2,i);cda1(9,i)=cda0(9,i)+alpha*w0(3,i);cda1(10,i)=cda0(10,i)+alpha*w0(4,i);cda1(17,i)=cda0(17,i)+alpha*w0(5,i);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%reconstructthewatermarking%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%da1=col2im(cda1,[8,8],[r,c,],'distinct');a1=blkproc(da1,[8,8],'idct2');figure;subplot(1,2,1),imshow(a0,[]),title('theoriginalimage');subplot(1,2,2),imshow(a1,[]),title('theembededimage');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%detectthewatemarking%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%dca0=blkproc(a0,[8,8],'dct2');dca1=blkproc(a1,[8,8],'dct2');cdca0=im2col(dca0,[8,8],'distinct');cdca1=im2col(dca1,[8,8],'distinct');fori=1:kw1(1,i)=(cdca1(2,i)-cdca0(2,i))/alpha;w1(2,i)=(cdca1(3,i)-cdca0(3,i))/alpha;w1(3,i)=(cdca1(9,i)-cdca0(9,i))/alpha;w1(4,i)=(cdca1(10,i)-cdca0(10,i))/alpha;w1(5,i)=(cdca1(17,i)-cdca0(17,i))/alpha;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%calculatethesimilaritydegree%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SNR1=sum(sum(w0.*w1))/sqrt(sum(sum(w1.^2))) %Scriptfile:dct_high.m%%Purpose:analgorithmtoachievetheembedingwatermarkingtoaimageby%dctblokingandhvs,thendetectthewatermarkingby%comparability.%%%Recordofrevisions:%DateProgrammerDescriptionofchange%===================================%11/25/03MaoLiOriginalcode%Definevariables:%a0--Originalgrayimagematrix%a1--Embededgrayimagematrix%da0--thedctoriginalgrayimagematrix%ca0--thecolumnvectorofa0%cda0--thecolumnvectorofda0%cda1--theembededcolumnvectorofcda0%da1--theimagematrixofcda1%r--imagematrixrow%c--imagematrixcolumn%k--thenumberofblocks%i--thesubscriptofamatrix%SNR--thesimilaritydegree%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%inputoriginaldata,blockbreakandconvertablockintoacolumnvector%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;%clc;a0=imread('c:oat.png');%a0=rgb2gray(a0);[r,c]=size(a0);k=(r*c/64);da0=blkproc(a0,[8,8],'dct2');ca0=im2col(a0,[8,8],'distinct');cda0=im2col(da0,[8,8],'distinct');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%producethewatermarkingsignal(randomsequence)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%randn('state',110);w0=randn(1,5120);w0=reshape(w0,5,1024);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%changingsubmultiple%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%alpha=0.02;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%embedthewatermarkingintothelowfrequencescoefficients%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%cda1=cda0;fori=1:kcda1(48,i)=cda0(48,i)+alpha*w0(1,i);cda1(55,i)=cda0(55,i)+alpha*w0(2,i);cda1(56,i)=cda0(56,i)+alpha*w0(3,i);cda1(62,i)=cda0(62,i)+alpha*w0(4,i);cda1(63,i)=cda0(63,i)+alpha*w0(5,i);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%reconstructthewatermarking%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%da1=col2im(cda1,[8,8],[r,c,],'distinct');a1=blkproc(da1,[8,8],'idct2');figure;subplot(1,2,1),imshow(a0,[]),title('theoriginalimage');subplot(1,2,2),imshow(a1,[]),title('theembededimage');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%detectthewatemarking%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%dca0=blkproc(a0,[8,8],'dct2');dca1=blkproc(a1,[8,8],'dct2');cdca0=im2col(dca0,[8,8],'distinct');cdca1=im2col(dca1,[8,8],'distinct');fori=1:kw1(1,i)=(cdca1(48,i)-cdca0(48,i))/alpha;w1(2,i)=(cdca1(55,i)-cdca0(55,i))/alpha;w1(3,i)=(cdca1(56,i)-cdca0(56,i))/alpha;w1(4,i)=(cdca1(62,i)-cdca0(62,i))/alpha;w1(5,i)=(cdca1(63,i)-cdca0(63,i))/alpha;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%calculatethesimilaritydegree%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SNR=sum(sum(w0.*w1))/sqrt(sum(sum(w1.^2)))