Watermarking using K-means

From MeliWiki
Jump to: navigation, search

<Contributed to MeLi Wiki by Professor Dimitrios Charlampidis, Department of Electrical Engineering, University of New Orleans>


Introduction

General information about watermarking

Watermarking is the process of inserting, into a signal, image, video, or other media, either information which is ideally irremovable or information whose removal or alteration is detectable. Watermarks can be classified into two categories, namely visible (such as a logotype) and invisible. One of the main goals of watermarking is authentication and copyright protection.

For copyright protection, the watermark should be difficult to remove. Such watermarks are called robust. An owner can claim ownership if it can be proved that his or her watermark is present in a signal, image or video. Robust watermarks are supposed to be resistant to common media manipulations. For instance, for the case of images, a robust watermark should not be affected by operations, such as rotation, zooming, scaling, blurring, corruption by reasonable levels of noise, and partial cropping, among others, since they retain discernable image content.

For authentication, watermarks should be relatively easily corruptible by manipulation of the media in which they are embedded. Such watermarks are called semi-fragile. Media can be identified as been corrupted or non-authentic, if the inserted watermarks have been removed or significantly altered.


Watermarking techniques

Several watermarking techniques have been proposed in the literature [1] [2] [3] [4] [5]. Next, the discussion will concentrate on invisible image watermarking. In general, image watermarks can be embedded directly in the image or in a transformed version of the image. An example of a simple watermarking technique is presented next.

An image <math>\mathbf{X}</math> of size <math>M \times N</math> consists of a total of <math>MN</math> pixels. For grayscale images, each pixel can take one of 256 different values, from 0 to 255, where 0 indentifies a black pixel, 255 represents a white pixel, and values between 0 and 255 represent different levels of gray. Since <math>256 = 2^8</math>, a total of 8 bits are needed to express each pixel in binary form, as shown in the table next for a few examples. In the binary representation, the rightmost bit is the least significant.


Table 1: Example of pixel values and corresponding binary representation
Pixel Value Binary Representation
0 00000000
10 00001010
51 00110011
128 10000000
153 10011001
255 11111111


An image appears virtually identical if only the last bit for each pixel is altered. Therefore, a simple invisible watermarking technique can be implemented by replacing the last bit for each pixel with one bit from the watermark. This simple technique is illustrated in the following example:


Ex 1 1 Watermarking.jpg


Ex 1 2 Watermarking.jpg


In the above example, an image of size <math>10 \times 10</math> is represented as an array of size <math>10 \times 10</math> containing values in the range 0-255. Each pixel value is also represented as an 8-bit binary number. A binary watermark is used to replace the least significant bit for each corresponding pixel in the image. The result is shown as a watermarked image with each least significant bit highlighted. The watermarked image is not shown since it is virtually identical to the original. It should be mentioned at this point that the watermark does not have to be binary, and the number of bits in the watermark does not have to be the same as the number of pixels in the image. For the technique described above, it is just necessary for the number of bits comprising the watermark to be smaller than or equal to the number of pixels in the watermark. Other techniques may allow larger number of watermark bits to be embedded in the image.

The above watermarking scheme is easy to implement, and does not alter the original image significantly. However, it can be easily removed and detected. As a result, it is not appropriate for robust watermarking, and therefore, copyright protection. Other schemes attempt to make detection of the watermark by the attacker more difficult. In order to achieve this goal, embedding of watermarking bits is performed in a transformed version of the image. In this case, an additional level of difficulty is included in the process, since the attacker has to also identify what transformation has been used.

K-means algorithm and Vector Quantization

The K-means algorithm [6] is used for clustering data points or vectors into a number of clusters. For instance, assuming that a total of <math>R</math> vectors, <math>\mathbf{x}_r , r = 1, 2, \cdots, R</math>, where <math>\mathbf{x}_r = \left \{ x_{rl} \right \}, l = 1, 2, \cdots, L</math>, of size <math>L</math> are available, the goal of the K-means algorithm is to group or cluster the <math>R</math> vectors into <math>K</math> groups. The steps of the K-means algorithm are presented next:

