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