(绝对可运行)加密图像中的可逆数据隐藏算法matlab代码(基于张新鹏教授的算法)
- 格式:doc
- 大小:42.50 KB
- 文档页数:5
可逆信息隐藏是指在保证原始载体数据不受损的情况下,将需要隐藏的信息嵌入到载体数据中,并且可以在需要时将隐藏的信息提取出来。
可逆信息隐藏的应用场景非常广泛,可以用于数字水印、版权保护、隐私保护等领域。
其中,HS算法是一种经典的可逆信息隐藏算法,而MATLAB是一种功能强大的科学计算软件,结合两者可以实现对图像信息的可逆隐藏和提取。
1. 可逆信息隐藏原理可逆信息隐藏是利用载体图像的一些隐含特性来隐藏需要传输的信息,在不损害载体图像质量的前提下,能够完整、准确地提取出隐藏的信息。
可逆信息隐藏主要包括隐写与加密两个主要过程。
隐写是指将需要隐藏的信息写入到载体图像中,而加密则是对隐藏的信息进行加密处理,增强信息的安全性。
2. HS算法原理HS算法是一种经典的可逆信息隐藏算法,其核心思想是利用图像的直方图来隐藏信息。
具体来说,HS算法首先对载体图像进行预处理,然后通过对直方图的调整来实现信息的隐藏。
在提取信息时,再根据调整后的直方图来还原隐藏的信息。
HS算法的优点是对图像没有任何损害,并且隐藏的信息可以完整提取出来。
3. MATLAB在可逆信息隐藏中的应用MATLAB作为一个功能强大的科学计算软件,提供了丰富的图像处理和加密算法库,非常适合用于可逆信息隐藏的实现。
利用MATLAB,可以方便地对图像进行处理、隐藏信息,并且提供了丰富的工具函数,能够直观地展示信息隐藏的效果。
4. 可逆信息隐藏HS算法在MATLAB中的实现通过MATLAB可以很方便地实现可逆信息隐藏HS算法。
需要对载体图像进行预处理,以便后续信息的隐藏。
利用HS算法将需要隐藏的信息写入到载体图像中,并对隐藏的信息进行加密处理。
在需要提取信息时,通过对载体图像的处理和对修改后的载体图像进行比对,可以成功地提取出隐藏的信息。
5. 代码示例以下是一个简单的MATLAB代码示例,演示了如何使用HS算法实现可逆信息隐藏:```matlab读取载体图像carrier_image = imread('carrier.png');进行预处理processed_image = preprocess(carrier_image);隐藏信息hidden_image = HS_algorithm(processed_image,'hidden_message');提取隐藏的信息extracted_message = extract_hidden_message(hidden_image);显示提取的信息disp(extracted_message);```通过以上代码示例,可以清晰地看到MATLAB如何便捷地实现了可逆信息隐藏HS算法的过程,并成功地提取出隐藏的信息。
%This is the program of Reversible Data Hiding in Encrypted Domain clc;clear;%===============Read image===========================original_p=rgb2gray(imread('LENA.tif'));[m,n]=size(original_p);%==============Image encryption====================== random_bits=rand(m,n*8)<=0.5;%伪随机序列for i=1:mfor j=1:ns=0;for k=0:7b(k+1)=mod(fix(double(origi nal_p(i,j))/(2Ak)),2);eb(k+1)=xor(b(k+1),random_bits(i,8*j+k-7)); s=s+eb(k+1)*(2A k);endencrypted_image(i,j)=s;endendfigure(1);subplot(1,2,1);imshow(original_p);hold on;title('Original image','fontsize',16);subplot(1,2,2);encrypted_image=uint8(encrypted_image);imshow(encrypted_image);title('Encrypted image','fontsize',16);%================Data embedding======================size=8; %分块大小N=6;%置乱周期number1=3;number2=N-number1;lim_row=fix(m/size); %图像的分块数lim_col=fix(n/size); %图像的分块数bitts=3;watermessage=rand(lim_row,lim_col)<0.5; %水印信息pseudo_randomly for i=1:lim_rowfor j=1:lim_col block_image{i,j}=encrypted_image((size*i-size+1):size*i,(size*j-size+1):size*j); % 分块for k=1:sizefor t=1:sizeindex=arnold(k,t,size,number1);%arnold is permutateion function;arno_block_image{i,j}(index(1)+1,index(2)+1)=block_image{i,j}(k,t); end end%数据嵌入sum0=zeros(size/2,size); if watermessage(i,j)==0 for k=0:7bbb{k+1}=mod(fix(double(arno_block_image{i,j}(1:size/ 2,:))/(2你)),2);if k<bitts bbb{k+1}=~bbb{k+1};endsum0=sum0+bbb{k+1}*(2A k);enddata_image{i,j}=[sum0;double(arno_block_image{i,j}(size/ 2+1:size,:))];endsum1=zeros(size/2,size);if watermessage(i,j)==1for k=0:7 bbb{k+1}=mod(fix(double(arno_block_image{i,j}(size/ 2+1:size,:))/(2Ak)),2);if k<bittsbbb{k+1}=~bbb{k+1};endsum1=sum1+bbb{k+1}*(2Ak);enddata_image{i,j}=[double(arno_block_image{i,j}(1:size/ 2,:));sum1];endfor k=1:sizefor t=1:size index=arnold(k,t,size,number2);%arnold is permutateion function;re_data_image{i,j}(index(1)+1,index(2)+1)=data_image{i,j}(k,t);endend%合成嵌入数据后的图像data_en_image((size*i-size+1):size*i,(size*j-size+1):size*j)=re_data_image{i,j};endend%=====Encrypt image which contains data====for i=1:lim_row*sizefor j=1:lim_col*sizes=0;for k=0:7b(k+1)=mod(fix(data_en_image(i,j)/(2Ak)),2);eb(k+1)=xor(b(k+1),random_bits(i,8*j+k-7));s=s+eb(k+1)*(2A k);endde_data_image(i,j)=s;endendfigure(2);hold on;subplot(1,2,1);imshow(original_p);title('Original image','fontsize',16);subplot(1,2,2);imshow(uint8(de_data_image));title('Decrypted image contains data','fontsize',16);%直接解密图像的峰值信噪比sumsss=0;for i=1:lim_row*sizefor j=1:lim_col*size sumsss=(de_data_image(i,j)-double(original_p(i,j)))A2+sumsss;endendmse=sumsss/((lim_row*size)*(lim_row*size));psnr=10*log10(255A2 /mse);%======Extract data and recover image=======for i=1:lim_rowfor j=1:lim_col block_de_image{i,j}=de_data_image((size*i-size+1):size*i,(size*j-size+1):size*j);%分块for k=1:sizefor t=1:size index=arnold(k,t,size,number1);%arnold is permutateion function;ar_block_de_image{i,j}(index(1)+1,index(2)+1)=block_de_image{i,j}(k,t);endendsum0=zeros(size/2,size);sum1=zeros(size/2,size);for k=0:7bbbO{k+1}=mod(fix(ar_block_de_image{i,j}(1:size/ 2,:)/(2你)),2);bbb1{k+1}=mod(fix(ar_block_de_image{i,j}(size/ 2+1:size,:)/(2A k)),2);if k<bittsbbb0{k+1}=~bbb0{k+1};bbb1{k+1}=~bbb1{k+1};endsum0=sum0+bbb0{k+1}*(2Ak);sum1=sum1+bbb1{k+1}*(2Ak);endar_H0_image{i,j}=[sum0;ar_block_de_image{i,j}(size/ 2+1:size,:)];ar_H1_image{i,j}=[ar_block_de_image{i,j}(1:size/ 2,:);sum1];for k=1:sizefor t=1:size index=arnold(k,t,size,number2);%arnold is permutateion function;H0_image{i,j}(index(1)+1,index(2)+1)=ar_H0_image{i,j}(k,t);H1_image{i,j}(index(1)+1,index(2)+1)=ar_H1_image{i,j}(k,t);endendf0=0;f1=0;for u=2:size-1for v=2:size-1f0=f0+abs(H0_image{i,j}(u,v)-(H0_image{i,j}(u-1,v)+H0_image{i,j}(u,v-1)+H0_image{i,j}(u+1,v)+H0_image{i,j}(u,v+1))/4);f1=f1+abs(H1_image{i,j}(u,v)-(H1_image{i,j}(u-1,v)+H1_image{i,j}(u,v-1)+H1_image{i,j}(u+1,v)+H1_image{i,j}(u,v+1))/4);endendif (f0-f1)<0extract_bits(i,j)=0; recover_image(size*i-size+1:size*i,size*j-size+1:size*j)=H0_image{i,j};elseextract_bits(i,j)=1; recover_image(size*i-size+1:size*i,size*j-size+1:size*j)=H1_image{i,j};endendendfigure(3);subplot(1,2,1);imshow(original_p);hold on;title('Original image','fontsize',16); subplot(1,2,2);recover_image=uint8(recover_image); imshow(recover_image);hold on; title('Recovered image','fontsize',16);%==============analysis============ diff=original_p(1:lim_row*size,1:lim_col*size)-recover_image;counts=0;for i=1:lim_rowfor j=1:lim_col block_diff{i,j}=diff((size*i-size+1):size*i,(size*j-size+1):size*j); %分块if extract_bits(i,j)~=watermessage(i,j) block_diff{i,j}=ones(size,size)*255;counts=counts+1;else block_diff{i,j}=original_p((size*i-size+1):size*i,(size*j-size+1):size*j);end diff_image((size*i-size+1):size*i,(size*j-size+1):size*j)=block_diff{i,j};endend figure(4); imshow(diff_image); hold on;%title('Blocks of incorrect','fontsize',16); %错误率与分块大小的关系rate=counts/((lim_row)*(lim_col))。
基于matlab的隐写术代码隐写术是一种将信息隐藏在其他媒介中的技术,它可以用于保护敏感信息的安全传输。
在本文中,我们将介绍如何使用MATLAB编写一个简单的隐写术代码。
首先,我们需要了解隐写术的基本原理。
隐写术的核心思想是将要隐藏的信息嵌入到一个载体中,使得外观上看不出任何痕迹。
在本例中,我们将使用一张图片作为载体,并将一段文本信息隐藏在其中。
首先,我们需要加载图片和文本信息。
在MATLAB中,可以使用imread函数加载图片,使用fopen和fread函数加载文本信息。
加载完成后,我们可以使用imshow函数显示图片,以确保载体和信息都已正确加载。
接下来,我们需要将文本信息转换为二进制形式。
在MATLAB中,可以使用dec2bin函数将十进制数转换为二进制数。
我们将每个字符的ASCII码转换为8位的二进制数,并将所有字符的二进制数连接起来,形成一个长的二进制字符串。
然后,我们需要将二进制信息嵌入到图片中。
在MATLAB中,可以使用imwrite函数将图片保存为新的文件。
我们可以通过修改图片的像素值来嵌入信息。
具体来说,我们可以将二进制信息的每一位嵌入到图片的RGB通道的最低有效位中。
这样,即使修改了像素值,人眼也很难察觉到变化。
最后,我们需要提取隐藏在图片中的信息。
在MATLAB中,可以使用imread函数加载修改后的图片。
然后,我们可以通过读取每个像素的RGB通道的最低有效位,提取出隐藏的二进制信息。
最后,我们可以使用bin2dec函数将二进制数转换为十进制数,并使用char函数将十进制数转换为字符。
通过以上步骤,我们就可以实现一个简单的基于MATLAB的隐写术代码。
当然,这只是一个简单的示例,实际应用中还需要考虑更多的因素,如加密算法、嵌入容量等。
但是,通过这个例子,我们可以了解到隐写术的基本原理和MATLAB的应用。
总结起来,基于MATLAB的隐写术代码可以通过加载图片和文本信息、将文本信息转换为二进制形式、将二进制信息嵌入到图片中、提取隐藏的信息等步骤实现。
Research and Realization of Image Information Hiding Algorithm Based on MATLAB 作者: 陈小娥[1]
作者机构: [1]福建船政交通职业学院信息工程系,福建福州350007
出版物刊名: 绍兴文理学院学报
页码: 86-92页
年卷期: 2018年 第9期
主题词: 信息隐藏;版权保护;嵌入与提取;MATLAB
摘要:网络技术和多媒体技术迅猛发展,为了更好地保障图像信息传输的安全性和可靠性,解决数字图像的版权保护问题,图像信息隐藏技术已成为图像处理领域的研究热点之一。
采用MATLAB开发环境,提出了一种图像信息隐藏算法,实现了图像信息隐藏的两大基本功能,即信息的嵌入和信息的提取。
同时,模拟常见的攻击方法,验证了添加隐藏信息后的图像的抗攻击能力。
实验表明,该算法具有较强的鲁棒性,添加隐藏信息后的图像能有效地应对多种常见攻击,且隐藏的信息具有良好的不可见性。
按需发送的加密图像中的可逆信息隐藏
韩喜玉;钱振兴;张新鹏;姜飞
【期刊名称】《应用科学学报》
【年(卷),期】2015(033)001
【摘要】提出了一种新的加密图像中的可逆信息隐藏算法.发送方对图像进行下采样并计算残差,得到子图像和残差两部分数据,再使用加密密钥对两部分数据分别进行加密后发送给服务器端.服务器端对残差部分的加密数据进行算术编码,产生冗余空间并使用嵌入密钥隐藏额外数据.接收端根据持有密钥的情况,从服务器端获取不同的数据版本.与以往方法相比,所提出的按需传输数据的新机制可有效减少服务器传送的数据量,且在图像可无损恢复的前提下大大提高了数据嵌入率.
【总页数】9页(P50-58)
【作者】韩喜玉;钱振兴;张新鹏;姜飞
【作者单位】上海大学通信与信息工程学院,上海200444;上海大学通信与信息工程学院,上海200444;上海大学通信与信息工程学院,上海200444;上海大学通信与信息工程学院,上海200444
【正文语种】中文
【中图分类】TN911.73
【相关文献】
1.基于秘密共享的同态加密图像可逆信息隐藏算法 [J], 周能;张敏情;刘蒙蒙
2.基于改进PVO自适应嵌入的加密域图像可逆信息隐藏方法 [J], 侯思祖;马红月;
项洪印
3.基于加密图像的可逆信息隐藏算法综述 [J], 庞明源;范贵进;孙容海
4.基于位平面循环异或的加密图像可逆信息隐藏 [J], 王慧;栗风永;朱恒杰
5.基于弹载遥测图像加密域的可逆信息隐藏算法 [J], 张伟;宋畅;洪文鹏;毕盛;卫俊杰
因版权原因,仅展示原文概要,查看原文内容请购买。
基于无损压缩的加密图像可逆信息隐藏郑淑丽;曹敏;胡东辉;李丹丹【摘要】Aiming at the defects of existing algorithms in the embedding capacity and the operation of receiver ,an algorithm of reversible data hiding in encrypted images based on lossless compression isproposed .Firstly ,the substitution encryption technology is used to encrypt the original image .Sec-ondly ,the data hider randomly divides the encrypted image into several equal and non-overlapping blocks ,then the ones are compressed with a lossless manner to create a sparse space to embed secret data .Finally ,the receiver can obtain secret data and original image by using the data-hiding key and decryption key .The experimental results show that compared with the previous methods ,the pro-posed method achieves excellent efficiency in peak signal-to-noise ratio(PSNR) and embedding rate .%针对现有方法存在的隐藏容量低、操作不灵活的缺陷 ,文章提出了一种基于无损压缩的加密图像可逆信息隐藏算法 . 图像拥有者对原始图像进行替换加密 ;秘密信息隐藏者将加密图像随机划分为若干个大小相等且互不重叠的块 ,并且在每个加密块中采用无损压缩技术获得空余空间来隐藏秘密信息 ;接收者采用提取密钥进行秘密信息提取后 ,再结合解密密钥能够正确恢复出原始图像 . 实验仿真结果表明 ,与现有方法相比 ,所提出的算法在峰值信噪比和信息隐藏率上都具有很好的效能 .【期刊名称】《合肥工业大学学报(自然科学版)》【年(卷),期】2016(039)001【总页数】6页(P50-55)【关键词】加密图像;可逆信息隐藏;替换加密;无损压缩;峰值信噪比;隐藏率【作者】郑淑丽;曹敏;胡东辉;李丹丹【作者单位】合肥工业大学计算机与信息学院 ,安徽合肥 230009;合肥工业大学计算机与信息学院 ,安徽合肥 230009;合肥工业大学计算机与信息学院 ,安徽合肥 230009;合肥工业大学计算机与信息学院 ,安徽合肥 230009【正文语种】中文【中图分类】TP309.7近年来,随着多媒体技术的快速发展以及在公共网络中安全传输的需求不断增加,加密技术[1]和可逆信息隐藏技术[2-4]成为保证信息安全的2个重要技术,学者们大都采用其中一种技术来保证信息传输的安全,然而在军事、商业、医疗[5]和司法证据等领域却需要将这2种技术相结合才能解决实际问题。
基于多目标优化的加密图像可逆信息隐藏
张翔宇;杨阳;冯国徽;秦川
【期刊名称】《计算机应用》
【年(卷),期】2022(42)6
【摘要】针对加密前预留空间(RRBE)嵌入算法需要进行一系列的预处理工作,以及加密后腾出空间(VRAE)嵌入算法嵌入空间较小的缺点,为了在提高嵌入率的同时缩
减算法流程和减少工作量,提出一种基于多目标优化的加密图像可逆信息隐藏算法。
该算法将RRBE与VRAE中两个具有代表性的算法在同一载体中结合使用,并以信
息嵌入量、直接解密图像失真、提取错误率、计算复杂度等性能评价指标作为优化子目标,再利用功效系数法建立模型求解出两种算法应用比例的相对最优解。
实验
结果表明,所提算法不仅能够降低单独使用RRBE算法的计算复杂度,还能使图像处
理用户够根据实际应用场景中不同的需求灵活地分配优化目标,同时也能获得较好
的图像质量和令人满意的信息嵌入量。
【总页数】8页(P1716-1723)
【作者】张翔宇;杨阳;冯国徽;秦川
【作者单位】上海理工大学光电信息与计算机工程学院;东南数字经济发展研究院【正文语种】中文
【中图分类】TP391
【相关文献】
1.基于改进PVO自适应嵌入的加密域图像可逆信息隐藏方法
2.基于加密图像的可逆信息隐藏算法综述
3.基于位平面循环异或的加密图像可逆信息隐藏
4.基于弹载遥测图像加密域的可逆信息隐藏算法
5.基于Paillier加密的大容量双图像可逆信息隐藏
因版权原因,仅展示原文概要,查看原文内容请购买。
%This is the program of Reversible Data Hiding in Encrypted Domainclc;clear;%===============Read image=========================== original_p=rgb2gray(imread('LENA.tif'));[m,n]=size(original_p);%==============Image encryption====================== random_bits=rand(m,n*8)<=0.5; %伪随机序列for i=1:mfor j=1:ns=0;for k=0:7b(k+1)=mod(fix(double(original_p(i,j))/(2^k)),2);eb(k+1)=xor(b(k+1),random_bits(i,8*j+k-7));s=s+eb(k+1)*(2^k);endencrypted_image(i,j)=s;endendfigure(1);subplot(1,2,1);imshow(original_p);hold on;title('Original image','fontsize',16);subplot(1,2,2);encrypted_image=uint8(encrypted_image);imshow(encrypted_image);title('Encrypted image','fontsize',16);%================Data embedding====================== size=8; %分块大小N=6;%置乱周期number1=3;number2=N-number1;lim_row=fix(m/size); %图像的分块数lim_col=fix(n/size); %图像的分块数bitts=3;watermessage=rand(lim_row,lim_col)<0.5; %水印信息%======pseudo_randomly=======for i=1:lim_rowfor j=1:lim_colblock_image{i,j}=encrypted_image((size*i-size+1):size*i,(size*j-size+1):size*j); %分块for k=1:sizefor t=1:sizeindex=arnold(k,t,size,number1);%arnold is permutateion function;arno_block_image{i,j}(index(1)+1,index(2)+1)=block_image{i,j}(k,t);endend%数据嵌入sum0=zeros(size/2,size);if watermessage(i,j)==0for k=0:7bbb{k+1}=mod(fix(double(arno_block_image{i,j}(1:size/2,:))/(2^k)),2);if k<bittsbbb{k+1}=~bbb{k+1};endsum0=sum0+bbb{k+1}*(2^k);enddata_image{i,j}=[sum0;double(arno_block_image{i,j}(size/2+1:size,:))];endsum1=zeros(size/2,size);if watermessage(i,j)==1for k=0:7bbb{k+1}=mod(fix(double(arno_block_image{i,j}(size/2+1:size,:))/(2^k)),2);if k<bittsbbb{k+1}=~bbb{k+1};endsum1=sum1+bbb{k+1}*(2^k);enddata_image{i,j}=[double(arno_block_image{i,j}(1:size/2,:));sum1];endfor k=1:sizefor t=1:sizeindex=arnold(k,t,size,number2);%arnold is permutateion function;re_data_image{i,j}(index(1)+1,index(2)+1)=data_image{i,j}(k,t);endend%合成嵌入数据后的图像data_en_image((size*i-size+1):size*i,(size*j-size+1):size*j)=re_data_image{i,j};endend%=====Encrypt image which contains data====for i=1:lim_row*sizefor j=1:lim_col*sizes=0;for k=0:7b(k+1)=mod(fix(data_en_image(i,j)/(2^k)),2);eb(k+1)=xor(b(k+1),random_bits(i,8*j+k-7));s=s+eb(k+1)*(2^k);endde_data_image(i,j)=s;endendfigure(2);hold on;subplot(1,2,1);imshow(original_p);title('Original image','fontsize',16);subplot(1,2,2);imshow(uint8(de_data_image));title('Decrypted image contains data','fontsize',16);%直接解密图像的峰值信噪比sumsss=0;for i=1:lim_row*sizefor j=1:lim_col*sizesumsss=(de_data_image(i,j)-double(original_p(i,j)))^2+sumsss;endendmse=sumsss/((lim_row*size)*(lim_row*size));psnr=10*log10(255^2/mse);%======Extract data and recover image=======for i=1:lim_rowfor j=1:lim_colblock_de_image{i,j}=de_data_image((size*i-size+1):size*i,(size*j-size+1):size*j); %分块for k=1:sizefor t=1:sizeindex=arnold(k,t,size,number1);%arnold is permutateion function;ar_block_de_image{i,j}(index(1)+1,index(2)+1)=block_de_image{i,j}(k,t);endendsum0=zeros(size/2,size);sum1=zeros(size/2,size);for k=0:7bbb0{k+1}=mod(fix(ar_block_de_image{i,j}(1:size/2,:)/(2^k)),2);bbb1{k+1}=mod(fix(ar_block_de_image{i,j}(size/2+1:size,:)/(2^k)),2);if k<bittsbbb0{k+1}=~bbb0{k+1};bbb1{k+1}=~bbb1{k+1};endsum0=sum0+bbb0{k+1}*(2^k);sum1=sum1+bbb1{k+1}*(2^k);endar_H0_image{i,j}=[sum0;ar_block_de_image{i,j}(size/2+1:size,:)];ar_H1_image{i,j}=[ar_block_de_image{i,j}(1:size/2,:);sum1];for k=1:sizefor t=1:sizeindex=arnold(k,t,size,number2);%arnold is permutateion function;H0_image{i,j}(index(1)+1,index(2)+1)=ar_H0_image{i,j}(k,t);H1_image{i,j}(index(1)+1,index(2)+1)=ar_H1_image{i,j}(k,t);endendf0=0;f1=0;for u=2:size-1for v=2:size-1f0=f0+abs(H0_image{i,j}(u,v)-(H0_image{i,j}(u-1,v)+H0_image{i,j}(u,v-1)+H0_image{i,j}(u+1,v)+H0 _image{i,j}(u,v+1))/4);f1=f1+abs(H1_image{i,j}(u,v)-(H1_image{i,j}(u-1,v)+H1_image{i,j}(u,v-1)+H1_image{i,j}(u+1,v)+H1 _image{i,j}(u,v+1))/4);endendif (f0-f1)<0extract_bits(i,j)=0;recover_image(size*i-size+1:size*i,size*j-size+1:size*j)=H0_image{i,j};elseextract_bits(i,j)=1;recover_image(size*i-size+1:size*i,size*j-size+1:size*j)=H1_image{i,j};endendendfigure(3);subplot(1,2,1);imshow(original_p);hold on;title('Original image','fontsize',16);subplot(1,2,2);recover_image=uint8(recover_image);imshow(recover_image);hold on;title('Recovered image','fontsize',16);%==============analysis============diff=original_p(1:lim_row*size,1:lim_col*size)-recover_image;counts=0;for i=1:lim_rowfor j=1:lim_colblock_diff{i,j}=diff((size*i-size+1):size*i,(size*j-size+1):size*j); %分块if extract_bits(i,j)~=watermessage(i,j)block_diff{i,j}=ones(size,size)*255;counts=counts+1;elseblock_diff{i,j}=original_p((size*i-size+1):size*i,(size*j-size+1):size*j);enddiff_image((size*i-size+1):size*i,(size*j-size+1):size*j)=block_diff{i,j};endendfigure(4);imshow(diff_image);hold on;%title('Blocks of incorrect','fontsize',16);%错误率与分块大小的关系rate=counts/((lim_row)*(lim_col))。