Цифровые изображения подвержены различным типам шума. Шум является результатом ошибок в процессе получения изображений, которые приводят к пиксельным значениям, которые не отражают истинную интенсивность действительной сцены. Существует несколько способов, которыми шум может быть введен в изображение, в зависимости от того, как изображение создается. Например:
Если изображение сканируется из фотографии, сделанной на фильме, пленочная мелкая частица является источником шума. Шум может также быть результатом повреждения фильма или быть введен самим сканером.
Если изображение получено непосредственно в цифровом формате, механизме для сбора, что данные (такие как детектор 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 = rgb2gray(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');
imbilatfilt
| imfilter
| imgaussfilt
| imguidedfilter
| locallapfilt
| nlfilter