Распознавание графики на JS
Доброго времени суток!
Какие существуют средства для распознавания графики? Если конкретнее: есть отсканированные изображения шахматных позиций, хочется попробовать обработать эти изображения и получить список всех присутствующих фигур и поля, на которых они присутствуют. Например, вот изображение: ![]() после обработки хочу получить что-то типа: white = { king: "h6", quin: "a3", knight: "c7", p: ["b4", "c3", "g2"] }; black = { king: "f6" } Интересуют инструменты для работы с графикой, как обработать графику на JS? Куда, так сказать, "копать" :) ? P.S. а уменьшить размер картинки в этом посте? |
|
laimas,
не совсем понял, что вы хотели этой статьёй мне сказать :-? |
Цитата:
|
Я согласен, тема не проста - поэтому и хочу её попробовать реализовать. у меня, к примеру, куча старых шахматных книг, все диаграммы довольно стандарнтны, фигуры похожы.
Предположим, что у меня есть база (как описано в этой статье) и принято решение, что такое возможно реализовать. мне интересно - с чего тут лучше начать? я так понимаю, выбор будет между canvas u SVG. Или есть другие библиотеки, которые подходят для подобного рода задач? возможно, кто-то сталкивался |
Цитата:
|
Для начала хотя бы определить клетки, в которых есть фигуры ))
|
Вы сначала игровое поле определите хотя бы. Вряд ли JS для таких задач подходящий язык.
|
Keramet,
А где будет выполняться код? Браузер или нода? В первом случае используй канву и получение цветов пикселей, во втором - наверняка есть модули для всех основных форматов картинок. В обоих случаях в результате ты имеешь на руках двумерный массив цветов пикселей. А дальше кури матчасть. Однако, полагаю, для шахматных картинок все несколько проше, чем для произвольного случая. Сначала определить размер клеток, потом для каждой клетки считать некий хэш и по нему определять тип фигуры. |
Цитата:
Да и не обязательно цвет, это скорее помеха. |
https://habrahabr.ru/post/169249/
------------------------------------------ Интересная задачка, если все картинки с такой же четкостью, можно пробовать решать и на js, к примеру искать замкнутые фигуры определённых максимальных размеров Любой же дефект снятым сканером(к примеру разрыв в обводке фигуры), потребует значительного усложнения. |
Вот простая на первый взгляд задача, и даже о распознавании в ней не пахнет, но ...
Допустим перед загрузкой изображения на сервер или уже на сервере, что не принципиально, нужно удалить черноту или белое обрамляющее рисунок, к примеру это результат сканирования. Даже условно будем считать, что ориентация при этом идеальная, сама полезная часть изображения без угла наклона. Пусть нужно вырезать белую/серую канву. С цветом работать, это много мороки и не удобно, значит преобразуем изображение в градации серого. Работать с цветовой моделью RGB тоже не удобно, опять будут лишние расчеты. А вот цветовая модель HSB в данном случае будет самой удобной - задав 0 для H и S, указав нижний порог яркости (В) до которого нужно удалять найденные пиксели, сравнивая яркость преобразованного RGB цвета ячейки в HSB с заданным диапазоном (для белого/серого от 100% до нижнего указанного). При этом не обязательно сканировать все ячейки каймы, нужно лишь только узнать ее ширину с каждого края, и для этого было бы достаточно опросить центральные по горизонтали и вертикали ячейки, начиная с краев и к центру изображения. Это совсем не много, одного цикла с малым числом итераций хватит. Было бы, если бы не но. А что если изображение, это комната с окном, на стекле которого мороз нарисовал свой шедевр, и стекла которого в аккурат сливаются с каймой, и центральные пиксели как раз напоролись на этот шедвер. Цвет, насыщенность вполне могут попадать в диапазон для удаления. А значит потребуется анализ. А может быть и луна на ночном небе, звезды, паруса яхты... |
Яростный Меч,
хочу пока в браузере. Ноду пока не освоил :( |
Часовой пояс GMT +3, время: 05:41. |