|
Модераторы: Rickert |
|
Гость_mln |
|
|||
Unregistered |
Всем привет.
Задание это по предмету Системы искусственного интеллекта. Задача такая: необходимо реализовать распознавание геометрических фигур на плоскости. Есть bmp картинка треугольника, квадрата, круга или ромба, например. Пусть уже имеется матрица цветов этой картинки, т.е. каждому пикселю bits[i] соответствует его цвет. Как можно реализовать распознование и по какому алгоритму? Посоветуйте пожалуйста. |
|||
|
||||
DragonFire |
|
|||
Опытный Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Ну можно попробовать использовать нейронные сети... Научить нейрон отличать квадрат, от ромба и трейгольник, от круга... Сам я работал только с текстом, но я думаю, тут такая же фишка прокатит...
Вот по этой ссылочке я описывал распознование текста, может поможет: http://forum.vingrad.ru/index.php?showtopic=68416 И еще, размеры картинок должны быть одинаковые... Вот единственный недостаток... |
|||
|
||||
DENNN |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 3 Всего: 43 |
Ищите геометрические примитивы - линии и точки. Потом уже анализ изображения на уровне геометрии, а не растра
|
|||
|
||||
Guest |
|
|||
Unregistered |
вот как нейрон обучать хотелось поподробнее понять. а тот пост я уже читала, думаю здесь иначе придется делать, не через векторы.. |
|||
|
||||
Гость_mln |
|
|||
Unregistered |
вряд ли, ведь картинка как раз и задана как растр, матрицей пикселей.. |
|||
|
||||
DragonFire |
|
|||
Опытный Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
А в том то и дело, что не вектора. Именно простенькая нейронная сетка.
Есть у тебя нейрон. Ты подаешь ему на вход сигналы. Допустим у нас картинка 5х5, поэтому сигналов 25: сигнал "1" - если черная клетка, "0" - если белая. Нейрон твой жует твои сигналы и выдает ответ "Треугольник" это или нет, рассчитывая это по формуле: <РЕЗУЛЬТАТ>=<сигнал1>*<Вес1>+<сигнал2>*<Вес2>+...+<сигнал25>*<Вес25>; If <РЕЗУЛЬТАТ> > <Порог> then Буква - А, если нет, то не А. Все здесь сводится к тому, чтобы рассчитать эти <Вес> так, чтобы когда у нас поступали сигналы c треугольника, то выражение <Результат> было больше порога, обычно он берется 1.5 или 0.5. Такой процесс называется обучением нейрона. Вот и вся задача. Обучаешь 4 нейрона - каждый на распознования своей определенной геометрической фигуры... Теперь об обучении. Для начала создай текстовый файл, в котором будут хранится веса синапсов(изначально поставь им значения по 0.1 и поставь порог в программе 1.5). Далее, в своей программе загрузи этот файл и загрузи рисунки твоих фигур. Для начала попробуй создать нейрон, распознающий треугольник твоя фигура - или нет. Для этого считывай с картинки сигналы каждого пикселя и рассчитывай результат по вышеприведенной формуле. Если он не тот, какой нужен (например ты даешь ему круг, а он пишет, что треугольник), то изменяй вес каждого синапса "ЧЕРНОЙ" клетки на 0.01. И пересчитывай по-новой. Если он стал отвечать правильно, то переходи к следующей картинке и работай с ней. Когда дойдешь до последней картинки, переходи на первую. Кстати, забыл сказать (но я думаю ты и сам догадался) если ты загружаешь след. картинку и результат сразу правильный - сразу переходи с следующей. И если все картинки правильно распознаются, то сохраняй значения в файл и радуйся... Единственное что - нужно прогнать программу раз 100, чтобы нейрон обучился, поэтому можешь придумать какой-нибудь автоматический цикл. И если хочешь, скажи мне свое мыло, я тебе пришлю пример программы, тока для букв. А может (если будет время) и напишу именно прогу для геом. фигур. Если что не понятно объяснил - спрашивай. Я не учитель... Прошу модератора разрешить прикрепить рисунок к этому сообщению, а то то что я написал не очень понятно... Плиз... DENNN рисунки помещать хочу! |
|||
|
||||
DENNN |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 3 Всего: 43 |
Я, собственно, и предлагаю искать из по растру. К примеру, уже давно для различного подвида задач используются алгоритмы определения координат точки (или площадного объекта) по изображению с подпиксельной точностью. |
|||
|
||||
Тима |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.3.2006 Репутация: нет Всего: нет |
Привет.
Мне надо собрать различные алгоритмы распознавания геометрических фигур(чисто теорию, не реализовывая). Можешь чем-нибудь почомь? |
|||
|
||||
DragonFire |
|
|||
Опытный Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Вот - с помощью сеток нейронных...
|
|||
|
||||
mr.DUDA |
|
|||
3D-маньяк Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
DragonFire, нажми "предварительный просмотр", там снизу кнопка "Обзор" для прикрепления файлов...
-------------------- |
|||
|
||||
DragonFire |
|
|||
Опытный Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
Класс, тока криво как то... на главную нельзя вынести было, чтобы нубы как я не парились ?
|
|||
|
||||
Мурлыкатам_ |
|
|||
Опытный Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
А может поможете найти алгоритм для определения количества углов в фигуре, во время обхода границы фигуры методом Жука?
|
|||
|
||||
Мурлыкатам_ |
|
|||
Опытный Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
DENNN,
А можно с этого места поконкретней? Мне оч нуно посчитать углы в фигурах, все фигуры - черные, фон - белый. Обхожу пока по клику мышью границу методом жука, тот метод которым я пользуюсь считает чего-то у треугольника и прямоугольника одинаково кол-во углов :(( Мот подскажите хотя бы название какого-нить алгоритма поиска углов в фигуре? |
|||
|
||||
DragonFire |
|
|||
Опытный Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
м.б. самому попробовать придумать? Задачка же вроде скорее геометрическая чем на н.с... Сам угол можно найти скажем так: берем 2 соседние точки пишем уравнение прямой и проходим по всем точкам в линии, как тока какая то точно не принадлежит прямой значит это угол, и мы стоим новую прямую и идем дальше...
Ну это навскидку, я люблю просто велосипеды((( |
|||
|
||||
Мурлыкатам_ |
|
|||
Опытный Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
DragonFire, приколист )) велосипеды ))
Я уже придумал Даже работает. Если кому интерестно или нужно, могу поделиться идеей. |
|||
|
||||
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |