Human Visual System based watermarking scheme

Im working on a medical image watermarking project. The algorithm is something like this:
  • Apply DWT on host image to obtain LL,HL,LH and HH.
  • Segment LL band into ROI and RONI, and divide RONI into blocks 4x4
  • Apply HVS on selected blocks to select most suitable blocks for embedding watermark info
  • Apply DCT on each selected block
  • Divide C into 2x2 blocks
  • Aplly SCD to generate U, S and V for each sub-block
  • Insert the watermark bit by altering the elements S1(1,1) and S2(1,1) according to algorithm
  • Inverse SVD, inverse DCT for each sub-block and inverse DWT on the end to get watermarked image
I have done all of this, but without the HVS. I know HVS is entropy:
If somebody can help me with this, I would be very grateful.
Code for embedding watermark which i wrote is here:
for i=1:duz1
for j=1:duz1
blokic=cell2mat(RONIdiv(i,j));
DCTblok=dct2(blokic); %dct transformacija bloka
RONIDCTdiv(i,j)=mat2tiles(DCTblok,[4,4]);
uslov1=all(all(DCTblok)); %da su sve vrijednosti bloka != 0
BinaryBlok=cell2mat(BinaryMaskdiv(i,j));
uslov2=~any(any(BinaryBlok)); %da su sve = 0 (samo roni)
if(k<=256 && uslov1 && uslov2)
pozblok(p,1)=i;
pozblok(p,2)=j;
p=p+1;
blok=mat2tiles(DCTblok,[2,2]); %dijeljenje u blokove 2x2
b1=cell2mat(blok(1,1));
b2=cell2mat(blok(1,2));
b3=cell2mat(blok(2,1));
b4=cell2mat(blok(2,2));
[u1,s1,v1]=svd(b1); %svd transformacija svakog bloka
[u2,s2,v2]=svd(b2);
[u3,s3,v3]=svd(b3);
[u4,s4,v4]=svd(b4);
m1=abs(s1(1,1)+s2(1,1))/2; %algoritam 1
if(wat1seq(k)==1)
s1(1,1)=sign(s1(1,1))*m1+T/2;
s2(1,1)=sign(s2(1,1))*m1-T/2;
else
s1(1,1)=sign(s1(1,1))*m1-T/2;
s2(1,1)=sign(s2(1,1))*m1+T/2;
end
m2=abs(s3(1,1)+s4(1,1))/2; %algoritam 2
if(wat2seq(k)==1)
s3(1,1)=sign(s3(1,1))*m2+T/2;
s4(1,1)=sign(s4(1,1))*m2-T/2;
else
s3(1,1)=sign(s3(1,1))*m2-T/2;
s4(1,1)=sign(s4(1,1))*m2+T/2;
end
isvd1=u1*s1*v1'; %nakon promjene s1,s2,s3,s4 (1,1) inverzna svd
isvd2=u2*s2*v2';
isvd3=u3*s3*v3';
isvd4=u4*s4*v4';
abc=[isvd1,isvd2;isvd3, isvd4];
DCTblok=abc; %ukoliko je ušlo u petlju stavi?e watermarkirani blok
k=k+1; %slede?i bit watermarkova
end
DCTblokinv=idct2(DCTblok); %inverzna dct
RONInovi(i,j)=mat2tiles(DCTblokinv,[4,4]);
end
end

回答 (0 件)

製品

リリース

R2015a

質問済み:

2022 年 5 月 31 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by