exponenta event banner

Изменение размера изображения с помощью функции 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 вектор, содержащий число строк и столбцов в выходном изображении. Если указанный размер не обеспечивает такое же соотношение сторон, как у входного изображения, то выходное изображение будет искажено. Если один из элементов в векторе указан как NaN, imresize вычисляет значение для этого размера, чтобы сохранить пропорции изображения. Для изменения размера, необходимого для обработки с несколькими разрешениями, используйте 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 использует сглаживание, чтобы ограничить влияние сглаживания на выходное изображение для всех типов интерполяции, кроме ближайшего соседа. Чтобы отключить сглаживание, задайте параметр «Сглаживание» и задайте значение false. Даже при включенном сглаживании изменение размера может привести к появлению артефактов, поскольку информация всегда теряется при уменьшении размера изображения.

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

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