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