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

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

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

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

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

Figure contains an axes object. The axes object with title Original Image contains an object of type 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')

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

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

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

Figure contains an axes object. The axes object with title Restored Blurred Image contains an object of type 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')

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

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

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

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

Figure contains an axes object. The axes object with title Restoration of Blurred Noisy Image (NSR = 0) contains an object of type image.

Попытайтесь восстановить размытое шумное изображение при помощи 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)')

Figure contains an axes object. The axes object with title Restoration of Blurred Noisy Image (Estimated NSR) contains an object of type image.

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

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

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

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

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

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

Figure contains an axes object. The axes object with title Restoration of Blurred Quantized Image (NSR = 0) contains an object of type image.

Попытайтесь восстановить размытое квантованное изображение при помощи 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)');

Figure contains an axes object. The axes object with title Restoration of Blurred Quantized Image (Estimated NSR) contains an object of type image.

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

| | |

Похожие темы