Декартова система координат. Черно белое изображение.
Центр находиться самостоятельно, основываясь на данных по общей площади изображения (центр тяжести).
Далее из центра нужно проводить лучи под углами от 0 до 360 с заданным шагом (например, 5 градусов). И для каждого луча, считать количество черных пикселей на нем.
Как пробовал считать я. Луч брал за гипотенузу, и через тангенс угла - находил противолежащий катет. Проделывал эту операцию для каждого пикселя по оси Х, и на пересечении координат пикселей Х и величины катета - проверял черный пиксель или нет.
Но данные какие то слишком неточные. Для изображения буквы "К" я получил почти одинаковые значения количества пикселей на всех лучах. Подозреваю, что я считаю не правильно. Делаю это на C# .NET.
Сама задача академическая. В чем суть. Строиться гистограмма, которая показывает отношение количества пикселей к углу луча. Для изображений символов, эти гистограммы субъективно похожи. Грубо говоря, для одного символа разных шрифтов - гистограммы будут схожи.
Координаты центра тяжести находятся по формулам.
Для координаты Х
Для координаты Y
Функция A(). Значение равно 1 - если пиксель черный, 0 - если белый.
Посоветуйте что-то или подскажите решение.
Ответ
Посмотрите картинку
Ваши лучи наложенные на пиксельную сетку дают большую погрешность.
Судя по всему, дело именно в этом.
Вот еще хорошая картинка, на которой видно что как лучи пересекают пиксели.
Комментариев нет:
Отправить комментарий