在matlab中使用dft进行图像处理而不使用matlab函数

时间:2014-04-30 18:25:52

标签: matlab dft

我在matlab中有2个函数

%%%%%%% test_dft 
clc;clear all;close all;
%%


  img=(imread('images/test_image.jpg'));
if isrgb(img)
    a=double(rgb2gray(img));
else
    a=double(img);
end
temp = zeros(size(a));
f = double(zeros(size(a)));
[m n]=size(a)
for i = 1:m
    temp(:,i)=dft(a(:,i));
 end
for j = 1:n
   f(j,:) = dft(a(j,:));
end


%%%%%%%% dft.m
function X=dft(x1) 
N=length(x1);
X=zeros(size(x1)); 
i=sqrt(-1); 
for k=0:N-1 
for n=0:N-1 
X(k+1)=(X(k+1)+x1(n+1)*exp(-2*pi*i*k*n/N)) ;
end 
end
end

我想计算dft的图像,之后用它来进行频域屏蔽(没有matlab功能)。 这段代码很长一段时间,但它不起作用。我不知道为什么。

1 个答案:

答案 0 :(得分:0)

imread返回整数值。首先将它们转换为双倍。

a = double(a);