Фильтрация изображения. Линейная фильтрация в пространственной области. Опция дополнения края изображения

Множество подходов к улучшению изображений распадается на две категории: методы обработки в пространственной области (пространственные методы) и методы обработки в частотной области (частотные методы). К пространственной области относится совокупность пикселей, составляющих изображение. Функция предварительной обработки в пространственной области записывается в виде

где f (x , y ) – входное изображение,

g (x , y ) – выходное (обработанное) изображение,

h – оператор функции f , определенный в некоторой области (x , y ).

Операции такого вида относятся к общему классу операций над соседними элементами . Эти операции являются основным инструментарием принизкоуровневой обработке изображений илиобработке изображений в пространственной области .

Основным подходом при определении окрестности точки (x , y ) является использование квадратной или прямоугольной области части изображения с центром в точке (x , y ). Центр этой части изображения перемещается от пикселя к пикселю начиная, например, с левого верхнего угла. При этом для получения g (x , y ) оператор применяется для каждого положения (x , y ). Хотя используются иногда и другие формы окрестности (например, круг), квадратные формы более предпочтительны из-за простоты их реализации.

Один из наиболее применяемых методов пространственной области основан на использовании фильтров (масок свертки, шаблонов, окон). Обычно маска фильтра представляет собой небольшую (например, размерность 3*3) двумерную систему, коэффициенты которой выбираются таким образом, чтобы обнаружить заданное свойство изображения (рис. 1.5, а).

Рис. 1.5: а – маска фильтра; б – коэффициенты маски фильтра

Если величины w 1 ,w 2 ,…,w 9 представляют собой коэффициенты, маски пикселя (x , y ) и его восьми соседей (рис.1.5, б), то алгоритм можно представить как выполнение следующей операции на окрестности 3*3 точки (x , y ) :

Под задачей фильтрации изображений в широком смысле понимают любые процедуры обработки изображений, при которых на вход процедуры подается растровое изображение и на выходе формируется растровое изображение. Однако чаще под «фильтрацией» понимают так называемую помеховую фильтрацию . Главная цель помеховой фильтрации заключается в такой обработке изображений, при которой результат оказывается более подходящим с точки зрения конкретного применения. В общем случае можно выделить линейные фильтры (сглаживающие фильтры, контрастоповышающие фильтры, разностные фильтры) и нелинейные фильтры (медианный фильтр).

Приведем краткое описание наиболее распространенных методов фильтрации.

Низкочастотный фильтр – ослабляет высокочастотные компоненты и усиливает роль низкочастотных. Частота в применении к изображениям отражает количество имеющихся в изображении деталей. Резкие перепады яркости, помехи и шумы являются примером высокочастотных элементов в изображении. Сглаживание изображения реализуется с помощью следующих ядер:

,

,

.

Высокочастотный фильтр – ослабляет низкочастотные компоненты в изображении и усиливает роль высокочастотных. Фильтры высокой частоты применяются для выделения таких деталей, как контуры, границы или для повышения резкости изображения. Каждый скачок яркости и каждый контур представляют собой интенсивные детали, связанные с повышенными частотами. Выделение высокочастотных компонент осуществляется с помощью следующих ядер:

,

,

.

Оператор Робертса. Оператор Робертса является примером нелинейного фильтра. Преобразование каждого пикселя перекрёстным оператором Робертса может показать производную изображения вдоль ненулевой диагонали, и комбинация этих преобразованных изображений может также рассматриваться как градиент от двух верхних пикселов к двум нижним. Оператор Робертса используется ради быстроты вычислений, но проигрывает в сравнении с альтернативами из-за значительной проблемы чувствительности к шуму. Он даёт линии тоньше, чем другие методы выделения границ.

В обработке участвуют четыре пикселя, расположенные следующим образом (рис. 1.6).

Рис. 1.6. Пиксели, участвующие в обработке оператором Робертса

Отклик оператора Робертса:

Ядра свертки в данном случае будут выглядеть таким образом:

,

.

Свертка для каждого ядра вычисляется отдельно. В качестве отклика данного фильтра выступает величина

, (1.17)

где P и Q – отклик ядер H 1 и H 2 .

Иногда в качестве оператора Робертса берется величина
.

Оператор Собеля. Оператор Собеля применяют в алгоритмах выделения границ. Это дискретный дифференциальный оператор, вычисляющий приближенное значение градиента яркости изображения. Результатом применения оператора Собеля в каждой точке изображения является либо вектор градиента яркости в этой точке, либо его норма. Метод усиления края с помощью оператора Собеля рассматривает два различных ядра свертки:

Исходя из этих сверток вычисляется величина и направление краев. Свертка для каждого ядра вычисляется отдельно. В качестве отклика данного фильтра выступает величина

, (1.19)

где P и Q – отклик ядер H 1 и H 2 .

Иногда в качестве оператора Собеля берется величина
.

Оператор Превитта. Аналогично оператору Собеля действует оператор Превитта. Детектор границ Превитта является подходящим способом для оценки величины и ориентации границы. В то время как детектор с дифференциальным градиентом нуждается в трудоёмком вычислении оценки ориентации по величинам в вертикальном и горизонтальном направлениях, детектор границ Превитта даёт направление прямо из ядра с максимальным результатом. Метод усиления края с помощью оператора Превитта рассматривает два различных ядра свертки:

Результат работы оператора Превитта есть

, (1.21)

где P и Q – отклик ядер H 1 и H 2 .

Оператор Лапласа. Дискретный оператор Лапласа часто используется в обработке изображений, например в задаче выделения границ или в приложениях оценки движения. Дискретный лапласиан определяется как сумма вторых производных и вычисляется как сумма перепадов на соседях центрального пикселя. Метод усиления края по Лапласу рассматривает целый ряд различных ядер свертки. Приведем некоторые их них:

