exponenta event banner

Адаптация слепой деконволюции для различных искажений изображения

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

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

  • Уменьшить влияние шума на восстановление

  • Учетная запись для неравномерного качества изображения (например, неправильные пикселы)

  • Обрабатывать шум считывания камеры

Дополнительные сведения об этих адаптациях см. в разделе Адаптация деконволюции Люси-Ричардсона для различных искажений изображения. deconvblind функция также поддерживает ограничения PSF, которые можно предоставить с помощью пользовательской функции.

Размытие изображений с помощью слепой деконволюции

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

Чтение изображения в рабочую область и его отображение.

I = imread('cameraman.tif');
figure
imshow(I)
title('Original Image')

Figure contains an axes. The axes with title Original Image contains an object of type image.

Создайте функцию разброса точек (PSF). PSF описывает степень, в которой оптическая система размывает (распространяет) точку света.

PSF = fspecial('motion',13,45);
figure
imshow(PSF,[],'InitialMagnification','fit')
title('Original PSF')

Figure contains an axes. The axes with title Original PSF contains an object of type image.

Создайте в изображении смоделированное размытие с помощью PSF и отобразите размытое изображение.

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

Figure contains an axes. The axes with title Blurred Image contains an object of type image.

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

В этой первоначальной реставрации, deconvblind был способен в значительной степени удалить размытие изображения. Однако следует отметить, что вызывной сигнал вокруг областей контраста резкой интенсивности в восстановленном изображении. (В примере устранен вызывной сигнал, связанный с краями, с помощью параметра «circular» с imfilter при создании моделируемого размытого изображения.) Для достижения более удовлетворительного результата повторно запустите операцию, экспериментируя с PSF различных размеров. Восстановленный PSF, возвращаемый каждой деконволюцией, также может дать ценные подсказки при оптимальном размере PSF.

INITPSF = ones(size(PSF));
[J P] = deconvblind(Blurred,INITPSF,30);
figure
imshow(J)
title('Restored Image')

Figure contains an axes. The axes with title Restored Image contains an object of type image.

figure
imshow(P,[],'InitialMagnification','fit')
title('Restored PSF')

Figure contains an axes. The axes with title Restored PSF contains an object of type image.

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

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

WEIGHT = edge(I,'sobel',.28);
se1 = strel('disk',1);
se2 = strel('line',13,45);
WEIGHT = ~imdilate(WEIGHT,[se1 se2]);
WEIGHT = padarray(WEIGHT(2:end-1,2:end-1),[1 1]);
figure
imshow(WEIGHT)
title('Weight Array')

Figure contains an axes. The axes with title Weight Array contains an object of type image.

Уточните предположение на PSF. Реконструированный PSF, возвращенный первым пасом при деконволюции, P , показывает четкую линейность. Для этого второго прохода в примере используется новый PSF, который является тем же самым, что и возвращенный PSF, но с пикселями малой амплитуды, установленными в 0.

P1 = P;
P1(find(P1 < 0.01))= 0;

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

[J2 P2] = deconvblind(Blurred,P1,50,[],double(WEIGHT));
figure, imshow(J2)
title('Newly Deblurred Image');

Figure contains an axes. The axes with title Newly Deblurred Image contains an object of type image.

figure, imshow(P2,[],'InitialMagnification','fit')
title('Newly Reconstructed PSF')

Figure contains an axes. The axes with title Newly Reconstructed PSF contains an object of type image.

Уточнение результата

deconvblind по умолчанию выполняет несколько итераций процесса удаления размытия. Можно остановить обработку после определенного количества итераций, чтобы проверить результат, а затем перезапустить итерации из точки, где обработка остановлена. Для использования этой функции необходимо передать размытое изображение и PSF в виде массивов ячеек, например: {Blurred} и {INITPSF}.

deconvblind функция возвращает выходной образ и восстановленный PSF в виде массивов ячеек. Массив ячеек выходного изображения содержит следующие четыре элемента:

Элемент

Описание

output{1}

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

output{2}

Изображение, созданное последней итерацией

output{3}

Изображение, созданное следующей за последней итерацией

output{4}

Внутренняя информация, используемая deconvblind знать, где перезапустить процесс

Массив выходных ячеек PSF содержит аналогичные элементы.

См. также

|

Связанные примеры

Подробнее