**

图像清晰度评价(C#)

**
在空域中,图像领域对比度即为相邻像素间的灰度特征的像素差。在频域中,图像频域分量,对焦清晰的图像高频分量多,对焦模糊的图像低频分量多。
图像清晰评价通常使用三种算法:Tenengrad梯度方法、Laplacian梯度方法和方差方法。
本例通过OpenCVSharp实现
Tenengrad梯度方法
Tenengrad利用Sobel算子分别计算水平和垂直方向的梯度,同一图像中,梯度值越高,图像越清晰。以下通过C#实现,通过Sobel算子处理后的得到平均灰度值,灰度值越大,图像越清晰。

public double getClarityEvaluation()
{double meanValue = 0;using(Mat src = new Mat(imgPath, ImreadModes.Grayscale)){Mat imgSobel = new Mat();Cv2.Sobel(src, imgSobel, src.Type(), 1, 1);//图像的平均灰度meanValue = Cv2.Mean(imgSobel)[0];}return meanValue;
}

                          Tenengrad梯度方法

OpenCV中的Sobel函数:

void Sobel(InputArray src,//输入图
OutputArray dst,//输出图
int ddepth,//输出图像的深度
int dx,
int dy,
int ksize=3,
double scale=1,
double delta=0,
int borderType=BORDER_DEFAULT);

第一个参数,InputArray 类型src,为输入图像,填Mat类型即可。
第二个参数,OutputArray类型的dst,即目标图像,函数的输出参数,需要和源图片尺寸和类型一致。
第三个参数,int类型的ddepth,输出图像的深度,支持src.depth()和ddepth的组合如下:
若src.depth() = CV_8U, 取ddepth =-1/CV_16S/CV_32F/CV_64F
若src.depth() = CV_16U/CV_16S, 取ddepth =-1/CV_32F/CV_64F
若src.depth() = CV_32F, 取ddepth =-1/CV_32F/CV_64F
若src.depth() = CV_64F, 取ddepth = -1/CV_64F
第四个参数,int类型dx,x方向上的差分阶数。
第五个参数,int类型dy,y方向上的差分阶数。
第六个参数,int类型ksize,默认值为3,表示Sobel核的大小;必须取1,3,5或7。
第七个参数,double类型的scale,计算导数值时可选的缩放因子,默认值为1,表示默认情况下是没有缩放。
第八个参数,double类型的delta,表示结果在存入目标图像(第二个参数dst)之前可选的delta值,有默认值为0。
第九个参数,int类型的borderType,边界模式,默认值为BORDER_DEFAULT。
Laplacian梯度方法
Laplacian求图像的梯度方法只需将上例中的Sobel算子替换为Laplacian即可。


```csharp
public double getClarityEvaluation()
{double meanValue = 0;using(Mat src = new Mat(imgPath, ImreadModes.Grayscale)){Mat imgSobel = new Mat();Cv2.Laplacian(src, imgDst, src.Type());meanValue = Cv2.Mean(imgDst)[0];}return meanValue;
}

                         Laplacian梯度方法

方差方法
方差是概率论用来考察一组离散数据和期望(即数据均值)之间的离散(偏离)程度的度量方法。方差越大,表示这一组数据之间的偏差就越大,组内的数据有的较大,有的较小,分布不均衡;方差越小,表示这一组数据之间的偏差越小,组内的数据之间分布平均,大小相近。
对焦清晰的图像相比对焦模糊的图像,数据之间的灰度差异应该更大,即它的方差应该较大,可以通过图像灰度数据的方差来衡量图像的清晰度,方差越大,表示清晰度越好。

public double getClarityEvaluation()
{double meanValue = 0;using(Mat src = new Mat(imgPath, ImreadModes.Grayscale)){//灰度图像的标准差Mat meanStdValue = new Mat();Mat imgSobel = new Mat();Cv2.MeanStdDev(src, imgDst, meanStdValue);meanValue = meanStdValue.At<double>(0, 0);}return meanValue;
}

                          方差方法

图像清晰度评价(C#)相关推荐

  1. 相机自动对焦 OpenCV 图像清晰度评价

    原文:https://blog.csdn.net/dcrmg/article/details/53543341 OpenCV 图像清晰度评价(相机自动对焦) 版权声明:本文为博主原创文章,转载请注明出 ...

  2. opencv系列-图像清晰度评价

    opencv系列-图像清晰度评价 1,换了opencv3.4,用来测试 2,opencv好评呀 图像清晰度评价算法有很多种,在空域中,主要思路是考察图像的领域对比度,即相邻像素间的灰度特征的梯度差:在 ...

  3. OpenCV 图像清晰度评价算法(相机自动对焦)

    相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上.这时候物体的成像比较清晰,图像细节信息丰富. 相 ...

  4. 图像处理:图像清晰度评价

    目录 0.实现效果 1.概述 2.模糊度分类 1.运动模糊 2.压缩模糊 3.高斯模糊 3.清晰度量化指标 Brenner 能量梯度函数(Energy of Gradient) ​编辑 Roberts ...

  5. OpenCV 图像清晰度评价(相机自动对焦)

    最近想实现相机自动对焦,也就是需要图像清晰度评价,在网上查找. 第一个不错文章是:无参考图像的清晰度评价方法 http://nkwavelet.blog.163.com/blog/static/227 ...

  6. opencv java图片清晰度_OpenCV 图像清晰度评价(相机自动对焦)

    相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上.这时候物体的成像比较清晰,图像细节信息丰富. 相 ...

  7. 图像清晰度评价15种方法对比

    在无参考图像的质量评价中,图像的清晰度是衡量图像质量优劣的重要指标,它能够较好的与人的主观感受相对应,图像的清晰度不高表现出图像的模糊.本文针对无参考图像质量评价应用,对目前几种较为常用的.具有代表性 ...

  8. 基于强边缘有效性统计的图像清晰度评价

    摘要 图像清晰度评价是图像质量评价中的一个重要组成部分,对于自动对焦.图像压缩.视频封面提取等应用具有重要意义.目前图像清晰度评价可分为有参考图像清晰度评价和无参考图像清晰度评价[1]. 对于无参考清 ...

  9. 无参考图像清晰度评价

    转自: http://nkwavelet.blog.163.com/blog/static/227756038201461532247117 在无参考图像的质量评价中,图像的清晰度是衡量图像质量优劣的 ...

最新文章

  1. 命令行的“迅雷”,提升百倍以上下载速率
  2. SEAndroid策略介绍1
  3. 【React自制全家桶】一、Webstrom+React+Ant Design+echarts搭建react项目
  4. 路由器 radius认证获取ip_玩转网络工程师·认证篇
  5. Pycharm安装第三方库
  6. junit:junit_简而言之,JUnit:测试结构
  7. C#中的interface
  8. SAP License:用望闻问切给企业“看病”
  9. Net::SSH::Perl 包 与 Net::OpenSSH 包的 性能对比代码
  10. UML基础: 统一建模语言简介
  11. 在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称...
  12. MyEclipse2014+JDK1.7+Tomcat8.0+Maven3.2 开发环境搭建
  13. flowable实现多实例节点的自由跳转
  14. python许可证过期_x-pack许可证过期问题解决
  15. ios 获取沙盒文件名_iOS 获取沙盒文件路径及 写入/删除 沙盒文件
  16. rust 案例_深入浅出rust.pdf 高清版
  17. 笔记本共享网络给台式机
  18. EmpireToken创造超级代币
  19. Android中级面筋:开发2年的程序员如何短期突击面试?
  20. 网上收集的几个花指令

热门文章

  1. ASP网页制作,简单图书管理系统
  2. C++获取重载函数的地址
  3. 怎样的提问才是有效的提问
  4. 简单分享怎么开发自己的微信小程序_微信小程序快速制作步骤
  5. 分割的单阶段,两阶段,实时分割模型
  6. AM335x-StarterWare用户手册(三)
  7. 什么是mvc设计模式 (附代码示例)
  8. linux 文件夹权限774访问不了,Linux修改文件及文件夹权限:
  9. mysql timestamp 当前_时区信息记录表|全方位认识 mysql 系统库
  10. 有监督、无监督和半监督学习