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