4-х канальный код цепочки соединений до 8 кодов цепочки соединений - PullRequest
0 голосов
/ 06 февраля 2020

Я чувствую, что это должно быть тривиально, но мне сложнее всего преобразовать 4-х полосный код границы в 8-ми. Например, если бы у меня был код цепочки границ (32323232333000101010) и я хотел преобразовать его в 8, я бы удалил некоторые избыточные пиксели, вставив 5. Я четко вижу ненужные пиксели, когда рисую его, но я ищу фактический шаблон, чтобы я мог его кодировать. Спасибо

1 Ответ

0 голосов
/ 06 февраля 2020

Поскольку существуют разные способы определения кодов цепочки, давайте предположим, что 4-связанный код цепочки использует 0 для шага вправо, 1 для шага вверх, 2 для шага влево и т. Д. c. И 8-связанный также использует 0 для шага вправо, 1 для шага вправо, 2 для вверх, et c.

Предположим также, что код цепи кодирует замкнутую границу отслеживая его по часовой стрелке.

Первым шагом является преобразование каждого 4-связного шага в 8-связный шаг, который выполняется простым умножением на 2 (0-> 0, 1-> 2, 2- > 4, 3-> 6).

Второй шаг - упростить 4-соединенные шаги, образующие прямой угол и создающие вогнутую часть контура; они должны быть заменены диагональным шагом.

Например, шаг вправо (0) с последующим шагом вниз (6) будет выпуклым и должен быть сохранен, но шаг вправо (0), за которым следует step up (2) будет вогнутым и должен быть заменен одним шагом вправо (1). Таким образом: 02-> 1, 24-> 3, 46-> 5, 60-> 7.

Я реализовал это в библиотеке DIPlib, вы можете увидеть код на GitHub .

...