图像质量评价及率失真性能曲线绘制
1.1问题描述
LSB隐写时,人眼看不出载体图像变化,但修改了像素值即引入了信号失真,这种失真难以通过肉眼去描述,因此引入嵌入率embedding rate ER、负载payload和峰值信噪比PSNR的概念。在本次实验中通过实验理解嵌入率embedding rate ER、负载payload和峰值信噪比PSNR,并通过实验对其进行简单应用。
1.2基本要求
- 输入的形式和输入值的范围;
task1.m:指定一个嵌入率为0.1bpp~1bpp,本次实验采用嵌入率为0.53 bpp;一个载体图像,本次实验使用Lena.bmp;
task2.m:使用Lena.bmp作为载体图像;
task3.m:使用彩色图像Lena_RGB.bmp作为载体图像;
task4.m:使用1.tiff~10.tiff十张黑白图像作为不同载体图片;
Task5.m:使用Lena.bmp作为载体图像。
- 输出的形式;
task1.m:一张嵌入率为0.53的含密图像;
task2.m:不同嵌入率下产生的含密图像的PSNR值和绘制的率失真曲线;
task3.m:分别对R\G\B空间用同样方法嵌入同样数据最终产生的不同含密图像;
task4.m:用PSNR不低于38来约束最高payload,最高payload值、ER值和载体图像尺寸随载体图像不同的变化曲线;
task2.m:不同嵌入率下产生的含密图像的SSIM值和绘制的率失真曲线。
- 程序所能达到的功能。
task1.m:指定嵌入率为0.53bpp时,用matlab 产生长度为payload的随机数据,用LSB替换算法产生嵌入后的含密图像;
task2.m:计算不同嵌入率下产生的含密图像的PSNR值并绘制率失真曲线;
task3.m:分别对R\G\B空间用同样方法嵌入同样数据最终产生的不同含密图像;
task4.m:用PSNR不低于38来约束最高payload,分析最高payload值随载体图像不同而产生变化的原因;
task5.m:计算不同嵌入率下产生的含密图像的SSIM值并绘制率失真曲线。
2 概要设计
2.1主程序的结构流程及各模块之间的调用关系
2.2 各模块算法设计
task1~task4均调用了psnr.m函数,其可以根据载体图像和含密图像计算出两者的psnr值。
task5调用ssim.m函数,其可以根据载体图像和含密图像计算出两者的ssim值。
3. 测试与分析
测试数据,输出测试的结果,这里的测试数据应该完整和严格。并对结果进行分析。必须有运行截图
task1:指定嵌入率为0.53bpp时,用matlab 产生长度为payload的随机数据,用LSB替换算法产生嵌入后的含密图像;
task2:计算不同嵌入率下产生的含密图像的PSNR值并绘制率失真曲线:横轴嵌入率,纵轴对应的含密图像PSNR值.
task3:分别对R\G\B空间用同样方法嵌入同样数据,观察最终合成的图像人眼视觉效果,可以发现嵌入B空间的最低位对人眼视觉影响相对较小,嵌入G空间的最低位对人眼视觉影响相对大一些。
task4:对于不同载体图像,研究其最大payload值的不同,因此本次实验选用了10张图像作为载体图片,计算出其最大的payload值,并分析这10张图像的区别,以此分析最大的payload值的影响因素。
通过10幅图像的测速结果可知,以PSNR不低于38来约束最高payload,随着载体图像的不同,其最高嵌入率ER是保持稳定的,但随着载体图像的不同,其最高payload值有所不同,但对于1、2、3、4、6、7、8、9、10图像而言,其最高payload值是一致的,通过比较这10副图像的大小如图8所示。
可以得知,在载体图像大小一致时,其最高payload值是大致一致的,在载体图像大小不一致时,其payload值随着图像大小即像素点个数增大而增大。
在图像质量量化评估标准方面,PSNR只是其中的典型方法之一,其中SSIM在图像质量量化评估方面也被经常使用。对此,在本次实验中,编写了SSIM图像质量量化评估的函数,并计算不同嵌入率下产生的含密图像的SSIM值并绘制率失真曲线图像。
通过task2和task5都可以说明嵌入率越大,其图像失真情况越严重。
部分代码如下(task4.m和task5.m后续发布):
task1.m
clc
clear
close all%% 读取图片
cover=imread("Lena.bmp");
[h,w]=size(cover);
stego=cover; %载密图片%% 确定嵌入数据
ER=0.53; %设定嵌入率为0.53bpp
payload=ceil(h*w*ER); %待嵌入秘密信息长度
rng(106,'twister');
data_embed = round(rand(1,payload)*1); %嵌入数据%% data_embed嵌入载体图片
for i=1:hfor j=1:wif((w*(i-1)+j)>payload) %所有的嵌入数据均已嵌入成功break;endif(mod(cover(i,j),2)~=data_embed(w*(i-1)+j)) %低位与嵌入数据不一致,则修改低位数据,然后存入载密矩阵中stego(i,j)=cover(i,j)-mod(cover(i,j),2)+data_embed(w*(i-1)+j); %先去掉载体数据的最低位,再加上嵌入数据endendif((w*(i-1)+j)>payload) %所有的嵌入数据均已嵌入成功break;end
end%% 输出载体图像和载密图像进行对比
figure();
subplot(1,2,1);
imshow(cover);
title("载体图片");
subplot(1,2,2);
imshow(stego);
title("载密图片");
task2.m
clc
clear
close all%% 读取图片
cover=imread("Lena.bmp");
[h,w]=size(cover);
stego=cover; %载密图片rng(106,'twister');
psnrs=zeros(1,100); %为0:0.01:1的嵌入率下的psnr值预分配空间
t=1;
for ER=0.01:0.01:1%% 不同嵌入率下的嵌入数据payload=ceil(h*w*ER); %待嵌入秘密信息长度data_embed=round(rand(1,payload)*1); %嵌入数据%% 不同嵌入率下含密图像for i=1:hfor j=1:wif((w*(i-1)+j)>payload) %所有的嵌入数据均已嵌入成功break;endif(mod(cover(i,j),2)~=data_embed(w*(i-1)+j)) %低位与嵌入数据不一致,则修改低位数据,然后存入载密矩阵中stego(i,j)=cover(i,j)-mod(cover(i,j),2)+data_embed(w*(i-1)+j); %先去掉载体数据的最低位,再加上嵌入数据endendif((w*(i-1)+j)>payload) %所有的嵌入数据均已嵌入成功break;endend%% 不同嵌入率下含密图像的PSNR值psnrs(t)=psnr(cover,stego);t=t+1;
end
plot(0.01:0.01:1,psnrs,'ro-');
title("率失真曲线");
xlabel("嵌入率(bpp)");
ylabel("PSNR值(dB)");
task3.m
clc
clear
close all%% 读取彩色图片
cover=imread("Lena_RGB.bmp");
[h,w,~]=size(cover);
stego=cover;
figure();
subplot(2,2,1);
imshow(cover);
title("原始载体图片");%% 生成随机数据
ER=1; %设定嵌入率为1bpp
payload=ceil(h*w*ER); %待嵌入秘密信息长度
rng(106,'twister');
data_embed = round(rand(1,payload)*1); %嵌入数据%% 分别插入R\G\B空间用同样方法嵌入同样数据
dimension=['R';'G';'B'];
for k=1:3for i=1:hfor j=1:wif((w*(i-1)+j)>payload) %所有的嵌入数据均已嵌入成功break;endif(mod(cover(i,j,k),2)~=data_embed(w*(i-1)+j)) %低位与嵌入数据不一致,则修改低位数据,然后存入载密矩阵中stego(i,j,k)=cover(i,j,k)-mod(cover(i,j,k),2)+data_embed(w*(i-1)+j); %先去掉载体数据的最低位,再加上嵌入数据endendif((w*(i-1)+j)>payload) %所有的嵌入数据均已嵌入成功break;endendsubplot(2,2,k+1);imshow(stego);text=['嵌入',dimension(k,:),'空间的载密图片'];title(text);
end
psnr.m
function psnrvalue=psnr(origin,test)
%得到图像origin和test 的PSNR
I1=double(origin);
I2=double(test);
E=I1-I2;
MSE=mean2(E.*E);
if MSE==0psnrvalue=-1;
elsepsnrvalue=10*log10(255*255/MSE);
end
图像质量评价及率失真性能曲线绘制相关推荐
- matlab无参考图像质量评价,无参考屏幕内容图像质量评价
1 引言 1.1 研究背景及意义 随着计算机和移动互联网技术的快速发展, 多屏互动[.视频游戏[.远程教育等多客户端通信系统也得到了飞速的发展.在这类系统中, 各类终端之间可以相互通信, 以实现屏幕内 ...
- HEVC率失真优化方法
参考资料: [1]万帅,杨付正编著. 新一代高效视频编码H.265/HEVC 原理.标准与实现[M]. 北京:电子工业出版社, 2014.12. 视频率失真曲线 对于某一视频编码标准,其编码框架已经确 ...
- 图像质量评价数据库与图像质量算法性能评价指标
视频质量专家组(Video Quality Experts Group, VQEG)发起的评价算法性能校准项目的主要思想是通过组织主观实验获取图像的主观质量,以主客观质量的一致性来判断客观评价算法的性 ...
- 评估图像质量评价算法性能的几个常用的标准
The 'good-ness' of any algorithm is gauged by measuring the correlation of algorithmic scores with s ...
- Python机器学习:评价分类结果006precisoion-Recall曲线绘制
code #实现混淆矩阵,精准率和召回率 import numpy as np from sklearn import datasets digits = datasets.load_digits() ...
- 图像质量评价学习笔记02:IQA模型性能评价指标(PLCC、SROCC、KROCC、RMSE)
性能好的图像质量评价(IQA)算法,其质量评测分数会与主观质量分数高度一致,IQA 有许多评价指标,为了衡量方法测试结果与主观评价之间的一致性,视频质量专家组VQEG(Video Quality Ex ...
- 医学图像质量评价方法SSIM
医学图像质量评价中的梯度加权SSIM探说 来源:http://pklunwen.com/ 摘要:Zhou Wang等人提出了著名的图像客观质量评价方法:结构相似度(SSIM),其理论基础是人眼视觉系统 ...
- 图像质量评价概述(评估指标、传统检测方法)
一.概述 在图像信息技术被广泛应用的情况下,对图像质量的评估变成一个广泛而基本的问题.由于图像信息相对于其它信息有着无可比拟的优点,因此对图像信息进行合理处理成为各领域中不可或缺的手段.在图像的获取. ...
- 机器学习算法 03 —— 逻辑回归算法(精确率和召回率、ROC曲线和AUC指标、过采样和欠采样)
文章目录 系列文章 逻辑回归 1 逻辑回归介绍 1.1 逻辑回归原理 输入 激活函数 1.2 损失以及优化 2 逻辑回归API介绍 3 案例:肿瘤良性恶性预测 4 分类模型的评估 4.1 分类评估方法 ...
最新文章
- Is It A Tree?
- [转载]通过Arcgis Server向MXD中添加图层
- hibernate oracle boolean 数据类型,用hibernate向oracle读取blob数据类型为并下载到本地...
- 日立预计08财年亏损78亿美元 将裁员7千人
- EasyUI 中 MenuButton 的使用方法
- 服务器数据库端口修改方法,如何修改云服务器数据库端口
- linux docker导入镜像,Docker镜像的导入和导出
- 前端urldecode 特殊字符处理导致后端无法解析
- java 正则 工具类_正则表达式工具类,正则表达式封装,Java正则表达式
- 如何在弹出的窗口中引发父窗口的postback事件
- iOS原生二维码扫描白屏问题
- 太可怕了!上海交大毕业的网易前员工曝身患重病后,被残酷裁员!
- 查询2021高考成绩位次,2021年江苏高考位次表及高考个人成绩排名查询
- 测序数据量,测序深度和测序覆盖度
- [笔记分享] [Camera] 相机的等效焦距计算
- 认识很浅的云南最后的秘境
- TCL/Tk基础学习(二)
- 黄土高原主要是什么树木
- “智数据,创未来”——2018中国存储与数据峰会在京盛大举行
- HorizontalScrollView 自动滑动