介绍:在频域上进行滤波操作,增强高频信息以恢复清晰图像。
优点:在频域上操作相对的高效,能够快速处理大尺寸的图像。
缺点:需要适当调度滤波器设计,需要调整参数来获得最佳效果。
深度学习方法与频域处理方法的差异:
- 深度学习方法
- 定义:深度学习是一种基于人工神经网络的机器学习方法,它可以对大量的数据进行自动化的特征提取和模式识别,以实现复杂的任务。
- 基本原理:深度学习模型通过多层非线性处理单元(神经元)的堆叠,逐层抽象数据特征,从低级的边缘、纹理等特征到高级的语义特征,最终实现分类、回归或生成等任务。
2.频域处理方法
- 定义:频域处理是一种将信号或图像从时间域(或空间域)转换到频率域进行分析和处理的技术。
- 基本原理:通过傅里叶变换(如离散傅里叶变换DFT、快速傅里叶变换FFT)将信号或图像分解为不同频率的分量,然后在频域上进行滤波、增强、复原等操作,最后通过逆变换回到时间域(或空间域)。
应用领域:
- 深度学习方法
- 应用领域:广泛应用于图像识别、自然语言处理、语音识别、推荐系统等领域。
- 特点:
- 自动化特征提取:能够自动从原始数据中提取出有用的特征,减少了对人工特征工程的依赖。
- 非线性建模能力:通过多层非线性处理单元,能够捕捉数据中的复杂非线性关系。
- 端到端学习:可以实现从输入到输出的直接映射,简化了模型的设计和训练过程。
- 频域处理方法
- 应用领域:主要用于图像处理、信号处理等领域。
- 特点:
- 频域分析:能够在频域上直观地分析信号的频率成分,便于进行滤波、去噪等操作。
- 高效计算:利用FFT等算法,可以高效地计算信号的傅里叶变换和逆变换。
- 灵活性强:可以通过设计不同的滤波器来实现不同的处理效果,如低通滤波、高通滤波等。
处理流程:
- 处理流程
- 深度学习方法:数据预处理 → 构建深度学习模型 → 模型训练 → 模型评估 → 预测或应用。
- 频域处理方法:信号或图像采集 → 傅里叶变换 → 频域处理(如滤波、增强等)→ 逆变换 → 处理结果输出。
- 差异
- 数据处理方式:深度学习方法直接在原始数据上进行特征提取和处理,而频域处理方法则先将数据转换到频域上进行处理。
- 模型复杂度:深度学习模型通常包含大量的参数和复杂的网络结构,而频域处理方法则相对简单,主要依赖于傅里叶变换和滤波器等工具。
- 适用范围:深度学习方法适用于大规模、复杂的数据处理任务,而频域处理方法则更适用于需要分析信号频率成分的场景。
深度学习方法和频域处理方法各有其独特的优势和适用场景。深度学习方法通过自动化特征提取和强大的非线性建模能力,在处理复杂、大规模的数据时表现出色;而频域处理方法则通过频域分析和高效的计算工具,在信号处理、图像处理等领域具有不可替代的作用。在实际应用中,可以根据具体任务的需求和数据特点选择合适的方法或结合使用这两种方法以达到更好的效果。
名词解释:
频域:频域是频率信号与该频率信号的幅度的关系。
频率:可以看作图像灰度的变化的幅度。(如果频率越大,则灰度变化幅度就很大,与相邻灰度值差别越大)
频谱中心:‘通常是指信号频率分布中的峰值位置,在傅里叶变换中他是反映信号主要成分的频率的关键信息。
如何将图像转化为频域振幅图像?
(一般的图像都是空间域图像,不能对频率进行操作)
1.傅里叶变换
- 使用傅里叶变换可以将图像的灰度值转化为频率
在matlab中可以使用fft2()函数计算二维快速傅里叶变换,所以读取的图像必须是二维灰度图像。如果不是就需要进行灰度变换
imag = imread("C:\Users\Pictures\练习图片\桥.jpg");//读取图像
imag_gray = rgb2gray(imag);//转换为灰度图像
subplot(1, 2, 1); imshow(imag_gray); title('原图像')//显示原始灰度图像
fu = fft2(imag_gray);//对灰度图像进行二维傅里叶变换
subplot(1, 2, 2); imshow(log(abs(fu)), [ ]); title('傅里叶变换后图像')
//显示傅里叶变换后的图像
!!!注意:上述代码显示频域图像的时候,关心的只有频率的**振幅,**频率有正有负,所以我们取其绝对值
频率非常大 非常小的情况下:解决办法:将频率值取对数,将其取值范围降低到一个很小的范围。
使用fftshift()函数将频谱中心转移到图像的中心
imag = imread("C:\Users\林梓烯\Pictures\练习图片\桥.jpg");
imag_gray = rgb2gray(imag);//转换为灰度图像
subplot(1, 2, 1); imshow(imag_gray); title('原图像')//显示原始灰度图像
fu = fftshift(fft2(imag_gray));//对灰度图像进行二位傅里叶变换,并且将结果中心化
subplot(1, 2, 2); imshow(log(abs(fu)), [ ]); title('傅里叶变换后图像')////显示傅里叶
变换后的图像。
转换后的图像:
我们在处理完频域图像之后,就需要将频率图像转换为灰度图像
可以使用傅里叶反变换
2.傅里叶反变换:
在进行反变换前,我们又需要将图像的频谱中心移回左上角,不然跟原图像完全不同。
在matlab我们使用ifft2函数来实现傅里叶反变换。
mag = imread("C:\Users\林梓烯\Pictures\练习图片\桥.jpg");
mag_gray = rgb2gray(imag);
ubplot(1, 3, 1); imshow(imag_gray); title('原图像')
u = fftshift(fft2(imag_gray));
ubplot(1, 3, 2); imshow(log(abs(fu)), [ ]); title('傅里叶变换后图像')
mag_x = ifft2(ifftshift(fu));
ubplot(1, 3, 3); imshow(imag_x, []); title('傅里叶反变换图像')
变换后的图像
以下是我自己在Matlab中复现的图片。
原图片->频域图像
频域图像———>修改后的图像
实现代码如下:
% 读取图像
mag = imread("C:\Users\14331\Desktop\CatDemoPIN.png");
% 将图像转换为灰度图
mag_gray = rgb2gray(mag);
% 显示原图像
subplot(1, 3, 1);
imshow(mag_gray);
title('原图像');
% 对灰度图进行二维傅里叶变换,并中心化
u = fftshift(fft2(mag_gray));
% 显示傅里叶变换后的图像(通常使用对数尺度以便于观察)
f_u = u; % 确保变量名一致
subplot(1, 3, 2);
imshow(log(abs(f_u)), []);
title('傅里