初探FFT在数字图像处理中的应用(fft2函数的使用方法)
2014-09-28 23:08
393 查看
初探FFT在数字图像处理中的应用
一般FFT在通信等领域都做的一维变换就可以了,但是在图像处理方面,需要做二维变换,这个时候就需要用到FFT2.在利用Octave(或者matlab)里面的fft2()函数的时候,观察频率领域的图像还是要点额外的技巧的.下面的图像是我们想要的,也是我们人类才可以理解的(图片的中心表示低频区域,越是远离中心,频率越高,这里下面图片中,中心区域很亮,value很高,中心周围越来越暗,表示低频信号强,高频信号慢慢减弱)
>> result = fft2(dark_channel);
>> imshow(uint8(real(result)));
直接输出fft2的结果如下(正常人应该看不出什么吧~)
怎么得到之前我们给出的结果呢?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% code writer : EOF
% code date : 2014.09.27
% code file : fft2_demo.m
% e-mail : jasonleaster@gmail.com
%
% If there is something wrong with my code, please
% touch me by e-mail. Thank you :)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
clc
Original_img = imread('/home/jasonleaster/Picture/hand.png');
float_Orignal_img = double(Original_img);
F64_WHITE = 255.0;
F64_BLACK = 0.000;
Original_img_row = size(Original_img,1);
Original_img_col = size(Original_img,2);
Original_img_channel = size(Original_img,3);
for row = 1:Original_img_row
for col = 1:Original_img_col
min_piexl = F64_WHITE;
for channel = 1: Original_img_channel
if(min_piexl > Original_img(row,col,channel))
min_piexl = Original_img(row,col,channel);
end
end
dark_channel(row,col) = min_piexl;
end
end
result = fft2(dark_channel);
%spectrum = fftshift(abs(result));
spectrum = result;
figure(1);
spectrum = spectrum*255/max(spectrum(:));
imshow(spectrum);
这里一定记得fftshift,不然会出现下面的结果,低频结果分散在四个角落
正确结果如下
相关文章推荐
- 初探FFT在数字图像处理中的应用(fft2函数的用法)
- 数字图像处理的技术方法和应用
- 使用OpenGl GLSL进行数字图像处理
- 使用C#进行图像处理的几种方法
- 齐次坐标系在数字图像处理中的应用
- js一个典型的对象写法,推荐使用这种格式,用于处理图像的基本方法、
- 使用lockbits方法处理图像 from http://blog.sina.com.cn/s/blog_4e3e2ce4010009on.html
- [转]使用C#进行图像处理的几种方法
- Matlab在数字图像处理中的应用
- 数字图像处理中常用的插值方法
- 使用C#进行图像处理的几种方法
- 应用MATLAB语言进行数字图像处理 应用MATLAB语言进行数字图像处理
- 数字图像处理的研究方法
- PHP图像处理(二) GraphicsMagick 安装扩展及使用方法
- Javascript图像处理―虚拟边缘介绍及使用方法
- RenderMonkey在数字图像处理中的应用(续)
- (转)VC数字图像处理编程讲座之一 ---数字图像处理的起源和应用
- 使用lockbits方法处理图像(转)
- Javascript图像处理―虚拟边缘介绍及使用方法