В этом примере показано, как использовать регуляризованную деконволюцию для отладки изображений. Регулируемая деконволюция может эффективно использоваться, когда известно ограниченное количество информации о аддитивном шуме, и ограничения (такие как гладкость) применяются к восстановленному изображению. Размытое и шумное изображение восстанавливается ограниченным алгоритмом восстановления методом наименьших квадратов, который использует регуляризованный фильтр.
Считывайте и отображайте первозданное изображение, которое не имеет размытия или шума.
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')
Восстановите размытое и шумное изображение с помощью другого ограничения для оператора регуляризации. Вместо использования ограничения Лаплака по умолчанию на гладкость изображения ограничьте гладкость изображения только в одной размерности (1-D Laplacian).
regop = [-1 2 -1];
reg8 = deconvreg(blurred_noisy,PSF,[],lagra,regop);
imshow(reg8)
title('Constrained by 1-D Laplacian')
deconvreg
| fspecial
| imfilter
| imnoise