Шаг 3: Сравнительный анализ различных методов
При реализации технологии вырезания изображений, функция imtransform заполняет оранжевыми треугольниками места, где нет данных. Известно пять модификаций рассматриваемого метода. При этом используется пять различных параметров ('fill', 'replicate', 'bound', 'circular' и 'symmetric'). Проведем сравнительный анализ первых трех параметров.
Первая опция 'fill' вместе с опциями 'XData' и 'YData' используется в функции imtransform для принудительной установки фона вокруг изображения.
Bf=imtransform(A, T, makeresampler({'cubic', 'nearest'},... 'fill'), 'XData', [-49 500], 'YData', ... [-49 400], 'FillValues', orange);figure, imshow(Bf);title('Pad Method=''fill''');При использовании второй опции 'replicate' нет необходимости в заполнении пространства вокруг исходного изображения.
Теперь рассмотрим применение третьей опции 'bound'.
Bb=imtransform(A, T, makeresampler({'cubic', 'nearest'}, ... 'bound'), 'XData', [-49 500], 'YData', ... [-49 400], 'FillValues', orange);figure, imshow(Bb);title('Pad Method=''bound''');Результаты обработки исходного изображения с помощью исследуемого метода при установке опций 'fill' и 'bound' являются очень похожими. Разница состоит в том, что при использовании опции 'bound' при обработке используется кубическая интерполяция и результирующее изображение получается немного размытым. Рассмотрим этот момент более детально и проанализируем результаты обработки с использованием двух опций ('fill' и 'bound') на элементном уровне.
Cf=imtransform(A, T, makeresampler({'cubic', 'nearest'}, ... 'fill'), 'XData', [423 439], 'YData', ... [245 260], 'FillValues', orange);Cb=imtransform(A, T, makeresampler({'cubic', 'nearest'}, ... 'bound'), 'XData', [423 439], 'YData', ... [245 260], 'FillValues', orange);Cf=imresize(Cf, 12, 'nearest');Cb=imresize(Cb, 12, 'nearest');figure;subplot(1, 2, 1); imshow(Cf); title('Pad Method=''fill''');subplot(1, 2, 2); imshow(Cb); title('Pad Method=''bound''');