Мое предлагаемое решение: используйте BWHITMISS , чтобы найти пиксели, окрестности которых хотя бы 4-связны, расширите результат с помощью структурирующего элемента прямоугольной формы, чтобы преобразовать эти окрестности в 8-связные, и, наконец, объединяемс исходным изображением, используя логическое ИЛИ.
Пример:
bw = [
0 0 0 1 0 1 0
0 0 1 1 1 1 1
0 1 1 1 0 1 0
0 0 1 0 1 0 0
0 1 1 0 0 0 0
0 0 1 0 1 1 1
0 0 1 0 0 1 0
];
hm = bwhitmiss(bw, [0 1 0; 1 1 1; 0 1 0]); %# [-1 1 -1; 1 1 1; -1 1 -1]
bw2 = imdilate(hm,ones(3)) | bw;
Мы можем визуализировать результат:
[r c] = find(hm);
subplot(121), imshow(bw), hold on, plot(c(:),r(:),'o')
subplot(122), imshow(bw2)