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