A list,

With the popularization of Internet and the rapid development of information and communication technology, multimedia technology has been fully applied. However, the open Internet makes the transmission of multimedia information insecure, and digital watermarking technology can just protect the transmission of multimedia information. Digital watermarking technology can protect the copyright of multimedia data by embedding some iconic information which can be used to identify the source, version and author of multimedia data into multimedia data through certain embedding algorithm, but it does not affect the use and value of original data, and is not easy to be detected. According to the different embedding location, digital watermarking algorithm can be divided into spatial domain and transform domain watermarking algorithm. Generally speaking, the robustness of transform domain watermarking algorithm is good. The main transform domains include discrete cosine Transform DCT, discrete Wavelet Transform DWT and discrete Fourier transform The transform DFT). Singular Value Decomposition (SVD) in the transform domain is a method of diagonalizing a matrix. The singular value of the image has good stability. The watermark information can be embedded into the coefficients of the image after singular value transformation by using this principle.

Discrete cosine transform and singular value decomposition

1.1 Discrete cosine transform

The Discrete Cosine Transform (DCT) is a set of Cosine functions with different frequencies and amplitudes to approximate the image of clothes, which is actually the real part of the Fourier Transform. As the discrete cosine variable for clothing image, most of its visual information is focused on a few transformation coefficients. Therefore, discrete cosine variable is a commonly used transform coding method for data compression. It can concentrate the energy of high correlation data, making it very suitable for image compression. The forward discrete cosine transformation of one-dimensional discrete signal F (x) is:



The forward discrete cosine transformation of two-dimensional discrete signal F (x) is:



1.2 Singular Value Decomposition (SVD)

The matrix was decomposed by SVD to obtain one singular value matrix and two orthogonal matrices. The singular value of the image has strong stability and will not change significantly when the image is disturbed slightly. Using the singular value feature, if the watermark is embedded in the SVD decomposed singular value of the carrier image, when the attacker attacks and disturbs the image containing the watermark, we can still extract the watermark information from the decomposed singular value. Moreover, singular values correspond to the brightness characteristics of the image, not the visual characteristics. Therefore, embedding watermarks on singular values can ensure the transparency of the watermark, and ensure the concealment and security of the watermarking algorithm. Singular values represent the interrelation of the elements of the image matrix and will not change with slight disturbance. Therefore, embedding watermarks on singular values will not damage the geometric characteristics of the image. SVD decomposition is a very important decomposition mode in linear algebra, as defined below. Let the matrix A RRm×n, R represents the real number field, m×n represents the size of the matrix, and the formula for SVD processing of A is A = USVT (3). In the formula, U and V are orthogonal matrices, S is diagonal matrix, singular values are the diagonal elements of matrix S, and these diagonal elements satisfy: Sigma 1 or greater sigma 2 p sigma 3 p… Sigma r acuity sigma r + 1 =… = σm =0 (where r represents the rank of A). 2 Printing and scanning applications Analyzing image watermarking Applications The challenges of this application include establishing a robust watermarking technique to extract watermarks from printed media. The technology should be able to resist the digital-to-analog conversion that occurs as a result of the printing process, and then the analog conversion that occurs when the printed watermark image is scanned, and then the analog-to-digital conversion that occurs when the printed watermark image is scanned. Word conversion. In the printing process, the watermarked image is in analog format. In the printing process, the watermarked image is in analog format. Should be used to extract the watermark, print scanner or in order to extract the watermark in the scanning process, should be used to print scanning scanners or printed in the process of the camera in the process of CAM (mobile camera or digital camera) to print the camera in the process of CAM (mobile camera or digital camera) through simulation data capture process will be digital simulation data capture process will be digital.. Due to introduction of attack, due to introduction of attacks, including geometric attacks, such as rotation, scaling, cutting and shearing) to include the geometric attacks, such as rotation, scaling, cutting and shear) and distortion caused by equipment, printing and capturing process may have to pick and distortion caused by equipment, printing and capturing process may be challenging. War. These distortions are usually caused by the printing and compression process that occurs when the image is stored in the mobile phone. Several studies have looked at what this process causes. Some studies have looked at these applications that are still in their infancy.

3 Digital Watermarking based on D C T — SVD compression quantization 3.1 Watermarking Algorithm SVD can be applied to digital watermarking algorithm because of the following main characteristics. (1) The singular value of the image has good stability, that is, when the image changes slightly, its singular value will not change significantly; ② When the singular value of the image changes slightly, the original image will not change significantly. Therefore, embedding watermark on the singular value of the image will not affect the quality of the original image. SVD embedded watermarks can effectively resist geometric attacks, but traditional SVD digital watermarking algorithms require original carrier images when extracting watermarks, which increases the insecurity of carrier images during transmission and reduces the efficiency of the algorithm. The algorithm in this paper does not use the orthogonal matrix after SVD decomposition of the original image in the process of embedding watermarks, so the original carrier image is not needed when extracting watermarks. At the same time, DCT transformation can well adapt to the visual characteristics of human eyes. In this paper, the carrier image is divided into blocks first, so that the changes of the original image can be concentrated in each piece, and the approximate component of each PIECE of DCT transformation can be obtained. Then the SVD decomposition of approximate components is performed to obtain the singular value matrix. Finally, the image with watermark is obtained by quantization method.

