Окрашивание пикселей между областями с ближайшим цветом в MATLAB - PullRequest
1 голос
/ 29 октября 2011

Существует ли эффективный способ заполнения пикселей со значением ноль между пикселями с ненулевыми значениями с ближайшим ненулевым значением , оставляя остальные пиксели на нуле нетронутыми?

Чтобы уточнить, я хочу закрасить те пиксели, расстояние которых ближе к ненулевому пикселю меньше заданного значения (например, 4 пикселя).

Изображение изначально представляется в виде матрицы из uint32 целых чисел.

enter image description here

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

Я думаю, что есть способ сделать это с помощью интерполяции. В любом случае я ищу относительно эффективное решение.

1 Ответ

1 голос
/ 29 октября 2011

Учитывая входную матрицу A:

b = imclose(A==0,ones(3,3)) %only the big zero regions
c = imdilate(A,ones(3,3)) %inpainting all neighboring pixels
d = zeros(size(A));
d(b==0) = c(b==0); %copy the inpainting only in places where there are no big regions

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...