Как видно, сумма элементов матриц равна нулю, поэтому отклик фильтра может быть отрицательным. В этом случае значение отклика берется по модулю. В результате обработки области с постоянной или линейно возрастающей интенсивностью становятся черными, а области быстро изменяющихся значений интенсивности ярко высвечиваются.

Ниже приведем некоторые пространственные процессы, которые не подпадают под категорию свертки и могут применяться для устранения различного вида шума.

Фильтр «гармоническое среднее» . Гармоническое среднее ряда
вычисляется по формуле

. (1.23)

В процессе фильтрации значение текущего пикселя изображения заменяется на
множества значений девяти пикселей, включая текущий и соседние.

Min – фильтр. В процессе фильтрации значение текущего пикселя заменяется на минимальное значение соседних пикселей. Так, например, для ядра размерности 3 будем иметь:

Max – фильтр. В процессе фильтрации значение текущего пикселя заменяется на максимальное значение соседних пикселей (по аналогии с предыдущим фильтром).

Min - Max –фильтр. В процессе фильтрации значение текущего пикселя изображения сначала заменяется на минимальное значение соседних пикселей, а при повторном проходе на максимальное.

Медианный фильтр. Усредненное фильтрование использует значения элементов, содержащихся в области примыкания, для определения нового значения. Фильтр располагает элементы области примыкания в отсортированном порядке и отбирает среднее значение. Так, например, для ядра размерности 3 медианное значение будет пятым:

С помощью методов пространственной обработки изображений можно получить ряд интересных эффектов. Приведем некоторые из них.

Эффект тиснения. С помощью операции свертки можно реализовать преобразование, дающее эффект тиснения на изображении.

(1.24)

Бинарное «псевдополутоновое» изображение. Исходное изображение обрабатывается при помощи маски D2 или D4: если значение пикселя меньше пропорционального значения соответствующего ему элемента маски, то он обнуляется, иначе ему присваивается 255. Маска накладывается на изображение без перекрытия. Маски D2 и D4:

,

.

При использовании пространственных процессов могут возникнуть следующие вопросы, связанные с особенностями обработки пикселей:

    Устранение краевых эффектов;

    Значение отклика выходит за пределы .

Для первого вопроса возможны следующие пути решения:

    Исключить из преобразования граничные пиксели изображения

в этом случае выходное изображение будет иметь меньшие размеры, либо закрасить граничные пиксели, например черным цветом;

    Не включать соответствующий пиксель в суммирование, равномерно распределив его вес среди других пикселей окрестности;

    Дополнить (достроить) исходное изображение, добавив необходимое количество пикселей по границе. Количество достраиваемых строки столбцов, как правило, зависит от размера ядра. Здесь возможны два варианта:

    • Доопределить значения пикселей за границами изображения при помощи экстраполяции. Например, считать постоянным значение интенсивности вблизи границы или считать постоянным градиент интенсивности вблизи границы;

      Доопределить значения пикселей за границами изображения при помощи зеркального отражения.

Для решения проблем, связанных с выходом значения за пределы , возможны следующие действия:

    Масштабировать полученные значения при положительных откликах фильтра;

    При отрицательном отклике фильтра брать либо абсолютное значение (по модулю), либо приводить к нулю.

Также в данном разделе стоит привести возможную «классификацию» шума на изображении:

    Шум «соль и перец» – случайные белые и черные пиксели;

    Импульсный шум – случайные белые пиксели;

    Гауссов шум – колебания интенсивности, распределенные по нормальному закону.

