【问题标题】:matlab image processing errormatlab图像处理错误
【发布时间】:2012-09-05 22:04:50
【问题描述】:

我正在尝试在 matlab 中找到图像的傅立叶变换。我在没有库函数的情况下这样做。代码是:

clc;
clear;
N=128; 
a=imread('lena128','bmp');
zeros(N,N);
for m=1:N
    for n=1:N
        w(m,n)=(exp(-1i*2*pi/N))^((m-1)*(n-1));
    end
end
af1=(w*a);
af=((w*(af1.')).');

当我编译这个程序时出现以下错误:

??? Error using ==> mtimes
Complex integer arithmetic is not supported.
Error in ==> qn4 at 12
af1=(w*a);

当我使用 a=rand(1,128) 而不是 a=imread('lena128','bmp') 时,我没有收到该错误。 我在网上搜索,发现类似的问题。但没有解决办法。谁能帮我指出错误?

【问题讨论】:

    标签: matlab image-processing fft complex-numbers


    【解决方案1】:

    imread 给你一个数组,它的元素是整数(我认为是uint8 类型)。然后,您尝试将它们与复数结合起来,但这是行不通的。特别是,MATLAB 不会自动将它们转换为 doubles 或 floats 或任何类似的东西。

    你或许应该说

    a=double(imread('lena128','bmp'));
    

    【讨论】:

      【解决方案2】:

      imread 函数返回用于灰度 bmp 图像的uint8 元素矩阵。许多 MatLab 函数和操作仅适用于 double 元素。使用im2double 将您的图像转换为双矩阵。

      a=imread('lena128','bmp');
      a=im2double(a);
      

      【讨论】:

        猜你喜欢
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2016-07-20
        • 2014-04-24
        相关资源
        最近更新 更多