Подскажите алгоритм распознавания

  • Автор темы Vasya
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

Vasya

На черно-белом листе нужно распознать известную геометрическую фигуру, "залитую", состоящую из прямых линий, на сильно загаженном фоне - например толстый г-образный уголок на листе с текстом, или поверх каракулей. Визуально понятно сразу, а как найти его координаты программным способом?
 
B

Barmutik

Задача распознования CAPTCH крайне не проста и решается в каждом конкретном случае индивидуально... а так копать в распознование образов...
 
P

Pradov

Очень нужно)Я тут взялся бота для игры делать)А там так много цветов....мне нужно чтобы сиреневый распозновало....как быть!С чего вообще начинаить....посоветуйет плиз)
Пасиба)
 
B

Barmutik

Я не в курсе Вашей задачи ... просто так тут не посоветуеш ... приведите примеры картинок на которых нужно распозновать...
 
V

Vasya

пример - лист А4 заполненный текстом размера 10-12 пунктов, и поверх текста в произвольном месте произвольно ориентированный г-образный уголок длиной ребра пусть 1см и толщиной 3 мм.
 
B

Barmutik

Я имел ввиду картинку выложите сюда .. от Вашего объяснения легче не стало..

Вам нужно найти что написано или просто сказать есть он там или нет ?
 
V

Vasya

ex.jpg
Нужно определить координаты его центральной вершины относительно начала листа, и угол поворота, считая г-образную ориентция неповернутой
 
P

Pradov

Ну вот картинка)Там где крсаня "1" ето собсно и надой найти и выделить(нажать)!
 
B

Barmutik

Для: Vasya

Ну для конкретно таких примеров .. просто сканьте картинку на определённый набор пикселов...

Там где чёрная Г ищите к примеру послудовательность черных точек 10 на 10 пикселов .. по идее никакая буква в такое не попадёт ... насчёт поворота по такому же принципу...

Для: Pradov

Аналогично ищите нужные Вам цвета пикселов и найдя их проводите оценку рядом находящихся пикселов на вариант попадания в нужные Вам цвета ...


Это самый простой вариант решения таких проблем как Вам надо...
 
L

lACl

Для: Vasya
привет! у меня есть такая программа. сам писал.
стучись если нужно в аську. вот номер:
367244151
 
Z

Zuzlan

По проблеме распознования образов
Я многократно уже писал программы для распознавания картинок.. Сразу хочу отметить, что универсальный механизм создать невозможно (ну или практически невозможно). А вот для конкретных случаев задача значительно упрощается. Но я использовал практически для всех видов картинок стандартный набор операций, а именно:
1. Перевод картинки в ч.б. (желательно без отенков) стараясь таким образом не затереть важные мне элементы рисунка
2. Уничтожение мусора. В приведенной картинке, где на заднем плане используется текст, то там мусор убрать достаточно просто, для этого нужно пройтись по всем пикселям (или даже лучше не по всем, а прыжками, скажем через 3-5 пикселя) и сравнивать при этом соседние пиксели, расчитывая на то что если выбранный нами пиксель имеет черный цвет, а рядом лежащие - белый, то вероятнее всего изначально выбранный нами пиксель принадлежит тонкой букве, и мы его смело можем закрасить в белый (и даже не только его, а и рядом прилегающие черные пиксели)
3. Сравнивание оставшегося изображения с нашими картинками(чаще всего цифрами, буквами). Поскольку тут присутствует произвольный поворот изображения, то при сравнивании изображений не стоит об этом забывать.

И самое главное - оптимизмровать все процессы на сколько это возможно, потому что если не правильно все сделать, то решение такой задачи для компьютера окажется весьма трудоемким занятием и может затянуться до нескольких десятков секунд...

При создании более унивесальной процедуры определения изображения я не придумал ничего лучше, как:
1. Определение типа картинки (что бы подобрать подходящий для нее тип решения)
2. Собственно применения к ней заранее написанного механизма решения для данного типа картинки.
 
N

niello

Ну а я предлагаю:
1)Рисунок перевести в двухцветный монохромный.
2)Использовать доступ к Битмапу не Gdi так как он очень долгий. При этом пользоваться встроенным ассемблером без использования юнитов.
3)Ищем непрерывное множество пикселей(затемненных)(лучше если пользователь выбирает место г) ищем точку которая одна на уровне вертикально проведеной линии или горизонтально проведено линии(если точек нет то угол возможен таков 0+(П/2)n то есть 0градусов, 90,180,270,360, далее они повторяются- просто проходят круг-период)-таких точек должно быть 3.
=Если одна точка на вертикальной линии 2 точки на горизонтальной и кординаты строк массива точки вертикальной линии больше то это и есть точка от куда выходят углы, она находится в 1 или второй четверти.
=Если одна точка на вертикальной линии 2 точки на горизонтальной и кординаты строк массива точки вертикальной линии меньше то это и есть точка от куда выходят углы, она находится в 3 или 4 четверти.
и так далее просто нада все проанализировать.
Угол же надо находить отношением положений точек прои этом нада учитывать длинну сторон г-образной фигуры. Если стороны одинаковы то это проще.
Если надо более подробно - отпиши я попробую посидеть пару деньков (в свободное время)
:)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!