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

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

Считайте нетронутое изображение

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

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

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

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

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

PSF = fspecial('motion',21,11);
Idouble = im2double(Ioriginal);
blurred = imfilter(Idouble,PSF,'conv','circular');
imshow(blurred)
title('Blurred Image')

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

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

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

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

noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred,'gaussian',noise_mean,noise_var);
imshow(blurred_noisy)
title('Blurred and Noisy Image')

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

В этом примере шум в этом восстановлении усилен до такой степени, что содержимое изображения потеряно.

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

Попытайтесь восстановить размытое шумное изображение при помощи deconvwnr с более реалистическим значением предполагаемого шума.

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

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

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

blurred_quantized = imfilter(Ioriginal,PSF,'conv','circular');
imshow(blurred_quantized)
title('Blurred Quantized Image')

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

wnr4 = deconvwnr(blurred_quantized,PSF);
imshow(wnr4)
title('Restoration of Blurred Quantized Image (NSR = 0)');

Попытайтесь восстановить размытое квантованное изображение при помощи deconvwnr с более реалистическим значением предполагаемого шума.

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

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

| | |

Похожие темы