Удаление шума

Цифровые изображения подвержены различным видам шума. Шум является результатом ошибок в процессе получения изображения, которые приводят к значениям пикселей, которые не отражают истинную интенсивность действительной сцены. Существует несколько способов, чтобы шум мог быть введен в изображение, в зависимости от того, как создается изображение. Для примера:

  • Если изображение сканируется с фотографии, сделанной на пленке, зерно пленки является источником шума. Шум также может быть результатом повреждения плёнки, или быть введен самим сканером.

  • Если изображение получено непосредственно в цифровом формате, механизм сбора данных (такой как ПЗС-детектор) может ввести шум.

  • Электронная передача данных изображения может ввести шум.

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

Удаление шума при помощи линейной фильтрации

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

Смотрите, что такое фильтрация изображений в пространственной области? для получения дополнительной информации о линейной фильтрации с помощью imfilter.

Удаление шума с помощью усредняющего фильтра и медианного фильтра

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

Примечание: Медианная фильтрация является конкретным случаем статистической фильтрации порядка, также известной как ранговая фильтрация. Для получения информации о статистической фильтрации порядка смотрите страницу с описанием для ordfilt2 функция.

Прочтите изображение в рабочую область и отобразите его.

I = imread('eight.tif');
figure
imshow(I)

Figure contains an axes. The axes contains an object of type image.

В данном примере добавьте соль и перец шум к изображению. Этот тип шума состоит из случайных пикселей, устанавливаемых на черное или белое (крайности области значений данных).

J = imnoise(I,'salt & pepper',0.02);
figure
imshow(J)

Figure contains an axes. The axes contains an object of type image.

Фильтрация шумного изображения, J, с фильтром усреднения и отобразить результаты. В примере используется район 3х3.

Kaverage = filter2(fspecial('average',3),J)/255;
figure
imshow(Kaverage)

Figure contains an axes. The axes contains an object of type image.

Теперь используйте медианный фильтр, чтобы фильтровать шумное изображение, J. В примере также используется район 3х3. Отобразите два отфильтрованных изображения один за другим для сравнения. Заметьте, что medfilt2 делает лучшую работу по удалению шума, с меньшим размытием ребер монет.

Kmedian = medfilt2(J);
imshowpair(Kaverage,Kmedian,'montage')

Figure contains an axes. The axes contains an object of type image.

Удаление шума адаптивной фильтрацией

В этом примере показано, как использовать 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');

Figure contains an axes. The axes with title Portion of the Image with Added Gaussian Noise contains an object of type image.

Удалите шум с помощью wiener2 функция.

K = wiener2(J,[5 5]);

Отобразите обработанное изображение. Поскольку изображение довольно большое, отображать только фрагмент изображения.

figure
imshow(K(600:1000,1:600));
title('Portion of the Image with Noise Removed by Wiener Filter');

Figure contains an axes. The axes with title Portion of the Image with Noise Removed by Wiener Filter contains an object of type image.

См. также

| | | | |

Похожие темы