Построение интенсивности изображения vs (x, y) в Matlab

Вопрос:

Я пытаюсь построить 3D-график интенсивности изображений в градациях серого (v, x, y) пикселя. Я написал следующий код, но он не работает:

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

Сообщается об ошибке:

??? Превышен максимальный размер переменной, разрешенный программой.

Примечание. Размеры изображения <384×512 uint8>

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

Лучший ответ:

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

mesh(x,y,f)

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

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

mesh(f)

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

Оцените статью
TechArks.Ru
Добавить комментарий