Как удалить гауссов шум с изображения в MATLAB?

Я пытаюсь удалить гауссовский шум с изображения. Я сам добавил шум, используя:

nImg = imnoise(img,'gaussian',0,0.01);

Теперь мне нужно удалить шум с помощью моего собственного фильтра или хотя бы уменьшить его. Теоретически, как я понимаю, использование матрицы свертки ones(3)/9 должно помочь, а использование матрицы свертки Гаусса, такой как [1 2 1; 2 4 2; 1 2 1]/9 или fspecial('gaussian',3), должно быть лучше. Тем не менее, они не так хорошо справляются с задачей: введите здесь описание изображения

Я пропустил что-то важное? Кстати, мне нужно использовать свертки.


person shwartz    schedule 23.12.2011    source источник
comment
Усредняющий фильтр (ваш фильтр) — плохой фильтр нижних частот. Гауссовский - лучший ФНЧ. Причина, по которой вы получаете искажение на 1 2 1; 2 4 2; 1 2 1 фильтр потому, что он не нормализован должным образом.   -  person Jim Clay    schedule 23.12.2011
comment
Вы правы насчет 1 2 1;2 4 2;1 2 1. Я должен был разделить на 16, а не на 9. Тем не менее, это не слишком хорошо работает: ссылка   -  person shwartz    schedule 24.12.2011


Ответы (3)


Вы ничего не упускаете! Очевидно, что вы не можете удалить шум полностью. Вы можете попробовать разные фильтры, но все они будут иметь компромисс:

Больше шума + меньше размытия VS Меньше шума + больше размытия

Это станет более очевидным, если вы подумаете об этом следующим образом:

Любой метод на основе свертки предполагает, что все соседи имеют одинаковый цвет.

Но в реальной жизни на изображении много объектов. Таким образом, когда вы применяете свертку, вы вызываете размытие, смешивая пиксели разных соседних объектов.

Существуют более сложные методы шумоподавления, такие как:

  • Медианное шумоподавление
  • Двусторонний фильтр
  • Шумоподавление на основе сопоставления с образцом

Они не используют только свертки. Кстати, даже они не умеют колдовать.

person Andrey Rubshtein    schedule 23.12.2011
comment
Спасибо. Я видел этот компромисс во время реализации, а также применил медианное шумоподавление, которое отлично работает для шума соли и перца, но не так хорошо для гауссова шума. Тем не менее, как я могу найти тонкую грань между изображением, которое слишком шумное, но резкое, и изображением, слишком размытым, но с небольшим шумом? У меня есть несколько параметров, с которыми можно поиграться: размеры матрицы (маленькая, большая, квадратная, прямоугольная) и значения матрицы (гауссовская, равномерная, какие-то другие странные настройки). Итак, неужели ничего приличного я не могу сделать с помощью простой свертки? - person shwartz; 24.12.2011
comment
@shwartz, к сожалению, нет. Вам нужна хотя бы какая-то логика, которая будет обнаруживать края, углы и т. д. и соответствующим образом обрабатывать их. Это не только свертка по определению. - person Andrey Rubshtein; 24.12.2011
comment
На самом деле, это обнадеживает, так как задание состоит в использовании свертки (исключительно, насколько я понимаю). Единственная проблема заключается в том, чтобы найти хороший метод и узнать, какой результат лучше. Есть ли способ количественно оценить качество результата? Например, будет ли какое-то матричное расстояние от исходного бесшумного изображения хорошим способом определить качество моего результата? Или есть какой-то другой распространенный метод? - person shwartz; 24.12.2011
comment
Предлагаю задать еще вопрос по теме :) Можно ссылку на этот поставить. - person Andrey Rubshtein; 24.12.2011
comment
@Andrey Андрей, мне интересно, что вы сказали ... мне всем вместе задать новый вопрос при обмене стеками? То, что я пытаюсь понять, - это компромисс между подавлением шума, но не подавлением краев ... возможно, краткое изложение некоторых из этих методов. (например, я столкнулся с «ансиотропной диффузией»)… как они работают? Что меняется? Спасибо. - person Spacey; 07.02.2012

вы можете использовать wiener2, который работает лучше всего. когда шум представляет собой аддитивный шум постоянной мощности («белый»), такой как гауссовский шум.

person HforHisham    schedule 07.12.2013

Вы ошиблись с матрицей свертки Гаусса. Вам нужно разделить его на 16, а не на 9, чтобы сумма была равна 1. Поэтому результирующее изображение с использованием этой матрицы такое светлое.

person L_S    schedule 22.06.2013
comment
Спасибо, я знаю. Кто-то уже прокомментировал под оригинальным постом. - person shwartz; 23.06.2013