一、简介

基于matlab图像去雾质量评价: 通过新增可见变比、平均梯度、饱和像素百分比三个指标评价去雾图像质量。

1 图像去雾
早期的雾天图像的去雾处理方法经过多年的发展,逐步演化成两类研究方向,从图像增强的角度来研究以及从大气成像的物理模型的角度来研究。

基于图像增强的去雾方法不考虑雾天成像的影响因素,从图像增强的角度增加图像对比度,模拟人类视觉感知,突出图像的细节以改善图像的视觉效果。Retinex就是一种常用的基于图像增强的去雾方法,其理论基础是图像的色感一致性。

基于物理模型的去雾方法研究大气散射模型,从理论上分析图像在雾的影响下的成像机理,通过构建相应的数学模型进行计算来去除雾气的影响,复原出清晰的图像效果。He等依据大气散射模型提出了暗原色先验理论来估计透射率,算法简单而且非常有效,极大地推动了该研究方向的发展。

随着深度学习理论的发展,通过构建深度网络,图像去雾处理有了更丰富的手段。Cai等提出一种端到端的去雾网络DehazeNet,对其中的卷积神经网络进行特殊设计来提取相关特征,使用局部极值操作抑制透射率的噪声,同时利用新的激活函数 (双边纠正线性单元) 提高透射率的精度,对基于深度学习的图像去雾起到了很好的推动作用。

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

图像质量评价的方法大致可分为两类:主观评价和客观评价[6]。主观评价是由参与者对图像质量进行直接评价,是图像质量评价最直观的方法。但由于个别人对于图像的理解差异性很大,主观评价方法如果要达到预期的评价效果,需要有多人的参与和判断,以群体的形式来消除个体差异性,这就导致主观评价方法受到很大的约束和限制,只能在某些特定的场合下采用。

客观评价通过建立数学模型来模拟人的视觉系统,根据数学公式的推导,采用相应的算法对图像质量进行评价。按照是否需要原始图像作为参考信息,客观评价方法又分为无参考 (No-reference, NR) 评价、部分参考 (Reduced-Reference, RR) 评价和全参考 (Full-Reference, FR) 评价三类。

常见的主观评价和客观评价的分类如图1所示。

图1 图像质量评价分类

在客观评价中的全参考评价模式下,关于原始图像和处理后的图像之间的比对,通常会采用峰值信噪比 (PSNR) 进行衡量。PSNR从统计学的角度来衡量原始图像和处理后图像的关系,计算原始图像和处理后图像的对应像素点灰度值之间的差异。对于尺寸为M×N的图像,PSNR定义如下:

其中,处理前图像在坐标空间 (i, j) 的灰度值使用R (i, j) 表示,处理后图像在坐标空间 (i, j) 的灰度值使用F (i, j) 表示。通过计算得出的PSNR值越大,表示处理后图像与原始图像之间的失真越小,图像处理后的质量越好。从公式 (1) 可以看出,PSNR计算非常简单,但是其仅仅是基于统计学的角度来考虑处理后图像和原始图像对应像素点灰度值之间的差异,忽略了图片内部像素点之间的关系,这就导致其会和主观评价产生一定的误差。

2004年,Wang等人提出了结构相似度 (SSIM) 方法,将图像内部的结构特征和图像的亮度、图像的对比度一起作为重要的参数。因为其考虑了图像的内部结构在人眼视觉上的差异,该方法能和主观评价取得较为一致的结果。假设原始图像和处理后图像分别定义为X和Y,则图像亮度信息L (X, Y) 、图像对比度信息C (X, Y) 和图像结构信息S (X, Y) 分别计算如下:

其中图像X的均值使用μX表示,图像Y的均值使用μY表示,图像X的标准差使用σX表示,图像Y的标准差使用σY表示,图像X与图像Y的协方差使用σXY表示,而公式中出现的C1、C2和C3是为计算的可靠性而定义的常数。综合公式 (2) 、公式 (3) 和公式 (4) ,定义两幅图像的SSIM如下:

其中α、β、γ是为了调整亮度信息、对比度信息和结构信息三者所占比重而设定的参数。通过以上公式计算出的SSIM (X, Y) 的取值在0和1之间,越接近1,表示处理后的图像和原始图像失真程度越小。

和PSNR进行对比,SSIM考虑了图像内部的结构相关信息,更加符合人类视觉对图像特征的理解,因此其应用更加广泛。

二、部分源代码

