1.基于Arnold置乱的数字水印图像加密算法的设计,基于Matlab语言编
clc
clear all;
iTimes=10; %置乱次数
% 读入水印图像
file_name='3232水印.bmp';
message=double(imread(file_name));
%水印图像矩阵的行数与列数
Mm=size(message,1);
Nm=size(message,2);
%对水印图像进行arnold置乱
if Mm~=Nm
error('水印矩阵必须为方阵');
end
if Mm~=90
error('必须为90*90大小,或者修改置乱次数');
end
tempImg=message; %图像矩阵赋给tempImg
for n=1:iTimes %置乱次数
for u=1:Mm
for v=1:Nm
temp=tempImg(u,v);
ax=mod((u-1)+(v-1),Mm)+1; %新像素行位置
ay=mod((u-1)+2*(v-1),Nm)+1; %新像素列位置
outImg(ax,ay)=temp;
end
end
tempImg=outImg;
end
% 显示水印,嵌入水印图像与原始图像
figure(1)
subplot(1,3,1);
imshow(message,[]);
title('原始水印');
subplot(1,3,2)
imshow(outImg,[]);
title('置乱水印');
% arnold反置乱
message_arnold=tempImg;
iTimes1=60-iTimes
%置乱后水印图像矩阵的行数与列数
Mo=size(outImg,1);
No=size(outImg,2);
for n=1:iTimes1 % 次数
for u=1:Mo
for v=1:No
temp1=tempImg(u,v);
bx=mod((u-1)+(v-1),Mo)+1;
by=mod((u-1)+2*(v-1),No)+1;
outImg1(bx,by)=temp1;
end
end
tempImg=outImg1;
end
message=outImg1;
% 显示反置乱后水印
%figure(3)
%subplot(1,3,1);
%imshow(message_arnold,[]);
%title('提取的置乱水印');
subplot(1,3,3);
imshow(message,[]);
title('反置乱(恢复)水印');
%subplot(1,3,3);
%imshow(orig_watermark,[])
%title('原始水印')
gui 自己学学吧 matlab中文论坛 gui板块
2.基于位置和灰度变换的混沌图像置乱算法 matlab具体算法 相关pdf百度
参考《基于位置和灰度变换的混沌图像置乱算法》实现的,有问题再讨论
lena = imread('C:\lena.jpg');
imtool(lena);
lena_1 = lena(:);
[M,N]=size(lena);
u=4;
visited(M*N,1)=0;
visited(1)=1;
index=1;
temp=0;
x=0.1415926;
count=1;
while count<M*N
temp=lena_1(index);
t=round(x*1E7);
x=u*x*(1-x);
K=mod(t,M*N)+1;
if visited(K)
continue;
end
visited(K)=1;
%lena_1(index)=lena_1(K)*x;
lena_1(index)=lena_1(K);
index=K;
count=count+1;
end
lena_1(index)=temp;
lena_2=reshape(lena_1,M,N);
imtool(lena_2);
visited(1)=0;
index=1;
x=0.1415926;
count=1;
temp_1=lena_1(1);
while count<M*N
t=round(x*1E7);
x=u*x*(1-x);
K=mod(t,M*N)+1;
if ~visited(K)
continue;
end
visited(K)=0;
temp_2=lena_1(K);
%lena_1(K)=temp_1/x;
lena_1(K)=temp_1;
temp_1=temp_2;
index=K;
count=count+1;
end
lena_1(1)=temp_1;
lena_3=reshape(lena_1,M,N);
imtool(lena_3);
3.基于Arnold置乱的数字水印图像加密算法的课程设计
clcclear all;iTimes=10; %置乱次数% 读入水印图像file_name='3232水印.bmp';message=double(imread(file_name));%水印图像矩阵的行数与列数Mm=size(message,1); Nm=size(message,2); %对水印图像进行arnold置乱if Mm~=Nm error('水印矩阵必须为方阵');endif Mm~=90 error('必须为90*90大小,或者修改置乱次数');endtempImg=message; %图像矩阵赋给tempImgfor n=1:iTimes %置乱次数 for u=1:Mm for v=1:Nm temp=tempImg(u,v); ax=mod((u-1)+(v-1),Mm)+1; %新像素行位置 ay=mod((u-1)+2*(v-1),Nm)+1; %新像素列位置 outImg(ax,ay)=temp; end endtempImg=outImg;end% 显示水印,嵌入水印图像与原始图像figure(1)subplot(1,3,1);imshow(message,[]);title('原始水印');subplot(1,3,2)imshow(outImg,[]);title('置乱水印');% arnold反置乱message_arnold=tempImg;iTimes1=60-iTimes%置乱后水印图像矩阵的行数与列数Mo=size(outImg,1); No=size(outImg,2); for n=1:iTimes1 % 次数 for u=1:Mo for v=1:No temp1=tempImg(u,v); bx=mod((u-1)+(v-1),Mo)+1; by=mod((u-1)+2*(v-1),No)+1; outImg1(bx,by)=temp1; end endtempImg=outImg1;endmessage=outImg1;% 显示反置乱后水印%figure(3)%subplot(1,3,1);%imshow(message_arnold,[]);%title('提取的置乱水印');subplot(1,3,3);imshow(message,[]);title('反置乱(恢复)水印');%subplot(1,3,3);%imshow(orig_watermark,[])%title('原始水印')gui 自己学学吧 matlab中文论坛 gui板块。
4.毕业论文的英文摘要翻译!要人工翻译的
花了我好长时间去查字典和校对啊,楼主能不能多加几分给我啊?
Digital image watermarking technology research
Abstract:
With the computer network technology and the rapid development and dissemination of copies of digital works become more convenient, while delivering a number of works of information security and the protection of copyright protection has become an urgent need to address the real issues. Digital watermarking is in the field of information security in recent years the rise of new methods to protect intellectual property rights. Digital watermarking technology is the information hidden an important component of the widely used in digital media copyright protection, have great prospects for development.
This paper first digital watermarking technology for the development of the status quo and its related technologies were discussed and then the introduction of Fourier transform basic theory, digital watermarking algorithm as the algorithm theoretical foundation and then used a Fourier domain based on the relevance of the test Watermarking algorithm to achieve the original image of the watermark embedding and extraction and finally the use of MATLAB software and the embedded watermark to the right to conduct the simulation and test in two different attacks, the security of the algorithm.
The algorithm combines Arnold scrambling methods, classic detection methods and related Fourier domain and embedded in the adoption of two embedded pseudo-random sequence is not related to the method, effectively raising the watermark security and relevance of the test Accuracy.
5.写一篇《论算法设计中的分治与增量》的学术论文1500字
一、动态规划的基本思想 在比较基本的算法设计思想里,动态规划是比较难于理解,难于抽象的一种,但是却又十分重要。
动态规划的实质是分治思想和解决冗余,因此它与分治法和贪心法类似,它们都是将问题的实例分解为更小的、相似的子问题,但是动态规划又有自己的特点。贪心法的当前选择可能要依赖于已经作出的选择,但不依赖于还未做出的选择和子问题,因此它的特征是由顶向下,一步一步地做出贪心选择,但不足的是,如果当前选择可能要依赖子问题的解时,则难以通过局部的贪心策略达到全局最优解。
相比而言,动态规划则可以处理不具有贪心实质的问题。在用分治法解决问题时,由于子问题的数目往往是问题规模的指数函数,因此对时间的消耗太大。
动态规划的思想在于,如果各个子问题不是独立的,不同的子问题的个数只是多项式量级,如果我们能够保存已经解决的子问题的答案,而在需要的时候再找出已求得的答案,这样就可以避免大量的重复计算。由此而来的基本思路是,用一个表记录所有已解决的子问题的答案,不管该问题以后是否被用到,只要它被计算过,就将其结果填入表中。
比较感性的说,其实动态规划的思想是对贪心算法和分治法的一种折衷,它所解决的问题往往不具有可爱的贪心实质,但是各个子问题又不是完全零散的,这时候我们用一定的空间来换取时间,就可以提高解题的效率。二、动态规划的基本步骤 动态规划算法通常用于求解具有某种最优性质的问题。
在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值(最大值或最小值)的那个解。
设计一个动态规划算法,通常可以按以下几个步骤进行:(1)找出最优解的性质,并刻画其结构特征。(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。(4)根据计算最优值时得到的信息,构造一个最优解。
其中(1)——(3)步是动态规划算法的基本步骤。在只需要求出最优值的情形,步骤(4)可以省去。
若需要求出问题的一个最优解,则必须执行步骤(4)。此时,在步骤(3)中计算最优值时,通常需记录更多的信息,以便在步骤(4)中,根据所记录的信息,快速构造出一个最优解。
三、典型的动态规划举例——矩阵连乘问题 作为经典的动态规划算法举例,矩阵连乘问题很好地展现了动态规划的特点和实用价值。给定n个矩阵{A1,A2,。
,An},其中Ai与Ai+1是可乘的,i=1,2,。n-1。
现在要计算这n个矩阵的连乘积。由于矩阵的乘法满足结合律,所以通过加括号可以使得计算矩阵的连乘积有许多不同的计算次序。
然而采用不同的加扩号方式,所需要的总计算量是不一样的。若A是一个p*q矩阵,B是一个q*r矩阵,则其乘积C=AB是一个p*r矩阵。
如果用标准算法计算C,总共需要pqr次数乘。现在来看一个例子。
A1,A2,A3分别是10*100,100*5和5*50的矩阵。如果按照((A1A2)A3)来计算,则计算所需的总数乘次数是10*100*5+10*5*50=7500。
如果按照(A1(A2A3))来计算,则需要的数乘次数是100*5*50+10*100*50=75000,整整是前者的10倍。由此可见,在计算矩阵连乘积时,不同的加括号方式所导致的不同的计算对计算量有很大的影响。
如何确定计算矩阵连乘积A1A2,。,An的一个计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少便成为一个问题。
对于这个问题,穷举法虽然易于入手,但是经过计算,它所需要的计算次数是n的指数函数,因此在效率上显得过于低下。现在我们按照动态规划的基本步骤来分析解决这个问题,并比较它与穷举法在时间消耗上的差异。
(1)分析最优解的结构。现在,将矩阵连乘积AiAi+1。
Aj简记为A[i:j]。对于A[1:n]的一个最优次序,设这个计算次序在矩阵Ak和Ak+1之间将矩阵链断开(1<=k Ak)(Ak+1。An))。 依此次序,我们应该先分别计算A[1:k]和A[k+1:n],然后将计算结果相乘得到A[1:n],总计算量为A[1:k]的计算量加上A[k+1:n]的计算量,再加上A[1:k]和A[k+1:n]相乘的计算量。通过反证法可以证明,问题的关键特征在于,计算A[1:n]的一个最优次序所包含的计算矩阵子链A[1:k]和A[k+1:n]的次序也是最优的。 因此,矩阵连乘积计算次序问题的最优解包含着其子问题的最优解。这种最优子结构性质是该问题可以用动态规划解决的重要特征。 (2)建立递归关系定义最优值。设计算A[i:j](1<=i<=j<=n)所需的最少数乘次数为m[i][j],则原问题的最优值为m[1][n]。 而且易见,当i=j时,m[i][j]=0。根据上述最优子结构性质,当i 从而有:当i=j时,m[i][j]=0。当i 除此之外,若将对应于m[i][j]的断开位置记为s[i][j],在计算出最优值m[i][j]后,可以递归地由s[i][j]构造出相应的最优解。(3)计算最优值。 如果直接套用m[i][j]的计算公式,进行简单的递归计算需要耗费指数计算时间。然而,实际上不同的子问题的个数只是n的平方项级(对于1<=i<=j<=n不同的有序对(i,j)对应于不同的子问题)。 用动态规划。 史丰收计算法 演练实例一 速 算 法 演 练 实 例 Example of Rapid Calculation in Practice ○史丰收速算法易学易用,算法是从高位数算起,记着史教授总结了的26句口诀(这些口诀不需死背,而是合乎科学规律,相互连系),用来表示一位数乘多位数的进位规律,掌握了这些口诀和一些具体法则,就能快速进行加、减、乘、除、乘方、开方、分数、函数、对数…等运算。 □本文针对乘法举例说明 ○速算法和传统乘法一样,均需逐位地处理乘数的每位数字,我们把被乘数中正在处理的那个数位称为「本位」,而从本位右侧第一位到最末位所表示的数称「后位数」。本位被乘以后,只取乘积的个位数,此即「本个」,而本位的后位数与乘数相乘后要进位的数就是「后进」。 ○乘积的每位数是由「本个加后进」和的个位数即-- □本位积=(本个十后进)之和的个位数 ○那么我们演算时要由左而右地逐位求本个与后进,然后相加再取其个位数。现在,就以右例具体说明演算时的思维活动。 (例题) 被乘数首位前补0,列出算式: 0847536*2=1695072 乘数为2的进位规律是「2满5进1」 0*2本个0,后位8,后进1,得1 8*2本个6,后位4,不进,得6 4*2本个8,后位7,满5进1, 8十1得9 7*2本个4,后位5,满5进1, 4十1得5 5*2本个0,后位3不进,得0 3*2本个6,后位6,满5进1, 6十1得7 6*2本个2,无后位,得2 在此我们只举最简单的例子供读者参考,至于乘3、4……至乘9也均有一定的进位规律,限于篇幅,在此未能一一罗列。 「史丰收速算法」即以这些进位规律为基础,逐步发展而成,只要运用熟练,举凡加减乘除四则多位数运算,均可达到快速准确的目的。6.求算法相关的论文