opencv系列-图像清晰度评价

opencv系列-图像清晰度评价

1,换了opencv3.4,用来测试

2,opencv好评呀

图像清晰度评价算法有很多种,在空域中,主要思路是考察图像的领域对比度,即相邻像素间的灰度特征的梯度差;在频域中,主要思路是考察图像的频率分量,对焦清晰的图像高频分量较多,对焦模糊的图像低频分量较多。


这里实现3种清晰度评价方法,分别是Tenengrad梯度方法Laplacian梯度方法方差方法

Tenengrad梯度方法

Tenengrad梯度方法利用Sobel算子分别计算水平和垂直方向的梯度,同一场景下梯度值越高,图像越清晰。以下是具体实现,这里衡量的指标是经过Sobel算子处理后的图像的平均灰度值,值越大,代表图像越清晰。

用的是opencv3.4和qt后的代码:

#include <QCoreApplication>
#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <highgui/highgui.hpp>
#include <imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
    Mat imageSource = imread("C:/Users/Administrator/Desktop/test.jpg");
    Mat imageGrey;

    cvtColor(imageSource,imageGrey,CV_RGB2GRAY);
    Mat imageSobel;
    Sobel(imageGrey,imageSobel,CV_16U,1,1);
    double meanValue = 0.0;
    meanValue = mean(imageSobel)[0];

    stringstream meanValueStream;
    string meanValueString;
    meanValueStream << meanValue;
    meanValueStream >> meanValueString;

    meanValueString = "Articulation (Sobel Method): "+meanValueString;
    putText(imageSource,meanValueString,Point(20,50),CV_FONT_HERSHEY_COMPLEX,0.8,Scalar(255,255,25),2);
    imshow("Articulation",imageSource);
    QCoreApplication a(argc, argv);
    return a.exec();
}

转载自:https://blog.csdn.net/sinat_24143931/article/details/78929501



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值