1. Initialization: A total of <math>K</math> vectors, <math>\mathbf{c}_k, k = 1, 2, \cdots, K</math>, of same size as the data vectors (i.e. <math>L</math>) are chosen. The vectors <math>\mathbf{c}_k</math> can be chosen completely randomly, or can be selected from the set of <math>R</math> original vectors, <math>\mathbf{x}_r</math>. The vectors are commonly called centroids. Each centroid is the representative vector of its own group.

2. Group Assignment: Each vector, <math>\mathbf{x}_r</math>, is assigned to one of the <math>K</math> groups, say <math>k_o</math>, if the distance of <math>\mathbf{x}_r</math> from the centroid associated to the <math>k_o</math>-th group is smaller than the distance from any other centroid. A commonly used distance measure is the Euclidean distance. More specifically, the square of the Euclidean distance of vector <math>\mathbf{x}_r</math> from centroid ck is defined as follows:


<math>E^2 \left \{\mathbf{x}_r, \mathbf{c}_k \right \}=(x_{r1}-c_{k1})^2+(x_{r2}-c_{k2})^2+\cdots+(x_{rL}-c_{kL})^2</math>


3. Centroid Adaptation: Once all <math>R</math> vectors are assigned to one of the <math>K</math> groups, the centroids are adjusted to better represent the associated data vectors. More specifically, the <math>k</math>-th centroid is adapted as follows:


<math>\mathbf{c}_k^{(t)}=\frac{1}{L_k}\sum_{\left \{ Group 1 \right \}}\mathbf{x}_l</math>


where the summation is over those <math>\mathbf{x}_l</math> vectors associated to group <math>1</math>. Essentially, the above equation re-calculates each one of the <math>L</math> elements in the centroid <math>\mathbf{c}_k</math> by finding the average of the corresponding element out of all vectors associated to group 1. The superscript <math>t</math> indicates that the particular centroid vector is the one computed at the <math>t</math>-th iteration.


4. Iteration/Stopping: Steps 2-3 are repeated until a specific stopping criterion is satisfied. For example, the algorithm can stop when a maximum number of iterations is reached. Alternatively, the algorithm can stop if the centroids do not change significantly. For instance, the algorithm can reach an end if the sum of <math>K</math> Euclidean distances between the <math>K</math> centroids at iteration <math>t</math> and the corresponding <math>K</math> centroids at iteration <math>t + 1</math> drops below a threshold <math>T_h</math>:


<math>\sum_{k}E\left \{ \mathbf{c}_k^{(t+1)}, \mathbf{c}_k^{(t)} \right \}<T_h</math>


The K-means algorithm steps 2 and 3 are presented next through an example.


Step 2: Group Assignment

Step 2 Watermarking.jpg

Step 3: Centroid Adaptation

Step 3 Watermarking.jpg


Vector quantization (VQ) has been used in compression and coding for the purpose of clustering data vectors into groups. The <math>k</math>-th centroid is the <math>k</math>-th group’s representative vector. For the purpose of compression, each vector in the <math>k</math>-th group is approximated by the <math>k</math>-th group’s centroid. The <math>K</math>-means algorithm can be used to produce the groups and associated centroids. In the VQ terminology, the group centroids are called codewords, while the overall set of codewords is called the codebook.


A coding example

In order to have a better understanding of how VQ is used in compression, let us consider a Communications example. In this example, data need to be transmitted over a channel. The following approach can be used.

1. <math>L</math> consecutive data values are assembled to form vectors of length <math>L</math>.
2. Each data vector is compared with each codeword in the available codebook.
3. Instead of transmitting the original vector or the closest codeword, the index of the codeword is transmitted. For example, if the <math>k_o</math>-th codeword is the closest to the data vector, the index <math>k_o</math> (a single value) is transmitted.

