Изображения Deblur, использующие фильтр Wiener

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

Чтение первозданного изображения

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

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

Figure contains an axes. The axes 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. The axes 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. The axes 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. The axes 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. The axes 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. The axes with title Restoration of Blurred Noisy Image (Estimated NSR) contains an object of type image.

Симулируйте и восстановите помехи движения и 8-Bit шум квантования

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

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

Figure contains an axes. The axes 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. The axes 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. The axes with title Restoration of Blurred Quantized Image (Estimated NSR) contains an object of type image.

См. также

| | |

Похожие темы

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