Как заблокировать размеры изображения в MATLAB

#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;