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

5 篇文章 1 订阅
4 篇文章 0 订阅

目录

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

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

 

 

 

1. 对图像进行离散余弦变换并将小于10的值置换为0,然后用idct2重构图像,这个过程可以分为以下几个步骤: 1)读入图像,将其转换为灰度图像。 2)将灰度图像进行分块,每个块大小为8x8。 3)对每个块进行离散余弦变换。 4)将变换矩阵中小于10的值置换为0。 5)对每个块进行逆离散余弦变换。 6)将所有块拼接起来,得到重构后的图像。 这个过程中,步骤4的操作可以理解为对图像进行了压缩操作,因为将小于10的数置为0相当于将图像中的高频信息去掉了。在进行逆离散余弦变换时,由于高频信息已经被去掉了,所以得到的重构图像会比原图像模糊一些。 2. 对图像进行离散余弦变换并进行图像压缩解压,取不同的DCT系数,观察并分析其结果。这个过程可以分为以下几个步骤: 1)读入图像,将其转换为灰度图像。 2)将灰度图像进行分块,每个块大小为8x8。 3)对每个块进行离散余弦变换。 4)将离散余弦变换后的系数矩阵中的一部分系数(前n个)保留,其余系数置为0。 5)对每个块进行逆离散余弦变换。 6)将所有块拼接起来,得到重构后的图像。 这个过程中,步骤4中保留的系数越多,重构后的图像越接近原图像,但是压缩比也会越小。实际上,这个过程就是JPEG图像压缩的基本原理。在实际应用中,可以根据需要选择合适的DCT系数来达到理想的压缩效果和重构质量。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值