3.2 Embedding process of watermarks

The process of watermark embedding algorithm based on DCT and SVD robust digital watermarking algorithm is as follows

(1) Select image I with size 512˟ and color mode RGB.

(2) Separate the green channel A of the image.

(3) DCT transformation ADCT is performed on the green channel. And the ADCT was decomposed by SVD:



(4) Read the watermark image and grayscale processing.

(5) Matrix W is obtained by DCT transformation of the watermark image.

(6) Embed the watermark into the matrix S, namely;



(7) Inverse DCT transformation is performed on the image 𝑰𝑫𝑪𝑻 to transform the image from the frequency domain to the spatial domain, so as to display the embedded image and complete the watermark embedding process, namely:



3.3 Process of watermark extraction

The extraction of watermarked images described in this paper is the images after printing scan attack,𝑰𝒘𝒎. In this paper, the method of blind detection of digital watermark is adopted, and the value of embedding strength 𝛂 is required for watermark extraction. The steps are as follows

(1) read the watermark images containing 𝑰 𝒘 𝒎. Separate image RGB color channels of the green channel, to image 𝑰 𝒘 𝒎 _ 𝒈.

(2) DCT transformation is performed on the image 𝑰𝒘𝒎_𝒈, and SVD decomposition is performed on it.



(3) Calculate image D



(4) Compute watermarking 𝑊∗

Ii. Source code

function varargout = main(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @main_OpeningFcn, ...
                   'gui_OutputFcn',  @main_OutputFcn, ...
                   'gui_LayoutFcn', [],...'gui_Callback'[]);if nargin & isstr(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end

function main_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = main_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function axes1_ButtonDownFcn(hObject, eventdata, handles)
function popupmenu1_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor'.'white');
else
    set(hObject,'BackgroundColor',get(0.'defaultUicontrolBackgroundColor'));
end
function pushbutton1_Callback(hObject, eventdata, handles)
f1=uigetfile('*.bmp'.'Open carrier image');
guidata(hObject, handles);
global cover_object;
cover_object=imread(f1);
axes(handles.axes1);
imshow(cover_object);
title('Carrier image');
function pushbutton3_Callback(hObject, eventdata, handles)
f2=uigetfile('*.jpg'.'Open original watermark image');
guidata(hObject, handles);
global watermark;
watermark=imread(f2);
watermark=im2bw(watermark);
axes(handles.axes4);
imshow(watermark);
title('Watermarked image');
function pushbutton2_Callback(hObject, eventdata, handles)
global watermark;
global watermark_en;
Mm=size(watermark,1);               
Nm=size(watermark,2); 
N=Mm*Nm;
key=0.2345;
m(1)=key;
for i=1:N- 1
    m(i+1) =4*m(i)4 -*m(i)^2;
end
m=mod(1000*m,256); m=uint8(m); m=im2bw(m); n=1;
for i=1:Mm
    for j=1:Nm
        watermark_en(i,j)=bitxor(m(n),watermark(i,j));
        n=n+1;
    end
end
axes(handles.axes6);
imshow(watermark_en);
title('Cryptowatermarking');
global watermark_en;
function pushbutton4_Callback(hObject, eventdata, handles)
global cover_object watermark_en CWI Temp;
[mm,nn]=size(cover_object); 
[mm1,nn1]=size(watermark_en);
[LL HL LH HH]=dwt2(cover_object,'haar');
[U,S,V]=svd(LL);
af=0.03;
[lm,ln]=size(LL);
WW=zeros(lm,ln);
for i=1:mm1
    for j=1:nn1
            WW(i,j)=watermark_en(i,j);
    end
end
Temp=S+af*WW;
[U1,S1,V1]=svd(Temp);
CW=U*S1*V';
I1=idwt2(CW,HL,LH,HH,'haar');
CWI=uint8(I1);
axes(handles.axes2);
imshow(CWI);
title('Carrier image with watermark information');
global CWI;
global Temp;
function pushbutton8_Callback(hObject, eventdata, handles)
global CWI;
global attackf;
f=CWI;
attackd=get(handles.popupmenu1,'Value');
while attackd~=0
switch attackd
    case 1,
    attackf=f;
    att='Not attacked';
break;
  case 2,
f(20:180.20:180) =256;
attackf=f;
att='Cut image';
break;
  case 3,
attackf=imadjust(f,[],[0.4.1]);
att='Image brightening';
break;
case 4,
attackf=imadjust(f,[],[0.0.95]);
att='Image goes dark';
break;
case 5.Copy the code

3. Operation results

Fourth, note

Version: 2014 a