Apparently, transmitting a single number as opposed to a vector of length <math>L</math> (<math>L</math> numbers), significantly reduces the number of data points transmitted over the channel.

K-means based watermarking

Watermarking techniques based on K-means or vector quantization (VQ) have been proven to be robust under image manipulations. Vector quantization can be performed using a K-means algorithm. Thus, in what follows the two terms will be used interchangeably. Such a technique is presented next.


VQ watermarking techniques

The technique presented next has been published in [7] and is based on the method introduced in [3] and extended in [4]. The algorithm introduced in [3] is described next:

1. Consider an image <math>X</math> of <math>M \times N</math>, and the binary watermark <math>\mathbf{W}</math> of size <math>M_W \times N_W</math>.
2. The image <math>X</math> is split into <math>M_WN_W</math> blocks of size <math>M/M_W \times N/N_W</math> which are reshaped into vectors. The vectors are <math>\mathbf{x}(m,n)</math>, where <math>m = 1,\cdots,M_w</math>, and <math>n = 1,\cdots,N_w</math> specify the position of each block in <math>\mathbf{X}</math>. The splitting of image into blocks and the reforming of each block is shown next.


Figure 1: Splitting of image in blocks and reshaping blocks into vectors


3. The VQ operation (using K-means) is performed on vectors <math>\mathbf{x}(m,n)</math> to obtain the codebook <math>\mathbf{C}</math>. Each vector <math>\mathbf{x}(m,n)</math> is approximated by the nearest codeword <math>\mathbf{c}_{ko}</math> in <math>\mathbf{C}</math>, and the index <math>y(m,n) = i</math> is assigned to <math>\mathbf{x}(m,n)</math>. Therefore, <math>\mathbf{Y} = \left \{y(m,n)\right \}</math> is an index matrix of size <math>M/M_W \times N/N_W</math> as shown next:


Figure 2: The index array


4. Using <math>\mathbf{C}</math>, an approximate image <math>\mathbf{X}'</math> is reconstructed.
5. The variance matrix <math>\Sigma =\left \{ \sigma ^2(m,n) \right \}</math> is calculated, where <math>\sigma ^2(m,n)</math> is the variance in a <math>3 \times 3</math> window around location <math>(m,n)</math> of the index matrix <math>Y = \left \{y(m,n)\right \}</math>. Thus, matrix <math>\Sigma</math> contains the local index characteristics.


Figure 3: The variance array


6. A threshold <math>T</math> is used to obtain the polarities matrix <math>\mathbf{P} = \left \{P(m,n)\right \}</math>, where <math>P(m,n) = 1</math>, if <math>\sigma^2(m,n) > T</math>, and <math>P(m,n) = 0</math> otherwise.


7. Then, the watermark image <math>\mathbf{W}</math> is randomly permuted by randomly shuffling its elements. The resulted watermark image is <math>\mathbf{W}_P</math>. The permutation information is kept in <math>key_1</math>. In other words, <math>key_1</math> “remembers” how the elements in <math>\mathbf{W}</math> were shuffled to obtain <math>\mathbf{W}_P</math>.
8. Each bit in watermark image <math>\mathbf{W}_P</math> is embedded in the image using the XOR operation: <math>key_2 = \mathbf{P} \bigoplus \mathbf{W}_P</math>. Based on the XOR operation, <math>key_2</math> is a binary array of equal size to <math>\mathbf{P}</math> and <math>\mathbf{W}_P</math>, and it contains 1 for all corresponding array elements in <math>\mathbf{P}</math> and <math>\mathbf{W}_P</math> which are different.
9. The watermark is extracted from the reconstructed image <math>\mathbf{X}'</math> using <math>\mathbf{W}_{P'} = key_2 \bigoplus \mathbf{P'}</math>, where <math>\mathbf{P}'</math> is the estimated polarities matrix calculated from <math>\mathbf{X}'</math>.
10. Then, <math>key_1</math> is used to obtain the estimated watermark <math>\mathbf{W}'</math> from permuted watermark <math>\mathbf{W}_{P'}</math>.

