exponenta event banner

Выполнение обессоливания с помощью управляемого фильтра

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

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

A = imread('toysnoflash.png');
figure;
imshow(A);
title('Input Image - Camera Flash Off')

Figure contains an axes. The axes with title Input Image - Camera Flash Off contains an object of type image.

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

G = imread('toysflash.png');
figure;
imshow(G);
title('Guidance Image - Camera Flash On')

Figure contains an axes. The axes with title Guidance Image - Camera Flash On contains an object of type image.

Выполните операцию управляемой фильтрации. Использование imguidedfilter можно указать размер области, используемой для фильтрации. По умолчанию используется квадрат 5 на 5. В этом примере используется окрестность 3 на 3. Можно также указать степень сглаживания, выполняемого фильтром. Значение может быть любым положительным числом. Один из способов подойти к этому - сначала использовать значение по умолчанию и просмотреть результаты. Если требуется меньшее сглаживание и большее сохранение кромок, используйте меньшее значение для этого параметра. Для большего сглаживания используйте большее значение. В этом примере задается значение параметра сглаживания.

nhoodSize = 3;
smoothValue  = 0.001*diff(getrangefromclass(G)).^2;
B = imguidedfilter(A, G, 'NeighborhoodSize',nhoodSize, 'DegreeOfSmoothing',smoothValue);
figure, imshow(B), title('Filtered Image')

Figure contains an axes. The axes with title Filtered Image contains an object of type image.

Проверьте закрытие области исходного изображения и сравните ее с отфильтрованным изображением, чтобы увидеть эффект этого фильтра сглаживания, сохраняющего края.

figure; 
h1 = subplot(1,2,1); 
imshow(A), title('Region in Original Image'), axis on
h2 = subplot(1,2,2); 
imshow(B), title('Region in Filtered Image'), axis on
linkaxes([h1 h2])
xlim([520 660])
ylim([150 250])

Figure contains 2 axes. Axes 1 with title Region in Original Image contains an object of type image. Axes 2 with title Region in Filtered Image contains an object of type image.

См. также

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