Цветные метки шаблона: как отделить ориентиры от штрихов при извлечении букв

Цветные метки помогают быстро находить углы и контрольные точки шаблона, но при автоматической вырезке могут попасть в маску буквы или, наоборот, заставить программу принять штрих за ориентир. Надёжный процесс разделяет две задачи: геометрию сетки определяют по устойчивым меткам, а изображение букв извлекают из отдельного слоя исходного скана. Ниже — пошаговый способ настроить такой поток, проверить координаты и не потерять тонкие детали.
Зачем разводить метки и рукописные штрихи
Ориентир отвечает на вопрос «где находится ячейка», а штрих — «что нарисовано внутри неё». Если программа ищет оба объекта по одному порогу яркости или цвета, между задачами возникает конфликт. Красная точка может стать частью буквы, чёрный завиток — случайным маркером, а полупрозрачная цветная метка на серой бумаге — исчезнуть после перевода снимка в оттенки серого.
Разделение особенно полезно, когда шаблон заполняют цветной ручкой, метки добавлены редактором после сканирования или лист снимают камерой при неравномерном свете. Оно также облегчает повторную обработку: можно изменить правило распознавания маркеров, сохранив исходные штрихи без повторного сканирования.
Главный принцип — не удалять цвет ориентиров из единственной копии изображения. Сначала найдите метки и рассчитайте преобразование сетки, затем применяйте координаты к исходнику, а маску меток исключайте только из слоя, который используется для построения карты ячеек. Так геометрическая разметка не переписывает рисунок буквы.
Подготовьте снимок и неизменяемый оригинал
Сохраните файл камеры или сканера как мастер-копию. Не обрезайте его и не меняйте размер до фиксации исходных координат: любое такое действие меняет систему отсчёта. Для работы создайте производную копию без повторного сжатия, если это возможно. Если скан уже уменьшен или сохранён в JPEG, зафиксируйте именно эту версию как исходную для текущей разметки.
Запишите, в каком порядке применяются поворот, коррекция перспективы и кадрирование. Координаты маркера, найденные до поворота, нельзя без пересчёта использовать после поворота. Удобно держать рядом короткую карточку задания: имя исходника, размеры в пикселях, ориентация листа и список выполненных преобразований. Тогда при повторной сборке понятно, из какого изображения получены вырезки.
Проверьте, что цветные метки заметно отличаются от пера и бумаги не только по названию цвета, но и по реальным пикселям файла. «Красная» наклейка может стать тёмно-коричневой в тени, а голубая точка — почти серой после автоматического баланса белого. Рассматривайте гистограмму как подсказку, но принимайте решение по увеличенному фрагменту и нескольким точкам из разных частей листа.
Выберите признаки маркера, которые не зависят от одного оттенка
Не задавайте правило вроде «всё красное считать меткой», пока не проверили весь лист. Надёжнее описать маркер несколькими признаками: цветовой диапазон, примерный размер, компактность, ожидаемое количество и положение относительно страницы. Геометрический фильтр не даст принять за ориентир длинный цветной штрих; проверка ожидаемого расположения отсеет случайную кляксу рядом с буквой.
Если ориентиры круглые, сравнивайте их площадь и отношение ширины к высоте. Если это рамки или кресты, ищите характерную форму, а не только цвет. Допуск нужен потому, что перспектива и размытие меняют контур: маркер на дальнем углу фотографии может быть чуть меньше и вытянутее, чем ближний. Но допуск не должен быть настолько широким, чтобы туда попадали росчерки и пятна.
Для ручной разметки задайте порядок углов заранее: например, верхний левый, верхний правый, нижний правый, нижний левый. Подпишите точки в журнале или интерфейсе разметки, а не полагайтесь на то, что алгоритм сам угадает направление обхода. Одинаковая форма меток не всегда сообщает, где первый угол, особенно если шаблон почти квадратный.
Отделите цветовой канал от изображения букв
Для поиска меток можно анализировать цветовую составляющую отдельно от яркости. В пространстве HSV это часто удобнее, чем сравнивать три канала RGB одновременно: сначала ограничивают оттенок, затем проверяют насыщенность и светлоту. В Lab можно использовать различие цветности, если освещение заметно меняет яркость. Это не универсальное лекарство: тени, автообработка камеры и цветная бумага способны сдвинуть диапазоны.
Практический старт — снять значения с нескольких уверенных пикселей метки и нескольких контрпримеров: пера, бумаги, тени, исправления. Затем применить диапазон не к одной точке, а к небольшому набору образцов. Уточняйте границы так, чтобы находились все настоящие метки, но длинные участки штрихов не попадали в маску. Если снимок неоднороден, проверьте образцы из четырёх углов, а не только одну метку по центру.
Для контроля создайте временное наложение: выбранные маркерные пиксели покажите полупрозрачным цветом поверх исходника. По наложению сразу видно, захватил ли порог кусок буквы, отблеск, край цветной бумаги или только ориентир. Сохраняйте наложение как диагностический файл, но не подменяйте им исходное изображение.
Найдите сетку и проверьте геометрию до нарезки
После классификации меток получите координаты их центров или устойчивых опорных точек. Если маркер крупный, центр обычно практичнее его внешнего края: толщина линии и небольшое размытие меньше влияют на положение центра. Для рамочного маркера заранее решите, какая точка служит опорой, например пересечение осей или центр внутреннего контура. Не меняйте это правило между углами.
По опорным точкам рассчитайте преобразование, которое связывает сетку шаблона с изображением. Для плоского листа, снятого под углом, часто используют перспективное преобразование; при искривлённой странице может потребоваться локальная коррекция. Выбор зависит от того, как именно деформирован лист, и должен подтверждаться контрольными точками внутри сетки. Одних четырёх углов недостаточно, если середина листа выгнута.
Наложите рассчитанную сетку на исходник и посмотрите не только на углы, но и на промежуточные пересечения, линии базовой сетки и центры нескольких ячеек. Выберите одну строку вверху, одну в середине и одну внизу. Если линия совпадает в углах, но уходит от реальных границ в центре, не начинайте извлечение: модель геометрии или исходная поверхность не описаны достаточно хорошо.
Примените карту координат к отдельной копии
Когда геометрия подтверждена, используйте её как карту для нарезки. Берите пиксели букв из оригинального изображения или из копии, к которой применены только заранее зафиксированные фотокоррекции. Маску цветных ориентиров применяйте к изображению поиска, а не к пиксельному источнику букв. Иначе цветная метка, случайно попавшая внутрь ячейки, может оставить белое отверстие в рисунке.
Каждую ячейку извлекайте по её собственным четырём границам, если сетка слегка меняет размер или форму. Не заменяйте карту координат простой регулярной нарезкой по среднему шагу, если после коррекции видны локальные отклонения. При этом сама коррекция изображения и нарезка — отдельные шаги: сначала пересчитайте границы ячейки в координаты источника либо примените одно преобразование к изображению, затем вырезайте. Не смешивайте координаты до и после коррекции.
Оставляйте небольшой и одинаково определённый внутренний отступ от линии сетки, если рамка не должна попасть в символ. Отступ лучше описывать в долях ячейки или через координаты самой сетки, а не задавать один произвольный пиксель для всех разрешений. Проверьте крайние ячейки отдельно: там маркер, край листа или перспектива чаще влияют на доступную область.
Сверьте результат на контрольной выборке
До обработки всего алфавита выберите небольшую тестовую группу: ячейку с тонким штрихом, букву рядом с меткой, пустую клетку, знак с длинным выносным элементом и по одной ячейке у каждого края. Соберите контактный лист с номерами ячеек и наложенной сеткой. Он показывает ошибки пакетно: перепутанный порядок, обрезанный вынос, оставшуюся часть рамки, белое пятно от маркера или постепенный уход строк.
Сверяйте каждый пример с исходником при одинаковом увеличении. Проверяйте наличие всех концов штрихов, сохранность точек и диакритики, отсутствие фрагментов соседних ячеек и соответствие номера символу на карте. Для маркеров отдельно убедитесь, что их цвет не превратился в часть буквы и что после их исключения сетка не перескочила на другой объект.
Если ошибка повторяется по всему листу, вероятно, неверно выбраны цветовой диапазон, порядок точек или общая модель преобразования. Если сбой есть только в одной ячейке, проверьте локальную разметку, отражение, зацепившийся штрих и край шаблона. Исправляйте причину в карте или правилах и пересобирайте вырезки из мастера, а не редактируйте каждый PNG вручную.
Краткий рабочий алгоритм
- Сохраните мастер-скан и запишите его размеры, ориентацию и историю преобразований.
- Выберите отличительные признаки ориентиров: цвет, форма, размер и ожидаемое расположение.
- Настройте диапазон цветности по реальным образцам меток и контрпримеров с разных частей листа.
- Покажите маску поверх исходника и проверьте, что она не захватывает рукописные штрихи.
- Рассчитайте координаты сетки и проверьте её по углам и промежуточным ячейкам.
- Вырежьте тестовую выборку из исходного слоя, применяя отдельную карту границ.
- Исправьте замеченные ошибки и только после контрольного листа запускайте полный набор.
Частые ошибки
- **Удалять цвет метки с исходника.** Вместо очистки мастера отделите слой поиска ориентиров и слой букв.
- **Считать любой пиксель выбранного оттенка маркером.** Добавьте проверку формы, размера, положения и количества.
- **Настроить порог по одной точке.** Проверьте несколько меток и похожих участков бумаги, пера и тени.
- **Начинать нарезку сразу после совмещения углов.** Сначала проверьте линию в середине и у краёв страницы.
- **Использовать координаты другой версии файла.** После поворота, кадрирования или перспективной коррекции создайте соответствующую карту заново либо пересчитайте координаты.
- **Проверить только крупные простые буквы.** В тестовую выборку включите точки, тонкие линии, выносные элементы и пустые клетки.
FAQ
Можно ли выбрать цвет маркера автоматически?
Можно автоматизировать поиск по цветности и форме, если маркеры достаточно стабильны. Но автоматическое обнаружение следует подтвердить наложением маски и проверкой ожидаемого числа и расположения точек. На разнородных фотографиях полезно оставить ручную корректировку.
Что делать, если маркер того же цвета, что и ручка?
Не пытайтесь решить задачу только цветовым порогом. Используйте форму и место маркера, проверяйте связные области и задайте границы по сетке. Если метка пересекает рукописный штрих, сохраняйте исходные пиксели для буквы и исключайте ориентир лишь при поиске координат.
Нужно ли удалять маркеры из итоговых букв?
Только если они действительно попали в область символа и не являются его частью. Сначала оцените вырезку на исходном изображении и отдельной маске; агрессивное удаление по цвету может стереть штрих похожего оттенка. Если метка стоит за границей символа, достаточно правильно выбрать границы ячейки.
Как понять, что сетка выровнена правильно?
Совместите линии сетки с реальными границами не только в углах, но и в промежуточных точках. Затем проверьте небольшой набор вырезок по краям и в центре, сравнив их с исходником. Систематический уход в одной зоне означает, что преобразование не описывает деформацию листа.
Можно ли делать вырезки из изображения после цветокоррекции?
Можно, если вы заранее выбрали эту версию как источник и применяете её преобразования согласованно. Для безопасной повторной обработки храните оригинал и фиксируйте копию, с которой строились координаты и вырезки. Нельзя переносить пиксельные координаты между версиями с разным кадрированием без пересчёта.
Какой формат лучше для проверочного контактного листа?
Используйте формат, в котором хорошо различимы тонкие линии и границы ячеек. Сам контактный лист служит контролем, а не мастер-файлом: храните рядом номера ячеек, карту координат и исходник, чтобы можно было восстановить любую вырезку.
Итог
Цветной ориентир должен помогать построить карту ячеек, а не изменять пиксели букв. Разделите поиск маркеров и извлечение штрихов, проверьте сетку внутри страницы и испытайте правила на небольшой разнообразной выборке. Когда тестовый контактный лист совпадает с исходником, можно обрабатывать весь шаблон и при необходимости пересобирать результат из сохранённого мастера. Для подготовки собственного алфавита начните с шаблона на [Fontgenerator](https://fontgenerator.ru) и храните скан вместе с картой координат.