#image #matlab #size
#изображение #matlab #размер
Вопрос:
Итак, у меня есть эта матрица в MATLAB, 200 в глубину x 600 в ширину. Он представляет изображение глубиной 2 см и шириной 6 см. Как я могу построить это изображение так, чтобы оно было зафиксировано в правильных размерах, т.Е. 2 см x 6 см? Если я использую команды image или imagesc, они растягивают все это по форме и показывают неправильный размер. Есть ли способ заблокировать его для отображения изображения, где оси x и y пропорциональны?
Второй вопрос, мне нужно затем установить это изображение в кадр размером 640×480 (20 пикселей черного поля слева и справа, 280 пикселей черного поля внизу). Есть ли способ сделать это?
Ответ №1:
Чтобы сохранить соотношение сторон, вы можете использовать axis equal
axis image
команды или .
Цитирование документации:
-
axis equal
устанавливает соотношение сторон таким образом, чтобы единицы данных были одинаковыми во всех направлениях. Соотношение сторон по осям x, y и z настраивается автоматически в соответствии с диапазоном единиц данных в направлениях x, y и z. -
axis image
совпадает с axis equal, за исключением того, что поле графика плотно прилегает к данным `
Для второго вопроса:
third_dimension_size=1; %# for bamp;w images, use 3 for rgb
framed_image=squeeze(zeros(640,480,third_dimension_size));
framed_image(20:20 600-1,140:140 200-1)= my_600_200_image;
imagesc(framed_image'); axis image;
Ответ №2:
set(gca,'DataAspectRatio',[1 1 1])
Второй вопрос:
new_image = zeros(480,640);
new_image(20:(200 20-1),20:(600 20-1)) = old_image;
Ответ №3:
В качестве альтернативы другим ответам вы можете захотеть:
set(gca, 'Units', 'centimeters', 'Position', [1 1 6 2])
Убедитесь, что вы сделали это после построения изображения, чтобы получить правильные свойства других осей.
Что касается второго вопроса, обратите внимание на количество цветовых каналов:
new_image = zeros(480,640, size(old_image));
new_image(20:(200 20-1),20:(600 20-1),:) = old_image;