Assignment 4: Phase Correlation for Digital Watermark Detection

Introduction

In order to combat copyright fraud of digital media including images, video and audio, it is desirable to

embed a hidden ‘watermark’ onto the signal. A good ‘watermark’ should not compromise the perceived

quality of the original signal, and should carry enough information to accurately determine the source of

the copied signal. A good ‘watermark’ should also be robust in the sense that it is virtually impossible to

remove (without excessive disruption to the signal) and also relative immune to false detection (when the

watermark isn’t present).

Many watermarks can be viewed as some form of spread spectrum technique, which involves spreading the

watermark across a whole range of frequencies.

In this exercise we shall consider a simple watermarking system together with a detection method based on

phase correlation. You are required to use the phase correlation method to detect the 5 delay parameters

used to embed a watermark onto a parent signal

x[n]

to give a watermarked signal

x [n] m

. In this exercise

we will consider a relatively simple watermarking system which involves the weighted addition of a known

watermark signal

m[n]

at 5 different delays

i d

. The watermarked signal can thus be represented as:

The task is then to determine the delay parameters

i d

which can be considered as the embedded

information.

The watermark signal

m[n]

(which is common to all students) can be found in:

DFSA\restricted\assignment4_embedded_signal.wav

Your individual watermarked signal

x [n] m

can be found as:

DFSA\restricted\xxxxxx\sample4_xxxxxx.wav

Where xxxxxx is your UOB username.

Phase Correlation

Let us assume that our watermarked signal can be represented as:

x [n] x[n] m[n d] m

= +? ?

Ideally the watermark signal should be uncorrelated either with itself or the parent signal:

This is equivalent to saying that:

A simple way to achieve low correlations is to construct the watermark signal as a sample of Gaussian

white noise. This approach has been used in this exercise.

Assuming low correlations, we find that:

Note that this is effectively a matched filter. Unfortunately the convolution becomes very computationally

intensive for large signals. Instead we can implement this in the frequency (DFT) domain by realising that

linear convolution is very similar to cyclic convolution, and cyclic convolution in the time domain

x[n]? y[n]

is equivalent to multiplication in the frequency domain

X[k]Y[k]

. To minimise the errors

caused by the difference between the cyclic convolution and linear convolution, we can use an appropriate

window

w[n].

Also using the knowledge that the DFT. In practice it works much better if we

normalise the magnitude of

to get a much clearer peak.

Note in Matlab we need to be careful about the indexing, since a delay of

di

= 0

will appear as a peak of

c[n]

at

n = 0

which in Matlab notation would be c(1)

Submission procedure

You should submit your solution as a single Matlab .mat file to the following address:

DFSA\restricted\xxxxxx\submit\assignment4_xxxxxx.mat

Where xxxxxx is your UOB username.

The .mat file should contain a single column vector named delays. This vector should contain 5

integer values corresponding to the 5 delay values. The assignment will be automatically marked out of 20,

with 4 marks for each correctly identified delay value. Delays which are wrong by ±1 will receive 2 marks.

In this exercise, all delays should be positive integers in the range

0 ? di ? 100 .

Please do not include any other data in your .mat file. See Matlab help on the save command for saving

individual variables.

Note: Failure to follow these instructions may result in loss of marks for the assignment.

It is advisable to experiment with the phase correlation method by adding a mark to a signal with known

delay and checking that the detection method gives the correct answer. The following code will produce a

test sample with a single mark with delay of 5 samples.

[x,fs] = audioread('Audio Sample.wav');

ns = 44100 * 3; % Use only 3 seconds

x = x(1:ns,1); % Use only left channel

[m,fs] = audioread('assignment4_embedded_signal.wav');

delay = 5;

alpha = 0.002;

x(1+delay:ns,1) = x(1+delay:ns,1) + alpha * m(1:ns-delay,1);

audiowrite('test.wav',x,fs);

版权所有：编程辅导网 2018 All Rights Reserved 联系方式：QQ:99515681 电子信箱：99515681@qq.com

免责声明：本站部分内容从网络整理而来，只供参考！如有版权问题可联系本站删除。