Вы будете двигаться быстрее если воспользуетесь опытом других:
https://en.wikipedia.org/wiki/Optical_character_recognition.
Я имею представление о существующих способах распознавания символов. Ключевые моменты там большие данные и машинное обучение. Поэтому ваша ссылка мне ничего нового не дает. В данном случае, нас интересует расстояние Хэмминга (
https://ru.wikipedia.org/wiki/Расстояние_Хэмминга ), для вычисления которого вычисляется значение, называемое хэшом (
https://habr.com/ru/post/120562). Поэтому я тоже использую это название.
slavav писал(а):
Слово хэш в данном случае не годится. Хэш обозначает разрывное перемешивающее отображение, когда близкие значения после хеширования сильно различаются (поменяли один бит - совершенно другой хэш).
Вам, наоборот, нужно непрерывное отображение.
В данном случае, так и есть, поменяли один бит – совершенно другой хэш.
Мне нужно не столько «непрерывное отображение», сколько критерий группировки для похожих символов. Однако критерий похожести имеет смысл только для пары матриц символов. Но это отношение не эквивалентно, т.е., если матрица А похожа на матрицу Б, а матрица Б похожа на матрицу С, то матрица А не обязательно должна быть похожа на матрицу С. Например, выберем критерий похожести, различие не более, чем в одной точке сравниваемых матриц. При этом возможна ситуация, когда пара матриц А и Б и пара Б и С различаются только в одной точке, а матрицы А и С уже в двух, что не соответствует выбранному критерию сравнения.
Упомянутое выше, расстояние Хемминга определенно на паре бинарных матриц, являющихся сжатыми отображениями размерности 8*8, для произвольных матриц большей размерности, и равно количеству несовпадающих битов в хэше или соответствующих ячеек в матрицах. А поскольку этот критерий не является эквивалентным, то мы не можем с его помощью разбить исходное множество матриц на классы эквивалентности.
slavav писал(а):
По делу: если матрицы одного размера то посчитайте количество различающихся пикселей (вы и сами это предлагали. Это почему-то не подходит?).
Подходит, только это годится для поиска конкретной матрицы, как я уже упоминал, а не для их группировок.
slavav писал(а):
Если матрицы разного размера, то масшабируйте их в один размер. Полученные матрицы будут уже не бинарными, а вещественными, со значениями в единичном отрезке. Сосчитайте сумму квадратов разниц пикселей. Это даст вам расстояние.
Вы повторяете мои слова. Матрицы не будут вещественными, в этом нет никакой необходимости. Похоже, мы просто по-разному понимает одинаковые слова. Есть черный растровый символ, представленный на белом фоне в одной матрице и точно такой же, но другой размерности в другой матрице. Белая ячейка – ноль, черный пиксель – единица. Нет никаких вещественных матриц от слова «совсем». Сумма квадратов здесь это плохой критерий для сравнения похожих матриц, так как одной сфере с общим радиусу может принадлежать много различных матриц. Нас устраивает только попиксельное сравнение с небольшим отклонением, но это отношение не является эквивалентным.
slavav писал(а):
Важное: вы, видимо, пытаетесь матрицу перевести в число, а затем измерять расстояние между числами. Это привлекательный путь с точки зрения производительности, но не правильный - не получится многомерное пространство (матрицы) уложить в одномерное (числа) с сохранением близости (близкие матрицы переходят в близкие числа и наоборот).
Мы приводим произвольные матрицы к одному размеру. В их ячейках только нули и единицы, что до, что после. Из 64 битов подобной матрицы мы получаем любым единообразным способом 64-битное число. Оно может служить критерием для сравнения и группировки похожих матриц только в случае равенства хэш-кода. Причем порядок хэша нас не интересует. А общие матрицы, с одинаковым хэшем можно усреднить. Нам нужно только сокращение мощности исходного множества. Например, был вначале миллион символов (матриц). Мы убрали абсолютно точные дубликаты, стало 30 тысяч символов. Мы применили группировку по равенству расстояния Хэмминга, стало 7 тысяч символов. Но это все равно много, поскольку в алфавите порядка 100 символов. Дл дальнейшего сокращения нужны дополнительные идеи.