Изображения Deblur Используя упорядоченный фильтр

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

Симулируйте гауссову размытость и гауссов шум

Считайте и отобразите нетронутое изображение, которое не имеет размытости или шума.

I = im2double(imread('tissue.png'));
imshow(I);
title('Original Image');
text(size(I,2),size(I,1)+15, ...
    'Image courtesy of Alan Partin, Johns Hopkins University', ...
    'FontSize',7,'HorizontalAlignment','right');

Figure contains an axes. The axes with title Original Image contains 2 objects of type image, text.

Симулируйте размытое изображение, которое может следовать из расфокусированной линзы. Во-первых, создайте функцию рассеяния точки, PSF, при помощи fspecial функция и определение Гауссова фильтра размера 11 11 и стандартного отклонения 5. Затем примените операцию свертки к функции рассеяния точки с изображением при помощи imfilter.

PSF = fspecial('gaussian',11,5);
blurred = imfilter(I,PSF,'conv');

Добавьте нулевой средний Гауссов шум в размытое изображение при помощи imnoise функция.

noise_mean = 0;
noise_var = 0.02;
blurred_noisy = imnoise(blurred,'gaussian',noise_mean,noise_var);

Отобразите размытое шумное изображение.

imshow(blurred_noisy)
title('Blurred and Noisy Image')

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

Восстановите изображение Используя предполагаемую шумовую степень

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

Для первого восстановления используйте истинный NP. Обратите внимание на то, что пример выходные параметры два параметра здесь. Первое возвращаемое значение, reg1, восстановленное изображение. Второе возвращаемое значение, lagra, скалярный множитель Лагранжа, на котором сходилась упорядоченная развертка. Это значение используется позже в примере.

NP = noise_var*numel(I);
[reg1,lagra] = deconvreg(blurred_noisy,PSF,NP);
imshow(reg1)
title('Restored with True NP')

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

Для второго восстановления используйте немного завышенную шумовую степень. Восстановление имеет низкое разрешение.

reg2 = deconvreg(blurred_noisy,PSF,NP*1.3);
imshow(reg2)
title('Restored with Larger NP')

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

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

reg3 = deconvreg(blurred_noisy,PSF,NP/1.3);
imshow(reg3)
title('Restored with Smaller NP')

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

Уменьшайте шумовое усиление и вызов

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

Edged = edgetaper(blurred_noisy,PSF);
reg4 = deconvreg(Edged,PSF,NP/1.3);
imshow(reg4)
title('Restored with Smaller NP and Edge Tapering')

Figure contains an axes. The axes with title Restored with Smaller NP and Edge Tapering contains an object of type image.

Используйте множитель Лагранжа

Восстановите размытое и шумное изображение, приняв, что оптимальное решение уже найдено, и соответствующий множитель Лагранжа известен. В этом случае любое значение, переданное для шумовой степени, NP, проигнорировано.

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

reg5 = deconvreg(Edged,PSF,[],lagra);
imshow(reg5)
title('Restored with LAGRA')

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

Второе восстановление использует 100*lagra который увеличивает значение ограничения. По умолчанию это приводит к сверхсглаживанию изображения.

reg6 = deconvreg(Edged,PSF,[],lagra*100);
imshow(reg6)
title('Restored with Large LAGRA')

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

Третье восстановление использует lagra/100 который ослабляет ограничение (набор требования гладкости для изображения). Это усиливает шум. Для крайнего случая, когда множитель Лагранжа равняется 0, реконструкция является чистой обратной фильтрацией.

reg7 = deconvreg(Edged,PSF,[],lagra/100);
imshow(reg7)
title('Restored with Small LAGRA')

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

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

Восстановите размытое и шумное изображение с помощью различного ограничения для оператора регуляризации. Вместо того, чтобы использовать Лапласово ограничение по умолчанию на гладкость изображений, ограничьте гладкость изображений только в одной размерности (1D Лапласиан).

regop = [-1 2 -1];
reg8 = deconvreg(blurred_noisy,PSF,[],lagra,regop);
imshow(reg8)
title('Constrained by 1-D Laplacian')

Figure contains an axes. The axes with title Constrained by 1-D Laplacian contains an object of type image.

Смотрите также

| | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте