#image #matlab #image-processing #matlab-figure
Вопрос:
Пространственное разрешение уменьшается с помощью функции imresize, например, изображение 4×4 преобразуется в изображение 2×2, но размер холста также уменьшается из-за размеров.
Есть ли какой-либо способ манипулировать размером пикселей, чтобы получить тот же размер холста?
Ответ №1:
Разрешение очень часто неправильно понимают как количество пикселей или размер пикселя. На самом деле размер пикселя дает максимально возможное разрешение изображения, но возможно и более низкое разрешение.
Разрешение — это способность различать мелкие детали. Наименьшее расстояние между двумя маленькими точками, которое все еще можно различить (разрешить), — это разрешение. Разрешение цифрового изображения определяется плотностью пикселей (или размером пикселя), а также оптической системой, создавшей изображение.
Для хорошей системы обработки изображений оптика и датчик изображения подобраны таким образом, чтобы выборка датчика не снижала разрешение изображения (что привело бы к сглаживанию), но также не приводила к избыточному образцу изображения (в этом случае у нас было бы больше пикселей, чем информации).
Одним из простых способов уменьшения разрешения изображения без изменения количества пикселей является имитация эффекта оптической системы с более низким разрешением. Подойдет любая фильтрация нижних частот, но гауссова фильтрация даст наилучшие результаты.
Ответ №2:
Как подсказал ответ Криса, фильтр нижних частот-это способ имитировать оптическую систему с более низким разрешением. Пожалуйста, прочтите этот вопрос и выберите подходящий метод, соответствующий требованиям вашей заявки
Регулировка псевдоразрешения (уменьшение/уменьшение масштаба)
Быстрое и грязное решение:
Чтобы увеличить уменьшенное изображение до исходного размера repelem()
, можно использовать функцию для повторения элементов. В этом примере использование a Resolution_Factor = 0.5
снизит точность изображения в 2 раза. Слева от рисунка ниже находится исходное изображение размером 4 на 4, а справа-изображение размером 4 на 4, настроенное с псевдоразрешением. Изображение справа кажется более низкого качества, но пространственные размеры остаются прежними. Пожалуйста, имейте в виду Resolution_Factor
, что значение для этого скрипта должно быть равно или меньше 1
(уменьшить). Имейте в виду, что терминология, которую я использовал здесь, довольно расплывчата и в любом случае не считается конкретной.
Resolution_Factor = 0.5;
Image = [0 10 20 30;
40 50 60 70;
80 90 100 110;
120 140 150 160];
[Image_Height,Image_Width,~] = size(Image);
Resized_Image = imresize(Image,[round(Image_Height*Resolution_Factor) round(Image_Width*Resolution_Factor)]);
Resolution_Adjusted_Image = repelem(Resized_Image,round(1/Resolution_Factor),round(1/Resolution_Factor));
Image = uint8(Image);
subplot(1,2,1); imshow(Image);
title("Original Image");
subplot(1,2,2); imshow(Resolution_Adjusted_Image);
title(["Pseudo-Resolution Adjusted Image";"(kept pixel quality)"]);
fprintf("The size of the orginal image is:");
disp(size(Image));
fprintf("The size of the psuedo-resolution adjusted image is:");
disp(size(Resolution_Adjusted_Image));
Resolution_Factor = 0.25;
Image = imread("peppers.png");
Image = uint8(Image);
subplot(1,2,1); imshow(Image);
title("Original Image");
[Image_Height,Image_Width,~] = size(Image);
Resized_Image = imresize(Image,[round(Image_Height*Resolution_Factor) round(Image_Width*Resolution_Factor)]);
Resolution_Adjusted_Image = repelem(Resized_Image,round(1/Resolution_Factor),round(1/Resolution_Factor));
subplot(1,2,2); imshow(Resolution_Adjusted_Image);
title(["Pseudo-Resolution Adjusted Image";"(kept pixel quality)"]);
fprintf("The size of the orginal image is:");
disp(size(Image));
fprintf("The size of the psuedo-resolution adjusted image is:");
disp(size(Resolution_Adjusted_Image));