exponenta event banner

Удаление размытия изображений с помощью фильтра 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 без предоставления оценки шума. По умолчанию фильтр восстановления Wiener предполагает, что 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.

См. также

| | |

Связанные темы