Рассмотрим следующее изображение:
![enter image description here](https://i.stack.imgur.com/rH7yT.png)
Слева, скажем, у меня есть 3 метки.Фон = 1, черный = 2, оранжевый = 3. То, что я хочу сделать, - это уметь сначала идентифицировать все подключенные компоненты, которые оранжевого цвета, затем, если черные объекты касаются оранжевого, то я хотел бы преобразоватьэто к оранжевому также.
Я знаю следующие шаги:
- Предположим, помеченное изображение называется
labeled
.Я делаю orange = labeled == 3
CC = bwconncomp(orange);
Но отсюда Я не уверен, как я могу проверить, касаются ли какие-либо черные компоненты оранжевого .Как только я узнаю, какие черные компоненты касаются оранжевого, я могу сделать следующее: RP = regionprops(black, 'PixelIdxList'); labeled(RP(index).PixelIdxList) = 3;
Для проверки кода: вот пример генерации ввода и вывода:
%input matrix
I = zeros([8 8]);
I(1:5, 1:5) = 1;
I(2:4, 3:7) = 2;
I(7:8, 1:2) = 1;
I(7:8, 7:8) = 2;
I
%output
O = zeros([8 8]);
O(1:5, 1:5) = 1;
O(2:4, 3:7) = 1;
O(7:8, 1:2) = 1;
O(7:8, 7:8) = 2;
O