Цифровые изображения подвержены различным типам шума. Шум является результатом ошибок в процессе получения изображений, которые приводят к пиксельным значениям, которые не отражают истинную интенсивность действительной сцены. Существует несколько способов, которыми шум может быть введен в изображение, в зависимости от того, как изображение создается. Например:
Если изображение сканируется из фотографии, сделанной на фильме, пленочная мелкая частица является источником шума. Шум может также быть результатом повреждения фильма или быть введен самим сканером.
Если изображение получено непосредственно в цифровом формате, механизме для сбора, что данные (такие как детектор CCD) могут ввести шум.
Электронная передача данных изображения может ввести шум.
Чтобы симулировать эффекты некоторых упомянутых выше проблем, тулбокс обеспечивает imnoise
функция, которую можно использовать, чтобы добавить различные типы шума к изображению. Примеры в этом разделе используют эту функцию.
Можно использовать линейную фильтрацию, чтобы удалить определенные типы шума. Определенные фильтры, такие как усреднение или Гауссовы фильтры, являются соответствующими с этой целью. Например, фильтр усреднения полезен для удаления гранулярного шума из фотографии. Поскольку каждый пиксель установлен в среднее значение пикселей в его окружении, локальные изменения, вызванные мелкой частицей, уменьшаются.
Смотрите то, Что Изображение, Просачивающееся Пространственная Область? для получения дополнительной информации о линейном использовании фильтрации imfilter
.
В этом примере показано, как удалить соль и перечный шум от изображения с помощью фильтра усреднения и среднего фильтра, чтобы позволить сравнение результатов. Эти два типа фильтрации обоих устанавливают значение выходного пикселя к среднему значению пиксельных значений в окружении вокруг соответствующего входного пикселя. Однако с медианной фильтрацией, значение выходного пикселя определяется медианой пикселей окружения, а не средним значением. Медиана намного менее чувствительна, чем среднее значение к экстремумам (названный выбросами). Медианная фильтрация поэтому лучше способна удалить эти выбросы, не уменьшая резкость изображения.
Примечание: Медианная фильтрация является конкретным случаем статистической порядком фильтрации, также известной как фильтрацию ранга. Для получения информации о статистической порядком фильтрации смотрите страницу с описанием для ordfilt2
функция.
Считайте изображение в рабочую область и отобразите его.
I = imread('eight.tif');
figure
imshow(I)
В данном примере добавьте соль и перечный шум к изображению. Этот тип шума состоит из случайных пикселей, устанавливаемых в черный цвет или белый цвет (экстремальные значения области значений данных).
J = imnoise(I,'salt & pepper',0.02);
figure
imshow(J)
Отфильтруйте шумное изображение, J
, с усреднением фильтруют и отображают результаты. Пример использует 3х3 окружение.
Kaverage = filter2(fspecial('average',3),J)/255;
figure
imshow(Kaverage)
Теперь используйте средний фильтр, чтобы отфильтровать шумное изображение, J
. Пример также использует 3х3 окружение. Отобразите два отфильтрованных изображения рядом друг с другом для сравнения. Заметьте, что medfilt2
делает лучшее задание удаления шума, с меньшим количеством размывания ребер монет.
Kmedian = medfilt2(J);
imshowpair(Kaverage,Kmedian,'montage')
В этом примере показано, как использовать wiener2
функция, чтобы применить Винеровский фильтр (тип линейного фильтра) к изображению адаптивно. Винеровский фильтр адаптирует себя в соответствии с локальным отклонением изображений. Где отклонение является большим, wiener2
выполняет мало сглаживания. Где отклонение мало, wiener2
выполняет больше сглаживания.
Этот подход часто приводит к лучшим результатам, чем линейная фильтрация. Адаптивный фильтр является более выборочным, чем сопоставимый линейный фильтр, сохраняя ребра и другие высокочастотные части изображения. Кроме того, нет никаких задач проекта; wiener2
указатели на функцию все предварительные расчеты и реализуют фильтр для входного изображения. wiener2
, однако, действительно требует большего количества времени вычисления, чем линейная фильтрация.
wiener2
работает лучше всего, когда шум является постоянной степенью ("белый") аддитивный шум, такой как Гауссов шум. Пример ниже применяет wiener2
к изображению Сатурна с добавленным Гауссовым шумом.
Считайте изображение в рабочую область.
RGB = imread('saturn.png');
Преобразуйте изображение от истинного цвета до шкалы полутонов.
I = im2gray(RGB);
Добавьте Гауссов шум в изображение
J = imnoise(I,'gaussian',0,0.025);
Отобразите шумное изображение. Поскольку изображение является довольно большим, отображение только фрагмент изображения.
imshow(J(600:1000,1:600));
title('Portion of the Image with Added Gaussian Noise');
Удалите шум с помощью wiener2
функция.
K = wiener2(J,[5 5]);
Отобразите обработанное изображение. Поскольку изображение является довольно большим, отображение только фрагмент изображения.
figure
imshow(K(600:1000,1:600));
title('Portion of the Image with Noise Removed by Wiener Filter');
imfilter
| imguidedfilter
| imgaussfilt
| locallapfilt
| nlfilter
| imbilatfilt