Измените размер Изображения с Функцией imresize

В этом примере показано, как изменить размер изображения с помощью imresize функция.

Задайте значение увеличения

Считайте изображение в рабочую область.

I = imread('circuit.tif');

Измените размер изображения, с помощью imresize функция. В этом примере вы задаете фактор увеличения. Чтобы увеличить изображение, задайте фактор увеличения, больше, чем 1.

J = imresize(I,1.25);

Отобразите оригинальное изображение рядом с увеличенной версией.

figure
imshowpair(I,J,'montage')
axis off

Figure contains an axes. The axes contains an object of type image.

Задайте размер выходного изображения

Измените размер изображения снова, на этот раз задав желаемый размер выходного изображения, а не значение увеличения. Передайте imresize вектор, который содержит количество строк и столбцов в выходном изображении. Если заданный размер не произведет то же соотношение сторон как входное изображение, выходное изображение будет искажено. Если вы указываете один из элементов в векторе как NaNimresize вычисляет значение для той размерности, чтобы сохранить соотношение сторон изображения. Чтобы выполнить изменение размеров, требуемое для обработки мультиразрешения, используйте impyramid.

K = imresize(I,[100 150]);
figure, imshow(K)

Figure contains an axes. The axes contains an object of type image.

Задайте метод интерполяции

Измените размер изображения снова, на этот раз задав метод интерполяции. Когда вы увеличиваете изображение, выходное изображение содержит больше пикселей, чем оригинальное изображение. imresize интерполяция использования, чтобы определить значения этих пикселей, вычисляя взвешенное среднее некоторого набора пикселей около пиксельного местоположения. imresize основывает коэффициенты на расстоянии, которое каждый пиксель от точки. По умолчанию, imresize бикубическая интерполяция использования, но можно задать другие методы интерполяции или ядра интерполяции. Смотрите imresize страница с описанием для полного списка. Можно также задать собственное ядро интерполяции. Эта билинейная интерполяция использования в качестве примера.

L = imresize(I,1.5,'bilinear');
figure, imshow(L)

Figure contains an axes. The axes contains an object of type image.

Предотвратите искажение при уменьшении изображения

Измените размер изображения снова, на этот раз уменьшив изображение. Когда вы уменьшаете размер изображения, вы теряете некоторые исходные пиксели, потому что существует меньше пикселей в выходном изображении. Это может ввести артефакты, такие как искажение. Искажение, которое происходит в результате сокращения размера обычно, появляется как ступенчатые шаблоны (особенно в высококонтрастных изображениях), или как муар (волновой эффект) шаблоны в выходном изображении. По умолчанию, imresize использование, сглаживающееся, чтобы ограничить удар искажения на выходном изображении для всей интерполяции, вводит кроме самого близкого соседа. Чтобы выключить сглаживание, задайте 'Сглаживающийся' параметр и установите значение ко лжи. Даже со сглаживанием включенного, изменение размеров может ввести артефакты, потому что информация всегда теряется, когда вы уменьшаете размер изображения.

M = imresize(I,.75,'Antialiasing',false);
figure, imshow(M)

Figure contains an axes. The axes contains an object of type image.