Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 21
Текст из файла (страница 21)
Две эти концепции лучпзе всего объяснить на простых примерах. На рис. 3.13, а) изображена одномерная функция )" и маска ш. Началом функции ) считается ее самая левая точка. Чтобы совершить корреляцию этих двух функций, перемещаем цз так, чтобы ее самая правая точка совпала с началом ), как показано на рис. 3.13, б). Заметим, что имеются точки на обеих функциях, которые не перекрываются.
Для решения этой проблемы предполагается, что функция !" равна нулю везде, где это необходимо, чтобы гарантировать наличие соответствующих точек на ) при прохождении над ней маски ю. Такая ситуация проиллюстрирована на рис. 3.13, в). рис. 3.13, в). В этом случае сумма произведений равна О. Затем маска ю перемещается на один шаг вправо и процесс вычисления повторяется (рис. 3.13, е)(. Сумма произведений опять равна О. После четырех сдвигов (рис. 3.13, д)( нам встретится первое ненулевое значение 2х1 = 2.
Продолжая тем же манером до тех пор, пока ю полностью пройдет ) (последняя конфигурация показана на рис. 3.13, е)(, мы получим результат, показанный на рис. 3.13, ж). Эта строка чисел и является корреляцией в и )'. Отметим, что если бы мы зафиксировали ш, а перемещали бы г", то результат был бы иным, так что порядок операции здесь имеет значение. Метка 'Хи11' над результатом корреляции на рис. 3.13, ж) является флагом (он будет обсуждаться позже), который предписывает применение корреляции с расширением изображения продемонстрированным выше методом. Пакет имеет и другую опцию, 'ваше' (рис. 3.13, в)(, когда вычисляется корреляция, размер которой совпадает с размером исходного изображения 1. Эти вычисления также используют расширение нулями, но начальная позиция центральной точки маски (это точка с отметкой 3) совмещается с началом ).
Последнее вычисление производится, когда центральная точка маски совмещается с концом 1. Для совершения свертки необходимо повернуть маску «о на 180' и совместить ее самый правый конец с началом г" (см. рис. 3.13, к)(. Затем процесс скольжения/вычисления совершается как при получении корреляции. Он проиллюстрирован на рис. 3.13 от л) до о). Результаты свертки с флагами '1п11' и 'ваше' показаны, соответственно, на рис. 3.13, и) и р).
Функция ) на рис. 3.13 является дискретным единичным импульсом, т. е. она равна 1 только в одной координате, а во всех остальных она равна О. Из результатов на рис. 3.13,п) или р) видно, что свертка просто «копирует» ш в то место, где был единичный импульс. Это простое свойство копирования (называемое сдвигом) является фундаментальной концепцией теории линейных систем, чем объясняется необходимость поворота одной из функций на 180' при выполнении операции свертки. Заметим, что перестановка порядка функций при свертке даст тот же самый результат, чего не происходит при корреляции.
Если сдвигаемая функция является симметричной, то, очевидно, корреляция и свертка дают одинаковые результаты. Представленные концепции легко обобщаются на двумерные функции, т.е. на изображения, что иллюстрируется на рис. 3.14. Начало находится в верхнем левом углу изображения )'(х, у) (см. рис. 2.1(. Для совсрнгспия корреляции надо поместить нижнюю правую точку «о(х,у) так, чтобы она совпала с началом )(х, у), см. рис. 3.14, в). Обратите внимание на использование расширения нулями, причина которого обсуждалась при рассмотрении рис.
3.13. Для совершения корреляции надо перемещать ш(х, у) по всем возможным положениям, так чтобы хоть один пиксел маски перекрывался с пикселами изображения 1(х, у). Результат корреляции 'Хи11' показан на рис. 3.14, г). Чтобы получить корреляцию 'ваше', приведенную на рис. 3.14, д), необходимо перемещать маску так, чтобы ее центр перекрывал исходное изображение 1(х, у).
Для совершения свертки необходимо сначала повернуть ю(х, у) на 180' и совершить ту же процедуру, что и при вычислении корреляции (см. рис. 3.14 от е) до зЯ. Как и в обсуждавшемся вылив одномерном примере, свертка дает одинако- вый результат независимо от того, какая из двух функций подвергается перемещению. Прн нахождении корреляции порядок функций имеет значение. В пакете 1РТ при реализации этих процедур всегда перемещается фильтрующая маска.
Заметим также, что результаты корреляции и свертки получаются друг из друга поворотом на 180е. В этом нет ничего удивительного, так как свертка — это не что иное, как корреляция с повернутой фнльтрующей маской. Рис. 3.14. Иллюстрация двумерной корреляции и свертки. Нули показаны серым цветом для лучшей на- глядности Расширение нулямиу ООИИОООИО ИОИОООИИ О ~ИНИООИО И (! И 0 И О Н О И И И И 1 0 Н 0 О НОИОИИОИО ИООИНИИИИ ООООИООИН 000000000 б) - Начелоу!х, у) ИОИ Н О И Н О 00100 ОНООИ 00000 а) (х, у) 123 456 789 Исходное положение гх маски и ~! 2 3 О 0 Н 0 О О '456!000000 ~789000000 О И 0 0 Н О И И И 0000!ИОНН 00000!!ОНИ ОИООИОИНИ ООИООИОИИ ИИНИИОИНИ в) Результат корреляции 'йз!1' 000000000 НИНИООИОО НОНООИОИО 000987000 000654000 000321000 ОИОИООИОО ООНОИНИИН ОИОИНИООИ г) д) Результат свертки тп1Г Результат свертки 'зазпе' маска зг ИОНИН 01230 0456О 07890 О И О 0 И 3) В пакете 1РТ линейная пространственная фильтрация реализована функцией 1ш111тег, которая имеет следующий синтаксис; )) я=1шх11сег(т, н, 111сет1пя шос!е, Ьоппс)агу орс1опв, в1хе орсйопв); где 1 — это входное изображение, н — фильтрующая маска, 8 результат фильтрации, а остальные параметры сведены в табл.
3.2. Параметр 1110ет1пя шос!е определяет, что совершает фильтр, корреляцию ('согтз) нли свертку !'сопуз). Опция Ьоцпс)агу орс1опв отвечает за расширение границ, причем размеры расширения определяются размерами фильтра. Подробнее этот параметр будет раз- г повернутая ,'98700 '6 5 4 И И !3 2 1' И ~! ИНИОН 00001 ИОИНО ИНИН ОИ ИОН НИНО е) ~! О И И ИННИ И~!ОИ О И ОИНИ ИНИН ОООО ИННО Н (! И И И ИОН НИО НОИ ОНО НИИ ИОН ОНО НОИ И И О ОНИ И И И 1 23 456 789 ИОН И И О ИОН ж) ИИО ИОН 1! И Н НИО ИОИ 000 ОИО ООИ ОНИ Результат корремции 'ваше' О О '! И И 0987И 06540 03210 ООИОИ ~~ее г ю.л„г,, е р е бираться в примере 3.7.
Опция втяе орстовв это либо 'тц11', либо 'ваше', смысл которых уже объяснялся на рис. 3.13 и 3.14. Чаще всего функция 1шй11тет применяется в виде команды 8 = 1пй11еет(У, и, 'тер11саее') Эта форма команды используется при реализации в 1РТ стандартных линейных пространственных фильтров, которые будут обсуждаться в 3 3.5.1. Эти фильтры уже повернуты на 180", поэтому можно делать процедуру корреляции, которая задана в функции 1шй11тег по умолчанию. А как уже обсуждалось при изучении рис.
3,14, совершение корреляции с перевернутым фильтром эквивалентно свертке с исходным фильтролс Если фильтр симметричен относительно своего центра, то обе опции дают одинаковые результаты. Таблица 3.2. Опции функции 1а111еег Опции Описание Меда фильтрации 'согг' Фильтрация делается методом корреляции (см. рис. 3.13 и 3.14). Мода по умолчанию. Фильтрация делается методом свертки (см. рис. 3.13 и 3.14) 'сапе' Граничные опции Р Границы изображения расширяются значением Р (без апострофов).
По умолчанию Р=О. Размер изображения увеличивается повторением величин на его бо- ковых границах. Размер изображения увеличивается путем зеркального отражения че- рез границы. Размер изображения увеличивается периодическим повторением дву- мерной функции. 'гер11саее' 'аупшесг1с' 'сггсп1аг' Опции размера '1п11' Выход имеет те же размеры, что и расширенное входное изображение.
Выход имеет те же размеры, что и вход. Это достигается с помощью ограничения перемещения центра фильтрующей маски точками, принадлежащими исходному изображению. (см. рис. 3.13 и 3.14). Опция по умолчанию. 'вене' При работе с фильтрами, которые не были предварительно перевернуты или были несимметричными, когда требуется построить свертку, ыожно поступать двумя способами. Один из них использует синтаксис 8 = 1шй11еет(1, и, 'сопч', 'гер11сасе'). Г Функция госэо(я, Х) поворачивает ы на чгзл й х 90Ч, где Ь вЂ” целое число.
Другой подход заключается в предварительной обработке маски ш с помощью функции тос90(и, 2)1, которая поворачивает ш на 180'. После этого применяется команда 1шт11тег(Х, и, 'гер11сате'). Конечно, эти два шага можно записать в одной формуле. В результате получится изображение, размер которого совпадает с размером исходного (т.е. по умолчанию принята опция 'ваше', которая обсуждалась ранее). ЛГя с~аГиаг~ и иная, фи.на рация 309 ф/ Канонир яи и~ и ~ фи. ьгриюнного и ~ого яжиггии вы ии анг гги ~ исп, о.«н,ни и, " ' " ' ' ' и, ~~~~~ 0 Глава з. Преобразования яркости изображений и пространственная фильтрация где использовалась граничная опция, принятая по умолчанию, т.е.
расширение изображения нулями (черным цветом). Как и ожидалось, границы между белыми и черными областями стали размытыми. Тот же эффект имел место на границах изображения, к которым примыкают белые области, что вполне понятно в силу расширения границ черным цветом. С этой трудностью можно справиться, если использовать опцию 'гвр11саСе' » яг = 1шх11Сег1т, и, 'гер11сасе'); » 11яцгв, 1швЬов(р, 1 )) Из рис. 3.15, в) видно, что теперь границы фильтрованного изображения выглядят так, как и ожидалось. Эквивалентный результат получается с опцией 'вушшеСгйс' » яв 1шШсетгт, и, 'вушшесг1с'); » 11яцте, 1швЬоя18в. 1 ) ) Результат показан на рис. 3.15, г). Однако, если применить опцию 'сйги1аг' » яс = 1ш111Сетгт, и, 'сйги1ат'); » 11яиге, 1швЬов(йс.
~ )) (см. рис. 3.15, д)), то обнаружится та же проблема, что и при расширении нулями. Этому не стоит удивляться, ведь при периодическом повторении исходного изображения черные квадраты примыкают к белым. Наконец, проиллюстрируем эффекты, происходящие из-за сохранения класса изображения функцией 1ш111Сег, который может привести к определенным проблемам, если не обращать на это внимание: » 18 = 1ш2и1пС81х); » я8г = 1шх11Сег1т8, и, 'гер11сасе'); » 11яиге, 1швЬои188г, 1 )) На рис. 3.15, е) изображен результат этих команд. Здесь при конвертации выходного изображения в класс ц1пС8 функцией 1ш111Сег произошло усечение части изображения.
Причина этого состоит в том, что сумма коэффициентов фильтрации не принадлежит интервалу (О, 1], в результате чего фильтрованные коэффициенты вышли за допустимые пределы области определения (О, 255] данного класса. Чтобы избежать такой неприятности, следует делать нормировку коэффициентов фильтра, чтобы их сумма принадлежала интервалу (О, 1] (в рассмотренном примере для этого необходимо разделить коэффициенты на 31, тогда их сумма будет равна 1), или переводить изображение в класс аоиЬ1е.
Отметим, однако, что даже во втором случае данные придется где-то перенормировать для приведения их к нужному формату (например, при сохранении изображения на диске). В любом случае, следует всегда помнить об области значений данных, чтобы избегать неожиданных результатов. сз Д 3.4.2. Нелинейная пространственная фильтрация Нелинейная пространственная фильтрация также основана на окрестностных операциях, причем механизм определения окрестности размера глхп и скольжения ее центра по изображению является таким же, как и в линейной фильтрации, описанной в предыдущем параграфе. Однако там, где линейная фильтрация использует сумму произведений (т.
е. линейную операцию), нелинейная фильтрация основана (что следует из ее названия) на нелинейных операциях, совершаемых над пикселами текущей окрестности. Например, если положить, что отклик фильтра в каждой центральной точке равен максимальному значению в ее окрестности, то это определит нелинейную операцию фильтрации. Другое фундаментальное отличие состоит в том, что концепция маски не превалирует в нелинейных процессах. Идея фильтрации остается, но сам «фильтр» следует представлять себе в виде нелинейной функции, которая применяется к пикселам окрестности, и ее отклик состоит из отклика операции, примененной к центральному пикселу окрестности.