一、简介

理论知识参考文献:图像印刷质量的客观评价——以报纸印刷为例

二、部分源代码

function varargout = IQA(varargin)% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @IQA_OpeningFcn, ...'gui_OutputFcn',  @IQA_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before IQA is made visible.
function IQA_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;% Update handles structure
guidata(hObject, handles);ResetButton_Callback(hObject, eventdata, handles)% --- Outputs from this function are returned to the command line.
function varargout = IQA_OutputFcn(hObject, eventdata, handles) % Get default command line output from handles structure
varargout{1} = handles.output;% --- Executes on button press in BrowseImage.
function BrowseImage_Callback(hObject, eventdata, handles)ResetButton_Callback(hObject, eventdata, handles);global image;
[filename pathname] = uigetfile({'*.jpg';'*.bmp';'*.tif';'*.png'},'File Selector');
x = strcat(pathname, filename);
image=imread(x);
axes(handles.axes1);
imshow(image);% --- Executes on button press in AddNoise.
function AddNoise_Callback(hObject, eventdata, handles)global image;
global addnoisyimage;
global mean;
global variance;
global AdditiveNoiseMenu;
if (strcmp(AdditiveNoiseMenu, 'Gaussian'))addnoisyimage = imnoise(image, 'Gaussian', mean, variance);
elseif (strcmp(AdditiveNoiseMenu, 'Poisson'))addnoisyimage = imnoise(image, 'Poisson');elseif (strcmp(AdditiveNoiseMenu, 'Select Additive Noise Type'))addnoisyimage = image;
end
axes(handles.axes2);
imshow(addnoisyimage);% --- Executes on button press in MultiNoise.
function MultiNoise_Callback(hObject, eventdata, handles)
global noisedensity;
global variance_multi;
global image;
global multinoisyimage;
global MultiplicativeNoiseMenu;
if (strcmp(MultiplicativeNoiseMenu, 'Salt & Pepper'))multinoisyimage = imnoise(image, 'salt & pepper', noisedensity);
elseif (strcmp(MultiplicativeNoiseMenu, 'Speckle'))multinoisyimage = imnoise(image, 'speckle', variance_multi);
elseif (strcmp(MultiplicativeNoiseMenu, 'Select Multiplicative Noise'))multinoisyimage = image;
end
axes(handles.axes3);
imshow(multinoisyimage);% --- Executes on button press in CheckPSNR.
function CheckPSNR_Callback(hObject, eventdata, handles)global addnoisyimage;
global multinoisyimage;
global image;
global s;
global u;
global justforcontrol;if (get(hObject, 'Value') == get(hObject,'Max'))justforcontrol=1;s=psnr(addnoisyimage, image);u=psnr(multinoisyimage, image);
elsejustforcontrol=0;s='--';u='--';
end% Hint: get(hObject,'Value') returns toggle state of CheckPSNR
function s = psnr(addnoisyimage, image)if(ndims(addnoisyimage)==3)addnoisyimage = rgb2gray(addnoisyimage);
endif(ndims(image)==3)image = rgb2gray(image);
endaddnoisyimage=double(addnoisyimage);
image=double(image);[m,n] = size(addnoisyimage);peak=255*255*m*n;noise  = addnoisyimage - image;
nostotal = sum(sum(noise.*noise));if nostotal == 0s = 'INF'; %% INF. clean image
elses = 10 * log10(peak./nostotal);
end% --- Executes on button press in CheckSSIM.
function CheckSSIM_Callback(hObject, eventdata, handles)global addnoisyimage;
global multinoisyimage;
global image;
global t;
global v;
global justforcontrol2;
K = [0.05 0.05];
window = ones(8);
L = 100;
Z = [0.01 0.03];
if (get(hObject, 'Value') == get(hObject,'Max'))justforcontrol2=1;t=ssim(addnoisyimage, image, Z, window, L);v=ssim(multinoisyimage, image, Z, window, L);
elsejustforcontrol2=0;t='--';v='--';
end% Hint: get(hObject,'Value') returns toggle state of CheckSSIM
function [mssim] = ssim(img1, img2, Z, window, L)if(ndims(img1)==3)img1=rgb2gray(img1);
end
if(ndims(img2)==3)img2=rgb2gray(img2);
end[rows,cols]=size(img2);
img1=imresize(img1,[rows cols]);if (nargin < 2 || nargin > 5)mssim = -Inf;ssim_map = -Inf;return;
endif (size(img1) ~= size(img2))mssim = -Inf;ssim_map = -Inf;return;
end[M N] = size(img1);if (nargin == 2)if ((M < 11) || (N < 11))mssim = -Inf;ssim_map = -Inf;returnendwindow = fspecial('gaussian', 11, 1.5);  %Z(1) = 0.01;                  % default settingsZ(2) = 0.03;         L = 255;
endif (nargin == 3)if ((M < 11) || (N < 11))mssim = -Inf;ssim_map = -Inf;returnendwindow = fspecial('gaussian', 11, 1.5);L = 255;if (length(Z) == 2)if (Z(1) < 0 || Z(2) < 0)mssim = -Inf;ssim_map = -Inf;return;endelsemssim = -Inf;ssim_map = -Inf;return;end
end

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

