基于离散余弦变换(DCT)方法的图像模糊检测

目录

1. 概述

2. 算法过程

3. 模糊度计算


代码地址:https://github.com/linghu8812/blur_detector

1. 概述

本文介绍了一种基于离散余弦变换(DCT)的方法判断图像是否模糊的方法,并且基于C++和python实现了算法,在windows和linux下均能实现。

2. 算法过程

(1) 首先读入一张图片并进行灰度变换。

(2) BlurDetector类中的check_image_size函数可以检查图片大小,保证图片的宽和高能被8整除。

(3) BlurDetector类中的get_blurness函数用来计算图像的模糊度。

3. 模糊度计算

(1) 生成一个全0的hist矩阵

(2) 对图像中的8x8大小的小块进行dct变换,下图中左图是变换前,右图是变换后。

(3) 根据设定的阈值进行二值化处理变成0或1。

(4) 将二值化结果与hist相加。

(5) 根据hist[0][0]的结果设置二值化阈值,进行二值化处理。

(6) 将二值化结果与权重相乘,下图中左图是权重矩阵,右图是相乘结果。

(7) 最后将相乘结果矩阵的各个元素求和,最后与权重矩阵各元素之和做比,得到图像模糊度结果。

结果越高表示图像越模糊。

发布了20 篇原创文章 · 获赞 6 · 访问量 2164

猜你喜欢

转载自blog.csdn.net/linghu8812/article/details/102636768