Human Visual System based watermarking scheme
Afficher commentaires plus anciens
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
Réponses (0)
Catégories
En savoir plus sur Watermarking dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!