distortion compensation-Spread Transform Dither Modulation (dc-STDM) in
matlab
We know that we have two techniques of digital watermarking : --Linear
Additive Techniques --Non-Linear Quantization Techniques.
In the Non-Linear Quantization Techniques, we have the QIM(Quantization
Index Modulation) methods introduced by Chen and Wornell. S(x,m)=q(x)+d(m)
where q(.) is a coarse quantizer with a step size delta, and d(m) is a
perturbation value. S(x,m)=Q(x,delta(m))=round(x/delta(m))*delta(m) with
m=0 or m=1
In QIM methods, we have the Low-complexity Realization called "Dither
Modulation", and in this case: s(x,m)=q(x)=Q(x-dm)+dm with m=0 or 1 and
where d0= -delta/4 and d1= delta/4.
We have also the dc-STDM (distortion compensation-Spread Transform Dither
Modulation): in this case we have another formula with alpha (distortion
compensation parameter) and scalar vector p generated randomly. And we
must know that in each bit in the message is embedded in a segment of host
signal x. y=x+(quantizer(alpha(x*p))-alpha*(x*p))*p
Please for (he/she) has some ideas about the STDM methods, help me to
write the code in matlab:
//Let us consider the host signal x= [1 2 3 4 5]
//Let us consider the message to be embedded: m= [0 1 0 1 1]
x=[1 2 3 4 5]
m=[0 1 0 1 1]
alpha=0.77 %Distortion Compensation parameter
L=5 // length of the message
Delta=53; //quantization step size
//create a scalar vector p
n = numel(x)
v = rand(1,n)-0.5 // v is between [-0.5 0.5]
u = v ./ sqrt(sum(v.^2))
p = u'
d0 = - Delta / 4;
d1 = Delta / 4;
for i=1:n
if m(i) == 0
y = Delta * round((alpha*(s(i)*p(i)) + d0) / Delta) - d0 //y=quantizer
aux=s(i)+(y-alpha*(s(i)'*proj(i)))*proj(i)
elseif m(i) == 1
y = Delta * round((alpha*(s(i)'*p(i)) + d1) / Delta) - d1
aux=s(i)+(y-alpha*(s(i)'*proj(i)))*proj(i)
end
end
I don't know how to segment the host signal and then embed one bit into
each segment, even i don't know if i wrote correctly my code concerning
dc-STDM. Please for who is worked with this formula, help me :)
Best regards,
Liszt.
No comments:
Post a Comment