【图像评价】基于matlab GUI图像质量评价【含Matlab源码 1373期】相关推荐

  1. 【信号处理】基于Matlab GUI数字均衡器设计,源码附上

    [信号处理]基于Matlab GUI数字均衡器设计,源码附上 数字均衡器是一种常用于音频信号处理的技术,可以有效地补偿声音中的频率失真,提高音质.在这篇文章中,我们将介绍如何使用Matlab GUI进 ...

  2. 【过程控制】基于matlab GUI串级控制【含Matlab源码 2385期】

    ⛄一.简介 1 交互系统整体外观展示 该系统基于 MATLAB GUI 与 Simulink 联合开发, 实现对串级控制系统特性的研究与分析.学生在学习串级控 制有关知识后可使用该应用进行知识回顾.界 ...

  3. matlab svm 语音识别,【情感识别】基于matlab支持向量机(SVM)的语音情感识别【含Matlab源码 543期】...

    一.简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数 ...

  4. 【图像评价】基于matlab GUI图像评价系统【含Matlab源码 2185期】

    一.图像质量评价 图像质量评价对图像处理算法的可行性分析以及某类算法达成效果的比较都起着非常重要的指导作用.随着图像处理技术的发展,对于图像质量评价的研究也日益深入,新的评价指标和评价算法不断涌现,共 ...

  5. 【图像去噪】基于matlab GUI butterworth+中值+维纳+小波图像去噪【含Matlab源码 520期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab GUI butterworth+中值+维纳+小波图像去噪[含Matlab源码 520期] 获取代码方式2: ...

  6. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  7. 【芯片识别】基于matlab GUI形态学PCB板芯片识别【含Matlab源码 1820期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[芯片识别]基于matlab GUI形态学 PCB板芯片识别[含Matlab源码 1820期] 点击上面蓝色字体,直接付费下载,即可. 获 ...

  8. 【大米粒计数】基于matlab GUI形态学大米粒颗粒识别【含Matlab源码 915期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[大米粒计数]基于matlab GUI形态学大米粒颗粒识别[含Matlab源码 915期] (https://download.csdn. ...

  9. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  10. 【图像修复】基于matlab损坏图像修复【含Matlab源码 731期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像修复]基于matlab损坏图像修复[含Matlab源码 731期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏 ...

最新文章

  1. 使用NAT实现TCP负载均衡
  2. 零基础学python可以吗-零基础学习Python可以学会吗?你有哪些方法?
  3. OSChina 周六乱弹 —— 老用户与狗
  4. 【CodeForces - 803D】Magazine Ad(二分答案)
  5. 华为发布麒麟990系列芯片,余承东评论友商5G芯片:苹果没有 三星PPT
  6. linux arm桌面程序,Electron 从零创建一个 Windows/OS X/Linux 的桌面可执行程序
  7. 给radio添加点击事件
  8. 关于下载 GAE High Replication Datastore 数据[实战篇]上
  9. 3d建模公司可视化建模数字孪生应用
  10. 从冬奥看中国科技(六):千里光伏初长成
  11. 区块链钱包,新一代支付宝?|筱静观察
  12. 天龙 - Terrain
  13. 按出生年月日对身份证号进行排序
  14. 计算机图形学空间曲线,课程追忆之《计算机图形学》【曲线曲面篇】
  15. SQLException错误码
  16. Samsung/三星I9128 Galaxy Grand root教程_方法
  17. 计算机蓝屏故障,计算机蓝屏的故障原因以及解决方法
  18. mysql中括号_手把手教你看MySQL官方文档
  19. 排序之路:快速排序和木桶排序
  20. simulink命令集及常用模块说明

热门文章

  1. docker 命令随笔
  2. Gym 101775 D (思维)
  3. 1051. Pop Sequence (25)
  4. Servlet3.0学习总结(二)——使用注解标注过滤器(Filter)
  5. Docker容器图形界面显示(运行GUI软件)的配置方法
  6. C++ 中 Windows 编程概述
  7. unity 打开摄像头(图像倒立的变换) 和显示所有摄像头的名称
  8. Atitit 信息系统安全法 目录 1. 常见的安全保护目标 1 2. WEB安全风险行为 2 2.1. Injection 2 2.2. Broker Authentication损坏的身份验证
  9. Atitit 前端重要概念和趋势总结 大前端 目录 1. 大前端 1 2. 三个层面上的大前端 1 2.1. 大前端与NodeJS与前后端分离 1 2.2. 微信Web 1 2.3. React
  10. Atitit 为什么互联网金融会得到高层的支持 ----面子工程战略 政绩战略 大事业战略 高层需要在意识形态创新全球,政绩工程 得到合法性。 银行有很多家,而且别的区域也有。。不独特。。但是支付