【问题标题】:use dft for image processing in matlab with out matlab function在没有matlab函数的matlab中使用dft进行图像处理
【发布时间】:2014-04-30 18:25:52
【问题描述】:

我在 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 函数)。 这段代码需要很长时间,但它不起作用。我不知道为什么。

【问题讨论】:

    标签: matlab dft


    【解决方案1】:

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

    a = double(a);
    

    【讨论】:

    • 谢谢,但现在显示此错误:???试图访问 temp(32,:);索引超出范围,因为 size(temp)=[31,34]。 ==> test_el_dft 在 18 时出错 f(j,:) = dft(temp(j,:));
    • 尝试运行x=dft(temp(j,:));x的大小是多少? a 的大小是多少?
    • 我找到了我的答案,我在 def.m 中更改了 m 和 n(for 的索引)----谢谢你对我的帮助 @yuk
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2011-07-15
    相关资源
    最近更新 更多