как умножить два изображения в матричном умножении в Matlab?

У меня есть два изображения A и B, каждое размером mxm. Я хочу умножить эти изображения так, чтобы C=AxB.

До сих пор я нашел функцию immultiply в MATLAB, но эта функция умножает соответствующие биты изображений, а не выполняет матричное умножение.

Я также пробовал A.*B, но это также дает умножение соответствующих битов. Когда я пытаюсь A*B, я получаю это сообщение:

??? Error using ==> mtimes
Integer data types are not fully supported for this operation.
At least one operand must be a scalar.

person Swati Gupta    schedule 23.07.2014    source источник
comment
Что вы можете сказать об изображениях? Они бинарные? Оттенки серого? RGB? Как они попадают в рабочую область (т.е. как вы их загружаете)? Кроме того, просто для уточнения - результат также должен быть размером m * m, верно?   -  person Dev-iL    schedule 23.07.2014
comment
это изображение RGB, которое загружается с помощью imread. Я разделил компоненты R, G, B обоих изображений и попытался умножить компонент R одного на компонент R другого и так далее... результирующее изображение должно иметь размер mxm.   -  person Swati Gupta    schedule 24.07.2014


Ответы (1)


Вам нужно преобразовать изображения в двойники, прежде чем умножать их.

Пример:

умноженный = двойной (первый коврик) * двойной (второй коврик);

person lakesh    schedule 23.07.2014
comment
я пытался использовать double, но когда я использовал imshow для отображения результирующего изображения, он дает значения пикселей белого изображения больше 255. на самом деле я пытаюсь C = AxB, тогда я хочу получить A1 = Cxinverse (B), чтобы A и A1 можно было бы сравнить. они должны быть одинаковыми в соответствии с логикой умножения матриц. - person Swati Gupta; 24.07.2014
comment
@SwatiGupta Если C имеет какой-либо графический смысл, вы можете нормализовать результат до [0,1], чтобы отобразить его с помощью imshow. Должно работать для изображения RGB, если вы нормализуете все 3 канала. - person Yvon; 24.07.2014
comment
Почему бы просто не использовать imagesc вместо imshow? Также обратите внимание, что в MATLAB рекомендуемый способ деления матрицы: A1=C\B; - person Dev-iL; 24.07.2014