Как заблокировать размеры изображения в MATLAB - PullRequest
5 голосов
/ 11 октября 2011

Итак, у меня есть эта матрица в MATLAB, 200 глубиной x 600 шириной.Он представляет собой изображение глубиной 2 см и шириной 6 см.Как я могу построить это изображение так, чтобы оно было зафиксировано в правильных размерах, то есть 2 см х 6 см?Если я использую команды image или imagesc , он растягивает все это и выводит неправильный размер.Есть ли способ заблокировать показ изображения, где оси x и y пропорциональны?

Второй вопрос. Мне нужно установить это изображение в рамку 640x480 (20-пиксельное поле слева и справа,280 пикселей черного поля снизу).Есть ли способ сделать это?

Ответы [ 3 ]

11 голосов
/ 11 октября 2011

Чтобы сохранить соотношение сторон, вы можете использовать axis equal или axis image команды.

Цитирование документации:

  • axis equal устанавливает соотношение сторон, чтобы единицы данных были одинаковыми во всех направлениях. Соотношение сторон оси x, y и z настраивается автоматически в соответствии с диапазоном единиц данных в направлениях x, y и z.

  • axis image - это то же самое, что и ось, равная за исключением того, что окно графика плотно прилегает к данным`

По второму вопросу:

third_dimension_size=1; %# for b&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 голосов
/ 11 октября 2011

В качестве альтернативы другим ответам вы можете захотеть:

 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;
2 голосов
/ 11 октября 2011

set(gca,'DataAspectRatio',[1 1 1])

Второй вопрос:

new_image = zeros(480,640);
new_image(20:(200+20-1),20:(600+20-1)) = old_image;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...