История изменений
Исправление Chord, (текущая версия) :
То есть один примитив — 10x10 пикселов? Градаций серого нет, строго чёрные или белые пикселы?
да, один примитив 10х10, градации серого могут быть на границах примитива из-за сглаживания
Если при каждом запуске форма примитивов меняется, то, получается, ты сперва составляешь полный набор, с которым впоследствии сравниваешь?
именно так, это делается один раз, поэтому скорость составления некритична.
Если форма и положение примитива не меняется в течение одного запуска, то можно просто сравнивать с шаблоном
В течение одного запуска форма не меняется, но положение может меняться, поэтому надо просматривать всю картинку 20х20 клеток
Тейк про диагональный хеш, если честно, я не понял — зачем оно надо?
Сравнивать два хэша (uint) быстрее, чем попиксельно сравнивать картинки. И чем больше примитивов - тем более выгодно использовать целочисленное сравнение.
Если читать по горизонтали (или вертикали) к примеру одну линию в пределах клетки 10х10, например по центру клетки, то иногда возникают коллизии, два разных примитива могут давать одинаковый хэш. При чтении по диагонали коллизий нет, однозначно хэш определяет примитив.
В общем скачиваю виндовый qt, посмотрю, если скорость как в моём алгоритме устраивает - так и оставлю. Если будет медленнее, чем в линуксе - буду смотреть буфер
Исходная версия Chord, :
То есть один примитив — 10x10 пикселов? Градаций серого нет, строго чёрные или белые пикселы?
да, один примитив 10х10, градации серого могут быть на границах примитива из-за сглаживания
Если при каждом запуске форма примитивов меняется, то, получается, ты сперва составляешь полный набор, с которым впоследствии сравниваешь?
именно так, это делается один раз, поэтому скорость составления некритична.
Если форма и положение примитива не меняется в течение одного запуска, то можно просто сравнивать с шаблоном
В течение одного запуска форма не меняется, но положение может меняться, поэтому надо просматривать всю картинку 20х20 клеток
Тейк про диагональный хеш, если честно, я не понял — зачем оно надо?
Если читать по горизонтали (или вертикали) к примеру одну линию в пределах клетки 10х10, например по центру клетки, то иногда возникают коллизии, два разных примитива могут давать одинаковый хэш. При чтении по диагонали коллизий нет, однозначно хэш определяет примитив.
В общем скачиваю виндовый qt, посмотрю, если скорость как в моём алгоритме устраивает - так и оставлю. Если будет медленнее, чем в линуксе - буду смотреть буфер