Как определить тип шума и удалить его из матрицы изображения - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть матрица изображения. Мне нужен способ определить тип шума, а затем найти фильтр для удаления этого шума, используя MATLAB.

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

1   1   1   1   1   1   1   1   1 
1  100 100 100 100 100  1   1   1
1  100 100 100 100 100 100  1   1
1  100 100  1   1  100 100  1  100
1  100 100  1   1  100 100  1   1
1  100 100 100 100 100 100  1   1
1  100 100 100 100 100 100  1   1
1  100 100  1   1   1   1   1   1
1  100 100  1   80  1   1   1   90

enter image description here

enter image description here

1 Ответ

0 голосов
/ 15 декабря 2018

Медианный фильтр будет таким образом отрезать углы вашего изображения.Учитывая, что ваше изображение является более или менее двоичным, простой способ удаления шума в этом случае состоит в том, чтобы удалить изолированные пиксели: пиксели, окруженные значениями намного меньшими, чем он сам.

Это может бытьлегко выполняется в MATLAB с помощью набора инструментов для обработки изображений с использованием морфологического отверстия (imopen):

img = [1   1   1   1   1   1   1   1   1
       1  100 100 100 100 100  1   1   1
       1  100 100 100 100 100 100  1   1
       1  100 100  1   1  100 100  1  100
       1  100 100  1   1  100 100  1   1
       1  100 100 100 100 100 100  1   1
       1  100 100 100 100 100 100  1   1
       1  100 100  1   1   1   1   1   1
       1  100 100  1   80  1   1   1   90];
img = padarray(img,[1,1]); % proper boundary conditions needed
img = max(imopen(img,[1,1]),imopen(img,[1;1]));
img = img(2:end-1,2:end-1); % remove padding again

Мы используем два отверстия: одно с SE [1,1], а другое с SE [1;1].Любой из них может удалить строки толщиной в 1 пиксель, но ни одна из них не будет удалена обоими.Таким образом, мы берем максимум двух результатов: если оба фильтра удаляют пиксель, он останется удаленным, но если его удалит только один, мы хотим сохранить этот пиксель (он принадлежит линии).

Существуют и другие способы идентификации изолированных пикселей, но этот метод довольно прост в реализации на основе существующей функции в наборе инструментов.

...