ошибка обработки изображений в Matlab - PullRequest
3 голосов
/ 21 марта 2011

Я пытаюсь найти преобразование Фурье изображения в 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);

Когда я использую = rand (1,128) вместо = imread ('lena128)',' BMP '), я не получаю эту ошибку.Я искал в Интернете и обнаружил похожие проблемы.Но нет решения.Кто-нибудь может указать на ошибку для меня?

Ответы [ 2 ]

6 голосов
/ 21 марта 2011

imread дает вам массив, элементы которого являются целыми числами (думаю, типа uint8).Затем вы пытаетесь объединить их со сложными числами, и это не работает.В частности, MATLAB не будет автоматически превращать их в double s или float s или что-либо в этом роде.

Вы, вероятно, просто скажете

a=double(imread('lena128','bmp'));
4 голосов
/ 21 марта 2011

Функция imread возвращает матрицу uint8 элементов для изображений bmp в градациях серого.Многие функции и операции MatLab работают только с элементами double.Преобразуйте ваше изображение в двойную матрицу с im2double.

a=imread('lena128','bmp');
a=im2double(a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...