Реконструкция размытых изображений в MATLAB

Рассмотрим некоторые подходы к решению задачи восстановления изображений с использованием функции протяженности точки. При реализации алгоритмов в среде MATLAB будем использовать соответствующие функции (deblurring functions) пакета Image Processing Toolbox.

Определим некоторые понятия, которыми будем пользоваться в процессе изложения материала.

Деконволюция - процесс, обратный к свертке.

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

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

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

Рассмотрим коротко основы технологии обработки размытых изображений.

Причины размытости изображений.

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

Модель размытых изображений.

Размытые и искаженные изображения приближенно могут быть описаны выражением

Реконструкция размытых изображений в MATLAB - student2.ru ,

где Реконструкция размытых изображений в MATLAB - student2.ru - размытое изображение; Реконструкция размытых изображений в MATLAB - student2.ru - оператор искажения, определяемый функцией протяженности точки. Свертка этой функции с изображением, является причиной искажений; Реконструкция размытых изображений в MATLAB - student2.ru - исходное изображение; Реконструкция размытых изображений в MATLAB - student2.ru - аддитивный шум, который вносится во время захвата изображений и искажает их.

Функция протяженности точки

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

Проиллюстрируем это на примере. Для создания функции протяженности точки используем функцию fspecial, которая будет симулировать искажения, обусловленные движением, зададим также длину размытия (LEN=31), и угол степени размытия (THETA=11). После того, как создана функция протяженности точки, используем, например, функцию imfilter для свертки с исходным изображением I, и создания размытого изображения.

I = imread('peppers.png');
I = I(60+[1:256],222+[1:256],:);
figure; imshow(I); title('Original Image');
LEN = 31;
THETA = 11;
PSF = fspecial('motion',LEN,THETA); % создание функции протяженности точки
Blurred = imfilter(I,PSF,'circular','conv');
figure; imshow(Blurred); title('Blurred Image');

Реконструкция размытых изображений в MATLAB - student2.ru
Исходное изображение Размытое изображение

Использование функций обработки размытых изображений

В пакете Image Processing Toolbox системы MATLAB существует четыре функции обработки размытых изображений:

  1. deconvwnr - выполняет восстановление размытых изображений с использованием винероской фильтрации;
  2. deconvreg - выполняет восстановление размытых изображений с использованием регуляризационных фильтров;
  3. deconvlucy - выполняет восстановление размытых изображений с использованием алгоритма Лаки-Ричардсона (Lucy-Richardson);
  4. deconvblind - выполняет восстановление размытых изображений с использованием алгоритма слепой деконволюции;

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

В основу функции deconvlucy положен алгоритм Лаки-Ричардсона (Lucy-Richardson). Эта функция является итерационной, использует технологию оптимизации и статистику Пуассона. Используя эту функцию, не нужно указывать информацию о аддитивном шуме искаженных изображений.

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

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

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

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

1. Считываем изображение в рабочее пространство MATLAB.

I = imread('peppers.png');
I = I(10+[1:256],222+[1:256],:);
figure;imshow(I);title('Original Image');

Реконструкция размытых изображений в MATLAB - student2.ru

Исходное изображение

2. Создание функции протяженности точки.
LEN = 31;
THETA = 11;
PSF = fspecial('motion',LEN,THETA);

3. Симуляция размытости на изображении.

Blurred = imfilter(I,PSF,'circular','conv');
figure; imshow(Blurred);title('Blurred Image');

Реконструкция размытых изображений в MATLAB - student2.ru

Размытое изображение

4. Восстановление размытого изображения.

wnr1 = deconvwnr(Blurred,PSF);
figure;imshow(wnr1);
title('Restored, True PSF');

Реконструкция размытых изображений в MATLAB - student2.ru

Изображение восстановленное методами винеровской фильтрации

Анализ результатов обработки

Результаты работы функции deconvolution можно использовать для определения оптимальных аргументов при реализации функции deconvwnr. Используя эти аргументы можно определить соотношение шум-сигнал и/или автокорреляционную функцию для усовершенствования результатов восстановления.

Границы изображений: Края и их обнаружение

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

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

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

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

Наши рекомендации