2015-06-28 2 views
1

Я пытаюсь построить трехмерный график интенсивности изображения в градациях серого (x, y) координат пикселя. Я написал следующий код, но это не похоже на работу: сообщилНастроить интенсивность изображения vs (x, y) в Matlab

f=imread('peppers.png'); 
f=rgb2gray(f); 
[x,y]=meshgrid(1:1:384,1:1:512); 
mesh(x,y,f(x,y)) 

Ошибка:

??? Maximum variable size allowed by the program is exceeded.

Примечание: Размеры изображения являются < 384x512 uint8>

Не могли бы вы рассказать мне, что не так с моим кодом и как построить интенсивность?

ответ

2

В коде есть две проблемы: Команда meshgrid создает две матрицы размером 512 x 384 вместо 384 x 512. Просто переключите два входа meshgrid, чтобы решить эту проблему. Тогда вам не нужно звонить f(x,y) внутри mesh. Правильный синтаксис:

mesh(x,y,f) 

где x и y являются матрицы вы создали, и f образ. Таким образом, сюжет генерируется правильно.

Примечание: Вы также можете просто позвонить

mesh(f) 

, как MATLAB может генерировать векторы x и y автоматически.

+0

Это еще одна ошибка: «Размеры данных должны быть согласованы» – Apurv

+0

Вы переключали входы 'meshgrid', поэтому теперь это' meshgrid (1: 1: 512,1: 1: 384); '? – hbaderts

+0

Да, все еще «Предупреждение: CData должны быть двойными или одиночными, если только они не используются только как данные текстуры» – Apurv

Смежные вопросы