Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> распознавание образа 
:(
    Опции темы
bagos
Дата 30.10.2009, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Народ кто сталкивался с распознованием образов, нужно распознавать цифры от 0 до 99. Сам впервые с этим сталкиваюсь. На картинке число 8, его то и надо определить.
user posted image
PM MAIL   Вверх
bagos
Дата 30.10.2009, 04:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нашел программу, которая довольно лихо определяет текст, но она определяет только если текст черного цвета, а фон белого. Пробовал переводить в ч/б цвет,все равно не помогло.
PM MAIL   Вверх
Alexeis
Дата 30.10.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



bagos, цифры всегда точь в точь такие? Картинка BMP?



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bagos
Дата 30.10.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



картинка bmp,цифры всегда такие, только по горизонтали могут быть расположены слева,в центре или справа.

Добавлено через 10 минут и 58 секунд
Alexeis, на самом деле картинка изначально цветная(фон один и тот же, цвет числа может быть желтым, зеленым,синем,красным), это я ее перевел в черно белую, предполагая что так будет правильней привести к какому то знаменателю. Вот исходная
user posted image
и еще
user posted image
PM MAIL   Вверх
Alexeis
Дата 30.10.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Способ такой, делаются образы всех цифр. Дальше берем первую цифру из образа и начинаем попиксельно сравнивать строки картинок. Если нашли различие то сдвигаемся вправо на 1 пиксель в основной картинке и сравниваем снова построчно картинку и образ. Если такая цифра есть, то в определенной позиции все построчные сравнения совпадут, это место нужно запомнить (позицию по Х). Тоже самое сделать с образами всех цифр. Результаты объединяем в массив, где каждый элемент цифра + позиция. Сортируем массив по возрастанию, по полю позиция.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bagos
Дата 30.10.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Alexeis, спасибо! Алгоритм вроде не сложный, буду реализовывать)))
PM MAIL   Вверх
bagos
Дата 31.10.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хотя опыта работы с графикой не имею.
1. Сделать образы всех цифр,это как делается? сохранить картинку с каждым числом в файл? Прошу разъеснить!
PM MAIL   Вверх
Alexeis
Дата 31.10.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(bagos @  31.10.2009,  18:35 Найти цитируемый пост)
сохранить картинку с каждым числом в файл? Прошу разъеснить! 

  Можно в файл, можно в ресурс, как удобно. Затем загрузить в TBitmap.
Цитата(bagos @  31.10.2009,  18:35 Найти цитируемый пост)
Сделать образы всех цифр,это как делается?

  В графическом редакторе вырезать и создать отдельную картинку.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bagos
Дата 31.10.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо за ответ!
Картинки что я здесь выкладывал с цифрами, являются образами? или все таки их нужно обрезать по краям
PM MAIL   Вверх
Alexeis
Дата 31.10.2009, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



  Главное не резать сверху и снизу.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bagos
Дата 31.10.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Alexeis, образы сделал(все картинки с числами обрезал и сохранил) выглядит так

user posted image

а картинка которую будем получать на входе для распознавания 
user posted image

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

Цитата

Дальше берем первую цифру из образа и начинаем попиксельно сравнивать строки картинок.

поясните пожалуйста что значит сравнить строки картинок? картинка состоит из пикселей, мы сравниваем каждый пиксель по столбцам и строкам
типа 
Код

for x:=0 to pixelColCount do
for y:=0 to pixelRowCount do
 if img_a.pixel[x,y] = img_b.pixel[x,y] then

что то, кстати что)))
    

PM MAIL   Вверх
Alexeis
Дата 31.10.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



bagos, я говорил образы цифр, а не чисел. Это разные вещи...

Цитата(bagos @  31.10.2009,  21:19 Найти цитируемый пост)
поясните пожалуйста что значит сравнить строки картинок?

  Физически битмап храниться как массив строк. CompareMem сравнивает куски памяти, при том довольно быстро. Пикселы в строке идут непрерывно, байт за байтом, поэтому за 1 вызов можно сравнить целую строку.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bagos
Дата 1.11.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



делаю так
Код

var
bmp_now,bmp_obraz:Graphics.TBitmap;
dc:HDC;
begin
bmp_now := Graphics.TBitmap.Create;
bmp_now.width := 82;
bmp._now.height := 15;
dc := getdc(0);
bitblt(bmp_now.canvas.handle,0,0,bmp_now.width,bmp_now.height,dc,100,100,srccopy);
bmp_now.ingorepalette := true;




bmp_now.PixelFormat := pf24bit;
bmp_obraz.PixelFormat := pf24bit;

здесь должно быть построчное сравнение строк, правда я запутался
Код

if not CompareMem(bmp_now.Scanline[1],bmp_obraz.Scanline[1],bmp_now.Width*bmp_now.Height*3) then
 


PM MAIL   Вверх
Alexeis
Дата 1.11.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



bmp_now.Width*bmp_now.Height*3 это размер всего растра. Длинна строки bmp_now.Width*3
CompareMem нужно делать в цикле от нуля до bmp_now.Height - 1


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bagos
Дата 1.11.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

var
bmp,bmp_ci: Graphics.TBitmap;
DC: HDC;
i,j:integer;
begin
try
bmp:=Graphics.TBitmap.Create;
bmp.Height:=15;
bmp.Width:=82;
bmp.PixelFormat := pf32bit;
DC:=GetDC(0);
bitblt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, DC, 954, 150, SRCCOPY);
bmp.IgnorePalette:=true;


bmp_ci:=Graphics.TBitmap.Create;

for i:=0 to 9 do
  if FileExists(IntToStr(i)+'.bmp') then
  begin
    for j:=0 to bmp.Height-1 do
    begin
      bmp_ci.LoadFromFile(IntToStr(i)+'.bmp');
      if not CompareMem(bmp.ScanLine[1],bmp_ci.ScanLine[1],bmp.Width*3) then
      здесь уходим вправо на 1 пиксель?
      а если тру?
     end;


  end;

ReleaseDC(0, DC);


помогите с реализацией кода, сам не справляюсь

Добавлено через 5 минут и 30 секунд
создал 10 файлов bmp - образы цифр, от 0 до 9 соответственно.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


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

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


 




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


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

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