In [4], a multistage VQ approach was used for embedding multiple watermarks in the original image <math>\mathbf{X}</math>. In the first stage, the method proposed in [3], and described above, is used to embed a robust watermark in image <math>\mathbf{X}</math> using a small codebook <math>\mathbf{C}_1</math>. Apparently, the reconstructed image <math>\mathbf{X}'</math> using codebook <math>\mathbf{C}_1</math> is not a good approximation of <math>\mathbf{X}</math>. In the second stage, a semi-fragile watermark is embedded in the residual image <math>\mathbf{X}_1 = \mathbf{X} - \mathbf{X}'</math> using a second codebook <math>\mathbf{C}_2</math>. If <math>\mathbf{X}'_1</math> is the second-stage reconstructed image, the overall watermarked image is equal to <math>\mathbf{X}w = \mathbf{X}'_1 + \mathbf{X}'</math>. The technique introduced in [7] and presented next, attempts to solve two main issues associated to the previous techniques in [3] and [4]. The technique in [7] reduces the possibility of being able to extract the watermark <math>\mathbf{W}</math> from a different image <math>\mathbf{X}_o</math> in which <math>\mathbf{W}</math> has not been embedded. If it is possible for watermark <math>\mathbf{W}</math> to be extracted from an irrelevant image, <math>\mathbf{X}_o</math>, ownership of <math>\mathbf{X}_o</math> can be falsely claimed. Additionally, the techniques in [3] and [4] do not examine how the particular index assignment may affect watermarking robustness. The technique in [7] is described next.


Improved VQ watermarking technique

Consider a three stage VQ scheme producing three codebooks <math>\mathbf{C}_1</math>, <math>\mathbf{C}_2</math>, and <math>\mathbf{C}_3</math>. The first-stage codebook, <math>\mathbf{C}_1</math>, provides only a rough approximation of the original image <math>\mathbf{X}</math>. However, this rough approximation mostly contains low frequency components, which are not as sensitive to image manipulations as higher frequency components. The robust watermark is embedded in the first stage, based on the method described earlier. The second and third stages can be used for additional watermark embedding, or simply to provide a better approximation of the original image <math>\mathbf{X}</math>. The two basic modifications of the technique in [7] with respect to the techniques in [3] and [4] are the following:


1. First modification: The threshold for calculating the polarities matrix <math>\mathbf{P}</math> is chosen as follows:

<math>T_m=\underset{(m,n)}{median}\left\{\sigma^2(m,n)\right\}</math>

The threshold <math>T_m</math> is used as an additional key (<math>key_3</math>). A simple justification can be provided why the particular threshold is more appropriate than a fixed threshold for obtaining the polarity matrix <math>\mathbf{P}</math>.

For instance, if a fixed threshold for all images is used instead of <math>T_m</math>, the polarity <math>\mathbf{P}</math> values associated to an image <math>\mathbf{X}</math> having an index matrix <math>\mathbf{Y}</math> that happens to have similar neighboring indices will consist of mostly 0 values. The reason is that if neighboring indices are similar, the variance <math>\Sigma</math> computed in the <math>3 \times 3</math> neighborhoods will be small. Therefore, the local variance for most locations will most likely be less that the threshold.

