В этом примере показано, как использовать упорядоченную развертку для изображений deblur. Упорядоченная развертка может использоваться эффективно, когда ограниченная информация известна об аддитивном шуме, и ограничения (такие как гладкость) применяются на восстановленное изображение. Размытое и шумное изображение восстанавливается ограниченным алгоритмом восстановления наименьшего квадрата, который использует упорядоченный фильтр.
Считайте и отобразите нетронутое изображение, которое не имеет размытости или шума.
I = im2double(imread('tissue.png')); imshow(I); title('Original Image'); text(size(I,2),size(I,1)+15, ... 'Image courtesy of Alan Partin, Johns Hopkins University', ... 'FontSize',7,'HorizontalAlignment','right');
Симулируйте размытое изображение, которое может следовать из расфокусированной линзы. Во-первых, создайте функцию рассеяния точки, PSF
, при помощи fspecial
функция и определение Гауссова фильтра размера 11 11 и стандартного отклонения 5. Затем примените операцию свертки к функции рассеяния точки с изображением при помощи imfilter
.
PSF = fspecial('gaussian',11,5); blurred = imfilter(I,PSF,'conv');
Добавьте нулевой средний Гауссов шум в размытое изображение при помощи imnoise
функция.
noise_mean = 0;
noise_var = 0.02;
blurred_noisy = imnoise(blurred,'gaussian',noise_mean,noise_var);
Отобразите размытое шумное изображение.
imshow(blurred_noisy)
title('Blurred and Noisy Image')
Восстановите размытое изображение при помощи deconvreg
функция, предоставляя шумовую мощность (NP) как третий входной параметр. Чтобы проиллюстрировать, насколько чувствительный алгоритм к значению шумовой мощности, этот пример выполняет три восстановления.
Для первого восстановления используйте истинный NP. Обратите внимание на то, что пример выходные параметры два параметра здесь. Первое возвращаемое значение, reg1
, восстановленное изображение. Второе возвращаемое значение, lagra
, скалярный множитель Лагранжа, на котором сходилась упорядоченная развертка. Это значение используется позже в примере.
NP = noise_var*numel(I);
[reg1,lagra] = deconvreg(blurred_noisy,PSF,NP);
imshow(reg1)
title('Restored with True NP')
Для второго восстановления используйте немного завышенную шумовую мощность. Восстановление имеет низкое разрешение.
reg2 = deconvreg(blurred_noisy,PSF,NP*1.3);
imshow(reg2)
title('Restored with Larger NP')
Для третьего восстановления используйте немного недооцениваемую шумовую мощность. Восстановление имеет подавляющее шумовое усиление и звонящий от цветов границы изображения.
reg3 = deconvreg(blurred_noisy,PSF,NP/1.3);
imshow(reg3)
title('Restored with Smaller NP')
Можно уменьшать шумовое усиление и звонящий вдоль контура изображения путем вызова edgetaper
функция до развертки. Восстановление изображений становится менее чувствительным к параметру шумовой мощности.
Edged = edgetaper(blurred_noisy,PSF);
reg4 = deconvreg(Edged,PSF,NP/1.3);
imshow(reg4)
title('Restored with Smaller NP and Edge Tapering')
Восстановите размытое и шумное изображение, приняв, что оптимальное решение уже найдено, и соответствующий множитель Лагранжа известен. В этом случае любое значение, переданное для шумовой мощности, NP, проигнорировано.
Чтобы проиллюстрировать, насколько чувствительный алгоритм ко множителю Лагранжа, этот пример выполняет три восстановления. Первое восстановление использует lagra
выведите от reg1
восстановление выполняется ранее.
reg5 = deconvreg(Edged,PSF,[],lagra);
imshow(reg5)
title('Restored with LAGRA')
Второе восстановление использует 100*lagra
который увеличивает значение ограничения. По умолчанию это приводит к сверхсглаживанию изображения.
reg6 = deconvreg(Edged,PSF,[],lagra*100);
imshow(reg6)
title('Restored with Large LAGRA')
Третье восстановление использует lagra
/100 который ослабляет ограничение (набор требования гладкости для изображения). Это усиливает шум. Для крайнего случая, когда множитель Лагранжа равняется 0, реконструкция является чистой обратной фильтрацией.
reg7 = deconvreg(Edged,PSF,[],lagra/100);
imshow(reg7)
title('Restored with Small LAGRA')
Восстановите размытое и шумное изображение с помощью различного ограничения для оператора регуляризации. Вместо того, чтобы использовать Лапласово ограничение по умолчанию на гладкость изображений, ограничьте гладкость изображений только в одной размерности (1D Лапласиан).
regop = [-1 2 -1];
reg8 = deconvreg(blurred_noisy,PSF,[],lagra,regop);
imshow(reg8)
title('Constrained by 1-D Laplacian')
deconvreg
| imnoise
| fspecial
| imfilter