图像matlab 频域处理

这篇文章实际上是笔者在学习冈萨雷斯 数字图像处理 matlab 版本 的第四章时,自己动手在matlab里敲入书上的程序实验得到的。

这个DFT的滤波步骤很重要,应该弄清楚。

1,  使用函数paddedsize()获得填充参数

FQ=paddedsize(size(I));%I为原始图像灰度矩阵

2,  得到使用填充的傅里叶变换

F=fft2(I,PQ(1,),PQ(2));

3,  使用任何一种方法,例如lpfilter()生成一个大小为PQ(1)*PQ(2)的滤波函数H。这个函数如果居中,就要在使用前令H=fftshift(H).

3,  将变换乘以滤波函数:

G=H.*F;

5, 获得G的傅里叶变换的实部:

g=real(ifft2(G));

6, 将左上部的矩形修剪为原始大小:

g=g(1:size(I,1),1:size(I,2));

%%

这条语句要注意,生成一个二维频率域滤波器。

H=freqz2(h,R,C) 其中h是一个二维空间滤波器。

%频域变换

%

I=imread(‘bw.tif‘);

figure;

imshow(I);

title(‘一副简单的图像‘);

result:

%fft

figure;

F=fft2(I);

S=abs(F);

imshow(S,[]);

title(‘fft频谱‘);

figure;

Fc=fftshift(F);

Sc=abs(Fc);

imshow(Sc,[]);

title(‘居中的fft频谱‘);

%对数增强并居中的fft

S2=log(1+S);

S2=fftshift(S2);

imshow(S2,[]);

%下面我们看下傅里叶反变换

I2=I(250:280,250:280);

I2=double(I2);

F2=fft2(I2);

I3=real(ifft2(F2));

imshow(I3,[]);

%使用填充和不填充的滤波效果

%不填充的滤波

[M,N]=size(I);

F=fft2(I);

sigma=10;

H=lpfilter(‘gaussian‘,M,N,sigma);

G=H.*F;

g=real(ifft2(G));

figure;

imshow(g,[]);

%下面是使用填充的滤波

PQ=paddedsize(size(I));

Fp=fft2(I,PQ(1),PQ(2));%compute the FFT with padding

Hp=lpfilter(‘gaussian‘,PQ(1),PQ(2),2*sigma);%这里使用2*sigma的原因是现在滤波器的大小是不使用填充时的滤波器大小的两倍

Gp=Hp.*Fp;

gp=real(ifft2(Gp));

gpc=gp(1:size(I,1),1:size(I,2));

figure;

imshow(gp,[]);

%执行如下的空间滤波可以得到类似的结果

h=fspecial(‘gaussian‘,15,7);

gs=imfilter(I,h);

figure;

imshow(gs);

%从空间域中获得频域滤波器,

f=imread(‘house.tif‘);

F=fft2(f);

S=fftshift(log(1+abs(F)));

S=gscale(S);

imshow(S);

h=fspecial(‘sobel‘)‘;

% h=[ 1 0 -1;2 0 -1;1 0 -1];

freqz2(h);

PQ=paddedsize(size(f));

H=freqz2(h,PQ(1),PQ(2));

H1=ifftshift(H);

imshow(abs(H),[]);

figure,imshow(abs(H1),[]);

gs=imfilter(double(f),h);

gf=dftfilt(f,H1);%频率域滤波函数,第一个参数为原始图像,后者为二维频率域滤器

imshow(gs,[]);%空间域滤波结果,sobel算子提取边缘,这里我们提取的是垂直边缘,要注意h是转置后的sobel 算子。

figure,imshow(gf,[]);%空间域滤波结果

%通过创立一副阈值二值图像,我们可以更清楚的看到边缘,这里我们上传水平滤波的结果,只需把上面的:h=fspecial(‘sobel‘)‘;改成h=fspecial(‘sobel‘);即可

figure,imshow(abs(gs)>0.2*abs(max(gs(:))));

figure,imshow(abs(gf)>0.2*abs(max(gf(:))))

%%下面的函数俺就不给结果图了。

%下面这个函数可以绘制x=1:M,y=1:N,[M,N]=size(H)的线框图

mesh(abs(H));

H=fftshift(lpfilter(‘gaussian‘,500,500,50));

figure(2);

mesh(H(1:10:500,1:10:500))

axis([0 50 0 50 0 1])

%上面的线框图默认为彩色,它从底部的蓝色渐变到顶部的红色。下面的几行命令可将线条从彩色转变为黑色

colormap([0 0 0])

axis off;

grid off

view(-25,30);%-25 代表方位角, 30代表仰角,这里view() 是使上面的语句而不是后面的语句起作用,类似title().

