Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распознавание цифр 
:(
    Опции темы
killobyte
Дата 1.9.2010, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 1.9.2010

Репутация: нет
Всего: нет



Вообщем задача: дано трехзначное число в виде изображения, нудно распознать число. Известно что изображение сгенерировано стандартным системным шрифтом размером от 20 до 50.
вот пример 
http://dl.dropbox.com/u/1507766/samples.tar.bz2
но есть некоторые ограничения. размер исходника до 64кб. программа вся одним файлом. за счет чего возникает сомнения по использование однослойного перцептрона. Может можно как то реализовать генерацию изображения заданного шрифта?
PM MAIL ICQ Jabber   Вверх
ИванМ
Дата 1.9.2010, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: нет
Всего: 23



Можно попробовать воспользоваться нейронными сетями. На них такие задачи решают.
PM MAIL   Вверх
killobyte
Дата 1.9.2010, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 1.9.2010

Репутация: нет
Всего: нет



facepalm >_______<
 
я же написал про ограничение размера, и то что считаю сомнительным использование однослойного перцептрона
PM MAIL ICQ Jabber   Вверх
VictorTsaregorodtsev
Дата 1.9.2010, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: 3
Всего: 8



killobyte, Них... не понял. Причём тут персептрон для
реализовать генерацию изображения заданного шрифта? 

А 64кил исходника хватит и для реализации нейросетки посложнее персептрона. Или надо 64кил исполняемого файла?
PM MAIL WWW   Вверх
killobyte
Дата 1.9.2010, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 1.9.2010

Репутация: нет
Всего: нет



для генерации изображения нейросеть не нужна. это просто вариант исходящий из того что шрифты стандартные.
а 64 кб мало потому что

максимальный размер цифры 64х64 (шрифт 50 + закорючки)
10 нейронов, у каждого 64*64 входа. итого получаем 40960 весовых коэффициентов. каждый из них записывается в исходник. числа там 1-2 знака, плюс половна отрицательные, так что на каждое число нужно в среднем 2-3 байта. итого получаем около 100кб
PM MAIL ICQ Jabber   Вверх
maxim1000
Дата 1.9.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



если время не критично - перебор smile
генерируем изображения цифр всеми шрифтами всех размеров и сравниваем попиксельно smile
можно сузить поиск, измерив высоту

естественно, есть смысл распознавать цифры отдельно



--------------------
qqq
PM WWW   Вверх
killobyte
Дата 1.9.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 1.9.2010

Репутация: нет
Всего: нет



вот как раз и вопрос как генерировать изображение с заданным шрифтом?
PM MAIL ICQ Jabber   Вверх
maxim1000
Дата 1.9.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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

например, в WinAPI это - вызов нескольких функций (создать картинку, контекст к ней, шрифт, написать, всё поудалять), в других ОС, думаю, не сложнее

если дело касается C++, то адреса форумов такие:
Unix/Linux
WinAPI
Qt и прочее



--------------------
qqq
PM WWW   Вверх
W4FhLF
Дата 2.9.2010, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



http://habrahabr.ru/blogs/algorithm/101446/

Вот этот вариант может сработать. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Bitter
Дата 2.9.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 4
Всего: 27



а зачем для каждого нейрона делать 64х64 входа? Сделайте 32х32, усредняя соседние значения пикселов. Думаю распознавание цифр от этого не пострадает
PM MAIL ICQ Skype   Вверх
ИванМ
Дата 2.9.2010, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: нет
Всего: 23



Цитата(maxim1000 @  1.9.2010,  21:02 Найти цитируемый пост)
генерируем изображения цифр всеми шрифтами всех размеров и сравниваем попиксельно

Этот вариант, думаю, не подойдет, т.к. существует размытие текста по границам, которое у разных программ свое. Нужно еще знать, с помощью какой программы нарисован шрифт.
PM MAIL   Вверх
Enter
Дата 2.9.2010, 16:58 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 13.2.2007

Репутация: 1
Всего: 2



я бы сделал так:
1. берем картинку
Код
Bitmap bitmap = new Bitmap("C:\\путь к картинке.jpg");

2. отделяем 1 символ
3. либо определяем размер шрифта, либо растягиваем картинку до нужной величины
4. пишем на ней сверху белым цветом цифру
Код
Graphics g = Graphics.FromImage(bitmap);
g.DrawString("1", new Font("Helvetica", 30), Brushes.White, new Point(0, 0));

5. определяем яркость картинки, суммируя яркость всех пикселей
Код
bitmap.GetPixel(e.X, e.Y).GetBrightness();

6. далее цикл по цифрам и по шрифтам
7. самая подходящая цифра будет с самой большой яркостью

ну и далее по символам
естественно, всё это в потоке(ах)

зы. только сейчас посмотрел ссылки.
там алгоритм крутой, и быстрый, но если посмотреть на картинки, то он не справится с некоторыми.

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

Это сообщение отредактировал(а) Enter - 2.9.2010, 17:31
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0834 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.