襄阳南漳县城乡建设局网站,吉林省住房建设安厅网站安全管理,wordpress 正在例行维护,网站规划与建设需求分析原理
在数字图像处理中#xff0c;图像的直流分量#xff08;DC分量#xff09;是指图像中的平均亮度水平。这个概念源自于傅里叶变换#xff0c;其中信号可以分解为多个频率成分。在这个上下文中#xff0c;直流分量对应于频率为零的成分#xff0c;即信号的平均值。 在…原理
在数字图像处理中图像的直流分量DC分量是指图像中的平均亮度水平。这个概念源自于傅里叶变换其中信号可以分解为多个频率成分。在这个上下文中直流分量对应于频率为零的成分即信号的平均值。 在JPEG图像压缩和其他类似的编码技术中图像首先被分割成小块例如8x8像素的块。然后对每个块进行离散余弦变换DCT。DCT帮助将图像数据从空间域转换到频率域。在这个变换后的频率域表示中直流分量位于左上角代表了整个块的平均亮度。其余部分称为交流分量AC分量代表了图像块中更高频率的细节信息比如边缘和纹理。 由于直流分量代表的是整个块的平均亮度它通常对整体图像质量的影响较大。在压缩过程中直流分量通常会被优先保留因为它包含了大量关于图像的重要信息。相比之下一些较高频率的交流分量在压缩时可能会被减少或丢弃这是因为人眼对这些细节的敏感度较低减少它们对感知图像质量的影响较小。
图像的直流分量DC分量的数学原理可以通过离散余弦变换DCT来理解特别是在图像压缩如JPEG中的应用。基本的数学概念和原理
离散余弦变换DCT 定义 DCT帮助将图像从空间域像素强度转换到频率域。这种转换对图像压缩非常有用因为人眼对图像中的高频变化如细小的边缘或纹理不太敏感。 重要性 压缩在图像压缩中直流分量是非常重要的。由于它代表了图像块的平均亮度它对于重建图像的整体外观至关重要。 编码效率直流分量通常比其他高频分量具有更高的编码效率因为它可以通过较少的比特表示。 应用 在JPEG等图像压缩算法中首先将图像分割成小块例如8x8像素对每个块进行DCT然后对这些变换后的块进行量化减少精度以减小文件大小。在这个过程中直流分量通常被优先处理因为它包含了关于图像块的关键信息。
代码实现
编写代码输出如下图所示的结果
提示
由函数np.fft.fft2可以得到其傅里叶变换系数用np.abs计算复数幅度谱后可以得到频率为0时的直流分量。由函数np.average可以得到图像的灰度均值根据第四章的作业题可以计算A(F(0,0))/(MNf ̅(x,y))来判断公式中归一化项的位置。如果F(0,0) MNf ̅(x,y)A1则1/MN项位于IDFT公式前若F(0,0)f ̅(x,y)A1/MN则1/MN项位于DFT公式前若F(0,0) √MN f ̅(x,y)A1/√MN 则1/√MN 项位于DFT和IDFT两个公式前。 将np.fft.fft2得到的傅里叶变换系数中频率为0的一项置为0再经过np.fft.ifft2函数做傅里叶反变换得到直流分量置零后的图像因为图像平均值被置零因此输出图像应该比原图暗些。注意np.fft.ifft2函数的输出是复数需用np.abs函数取其幅度得到输出图像。
代码实现
在这里插入代码片
import cv2
import numpy as np
from matplotlib import pyplot as plt
imgcv2.imread(Fig0429.tif,0)rows, cols img.shape[0:2]# 计算图像的均值
avg np.average(img)
# 用Opencv的dft函数计算图像的频谱
dft cv2.dft(np.float32(img))
# AF(0,0)/MNfavg若A11/MN项位于IDFT公式前
# 若A1/MN1/MN项位于DFT公式前;
# 若A1/sqrt(MN)1/sqrt(MN)项位于DFT和IDFT公式前
A dft[0, 0] / (rows*cols*avg)
print(A)# 用numpy的fft2函数计算图像的频谱
dft np.fft.fft2(img)
F np.abs(dft)
A F[0, 0] / (rows*cols*avg)
print(A)# 将频谱的直流分量置0
dft[0, 0] 0
# 傅里叶反变换得到直流分量置0后的图像
img_filtered np.abs(np.fft.ifft2(dft))img_list [img, np.log(1np.fft.fftshift(F)), np.log(1np.fft.fftshift(np.abs(dft))), img_filtered]
img_name_list [original, DFT, filtered DFT, filtered image]_, axs plt.subplots(2, 2)for i in range(2):for j in range(2):axs[i, j].imshow(img_list[i*2j], cmapgray)axs[i, j].set_title(img_name_list[i*2j])axs[i, j].axis(off)plt.savefig(image_filtered.jpg)
plt.show()结果展示 直流分量将非正弦周期信号按傅里叶级数展开频率为零的分量。 此题的流程如下 由函数np.fft.fft2可以得到其傅里叶变换系数用np.abs计算复数幅度谱后可以得到频率为0时的直流分量。由函数np.average可以得到图像的灰度均值可以计算A(F(0,0))/(MNf ̅(x,y))来判断公式中归一化项的位置。如果F(0,0) MNf ̅(x,y)A1则1/MN项位于IDFT公式前若F(0,0)f ̅(x,y)A1/MN则1/MN项位于DFT公式前若F(0,0) √MN f ̅(x,y)A1/√MN 则1/√MN 项位于DFT和IDFT两个公式前。 将np.fft.fft2得到的傅里叶变换系数中频率为0的一项置为0再经过np.fft.ifft2函数做傅里叶反变换得到直流分量置零后的图像因为图像平均值被置零因此输出图像应该比原图暗些。