deconvlucy

Изображение Deblur с помощью метода Люси-Ричардсона

Описание

пример

J = deconvlucy(I,psf) восстановления отображают I это было ухудшено сверткой с функцией рассеяния точки (PSF), psf, и возможно аддитивным шумом. Алгоритм основан на максимизации вероятности что получившееся изображение J экземпляр оригинального изображения I под статистикой Пуассона.

Улучшить восстановление, deconvlucy поддержки несколько дополнительных параметров, описанных ниже. Использование как заполнитель, если вы не задаете промежуточный параметр.

пример

J = deconvlucy(I,psf,iter) задает количество итераций, iter.

J = deconvlucy(I,psf,iter,dampar) усиление шума средств управления путем подавления итераций для пикселей, которые отклоняют небольшое количество по сравнению с шумом, заданным порогом затухания dampar. По умолчанию никакое затухание не происходит.

J = deconvlucy(I,psf,iter,dampar,weight) задает, какие пиксели во входе отображают I рассматриваются в восстановлении. Значение элемента в weight массив определяет, каким количеством рассматривается пиксель в соответствующем положении во входном изображении. Например, чтобы исключить пиксель из фактора, присвойте его значение 0 в weight массив. Можно настроить значение веса, присвоенное каждому пикселю согласно объему коррекции плоского поля.

J = deconvlucy(I,psf,iter,dampar,weight,readout) задает аддитивный шум (такой как фон или приоритетный шум) и отклонение шума камеры считывания, readout.

J = deconvlucy(I,psf,iter,dampar,weight,readout,subsample) подвыборка использования, когда PSF дан на сетке, которая является subsample времена, более прекрасные, чем изображение.

Примеры

свернуть все

Считайте и отобразите нетронутое изображение, которое не имеет размытости или шума. Этот пример опционально обрезки изображение к размеру 256 256 с верхним левым (x, y) координируют в (2,50).

I = imread('board.tif');
I = imcrop(I,[2 50 255 255]);
imshow(I)
title('Original Image')

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

Создайте PSF, который представляет Гауссову размытость стандартным отклонением 5 и фильтр размера, 5 на 5.

PSF = fspecial('gaussian',5,5);

Симулируйте размытость в изображении.

blurred = imfilter(I,PSF,'symmetric','conv');

Добавьте симулированный нулевой средний Гауссов шум.

V = 0.002;
blurred_noisy = imnoise(blurred,'gaussian',0,V);
imshow(blurred_noisy)
title('Blurred and Noisy Image')

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

Используйте deconvlucy восстановить размытое и шумное изображение. Задайте PSF, используемый, чтобы создать размытость и сократить число итераций к 5.

luc1 = deconvlucy(blurred_noisy,PSF,5);
imshow(luc1)
title('Restored Image')

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

Создайте демонстрационное изображение и размойте его.

I = checkerboard(8);
PSF = fspecial('gaussian',7,10);
V = .0001;
BlurredNoisy = imnoise(imfilter(I,PSF),'gaussian',0,V);

Создайте массив весов и вызовите deconvlucy использование нескольких дополнительных параметров.

WT = zeros(size(I));
WT(5:end-4,5:end-4) = 1;
J1 = deconvlucy(BlurredNoisy,PSF);
J2 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V));
J3 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V),WT);

Отобразите результаты.

subplot(221);imshow(BlurredNoisy);
title('A = Blurred and Noisy');
subplot(222);imshow(J1);
title('deconvlucy(A,PSF)');
subplot(223);imshow(J2);
title('deconvlucy(A,PSF,NI,DP)');
subplot(224);imshow(J3);
title('deconvlucy(A,PSF,NI,DP,WT)');

Figure contains 4 axes objects. Axes object 1 with title A = Blurred and Noisy contains an object of type image. Axes object 2 with title deconvlucy(A,PSF) contains an object of type image. Axes object 3 with title deconvlucy(A,PSF,NI,DP) contains an object of type image. Axes object 4 with title deconvlucy(A,PSF,NI,DP,WT) contains an object of type image.

Входные параметры

свернуть все

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

Типы данных: single | double | int16 | uint8 | uint16

PSF в виде числового массива.

Типы данных: single | double | int16 | uint8 | uint16

Количество итераций в виде положительного целого числа.

Типы данных: double

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

Значение веса каждого пикселя в виде числового массива со значениями в области значений [0, 1]. weight имеет тот же размер как входное изображение, I. По умолчанию, все элементы в weight имейте значение 1, таким образом, все пиксели рассматриваются одинаково в восстановлении.

Типы данных: double

Шум в виде числового скаляра или числового массива. Значение readout соответствует аддитивному шуму (такому как шум от переднего плана и фона) и отклонение шума камеры считывания. readout имеет совпадающий тип данных как I.

Подвыборка в виде положительной скалярной величины.

Типы данных: double

Выходные аргументы

свернуть все

Изображение Deblurred, возвращенное как числовой массив или массив ячеек 1 на 4. J (или J{1} когда J массив ячеек), имеет совпадающий тип данных как I. Для получения дополнительной информации о возврате J как массив ячеек для прерванных итераций, смотрите Советы.

Советы

  • Можно использовать deconvlucy выполнять развертку, которая запускается где предыдущая остановленная развертка. Чтобы использовать эту функцию, передайте входное изображение I как массив ячеек, {I}. Когда вы делаете, deconvlucy функция возвращает выходное изображение J как массив ячеек, который можно затем передать как входной массив в следующий deconvlucy вызвать. Выходной массив ячеек J содержит четыре элемента:

    J{1} содержит I, оригинальное изображение.

    J{2} содержит результат последней итерации.

    J{3} содержит результат предпоследней итерации.

    J{4} массив, сгенерированный итеративным алгоритмом.

  • Выходное изображение J мог показать вызов, введенный дискретным преобразованием Фурье, используемым в алгоритме. Чтобы уменьшать вызов, используйте I = edgetaper(I,psf) прежде, чем вызвать deconvlucy.

  • deconvlucy преобразует PSF в double без нормализации.

  • deconvlucy возвращаемые значения мая в выходном изображении, которые являются вне области значений входного изображения.

Ссылки

[1] D.S.C. Четырехрядные ячмени и М. Эндрюс, Ускорение итеративных алгоритмов восстановления изображений, Прикладной Оптики, Издания 36, № 8, 1997.

[2] Р.Дж. Хэниш, Р.Л. Вайт, и Р.Л. Джиллилэнд, Развертки Изображений Космического телескопа Хабблa и Спектров, Развертка Изображений и Спектров, Эда. П.А. Янссон, 2-й редактор, Academic Press, CA, 1997.

Представлено до R2006a