Image processing 如何使用图像比较评估图像质量

Image processing 如何使用图像比较评估图像质量,image-processing,fft,video-processing,dft,Image Processing,Fft,Video Processing,Dft,我想比较一下视频。通过编写C程序来比较质量(不模糊)。有人告诉我要学习用于图像分析的DFT(离散傅里叶变换),并使用FFT或DFT工具来了解同一图像的模糊副本与详细副本(非模糊副本)之间的差异 (抄自): 假设我们有不同的文件,具有不同的视频质量,一个是非常清晰的,另一个是模糊的,一个是粗糙的颜色。基本上逐帧比较所有文件,并向质量更好的用户报告 有人能帮我吗 假设我们有各种具有不同视频质量的文件: 一个是非常清晰的,另一个是模糊的,一个是粗糙的颜色 基本上逐帧比较所有文件,并向质量更好的用户

我想比较一下视频。通过编写C程序来比较质量(不模糊)。有人告诉我要学习用于图像分析的DFT(离散傅里叶变换),并使用FFT或DFT工具来了解同一图像的模糊副本与详细副本(非模糊副本)之间的差异

(抄自):
假设我们有不同的文件,具有不同的视频质量,一个是非常清晰的,另一个是模糊的,一个是粗糙的颜色。基本上逐帧比较所有文件,并向质量更好的用户报告

有人能帮我吗

假设我们有各种具有不同视频质量的文件:

  • 一个是非常清晰的,另一个是模糊的,一个是粗糙的颜色
基本上逐帧比较所有文件,并向质量更好的用户报告

(1)颜色质量检测…

要检查哪个颜色更好,您需要分析测试图像的直方图。直方图将是有多少像素具有强度
X
的计数。其中,
X
是介于
0
255
之间的数字(因为每个红色、绿色和蓝色通道都包含256种可能的强度中的任何一种)

网上有很多关于如何创建直方图的教程,因为这是计算机图形学中的一项基本任务

一般来说,情况如下:

  • 首先制作3个数组(例如:
    hist_Red
    )来保存红色、绿色和蓝色通道的数据

  • 将每个像素分解(使用
    FOR
    循环)为单独的R/G/B通道组件:

例如:

  • 然后将
    +1
    添加到相关直方图中的特定红/绿/蓝强度
例如:

通过将红色、绿色和蓝色的总数相加,您将得到
阵列中RGB的总强度,该阵列可以构建如下图表。“检查图像”的数组具有最多值,以查找颜色质量更好的图像:

(2)详细与模糊检测…

您可以尝试使用卷积过滤器来检测图像中的模糊。给过滤器一个内核(例如:一个矩阵)。下面显示的矩阵(3x3)提供了一个边缘检测过滤器,其中模糊图像提供的边缘较少(因此提供的黑色像素较多)

使用逻辑假设:
更多的黑色像素等于更模糊的图像(更少的细节)

你可以在这里读到卷积


如果有问题要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源,则堆栈溢出问题将不再讨论,您可以在Google搜索中键入
DFT算法C
,然后获得链接,而不必等待他人提出建议。如果我必须为你谷歌它(基本),你知道怎么处理它(复杂)?PS:我在下面的回答中添加了替代方法,而不是DFT。。。如果这些想法对你有帮助,现在让我来告诉你。如果你展示一些测试的示例框架,这也会对志愿者有所帮助。然后建议可以更具体地针对你的问题。
temp_Red = this_pixel >> 16 & 0x0ff; 
temp_Grn = this_pixel >> 8 & 0x0ff;
temp_Blu = this_pixel >> 0 & 0x0ff;
hist_Red[ temp_Red ] += 1;
hist_Grn[ temp_Grn ] += 1;
hist_Blu[ temp_Blu ] += 1;