Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.02.2008, 00:41
ALiEN_ вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_ Посетить домашнюю страницу ALiEN_ Найти все сообщения от ALiEN_
  № 1  
Ответить с цитированием
ALiEN_
UFO
 
Аватар для ALiEN_

Регистрация: Jul 2007
Сообщений: 173
По умолчанию Распознавание графических примитивов

Может кто-то сталкивался, либо видел готовые библиотеки? Необходим простой движок для распознавания нарисованных от руки примитивов: круг, треугольник, квадрат и пр.

Распознавание и отрисовка уже нормального объекта без тремора от руки.

Старый 01.02.2008, 10:15
Pecher вне форума Посмотреть профиль Отправить личное сообщение для Pecher Найти все сообщения от Pecher
  № 2  
Ответить с цитированием
Pecher
 
Аватар для Pecher

Регистрация: Jun 2005
Адрес: Bryansk
Сообщений: 73
У меня в голове возникают только мысли о нейросети, но во флэше наверно много ресурсов будет кушаться... Готовых библиотек как-то не встречалось.
__________________
Flash can do it.

Старый 01.02.2008, 13:22
VovkaMorkovka вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka Найти все сообщения от VovkaMorkovka
  № 3  
Ответить с цитированием
VovkaMorkovka
[+3 13.02.08]

Регистрация: Apr 2006
Сообщений: 421
Если рисуется во флеш и линию можно запомнить, то все достаточно просто. В задачах распознавания образов на картинках проблема не в сопоставлении фигуры с образцом, а в отделении линии фигуры от линий фона. А если рисуется и распознается сразу, то можно довольно быстро сделать самому и никаких нейронных сетей не нужно, причем тормозов никаких не будет. Вот посмотрите в самом Flash Professional CS если вы рисуете линию, то она чудесным образом сглаживается.
Если нужно именно сгладить линию, то нужно воспользоваться аппроксимацией сплайном, а если нужно именно геометрический примитив распознать, то нужно его сопоставить с образцом. Короче, конкретизируй чего нужно и я примерный алгоритм накропаю


Последний раз редактировалось VovkaMorkovka; 01.02.2008 в 13:39.
Старый 01.02.2008, 14:43
flash33 вне форума Посмотреть профиль Отправить личное сообщение для flash33 Найти все сообщения от flash33
  № 4  
Ответить с цитированием
flash33
 
Аватар для flash33

Регистрация: Nov 2005
Сообщений: 1,155
Уважаемый VovkaMorkovka, накропай, будь другом, алгоритм распознавания геометрических форм. ТЗ примерно такое
1. Имею битмапдату с программно нарисованным примитивом (ну давай для простоты черным по белому)
а) Овалом (произвольного размера, наклона, растяжения
б) Прямоугольником (те же самые вариации)
в)Треугольником(см. выше)
г)Прямая (см. выше)
2. Хочу иметь функцию типа: function_of_recognition(bitmapdata):String;
где в качестве аргумента только битмапдата, (и более ничего) - на выходе строка с возможными значениями
а) "окружность"
б) "прямоугольник"
в) "треугольник"
г) "прямая"
Мысль ясна? В путь, мысленно я с тобой


Последний раз редактировалось flash33; 01.02.2008 в 14:46.
Старый 01.02.2008, 15:25
VovkaMorkovka вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka Найти все сообщения от VovkaMorkovka
  № 5  
Ответить с цитированием
VovkaMorkovka
[+3 13.02.08]

Регистрация: Apr 2006
Сообщений: 421
1) На битмапдате только сплошная выпуклая монтохромная фигура и белый фон?
2) Растянутый прямоугольник - есть паралелипипед это отдельно?
3) Что в твоем понимании прямая?

Старый 01.02.2008, 15:53
flash33 вне форума Посмотреть профиль Отправить личное сообщение для flash33 Найти все сообщения от flash33
  № 6  
Ответить с цитированием
flash33
 
Аватар для flash33

Регистрация: Nov 2005
Сообщений: 1,155
1.Да, но только не сплошная фигура, то есть beginFill с цветом фона
2.Параллелограм, это прямоугольник со skew, желательно, но можно и без него
3.Прямая, нарисованная программно
moveTo(x1, y1);
lineTo(x2, y2)
Нечто, что похоже на прямоугольник, но не имеющего внутреннего заполнения.


Последний раз редактировалось flash33; 01.02.2008 в 15:59.
Старый 01.02.2008, 16:59
VovkaMorkovka вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka Найти все сообщения от VovkaMorkovka
  № 7  
Ответить с цитированием
VovkaMorkovka
[+3 13.02.08]

Регистрация: Apr 2006
Сообщений: 421
Просто прямую можно считать прямоугольником

Так вот, алгоритм:
1) Проводим прямые вдоль битмапы
2) находим крайние точки фигуры, т.к. она выпуклая их будет либо 0 либо две на каждой линии
3) Проверяем не прямая - ли это, думаю понятно как это сделать
4) Берем любую точку, находим ближайшую к ней из массива точек, далее ближайшую к найденной и так получаем таблицу точек упорядоченную по некоторому параметру t
5) Далее аппроксимируем заданную ф - цию последовательно эллипсом, параллепипедом, треугольником центры которых находятся в центре масс фигуры, причем аппроксимация по этому самому параметру t.
6) Сравниваем полученные результаты, та фигура, которая даст наилучшее приближение и будет искомой

Усе


Последний раз редактировалось VovkaMorkovka; 01.02.2008 в 17:09.
Старый 01.02.2008, 17:27
ALiEN_ вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_ Посетить домашнюю страницу ALiEN_ Найти все сообщения от ALiEN_
  № 8  
Ответить с цитированием
ALiEN_
UFO
 
Аватар для ALiEN_

Регистрация: Jul 2007
Сообщений: 173
хм ... почитал, много думал.

Сегодня ночью не дождавшись ваших ответов написал небольшой пример. вот ссылка: http://***********/1718219

Впринципе работает все, но пока подглючивает, уже есть идеи как доработать.

Как делал:
Идея с нейронными сетями отпала сразу, как не реальная по времени написания. Хотелось быстро =).
Принцип простой, в класс передается массив точек координат микролиний из которых рисуется фигура. Класс ищет углы, обрабатывая массив следующим образом. Берется произвольная точка в центре нарисованной фигуры и от неё мерятся длины к каждой точке, если у нас длина а < длины a + 1, и при этом а + 2 < a + 1, значит это угол.
В итоге класс отдает простой массив углов, по которым рисуется фигура. Да, еще сделал если фигура открытая, но точка конца и точка начала почти совпадает, то я её закрываю.

Старый 01.02.2008, 17:59
flash33 вне форума Посмотреть профиль Отправить личное сообщение для flash33 Найти все сообщения от flash33
  № 9  
Ответить с цитированием
flash33
 
Аватар для flash33

Регистрация: Nov 2005
Сообщений: 1,155
ALIEN, мы тут вообще то про немного другое.
VovkaMorkovka, я запутался в Вашей терминологии... Если не трудно выложите реализацию в AS, а то может Вы это чисто теоретизируете, а смысла в этом вовсе нет. Сорри

Старый 01.02.2008, 18:01
VovkaMorkovka вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka Найти все сообщения от VovkaMorkovka
  № 10  
Ответить с цитированием
VovkaMorkovka
[+3 13.02.08]

Регистрация: Apr 2006
Сообщений: 421
Как будет время сделаю

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:52.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.