|
|
||||||||||||||||||||||||||||||||
Вход |
Раздел "Обработка сигналов и изображений\Image Processing Toolbox"
И.М.Журавель "Краткий курс теории обработки изображений" В оглавление \ К следующему разделу \ К предыдущему разделу Создание обивочных материалов с использованием изображений При рассмотрении этого демонстрационного примера, создается структура TFORM, которая описывает способы обработки изображений при решении задач создания обивочных материалов. Исследуем наиболее эффектные преобразования на примере сетки из прямых и окружностей. При этом будем также использовать такие функции как imtransform и tformarray.
Демонстрационный пример включает следующие шаги:
Шаг 1: Первичное преобразование изображений. В двумерном случае, при создании обивочных материалов на основе изображений, преобразования заключаются в трансформации исходной пары координат [u v] в пару результирующих координат [x y]. Это можно представить в таком виде
где является константой. В отдельных случаях применяют аффинные преобразования, которые можно записать так как
Значения x и y определяются из выражения 1. Приняв, что , создадим структуру аффинных преобразований с использованием функции maketform. a=0.45; T=maketform('affine', [1 0 0; a 1 0; 0 0 1] ); Теперь необходимо выбрать, считать и просмотреть изображение, которое будет использоваться при преобразованиях. A=imread('football.jpg'); h1=figure; imshow(A); title('Исходное изображение'); Выберем фон, на котором будет размещено это изображение, например, оранжевый. Шаг 2: Исследование преобразований. Проведение преобразований сетки из линий и массива окружностей с использованием функции tformfwd является одним из путей осмысленного понимания трансформаций данного вида. Скрипт ipex001 формирует сетку из линий, наложенную на исходное изображение и отображает на нем. Этот программный продукт содержится в /toolbox/images/imdemos/ipex001.m. ipex001 Скрипт ipex002 реализует ту же процедуру, только с использованием окружностей. Этот программный продукт содержится в /toolbox/images/imdemos/ipex002.m. ipex002 Шаг 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' нет необходимости в заполнении пространства вокруг исходного изображения. Br=imtransform(A, T, makeresampler({'cubic', 'nearest'}, ... 'replicate'), 'XData', [-49 500], 'YData', ... [-49 400]); figure, imshow(Br); title('Pad Method=''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'''); Шаг 4: Реализация методов с параметрами 'circular' и 'symmetric'. Оставшиеся две опции определяют два подхода. Один из них использует опцию 'circular' и состоит в повторяемости исходного изображения вдоль каждой размерности, второй - использует опцию 'symmetric' и состоит в повторяемости зеркальных отражений исходного изображения. Продемонстрируем это на конкретных примерах. Thalf=maketform('affine', [1 0; a 1; 0 0]/2); Bc=imtransform(A, Thalf,makeresampler({'cubic', 'nearest'}, ... 'circular'), 'XData', [-49 500], 'YData', ... [-49 400], 'FillValues', orange); figure, imshow(Bc); title('Pad Method=''circular'''); Bs=imtransform(A, Thalf, makeresampler({'cubic', 'nearest'}, ... 'symmetric'), 'XData', [-49 500], 'YData', ... [-49 400], 'FillValues', orange); figure, imshow(Bs); title('Pad Method=''symmetric'''); |
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
E-mail: | ||
Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |