Изображения Deblurring Используя винеровский фильтр

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

Readimage

I = im2double(imread('cameraman.tif'));
imshow(I);
title('Original Image (courtesy of MIT)');

Моделируйте размытость изображения движущегося объекта

Моделируйте размытое изображение, которое вы можете получить от движения камеры. Создайте функцию рассеяния точки, PSF, соответствуя линейному движению через 21 пиксель (LEN=21), под углом 11 градусов (THETA=11). Чтобы моделировать размытость, примените операцию свертки к фильтру с изображением с помощью imfilter.

LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');
imshow(blurred);
title('Blurred Image');

Восстановите размытое изображение

Самым простым синтаксисом для deconvwnr является deconvwnr(A, PSF, NSR), где A является размытым изображением, PSF является функцией рассеяния точки, и NSR является шумовой степенью сигнализировать об отношении степени. Размытое изображение, сформированное на Шаге 2, не имеет никакого шума, таким образом, мы будем использовать 0 для NSR.

wnr1 = deconvwnr(blurred, PSF, 0);
imshow(wnr1);
title('Restored Image');

Моделируйте размытость и шум

Теперь давайте попытаемся добавить шум.

noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', ...
                        noise_mean, noise_var);
imshow(blurred_noisy)
title('Simulate Blur and Noise')

Восстановите размытое и шумное изображение: первая попытка

В нашей первой попытке восстановления мы скажем deconvwnr, что нет никакого шума (NSR = 0). Когда NSR = 0, Винеровский фильтр восстановления эквивалентен идеальному обратному фильтру. Идеальный обратный фильтр может быть чрезвычайно чувствителен к шуму во входном изображении, когда следующее изображение показывает:

wnr2 = deconvwnr(blurred_noisy, PSF, 0);
imshow(wnr2)
title('Restoration of Blurred, Noisy Image - NSR = 0')

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

Восстановите размытое и шумное изображение: вторая попытка

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

signal_var = var(I(:));
wnr3 = deconvwnr(blurred_noisy, PSF, noise_var / signal_var);
imshow(wnr3)
title('Restoration of Blurred, Noisy Image - Estimated NSR');

Моделируйте размытость и 8-битный шум квантования

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

I = imread('cameraman.tif');
class(I)
ans = 
'uint8'

Если вы передадите изображение uint8 imfilter, это квантует вывод в порядке возвратить другое изображение uint8.

blurred_quantized = imfilter(I, PSF, 'conv', 'circular');
class(blurred_quantized)
ans = 
'uint8'

Восстановите размытое, квантованное изображение: первая попытка

Снова, мы попытаемся сначала говорить deconvwnr, что нет никакого шума.

wnr4 = deconvwnr(blurred_quantized, PSF, 0);
imshow(wnr4)
title('Restoration of blurred, quantized image - NSR = 0');

Восстановите размытое, квантованное изображение: вторая попытка

Затем, мы предоставляем оценку NSR к deconvwnr.

uniform_quantization_var = (1/256)^2 / 12;
signal_var = var(im2double(I(:)));
wnr5 = deconvwnr(blurred_quantized, PSF, ...
    uniform_quantization_var / signal_var);
imshow(wnr5)
title('Restoration of Blurred, Quantized Image - Estimated NSR');

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

| | |

Похожие темы