Вопрос:
Я пытаюсь построить 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.