ФИЛЬТРОВАНИЕ (от греч. phil"tron- любовный напиток; таковым считалось особо проз- б. м. э. т. хххш. рачное вино), один из способов отделения жидкой фазы от твердой (осадков, мути) путем пропускания системы через пористые материалы, задерживающие плотные частицы. От процеживания Ф. отличается применением более плотных пористых материалов: в профильтро-

Рисунок 1. Воронка с углом в 60° и складывание бумаги для фильтра Берцепиуса.

Ванной жидкости (фильтрате) не должно "обнаруживаться невооруженным глазом видимых частиц. В лабораторной и аптечной практике фильтруют обычно через фильтровальную бумагу при помощи стеклянных или фарфоровых воронок. Применяя воронки с углом в 60°, го-

Ряс. 2.Рисунок 3.

Рисунок 2. Воронка со стеклянными палочками для ускорения фильтрования. Рисунок 3. Нуча: а-к васосу; б-для спуска фильтрата. товят для них фильтры Берцелиуса (рис. 1), особенно удобные в тех случаях, когда желательно собрать осадок. Для ускорения Ф. применяют граненые воронки (см. Воронка, рис. 8) или вставляют между стенками воронки и фильтром стеклянные палочки (рис. 2). На во-

Рисунок 4.

Рисунок 5. Рисунок 4. Дырчатые фарфоровые воронки. Рисунок 5. Плоенный (складчатый) фильтр Гей- Люссака. ронках Бюхнера (см. Воронка, рис. 3) и иучах (рис. 3), действующих при разрежении воздуха в приемнике, применяют плоские фильтры в виде кружочков соответствующей величины. Для ускорения Ф. в тех случаях, когда не требуется сохранения осадка, применяются воронки других форм (см. Воронка, рис. 1,2) и дырчатые воронки (рис. 4); для всех этих воронок готовят складчатые или плоенные фильтры Гей-Люссака, складывая для них бумагу веерообразно (рис. 5). Воронки с фильтрами должны применяться в штативах, во избежание переливания жидкости (рисунок 6); при Ф. непосредственно в склянку следует между горлышком склянки и воронкой закладывать нитку, бумажную полоску или стеклянную палочку, создавая таким образом щель для выхода воздуха. За последнее время у нас вырабатываются стеклянные фильтры с пористым стеклянным дном, через к-рые фильтруют без бумаги (рис. 7). Первой выпустила такие филыгры фабрика Шотта"в,Иене. Величина пор этих фильтров обозначается номерами: N° 1 пропускает еще частицы диаметром около 100 ц № 2-50 (I, К» 3-20 и № 4-5 ц. Чаще все." го применяющиеся формы этих стеклянных фильтров (Гослаборреактивсбыт) представлены на рис. 7; формы «д» и «е» служат для отсасывания жидкости от легко взмучиваемых осадков. Для облегчения фильтрования пользуются методами укрупнения осадков (напр. предварительным центрифугированием), понижения вязкости" жидкой фазы (фильтрование при нагреве,см. Воронка, рис. 10 и 11) или предварительно жидкость осветляют, вызывая в ней образование крупнозернистых осадков, увлекающих (адсорбирующих) мелкую муть. Для этой цели добавляют в осветляемую жидкость напр. взбитый в пену яичный белок, желатину, сыворотку (при наличии дубильных веществ),

Рисунок 6. Установки для фильтрования.

/

f=™*3j

Рисунок 7. Стеклянные пористые фильтры. молоко (к кислым жидкостям, напр. ягодным сокам) или же вскипяченные с водой обрывки фильтровальной бумаги, осветляющие глины (флоридин, гумбрин) и т. п.; иногда добавляют белки и затем свертывают их кипячением. Ф. через пористые свечи(Беркефельд, Шамберлан и др.)-см. Беркефелъ- gj* da свеча, Фильтры ^ в лаб. практике. - В производственном масштабе применяют методы Ф., допускающие большую производительность; гл. образом пользуются фильтрпрессами - аппаратами, изобретенными инж. Нидге-Рисунок 8. Детали фильтрпрес- момв 1828 г. (рис. 8). са и схема его действия: А- Для лабораторных жидкость; .Б-промой; В- /■ птттрчньгх ч пябот cv-ш.1Дкость; С-фильтрат. ^аптечных; pauoi оу ществуют малые фильтрпрессы. Большей производительностью обладают фильтры непрерывного действия, барабанные, дисковые и плоскостные (планфиль-тры). О фильтровании газов-см. Противогазы. - В капельном анализе (качественном микроанализе по Фейглю и Тананаеву) под Ф. подразумевают прохождение жидкости по ка-пилярам фильтровальной бумаги; «фильтратом» в этом смысле считается пятно жидкости на нек-ром расстоянии от капли, нанесенной на Какую-либо ТОЧКУ бумаги. И. Обергард*

Фильтрация с использованием функции imfilter

Фильтрация изображений, в том числе корреляция и конволюция, могут быть реализованы с помощью функции imfilter. Рассмотрим пример фильтрации изображения скользящей апертурой с размерами 5×5 и одинаковыми весовыми составляющими. Такой фильтр называется усредняющим фильтром.

I = imread("coins.png"); h = ones(5,5) / 25 h = 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 I2 = imfilter(I,h); imshow(I); % Исходное изображение figure, imshow(I2); % Изображение после фильтрации

Типы данных

Типы данных в функции imfilter устанавливаются также, как и при использовании других похожих арифметических функций. Результирующее изображение будет представлено в том же формате данных, что и исходное изображение. Функция imfilter вычисляет значения каждого результирующего пикселя в формате удвоенной точности, проводя арифметические операции с плавающей запятой. Если результирующие значения превышают диапазон, который определен для данного типа данных, то функция imfilter может обрезать их до нужного диапазона. Это зависит от формата представления данных. Если данные представлены в формате integer, тогда функция imfilter округляет дробную часть.

Таким образом, при использовании функции imfilter необходимо учитывать формат представления данных изображения. Рассмотрим пример, где в результате применения функции imfilter получены отрицательные значения. Исходные данные были представлены в формате double.

A = magic(5) A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 h = [-1 0 1] h = -1 0 1 imfilter(A,h) ans = 24 -16 -16 14 -8 5 -16 9 9 -14 6 9 14 9 -20 12 9 9 -16 -21 18 14 -16 -16 -2

Отметим, что результат представлен также и отрицательными значениями. Если матрицу A представить не в формате double, а в формате uint8, то получим такой результат:

A = uint8(magic(5)); imfilter(A,h) ans = 24 0 0 14 0 5 0 9 9 0 6 9 14 9 0 12 9 9 0 0 18 14 0 0 0

После того, как исходные данные были представлены в формате uint8, то результирующие данные также представляются в формате uint8, а отрицательные значения будут обрезаны до 0. Таким образом, исходные данные перед применением функции imfilter можно преобразовать и в другие форматы, например, signed integer, single или double.

Опции корреляции и свертки

Функция imfilter может выполнять фильтрацию с использованием корреляции или свертки. По умолчанию используется корреляция, поскольку функции формирования фильтров формируют корреляционные ядра.

Однако, если необходимо выполнить фильтрацию с использованием свертки, нужно указать опцию "conv" в качестве необязательного аргумента в функции imfilter. Рассмотрим пример.

A = magic(5); h = [-1 0 1] imfilter(A,h) % фильтрация с использованием корреляции ans = 24 -16 -16 14 -8 5 -16 9 9 -14 6 9 14 9 -20 12 9 9 -16 -21 18 14 -16 -16 -2 imfilter(A,h,"conv") % фильтрация с использованием свертки ans = -24 16 16 -14 8 -5 16 -9 -9 14 -6 -9 -14 -9 20 -12 -9 -9 16 21 -18 -14 16 16 2

Опция дополнения края изображения

При вычислении результирующих пикселей на краю изображения часть маски фильтра выйдет за границы изображения так, как продемонстрировано на изображении.


Выход значений маски фильтра за границу изображения

Обычно, при выходе маски фильтра за границу изображения, функция imfilter заполняет недостающие ячейки нулевыми значениями. Пример такого заполнения показан на рисунке внизу.


Заполнение недостающих пикселей нулевыми значениями

Если отфильтровать изображение, заполняя недостающие пиксели нулями, то на результирующем изображении на границе изображения появится темная линия. Это показано на рисунке.

I = imread("eight.tif"); h = ones(5,5) / 25; I2 = imfilter(I,h); imshow(I), title("Исходное изображение"); figure, imshow(I2), title("Изображение после фильтрации");

Для устранения артефактов, которые обусловлены тем, что недостающие элементы были заполнены нулями, imfilter применяет альтернативные методы заполнения недостающих элементов. Один из этих методов состоит в том, что недостающие пиксели заполняются значениями крайних пикселей изображения. Этот метод продемонстрирован на изображении внизу.


Заполнение маски крайними пикселями изображения

При реализации фильтрации с использованием заполнения недостающих элементов крайними элементами изображения, необходимо дополнительно в функции imfilter указывать опцию "replicate".

I3 = imfilter(I,h,"replicate"); figure, imshow(I3);

Функция imfilter поддерживает также другие способы заполнения недостающих пикселей при обработке крайних элементов изображения. Для этого есть такие опции как "circular" и "symmetric". Для более детальной информации см. описание функции imfilter.

Многомерная фильтрация

Функция imfilter может обрабатывать также многомерные изображения. Различия между фильтрацией двумерных и трехмерных изображений состоят в том, что при обработке трехмерных изображений фильтрации подлежит отдельно каждый цветовой слой, который представляет собой двумерное изображение и может обрабатываться двумерным фильтром.

Рассмотрим пример обработки цветного изображения, где реализована фильтрация каждого цветового слоя:


Система MATLAB располагает несколькими двумерными и многомерными функциями фильтрации. Функция filter2 выполняет двумерную линейную фильтрацию, conv2 выполняет свертку двумерных сигналов, а convn – свертку многомерных сигналов. При работе с каждой из этих функций необходимо, чтобы исходные данные были представлены в формате double. Результат также будет представлен в формате double. Эти функции всегда используют заполнение нулями недостающих пикселей при работе на краю изображения и не поддерживают других способов заполнения.

В отличии от названных функций, imfilter не требует преобразования исходных данных в формат double. Также функция imfilter располагает несколькими вариантами заполнения недостающих элементов на краю изображения.

Использование предопределенных типов фильтров

Функция fspecial обладает возможностью формирования нескольких видов предопределенных фильтров, что отражается на форме маски. После создания фильтра с помощью функции fspecial его можно применить для обработки данных изображения с помощью функции imfilter. Рассмотрим пример реализации фильтра типа нечеткого маскирования для обработки полноцветного изображения. Метод нечеткого маскирования эффективно применяется для усиления границ и повышения детализации изображений.

I = imread("moon.tif"); h = fspecial("unsharp") h = -0.1667 -0.6667 -0.1667 -0.6667 4.3333 -0.6667 -0.1667 -0.6667 -0.1667 I2 = imfilter(I,h); imshow(I), title("Исходное изображение ") figure, imshow(I2), title("Обработанное изображение")

Частотные методы преобразований

Частотные методы преобразований используют как одномерные, так и двумерные фильтры с конечной импульсной характеристикой. Эти методы используют матрицу преобразований, элементы которой определяют частотные преобразования.

Функция приложения ftrans2 предназначена для реализации частотных методов обработки изображений. Эта функция формирует маску линейного двумерного фильтра, используя метод преобразования частот для трансформации одномерного фильтра с конечной импульсной характеристикой. (Для более детальной информации см. Jae S. Lim, Two-Dimensional Signal and Image Processing, 1990.

Отметим, что частотные методы преобразований обеспечивают очень хорошие результаты обработки. Рассмотрим пример.

B = remez(10,,); h = ftrans2(b); = freqz(b,1,64,"whole"); colormap(jet(64)) plot(w/pi-1,fftshift(abs(H))) figure, freqz2(h,)


Одномерный частотный отклик (слева) и соответствующий ему двумерный частотный отклик (справа)

Пример частотного метода

В частотных методах маска линейного фильтра формируется на основе желаемой амплитудно-частотной характеристики.

В приложении функция fsamp2 формирует маску линейного двумерного фильтра на основе желаемой амплитудно-частотной характеристики двумерного фильтра. Сформированная маска предназначена для передачи в соответствующие функции (например, filter2 или conv2), которые выполняют двумерную линейную фильтрацию. Рассмотрим сказанное выше на конкретном примере.

Hd = zeros(11,11); Hd(4:8,4:8) = 1; = freqspace(11,"meshgrid"); mesh(f1,f2,Hd), axis([-1 1 -1 1 0 1.2]), colormap(jet(64)) h = fsamp2(Hd); figure, freqz2(h,), axis([-1 1 -1 1 0 1.2])


Локальные (оконные) методы

В приложении Image Processing Toolbox существуют функции, которые формируют маски линейного фильтра по желаемой амплитудно-частотной характеристике с использованием одномерного или двумерного окна. При формировании матрицы желаемой амплитудно-частотной характеристики для получения более точного результата рекомендуется использовать отсчеты частоты, которые возвращаются функцией freqspace.

Рассмотрим это на примере.

Hd = zeros(11,11); Hd(4:8,4:8) = 1; = freqspace(11,"meshgrid"); mesh(f1,f2,Hd), axis([-1 1 -1 1 0 1.2]), colormap(jet(64)) h = fwind1(Hd,hamming(11)); figure, freqz2(h,), axis([-1 1 -1 1 0 1.2])


Желательный двумерный частотный отклик (слева) и реальный двумерный частотный отклик (справа)

Создание желательной амплитудно-частотной характеристики

Функции проектирования фильтров fsamp2, fwind2 и fwind2 создают фильтры на основе матрицы значений желаемой амплитудно-частотной характеристики. Соответствующую желаемую амплитудно-частотную характеристику можно создавать с помощью функции freqspace.

Рассмотрим пример создания кругообразного низкочастотного фильтра со срезом в 0.5. Для этого используют следующий код:

Freqspace(25,"meshgrid"); Hd = zeros(25,25); d = sqrt(f1.^2 + f2.^2)


Идеальный кругообразный низкочастотный отклик

Вычисление частотного отклика фильтра

Функция freqz2 вычисляет частотный отклик двумерного фильтра. Если для фильтра с конечной импульсной характеристикой принять, что

H =;

то рассмотрим вычисление и визуализацию 64×64 точек частотного отклика h.

Freqz2(h)


Частотный отклик двумерного фильтра

Для получения частотного отклика H и вектора частот f1 и f2, используем следующий код

Freqz2(h);

Пример.

Рассмотрим пример размытия изображения. Реализуем эту процедуру с помощью двумерного фильтра низких частот (ФНЧ) с конечной импульсной характеристикой (КИХ), который сформирован из одномерного ФНЧ методом преобразования частот.

Некоторые виды преобразований в обработке изображений

В большинстве случаев, математически изображение представляют в виде функции от двух пространственных переменных ƒ(x,y) . Значение функции в точке (x,y) эквивалентно уровню интенсивности в этой точке.

  1. Преобразование Фурье;
  2. Дискретные косинусные преобразования
  3. Преобразования Радона
  4. Проекционные преобразования

Также рассмотрим некоторые термины, которые будут применятся при различного рода преобразованиях.

Термин

Определение

Дискретные преобразования

Это вид преобразований, при которых исходные и результирующие данные представляются в виде дискретных значений. Дискретные преобразования, которые реализованы в MATLAB и, в частности в Image Processing Toolbox, включают дискретное преобразование Фурье и дискретные косинусные преобразования.

Частотная область Область, в которой изображение представлено в виде суммы периодических сигналов с разными частотами.
Пространственная область Область, в которой изображение представлено в виде точек в пространстве, каждой из которых соответствует некоторое значение интенсивности.
Преобразование

Альтернативное математическое представление изображений. Например, при преобразованиях Фурье изображение представляется в виде суммы комплексных экспоненциальных переменных амплитуды, частоты и фазы. Этот тип преобразований наиболее часто используется при анализе, улучшении и сжатии изображений.

Множество подходов к улучшению изображений распадается на две категории: методы обработки в пространственной области (пространственные методы) и методы обработки в частотной области (частотные методы). К пространственной области относится совокупность пикселей, составляющих изображение. Функция предварительной обработки в пространственной области записывается в виде

где f (x , y ) – входное изображение,

g (x , y ) – выходное (обработанное) изображение,

h – оператор функции f , определенный в некоторой области (x , y ).

Операции такого вида относятся к общему классу операций над соседними элементами . Эти операции являются основным инструментарием принизкоуровневой обработке изображений илиобработке изображений в пространственной области .

Основным подходом при определении окрестности точки (x , y ) является использование квадратной или прямоугольной области части изображения с центром в точке (x , y ). Центр этой части изображения перемещается от пикселя к пикселю начиная, например, с левого верхнего угла. При этом для получения g (x , y ) оператор применяется для каждого положения (x , y ). Хотя используются иногда и другие формы окрестности (например, круг), квадратные формы более предпочтительны из-за простоты их реализации.

Один из наиболее применяемых методов пространственной области основан на использовании фильтров (масок свертки, шаблонов, окон). Обычно маска фильтра представляет собой небольшую (например, размерность 3*3) двумерную систему, коэффициенты которой выбираются таким образом, чтобы обнаружить заданное свойство изображения (рис. 1.5, а).

Рис. 1.5: а – маска фильтра; б – коэффициенты маски фильтра

Если величины w 1 ,w 2 ,…,w 9 представляют собой коэффициенты, маски пикселя (x , y ) и его восьми соседей (рис.1.5, б), то алгоритм можно представить как выполнение следующей операции на окрестности 3*3 точки (x , y ) :

Под задачей фильтрации изображений в широком смысле понимают любые процедуры обработки изображений, при которых на вход процедуры подается растровое изображение и на выходе формируется растровое изображение. Однако чаще под «фильтрацией» понимают так называемую помеховую фильтрацию . Главная цель помеховой фильтрации заключается в такой обработке изображений, при которой результат оказывается более подходящим с точки зрения конкретного применения. В общем случае можно выделить линейные фильтры (сглаживающие фильтры, контрастоповышающие фильтры, разностные фильтры) и нелинейные фильтры (медианный фильтр).

Приведем краткое описание наиболее распространенных методов фильтрации.

Низкочастотный фильтр – ослабляет высокочастотные компоненты и усиливает роль низкочастотных. Частота в применении к изображениям отражает количество имеющихся в изображении деталей. Резкие перепады яркости, помехи и шумы являются примером высокочастотных элементов в изображении. Сглаживание изображения реализуется с помощью следующих ядер:

,

,

.

Высокочастотный фильтр – ослабляет низкочастотные компоненты в изображении и усиливает роль высокочастотных. Фильтры высокой частоты применяются для выделения таких деталей, как контуры, границы или для повышения резкости изображения. Каждый скачок яркости и каждый контур представляют собой интенсивные детали, связанные с повышенными частотами. Выделение высокочастотных компонент осуществляется с помощью следующих ядер:

,

,

.

Оператор Робертса. Оператор Робертса является примером нелинейного фильтра. Преобразование каждого пикселя перекрёстным оператором Робертса может показать производную изображения вдоль ненулевой диагонали, и комбинация этих преобразованных изображений может также рассматриваться как градиент от двух верхних пикселов к двум нижним. Оператор Робертса используется ради быстроты вычислений, но проигрывает в сравнении с альтернативами из-за значительной проблемы чувствительности к шуму. Он даёт линии тоньше, чем другие методы выделения границ.

В обработке участвуют четыре пикселя, расположенные следующим образом (рис. 1.6).

Рис. 1.6. Пиксели, участвующие в обработке оператором Робертса

Отклик оператора Робертса:

Ядра свертки в данном случае будут выглядеть таким образом:

,

.

Свертка для каждого ядра вычисляется отдельно. В качестве отклика данного фильтра выступает величина

, (1.17)

где P и Q – отклик ядер H 1 и H 2 .

Иногда в качестве оператора Робертса берется величина
.

Оператор Собеля. Оператор Собеля применяют в алгоритмах выделения границ. Это дискретный дифференциальный оператор, вычисляющий приближенное значение градиента яркости изображения. Результатом применения оператора Собеля в каждой точке изображения является либо вектор градиента яркости в этой точке, либо его норма. Метод усиления края с помощью оператора Собеля рассматривает два различных ядра свертки:

Исходя из этих сверток вычисляется величина и направление краев. Свертка для каждого ядра вычисляется отдельно. В качестве отклика данного фильтра выступает величина

, (1.19)

где P и Q – отклик ядер H 1 и H 2 .

Иногда в качестве оператора Собеля берется величина
.

Оператор Превитта. Аналогично оператору Собеля действует оператор Превитта. Детектор границ Превитта является подходящим способом для оценки величины и ориентации границы. В то время как детектор с дифференциальным градиентом нуждается в трудоёмком вычислении оценки ориентации по величинам в вертикальном и горизонтальном направлениях, детектор границ Превитта даёт направление прямо из ядра с максимальным результатом. Метод усиления края с помощью оператора Превитта рассматривает два различных ядра свертки:

Результат работы оператора Превитта есть

, (1.21)

где P и Q – отклик ядер H 1 и H 2 .

Оператор Лапласа. Дискретный оператор Лапласа часто используется в обработке изображений, например в задаче выделения границ или в приложениях оценки движения. Дискретный лапласиан определяется как сумма вторых производных и вычисляется как сумма перепадов на соседях центрального пикселя. Метод усиления края по Лапласу рассматривает целый ряд различных ядер свертки. Приведем некоторые их них:

Как видно, сумма элементов матриц равна нулю, поэтому отклик фильтра может быть отрицательным. В этом случае значение отклика берется по модулю. В результате обработки области с постоянной или линейно возрастающей интенсивностью становятся черными, а области быстро изменяющихся значений интенсивности ярко высвечиваются.

Ниже приведем некоторые пространственные процессы, которые не подпадают под категорию свертки и могут применяться для устранения различного вида шума.

Фильтр «гармоническое среднее» . Гармоническое среднее ряда
вычисляется по формуле

. (1.23)

В процессе фильтрации значение текущего пикселя изображения заменяется на
множества значений девяти пикселей, включая текущий и соседние.

Min – фильтр. В процессе фильтрации значение текущего пикселя заменяется на минимальное значение соседних пикселей. Так, например, для ядра размерности 3 будем иметь:

Max – фильтр. В процессе фильтрации значение текущего пикселя заменяется на максимальное значение соседних пикселей (по аналогии с предыдущим фильтром).

Min - Max –фильтр. В процессе фильтрации значение текущего пикселя изображения сначала заменяется на минимальное значение соседних пикселей, а при повторном проходе на максимальное.

Медианный фильтр. Усредненное фильтрование использует значения элементов, содержащихся в области примыкания, для определения нового значения. Фильтр располагает элементы области примыкания в отсортированном порядке и отбирает среднее значение. Так, например, для ядра размерности 3 медианное значение будет пятым:

С помощью методов пространственной обработки изображений можно получить ряд интересных эффектов. Приведем некоторые из них.

Эффект тиснения. С помощью операции свертки можно реализовать преобразование, дающее эффект тиснения на изображении.

(1.24)

Бинарное «псевдополутоновое» изображение. Исходное изображение обрабатывается при помощи маски D2 или D4: если значение пикселя меньше пропорционального значения соответствующего ему элемента маски, то он обнуляется, иначе ему присваивается 255. Маска накладывается на изображение без перекрытия. Маски D2 и D4:

,

.

При использовании пространственных процессов могут возникнуть следующие вопросы, связанные с особенностями обработки пикселей:

    Устранение краевых эффектов;

    Значение отклика выходит за пределы .

Для первого вопроса возможны следующие пути решения:

    Исключить из преобразования граничные пиксели изображения

в этом случае выходное изображение будет иметь меньшие размеры, либо закрасить граничные пиксели, например черным цветом;

    Не включать соответствующий пиксель в суммирование, равномерно распределив его вес среди других пикселей окрестности;

    Дополнить (достроить) исходное изображение, добавив необходимое количество пикселей по границе. Количество достраиваемых строки столбцов, как правило, зависит от размера ядра. Здесь возможны два варианта:

    • Доопределить значения пикселей за границами изображения при помощи экстраполяции. Например, считать постоянным значение интенсивности вблизи границы или считать постоянным градиент интенсивности вблизи границы;

      Доопределить значения пикселей за границами изображения при помощи зеркального отражения.

Для решения проблем, связанных с выходом значения за пределы , возможны следующие действия:

    Масштабировать полученные значения при положительных откликах фильтра;

    При отрицательном отклике фильтра брать либо абсолютное значение (по модулю), либо приводить к нулю.

Также в данном разделе стоит привести возможную «классификацию» шума на изображении:

    Шум «соль и перец» – случайные белые и черные пиксели;

    Импульсный шум – случайные белые пиксели;

    Гауссов шум – колебания интенсивности, распределенные по нормальному закону.

Под фильтрацией изображений понимают операцию, имеющую своим результатом изображение того же размера, полученное из исходного по некоторым правилам. Обычно интенсивность (цвет) каждого пикселя результирующего изображения обусловлен интенсивностями (цветами) пикселей, расположенных в некоторой его окрестности в исходном изображении.

Правила фильтрации могут быть самыми разнообразными. Фильтрация изображений является одной из самых фундаментальных операций компьютерного зрения, распознавания образов и обработки изображений. С той или иной фильтрации исходных изображений начинается работа подавляющего большинства методов обработки изображений.

Линейные фильтры имеют очень простое математическое описание. Будем считать, что задано исходное полутоновое изображение A, и обозначим интенсивности его пикселей A(x, y). Линейный фильтр определяется вещественнозначной функцией h (ядром фильтра), заданной на растре. Сама фильтрация производится при помощи операции дискретной свертки (взвешенного суммирования):

B(x, y) = h(i, j) ③③A(x, y) = h(i, j) A(x-i, y-j). (17.3.1)

Результатом служит изображение B. Обычно ядро фильтра отлично от нуля только в некоторой окрестности N точки (0, 0). За пределами этой окрестности h(i, j) равно нулю, или очень близко к нему и им можно пренебречь. Суммирование производится по (i, j)  N, и значение каждого пикселя B(x, y) определяется пикселями изображения A, которые лежат в окне N, центрированном в точке (x, y) (обозначение - множество N(x, y)). Ядро фильтра, заданное на прямоугольной окрестности N, может рассматриваться как матрица m на n, где длины сторон являются нечетными числами. При задании ядра матрицей ее следует центрировать. Если пиксель (x, y) находится в окрестности краев изображения, то координаты A(x-i, y-j) для определенных (i, j) могут соответствовать несуществующим пикселям A за пределами изображения. Данную проблему можно разрешить несколькими способами.

Не проводить фильтрацию для таких пикселей, обрезав изображение B по краям, или применив для их значений исходные значения изображения А.

Не включать отсутствующий пиксель в суммирование, распределив его вес h(i, j) равномерно среди других пикселей окрестности N(x, y).

Доопределить значения пикселей за границами изображения при помощи экстраполяции.

Доопределить значения пикселей за границами изображения, при помощи зеркального продолжения изображения.

Выбор способа производится с учетом конкретного фильтра и особенностей изображения.

Сглаживающие фильтры. Простейший прямоугольный сглаживающий фильтр радиуса r задается при помощи матрицы размера (2r+1) × (2r+1), все значения которой равны 1/(2r+1) 2 , а сумма значений равна единице. Это двумерный аналог низкочастотного одномерного П-образного фильтра скользящего среднего. При фильтрации с таким ядром значение пикселя заменяется усредненным значением пикселей в квадрате со стороной 2r+1 вокруг него. Пример маски фильтра 3× 3:

.

Одним из применений фильтров является шумоподавление. Шум меняется независимо от пикселя к пикселю и, при условии, что математическое ожидание значения шума равно нулю, шумы соседних пикселей при суммировании будут компенсировать друг друга. Чем больше окно фильтрации, тем меньше будет усредненная интенсивность шума, однако при этом будет происходить и соответствующее размытие значащих деталей изображения. Образом белой точки на черном фоне при фильтрации (реакция на единичный импульс) будет равномерно серый квадрат.

Шумоподавление при помощи прямоугольного фильтра имеет существенный недостаток: все пиксели в маске фильтра на любом расстоянии от обрабатываемого оказывают на результат одинаковый эффект. Несколько лучший результат получается при модификации фильтра с увеличением веса центральной точки:

.

Более эффективное шумоподавление можно осуществить, если влияние пикселей на результат будет уменьшаться с увеличением расстояния от обрабатываемого. Этим свойством обладает гауссовский фильтр с ядром: h(i, j) = (1/2 2) exp(-(i 2 +j 2)/2   Гауссовский фильтр имеет ненулевое ядро бесконечного размера. Однако значения ядра фильтра очень быстро убывает к нулю при удалении от точки (0, 0), и потому на практике можно ограничиться сверткой с окном небольшого размера вокруг (0, 0), например, взяв радиус окна равным 3σ.

Гауссовская фильтрация также является сглаживающей. Однако, в отличие от прямоугольного фильтра, образом точки при гауссовой фильтрации будет симметричное размытое пятно, с убыванием яркости от середины к краям. Степень размытия изображений определяются параметром σ.

Контрастоповышающие фильтры . Если сглаживающие фильтры снижают локальную контрастность изображения, размывая его, то контрастоповышающие фильтры производят обратный эффект и, по существу, являются фильтрами высоких пространственных частот. Ядро контрастоповышающего фильтра в точке (0, 0) имеет значение, большее 1, при общей сумме значений, равной 1. Например, контрастоповышающими фильтрами являются фильтры с ядром, задаваемым матрицами:

. .

Пример применения фильтра приведен на рис. 17.3.1. Эффект повышения контраста достигается за счет того, что фильтр подчеркивает разницу между интенсивностями соседних пикселей, удаляя эти интенсивности друг от друга. Этот эффект будет тем сильней, чем больше значение центрального члена ядра. Характерным артефактом линейной контрастоповышающей фильтрации являются заметные светлые и менее заметные темные ореолы вокруг границ.

Разностные фильтры – это линейные фильтры, задаваемые дискретными аппроксимациями дифференциальных операторов (по методу конечных разностей). Данные фильтры играют важнейшую роль во многих приложениях, например, для задач поиска границ на изображении.

Простейшим дифференциальным оператором является взятие производной по x-координате d/dx, который определен для непрерывных функций. Распространенными вариантами аналогичных операторов для дискретных изображений являются фильтры Прюита (Prewitt) и Собеля (Sobel):

. .

Фильтры, приближающие оператор производной по y-координате d/dy, получаются путем транспонирования матриц.

Простейший алгоритм вычисления нормы градиента по трем смежным точкам:

G(x, y) =
.

Применяется также упрощенная формула вычислений:

Вычисление нормы градиента по четырем смежным точкам (оператор Робертса):

В алгоритме Собеля используется восемь отсчетов яркости в окрестностях центральной точки:

G(x, y) =
, G(x, y) 
,

Gx x , y = [ A x -1, y -1 +2 A x -1, y + A x -1, y +1 ] - [ A x +1, y -1 +2 A x +1, y + A x +1, y +1 ],

Gy x,y = - .

Наряду с более точным определением нормы градиента алгоритм Собеля позволяет определять и направление вектора градиента в плоскости анализа изображения в видеугла  между вектором градиента и направлением строк матрицы:

(x, y) = argtg(Gy x,y /Gx x,y).

В отличие от сглаживающих и контрастоповышающих фильтров, не меняющих среднюю интенсивность изображения, в результате применения разностных операторов получается, как правило, изображение со средним значением пикселя близким к нулю. Вертикальным перепадам (границам) исходного изображения соответствуют пиксели с большими по модулю значениями на результирующем изображении. Поэтому разностные фильтры называют также фильтрами выделения границы объектов.

Аналогично вышеприведенным фильтрам, по методу конечных разностей можно составить фильтры для других дифференциальных операторов. В частности, важный для многих приложений дифференциальный оператор Лапласа (лапласиан) = 𝝏 2 /𝝏x 2 + 𝝏 2 /𝝏y 2 можно приблизить для дискретных изображений фильтром с матрицей (один из вариантов):

.

Как видно на рис. 17.3.2, в результате применения дискретного лапласиана большие по модулю значения соответствуют как вертикальным, так и горизонтальным перепадам яркости. Фильтр является, таким образом, фильтром, находящим границы любой ориентации. Нахождение границ на изображении может производиться путем применения этого фильтра и взятия всех пикселей, модуль значения которых превосходит некоторый порог.

Однако такой алгоритм имеет существенные недостатки. Главный из них - неопределенность в выборе величины порога. Для разных частей изображения приемлемый результат обычно получается при существенно разных пороговых значениях. Кроме того, разностные фильтры очень чувствительны к шумам изображения.

Двумерная циклическая свертка. Как и для одномерных сигналов, двумерная свертка может выполняться в области пространственных частот с использованием алгоритмов быстрого преобразования Фурье и перемножением двумерных спектров изображения и ядра фильтра. Она также является циклической, и выполняется обычно в скользящем варианте. С учетом цикличности, для вычисления постоянного шаблона спектра ядра размеры маски фильтра ядра удваиваются по осям и дополняются нулями, и эти же размеры маски используются для выделения скользящего по изображению окна, в пределах которого и выполняется БПФ. Реализация КИХ фильтра с помощью БПФ особенно эффективна, если фильтр имеет большую опорную область.

Нелинейные фильтры . В цифровой обработке изображений широко применяются нелинейные алгоритмы на основе ранговой статистики для восстановления изображений, поврежденных различными моделями шумов. Они позволяют избежать дополнительного искажения изображения при удалении шума, а также значительно улучшить результаты работы фильтров на изображениях с высокой степенью зашумленности.

Введем понятие M-окрестности элемента изображения A(x, y), который является для этой окрестности центральным. В простейшем случае M-окрестность содержит N-пикселей – точки, попадающие в маску фильтра, включая (или не включая) центральный. Значения этих N-элементов можно расположит в вариационном ряду V(r), ранжированном по возрастанию (или убыванию), и вычислить определенные моменты этого ряда, например, среднее значение яркости m N и дисперсии d N . Вычисление выходного значения фильтра, которым заменяется центральный отсчет, выполняется по формуле:

B(x, y) = А(x, y) + (1-)m N . (17.3.2)

Значение коэффициента  связывается определенной зависимостью со статистикой отсчетов в окне фильтра, например:

d N /(d N + k d S), (17.3.3)

где d S – дисперсия шумов по изображению в целом или по S-окрестности при S > M и MS, k - константа доверия дисперсии S-окрестностей. Как следует из этой формулы, при k=1 и d N  d S имеет место   0.5, а значение B(x, y) = (А(x, y) + m N)/2, т.е. складываются в равной степени от значений центрального отсчета и среднего значения пикселей его M-окрестности. При увеличении значений d N происходит увеличение вклада в результат значения центрального отсчета, при уменьшении – значения m N . Весомость вклада средних значений по M-окрестности можно изменять значением коэффициента k.

Выбор статистической функции и характер зависимости от нее коэффициента  может быть достаточно многообразным (например, по дисперсиям разностей отсчетов в М-окрестности с центральным отсчетом), и зависит как от размеров апертуры фильтра, так и от характера изображений и шумов. По существу, значение коэффициента  должно задавать степень поврежденности центрального отсчета и, соответственно, функцию заимствования для его исправления отсчетов из М-окрестности.

Наиболее простыми и распространенными типами нелинейных фильтров для обработки изображений являются пороговые и медианные фильтры.

Пороговая фильтрация задается, например, следующим образом:

B(x, y) =

Величина p является порогом фильтрации. Если величина центральной точки фильтра превышает среднее значение отсчетов m N в ее М-окрестности на величину порога, то она заменяется средним значением. Значение порога может быть как константой, так и функционально зависимым от величины центральной точки.

Медианная фильтрация определяется следующим образом:

B(x, y) = med {M(x, y)},

т.е. результат фильтрации есть медианное значение пикселей окрестности, форма которой определяется маской фильтра. Медианная фильтрация способна эффективно удалять из изображения помехи, независимо воздействующие на отдельные пиксели. Например, такими помехами являются "битые" пиксели при цифровой съемке, "снеговой" шум, когда часть пикселей заменяется на пиксели с максимальной интенсивностью, и т.п. Преимущество медианной фильтрации заключается в том, что "горячий" пиксель на темном фоне будет заменен темным, а не "размазан" по окрестности.

Медианная фильтрация обладает выраженной избирательностью по отношению к элементам массива, представляющим собой немонотонную составляющую последовательности чисел в пределах апертуры фильтра. В то же время монотонную составляющую последовательности медианный фильтр оставляет без изменений. Благодаря этой особенности, медианные фильтры при оптимально выбранной апертуре сохраняют без искажений резкие границы объектов, подавляя некоррелированные или слабо коррелированные помехи и малоразмерные детали.

Фильтры экстремумов определяются по правилам:

B min (x, y) = min {M(x, y)},

B max (x, y) = max {M(x, y)},

т.е. результат фильтрации есть минимальное и максимальное значения пикселей в маске фильтра. Применяются такие фильтры, как правило, для бинарных изображений.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то