【图像处理】频域中的傅里叶变换和滤波(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

傅里叶变换

滤波

实现步骤

应用实例

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

傅里叶变换是一种将信号(包括图像)从时域转换到频域的数学工具。在图像处理中,傅里叶变换可以将图像表示为其频率分量的叠加。傅里叶变换将图像从空间域(像素值的分布)转换为频率域(不同频率的成分)。这使得我们能够分析图像中不同频率的特征,如纹理、边缘等。

频域中的傅里叶变换和滤波是图像处理与分析中的重要工具,它们在信号处理、图像增强、去噪、特征提取等多个领域有着广泛的应用。下面是对这一主题的基本概念、应用及过程的简要介绍:

傅里叶变换

  1. 基本概念:傅里叶变换是一种将时域(或空域)信号转换为频域表示的方法。对于图像而言,时域信号指的是图像的像素空间分布,而频域表示则揭示了图像中不同频率成分的强度分布。高频成分对应于图像中的快速变化区域(如边缘和细节),低频成分则对应于较平滑的区域。

  2. 数学表述:离散傅里叶变换(DFT)可以将一个有限长度的离散序列转换为其频率谱表示,其公式为:

    𝑋[𝑘]=∑𝑛=0𝑁−1𝑥[𝑛]⋅𝑒−𝑗2𝜋𝑘𝑛/𝑁X[k]=n=0∑N−1​x[n]⋅e−j2πkn/N

    其中,𝑥[𝑛]x[n] 是原始序列(在图像处理中为像素值序列),𝑋[𝑘]X[k] 是变换后的频域表示,𝑁N 是序列长度,𝑘k 是频率索引。

  3. 逆傅里叶变换:可以通过逆傅里叶变换将频域信号还原回时域信号,这对于处理后将修改过的频域信号转换回图像至关重要。

滤波

  1. 低通滤波:在频域中,低通滤波器会保留图像的低频分量,去除高频分量,从而实现图像的平滑和去噪。这有助于减少图像中的尖锐变化,比如噪声点或细节,但同时可能模糊边缘和细节信息。

  2. 高通滤波:相反,高通滤波器会保留图像的高频分量,去除低频分量,强调图像中的边缘、纹理等细节信息,常用于边缘检测和特征增强。但过度使用可能导致图像失真和结构信息的损失。

  3. 带通/带阻滤波:这些滤波器允许特定频率范围通过(带通)或阻止特定频率范围(带阻),用于更精细的频率选择性处理。

实现步骤

  1. 傅里叶变换:首先对图像进行二维离散傅里叶变换(DFT),将其从空间域转换到频率域。

  2. 设计滤波器:根据需求设计相应的滤波器核(一个在频域中定义的矩阵),这个核决定哪些频率成分被保留或抑制。

  3. 应用滤波器:在频域图像上乘以设计好的滤波器核,实现所需的频率调整。

  4. 逆傅里叶变换:将经过滤波处理的频域图像通过二维逆离散傅里叶变换(IDFT)转换回空间域,得到处理后的图像。

应用实例

  • 图像去噪:使用低通滤波器平滑图像,减少随机噪声。
  • 边缘检测:应用高通滤波器突出图像中的边缘和细节。
  • 图像锐化:结合原图和高通滤波后的图像,增强图像细节。
  • 特征提取:特定的带通滤波可用于提取图像中的周期性结构或纹理特征。

总之,傅里叶变换和滤波技术为图像处理提供了强大的分析和改进手段,是图像处理研究和应用中不可或缺的一部分。

📚2 运行结果

主函数部分代码:

clc; clear;
%% Read the original image
fig_original = double(imread('data/characters_test_pattern.tif')) / 255;
imwrite(fig_original, 'data/characters_test_pattern.png');

%% Discrete Fourier Transformation
F = fft2(fig_original, size(fig_original, 1) * 2, size(fig_original, 2) * 2);

%% Ideal Lowpass Filter
% The original image
figure('Name', 'Ideal Lowpass Filter');
subplot(2, 3, 1);
imshow(fig_original, [])
title('original image');
% ILPF with cutoff frequency set at radii value 10
ideal_lowpass_10 = real(ifft2(ideal_lowpass_filter(size(fig_original, 1), size(fig_original, 2), 10) .* F));
ideal_lowpass_10 = ideal_lowpass_10(1:size(fig_original, 1), 1:size(fig_original, 2));
subplot(2, 3, 2);
imshow(ideal_lowpass_10, [])
title('cutoff frequency: 10');
imwrite(ideal_lowpass_10, 'data/ILPF_10.png');
% ILPF with cutoff frequency set at radii value 30
ideal_lowpass_30 = real(ifft2(ideal_lowpass_filter(size(fig_original, 1), size(fig_original, 2), 30) .* F));
ideal_lowpass_30 = ideal_lowpass_30(1:size(fig_original, 1), 1:size(fig_original, 2));
subplot(2, 3, 3);
imshow(ideal_lowpass_30, [])

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]王非凡,陈希爱,任卫红等.基于图像自适应增强的低照度目标检测算法[J/OL].计算机工程:1-13[2024-03-11].https://doi.org/10.19678/j.issn.1000-3428.0068407.

🌈4 Matlab代码实现

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值