surf(H);

时间: 2024-10-31 22:54:13

图像matlab 频域处理的相关文章

图像的频域变换

1 图像频域变换的意义 2 图像频域变换的理论基础 2.1 线性系统 2.2 卷积的定义 2.3 相关的定义 2.4 正交变换 2.4.1 连续函数集合的正交性 2.4.2 正交函数集合的完备性 2.4.3 正交函数的离散情况 2.4.4 一维正交变换 2.4.5 酉变换 2.4.6 图像变换 原文地址:https://www.cnblogs.com/Terrypython/p/10958968.html

使用双线性插值法放大图像(matlab实现)

双线性插值的概念及公式可以参考百度,这里仅对算法原理进行简单的说明: 双线性插值计算公式: f(i+u,j+v) = (1-u)(1-v)f(i,j)+u(1-v)f(i+1,j)+(1-u)vf(i,j+1)+ uvf(i+1,j+1) 这个公式表明了如何利用矩阵中的四个像素值计算新的像素值,这些新的像素值就组成了放大后的图像. 下图是如何将3x3的图像放大为4x4的图像: 原图像表示为3x3的矩阵(像素值处在黑线的交叉点上),如何计算4x4矩阵的值呢?(像素值处在红色虚线交叉点及红线与黑

Python下opencv使用笔记(十)(图像频域滤波与傅里叶变换)

前面曾经介绍过空间域滤波,空间域滤波就是用各种模板直接与图像进行卷积运算,实现对图像的处理,这种方法直接对图像空间操作,操作简单,所以也是空间域滤波. 频域滤波说到底最终可能是和空间域滤波实现相同的功能,比如实现图像的轮廓提取,在空间域滤波中我们使用一个拉普拉斯模板就可以提取,而在频域内,我们使用一个高通滤波模板(因为轮廓在频域内属于高频信号),可以实现轮廓的提取,后面也会把拉普拉斯模板频域化,会发现拉普拉斯其实在频域来讲就是一个高通滤波器. 既然是频域滤波就涉及到把图像首先变到频域内,那么把图

OpenCV基础篇之图像的DFT频域变换

转载请注明出处:http://xiahouzuoxin.github.io/notes 程序及分析 /* * FileName : fft2.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Wed 30 Jul 2014 09:42:12 PM CST * Brief : * * Copyright (C) MICL,USTB */ #include <iostream> #include <cv.h>

Matlab绘制图像及图像的处理

一 绘制函数图像 matlab平面绘制函数图像有多个函数,plot,ezplot等. 1.1 plot函数 查看matlab的帮助文件可知plot函数的调用格式有 PLOT Linear plot. PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,    then the vector is plotted versus the rows or columns of the matrix,    whichever

深入学习图像处理——图像相似度算法

最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜索的流程整理一下,想到什么说什么吧. 首先在进行图片灰度化处理之前,我觉得有必要了解一下为什么要进行灰度化处理. 图像灰度化的目的是什么? 将彩色图像转化为灰度图像的过程是图像的灰度化处理.彩色图像中的每个像素的颜色由R,G,B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多

视频图像去模糊常用处理方法

视频图像去模糊常用处理方法 随着“平安城市”的广泛建设,各大城市已经建有大量的视频监控系统,虽然监控系统己经广泛地存在于银行.商场.车站和交通路口等公共场所,但是在公安工作中,由于设备或者其他条件的限制,案情发生后的图像回放都存在图像不清晰,数据不完整的问题,无法为案件的及时侦破提供有效线索.经常出现嫌疑人面部特征不清晰,难以辨认,嫌疑车辆车牌模糊无法辨认等问题.这给公安部门破案.法院的取证都带来了极大的麻烦.随着平安城市的推广.各地各类监控系统建设的进一步推进,此类问题会越来越突出. 一.模糊

灰度图像--频域滤波 概论

学习DIP第25天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意.有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 开篇废话 这两天写了一下频域滤波的代码,并且发现以前博客里代码的一个BUG,产生BUG的原因是一维

图形频域基础

一般我们看到的图像可以表示为函数f(x,y),x和y是空间上的坐标,此时的图像称为空间域图像:经过频域变换后的图像称为频域图像.离散情况下,一维傅里叶变换有如下形式.同时这里还证明了,对原始数据乘以(-1)^x之后,频域结果被中心化. 在二维情况下,则有 因为图像处理中一般有M=N,所以有 我们对一幅图像每个像素点(x,y)乘以(-1)^(x+y),然后进行FFT,得到中心化的频域图像,然后对频域图像进行操作,最后进行傅里叶逆变换,得到处理图像. 在频域上可以方便地进行低通滤波和高通滤波,或者叫