In this case, the polarity matrix <math>\mathbf{P}_o</math> for any non-watermarked image <math>\mathbf{X}_o</math> associated to an index matrix with similar neighboring indices will also consist of several 0s. Thus, if <math>\mathbf{P}</math> and <math>\mathbf{P}_o</math> are similar, the watermarks extracted using the same key, as in <math>\mathbf{W}_{P'} = key_2 \bigoplus P'</math>, will also be similar. Therefore, it could be falsely implied that any such image <math>\mathbf{X}_o</math> is watermarked with the same watermark as <math>\mathbf{X}</math>.

On the other hand, Tm balances the number of 0 and 1 in <math>\mathbf{P}</math>, making it less likely that a random image has a similar polarity matrix as <math>\mathbf{X}</math>. For example, assuming that the index image <math>\mathbf{Y}</math> is of size <math>16 \times 16</math> (consisting of 256 elements), there is a huge number of possible index matrices (more than <math>2\times10^{75}</math>) consisting of equal number of 1 and 0. Therefore, it is highly unlikely that a random image will have the same polarity matrix as the image of interest, <math>\mathbf{X}</math>.


2. Second modification: Based on the second modification, similar indices are assigned to similar codewords. If a vector extracted from the watermarked image <math>\mathbf{x}_w</math> is closest to codeword <math>\mathbf{c}_k</math>, it is likely that the vector associated to the same location in the manipulated watermarked image, <math>\mathbf{x}_{w'}</math>, will be closest to a codeword similar to <math>\mathbf{c}_k</math>, say <math>\mathbf{c}_{k'}</math>. If the index assignment technique is designed to assign similar indices to similar codewords <math>\mathbf{c}_k</math> and <math>\mathbf{c}_{k'}</math>, the polarity matrices <math>\mathbf{P}</math> of the distorted and undistorted images will be similar as well. Thus, the watermark may not be distorted significantly. For this purpose, the following index assignment process was used in [7]:


a. The index assignment is performed by first initializing the indices using bit-strings of length <math>L</math> (i.e. the bit-string length is initially equal to the codeword length):

<math>y(m,n)_l=\begin{cases}

2 & \text{ if } \mathbf{c}_{k,l}<(\underset{k}{\max}(\mathbf{c}_{k,l})+\underset{k}{\min}(\mathbf{c}_{k,l}))/2 \\ 1 & \text{ otherwise }

\end{cases}</math>

where <math>y(m,n)_l , l = 1,\cdots, L</math>, represents the <math>l</math>-th bit of the binary index <math>y(m,n)</math>, and <math>\mathbf{c}_{k,l}</math> is the <math>l</math>-th element of the <math>k</math>-th codeword. The above equation may assign different codewords to the same index, which is acceptable, since the objective is to increase the polarity robustness, and not to perform coding or classification.


b. The index bit-string sizes are reduced down from <math>L</math> by iteratively removing the <math>l</math>-th bit from all indices as long as its deletion does not cause different indices (or more accurately their bit-string representations) to become identical. This procedure is repeated considering all <math>l</math> values.


c. The matrix of average variances, <math>\Sigma_{av} = \left \{\sigma^2_{av}(m,n)\right \}</math>, is calculated by the following equation:


<math>\sigma^2_{av}(m,n)=\sum_{l=1}^{L}</math><math>\left( {\frac{1}{9}\sum_{i=m-1}^{m+1}\sum_{j=n-1}^{n+1}y^2(i, j)_l-\left( {\frac{1}{9}\sum_{i=m-1}^{m+1}\sum_{j=n-1}^{n+1}y(i, j)_l} \right)^2} \right)</math>


The polarities matrix <math>\mathbf{P}</math> and <math>key_2</math> are obtained as in [3] using <math>T_m</math>&<math>\Sigma_{av}</math> instead of <math>T</math>&<math>\Sigma</math>. The process is described earlier in this document. In summary, to extract the watermark <math>\mathbf{W}</math>, the watermarked image should be split into blocks to find the most similar codewords in the product codebook <math>\mathbf{C}</math>. Each codeword relates to one index per stage. Polarity matrices <math>\mathbf{P}</math> are computed using <math>key_3</math> (<math>T_m</math>) and <math>key_4</math> (1st-stage indices). Permuted watermark <math>\mathbf{W}_P = key_2 \bigoplus \mathbf{P}</math>, and <math>key_1</math> are used to obtain <math>\mathbf{W}</math>.

Experimental Results

The experimental results presented next can also be found in [7]. The image shown in Figure 4(a) is used for embedding the watermark depicted in Figure 4(d) using the first stage of the VQ technique. The codebook size is equal to 16 for each stage. In other words, there is a total of 16 codewords included in the codebook (or in K-means terminology, there is a total of 16 centroids, i.e. <math>K = 16</math>). The normalized Hamming similarity (NHS) measure defined as in the following equation is used for comparison of the different techniques:

<math>NHS = 1-HD(\mathbf{W},\mathbf{W}')/(N_wM_w)</math>

In the above equation, <math>HD(\mathbf{W},\mathbf{W}')</math> is the Hamming Distance between two binary strings, namely <math>\mathbf{W}</math> and <math>\mathbf{W}'</math>. For example, <math>HD(100101,110111) = 2</math>, since only two of the six corresponding bits included in the two strings differ (namely the second and fifth bits).


First set of experiments

The first set of experiments studied the possibility of falsely extracting the watermark <math>\mathbf{W}</math> from an image where the particular watermark, <math>\mathbf{W}</math>, was not actually embedded. For this purpose, there was an attempt to extract the signature of the watermark <math>\mathbf{W}</math> from images irrelevant images using the same keys and codebook associated to the watermarked image. The “Synth” (Fig. 4(b)), “Baboon”, “Peppers”, and “Goldhill” (Fig. 4(c)) images were used for this experiment, and the results are presented in Table 2 (a)-(d). It can be observed that the watermark signature in non-watermarked images is significantly stronger (larger NHS) if the method introduced in [4] is used compared to the improved method introduced in [7]. In particular, Figures 4(e) and (f) illustrate that if the method in [4] is used, a significant component of <math>\mathbf{W}</math> falsely appears to exist in the “Synth” and “Goldhill” images, with NHS equal to 0.75 and 0.64, respectively.


Second set of experiments

The second set of experiments studied the robustness of the watermarking techniques. Table 2 (e)-(q) presents results which indicate that improved technique was more robust in extracting the watermark when the image was subjected to different manipulations. The image manipulations examined were JPEG compression, intensity/contrast enhancement, lowpass and median filtering, image rotation, and VQ with a codebook different than the one used to code the watermarked image. Apparently, the improved technique appears to be considerably more robust to most manipulations.


Figure 4: (a) The image “Lena” used to embed the watermark, (b),(c) the “Synth” and “Goldhill” images used to test watermark extraction from non-watermarked images, (d) the binary watermark used in the experiments, (e),(f) binary watermarks falsely extracted from non-watermarked images Synth and Goldhill using the technique presented in [4]


Table 2: NHS results: (a)-(d) Watermark extraction from images with no embedded watermark. (e)-(q) Robustness under various attacks
Using the VQ water-marking algorithm in [4] Using the improved VQ watermarking algorithm
(a) Synth 0.75 0.62
(b) Baboon 0.54 0.43
(c) Peppers 0.63 0.54
(d) Goldhill 0.64 0.56
(e) JPEG 90% 0.99 1.00
(f) JPEG 80% 0.96 0.97
(g) JPEG 50% 0.89 0.96
(h) JPEG 30% 0.89 0.94
(i) Intensity +10% 0.72 0.84
(j) Intensity +25% 0.59 0.77
(k) Contrast Enhancement 0.82 0.84
(l) Lowpass filter 0.84 0.84
(m) Median <math>3 \times 3</math> filter 0.93 0.96
(n) Rotation +0.5 degrees 0.83 0.88
(o) Rotation -0.5 degrees 0.83 0.88
(p) Rotation +1 degrees 0.82 0.86
(q) VQ, C size 32 from Baboon 0.82 0.89

Project: Watermarking using VQ/K-means

1. Split a grayscale image, <math>\mathbf{X}</math>, of size <math>512 \times 512</math> into (<math>32 \times 32 = 1024</math>) blocks of size <math>16 \times 16</math>.

2. Convert each block into a vector of length 256. There should be a total of 1024 vectors.

3. Implement the K-means algorithm to cluster the 1024 vectors of length 256 into 20 clusters.

4. Replace each of the 1024 vectors extracted from the original image, <math>\mathbf{X}</math>, by the centroid of associated to the group in which they “belong’.

5. Reshape each of the 1024 vectors into a block of size <math>16 \times 16</math> following the opposite procedure required in step 2 of this project.

6. Reconstruct the image <math>\mathbf{X}'</math>.

7. Find the pixel-wise difference between the original and reconstructed image, <math>\mathbf{X}_1 = \mathbf{X} - \mathbf{X}'</math>.

8. Repeat steps 1-6 for image <math>\mathbf{X}_1</math>, and obtain a reconstructed image <math>\mathbf{X}'_1</math>.

9. Add pixel-wise images <math>\mathbf{X}'</math> and <math>\mathbf{X}'_1</math> to obtain the overall reconstructed image.

10. Pick a binary watermark of size <math>32 \times 32</math>, of your choice.

11. Embed the watermark in the first stage of the VQ algorithm performed in steps 1-6 of this project, by finding the index matrix <math>\mathbf{Y}</math>, the variance matrix <math>\Sigma</math>, and the polarity matrix <math>\mathbf{P}</math>. Use the improved method described in this document.

12. Perform image manipulations of your choice (add noise, crop part of the image etc), and check how many of the bits in the original watermark remain unaltered.


Assessment of student knowledge on the subject matter

The following assessment can be provided to the students both before and after they are introduced to the concepts presented in this document. It is expected that the answers to questions 1-5 and 7-11 may be at least partially known to students prior to presentation of this material, depending on their background. On the contrary, it may not be very likely that students have not been previously introduced to subject matter associated to questions 6 and 12.


1. What is watermarking in general? Can you provide some watermarking examples?

2. What is the difference between visible and invisible watermarking? Can you provide some relevant examples?

3. What is the difference between robust and semi-fragile watermarks? Are they both useful? If yes, for which applications?

4. How many levels of gray do you usually find in grayscale images?

5. How many bits are required to represent a pixel value in a grayscale image?

6. Can you describe a very simple watermarking technique where the watermark is embedded in the image domain directly? Can you identify the disadvantages of such technique?

7. If you have a grayscale image of size <math>100 \times 100</math> and you want to split it into blocks of size <math>5 \times 5</math>, how many blocks will you obtain in total?

8. How would you describe what clustering is?

9. What are the basic steps of the K-means algorithm?

10. What are the terminology differences between K-means and VQ?

11. How is VQ used for coding purposes? How is compression achieved?

12. Briefly describe two watermarking techniques using VQ, and list the advantages of one over the other.


References

  1. Wang, Y., Doherty, J.F., and Van Dyck, R.E., “A wavelet-based watermarking algorithm for ownership,” IEEE Transactions on Image Processing, 11(2), 77-88, 2002/
  2. Hhu, C.T., and Wu, J.L., “Hidden digital watermarks in images,” IEEE Transactions on Image Processing, 8(1), 58-68, 1999.
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Huang, H.C., Wang F.H., and Pan, J.S., “Efficient and robust water-marking algorithm with vector quantisation,” Electronics Letters, 37(13), 826–828, 2001.
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 Lu, Z.M., Xu, D.G., and Sum, S.H., “Multipurpose image watermarking algorithm based on multistage vector quantization,” IEEE Transactions on Image Processing, 14 (6), 822-831, 2005.
  5. Pan, J.S., Hsin, Y.C., Huang, H.C., and Huang, K.C., “Robust image watermarking based on multiple description vector quantisation,” Electronics Letters, 40 (22), 1409–1410,2004.
  6. Neural Networks and Learning Machines, 3rd Edition, by Simon Haykin, Prentice Hall, 2008.
  7. 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 Charalampidis, D., “Improved Robust VQ-based Watermarking,” Electronics Letters, 41 (23), 1272-1273, 10 November 2005