%%%% Cleaning
clc
clear all
close all%%%% Images reading: the input 2 images must be grayscaleNameOri='Original.pgm';
%NameResto='Restored.pgm';
NameResto='Restored2.pgm';
%NameResto='Restored3.pgm';
%NameResto='Restored4.pgm';
%NameResto='Restored5.pgm';I1=imread(NameOri);
I1=double(I1);
% if the input image is a color image, use following line
% I1=double(rgb2gray(uint8(I1)));[nl,nc]=size(I1);R1=imread(NameResto);
R1=double(R1);
% if the input image is a color image, use following line
% R1=double(rgb2gray(uint8(R1)));%%%% Figure 1
figure(1)
colormap gray
subplot(1,2,1)
imagesc(I1)
axis image
title('Original')
subplot(1,2,2)
imagesc(R1)
axis image
title('Restored')function [Mask Crr]=functionContrastAt5PerCent(I1,S,percentage)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Inputs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% I1 : Original image
% S : SubWindow size (default = 7)
% perCentage : Visibility percentage (default = 5)
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Outputs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Mask : Mask of the visibility contrast > percentage
% Crr : valeur du contraste visibile (>percentage)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if nargin<1error('not enough argument')
end
if nargin<2S=7;
end
if nargin<3percentage=5;
end[nl,nc,dd]=size(I1);%%% 4-neighborhood pixels
seh=[0 1 0;0 1 0;0 0 0];
seg=[0 0 0;1 1 0;0 0 0];%%% minimum and maximum calculation
I1pad= padarray(I1,[3 3],'symmetric');Igmin11=imerode(I1pad,seg,'full');%腐蚀
Ihmin11=imerode(I1pad,seh,'full');
Igmax11=imdilate(I1pad,seg,'full');%膨胀
Ihmax11=imdilate(I1pad,seh,'full');Igmin1=Igmin11(3+(1:nl),3+(1:nc));
Ihmin1=Ihmin11(3+(1:nl),3+(1:nc));
Igmax1=Igmax11(3+(1:nl),3+(1:nc));
Ihmax1=Ihmax11(3+(1:nl),3+(1:nc));%%% pads image and minimum and maximum matrix
I1pad= padarray(I1,[S S],'symmetric');Igmin1pad= padarray(Igmin1,[S S],'symmetric');
Ihmin1pad= padarray(Ihmin1,[S S],'symmetric');
Igmax1pad= padarray(Igmax1,[S S],'symmetric');
Ihmax1pad= padarray(Ihmax1,[S S],'symmetric');%%% Initialization
Is=zeros(S,S);
Mask=false(nl+2*S,nc+2*S);
Crr=zeros(nl+2*S,nc+2*S);
s=1;
percentage=percentage/2;h = waitbar(0,'Please wait...');%%% subwindow of size S*S
for ii=1:round(S/2):nlfor jj=1:round(S/2):ncIs=double(I1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));Isgmin=double(Igmin1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));Ishmin=double(Ihmin1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));Isgmax=double(Igmax1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));Ishmax=double(Ihmax1pad(S+ii:2*S+ii-1,S+jj:2*S+jj-1));%%% horizontal and vertical contrastsCgxx1=zeros(1,S^2);Chxx1=zeros(1,S^2);Ismin=round(min(Is(:)));Ismax=round(max(Is(:)));if(Ismin<=0) Ismin=1;endif(Ismin>256) Ismin=256;endif(Ismax<=0) Ismax=1; endif(Ismax>256) Ismax=256;endFcube=false(S,S,Ismax-Ismin+1);C=zeros(1,Ismax);G=zeros(1,Ismax);for s=Ismin:Ismax  %%% we vary the thresholdFg=0;   %%% Pixels cardinal separated by spg=1;   %%% Contrast indiceFh=0;ph=1;

三、运行结果





四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]韦忠亮,许光宇,张顺香.基于MATLAB的去雾图像质量评价系统[J].黑龙江工业学院学报(综合版). 2019,19(08)

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

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

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

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

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

  3. 【Matlab水果识别】苹果质量检测及分级系统(带面板)【含GUI源码 1613期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]苹果质量检测及分级系统(带面板)[含GUI源码 1613期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  4. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  5. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  6. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  7. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  8. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  9. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  10. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

最新文章

  1. [导入]如何用WAP手机远程遥控电脑
  2. 死磕Java并发:J.U.C之AQS:CLH同步队列
  3. SQL output子句的用法
  4. 笔记-项目人力资源管理-管理项目团队-冲突管理
  5. 【Spring】总结Spring整合Mybatis的底层原理实现步骤
  6. Http 请求处理流程(转)
  7. Vue 状态管理 Vuex
  8. tampermonkey脚本header介绍
  9. C++学习:第一章 开始
  10. Layui数据表格(table)前后台交互
  11. ora hash oracle官网,oracle计算hash值
  12. 解决 Files 的值 HEAD无效。路径中具有非法字符...
  13. 简单的围棋棋盘打谱设计C#实现
  14. android 滚动条 惯性,Android ScrollView取消惯性滚动的方法
  15. Tippy.js – 轻量的 Javascript Tooltip 工具库
  16. 跳转到高德地图或百度地图或高德网页导航
  17. 分水岭算法的理解和应用
  18. iOS设备 历代 机型对照表
  19. MYSQL使用MHA实现主从复制高可用、Galera Cluster介绍、压力测试、my.cnf配置参考
  20. PTA 7-2 一帮一

热门文章

  1. hdu 2680 Choose the best route【dijstra+反向建图】
  2. CodeForces 453A Little Pony and Expected Maximum
  3. html5 sessionStorage 与 localStorage存储
  4. 7款应用最广泛的Linux桌面环境盘点
  5. DOTA版设计模式——责任链
  6. Kinect开发教程八:OpenNI2显示深度、彩色及融合图像
  7. 20200611每日一句
  8. 泰勒公式的展开细节解析、本质、联想与思考
  9. remote collaboration on physical tasks 应用
  10. unity 打开摄像头(图像倒立的变换) 和显示所有摄像头的名称