Построение интенсивности изображения 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)) Сообщается об ошибке: ??? Превышен максимальный размер переменной, разрешенный программой. Примечание. Размеры изображения <384x512 uint8> Не могли бы вы рассказать мне, что не так с моим кодом и как

Вопрос:

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

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