IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Алгоритм распознования образов, основанный на Хеминговой мере близости. c++/Qt
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Суть такая : есть эталонная картинка с символом, пользователь в поле ввода, рисует свой символ, после чего, программа должна распознать введенный символ и указать процент вероятности.
вот примерно вот как Здесь или тут.
Интерфейс я прикрутил, рисовалку сделал. Но есть одна мне не понятная штука , вот первый шаг алгоритма :
Цитата
Шаг 1. [Преобразование символов] Шаблоны распознаваемых M
символов разбивают на растровые картинки размером 30х30. В том случае,
если на ячейку накладывается символ, ей приписывают единицу, в
противном случае - ноль (см. рис. 2).

Допустим, у меня есть QPixmap размером 231х231, из него я получаю QImage(что бы можно было получить доступ к пикселам) такого же размера. Но тут встает вопрос..как делить картинку на растры 30х30? В смысле, определить цвет-то то я смогу (для того, что бы узнать, находиться символ в растре или нет) , а вот как поделить и отрисовать пиксельную сетку, при учете, что изображение шириной и высотой 231 будет всего 7 полных квадратов 30х30... norespect.gif
Прикладываю методичку к посту..


Прикрепленные файлы
Прикрепленный файл  Распознавание_образов.pdf ( 276.95 килобайт ) Кол-во скачиваний: 2830
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Ну я вообще говорил про то, что как строить пиксельную сетку из матрицы ?
Умножать индекс элемента на 8, и это будет координата пикселя?
Только вот у меня проблема в том, что цвета какие-то странные дает pixel(int x,int y) у QImage,а точнее, их там более 30 разных возвращает.. Ведь pixel() возвращает QRgb, что есть тайпдеф для unsigned int , и почему-то их там много очень получается. а должно , по-логике , быть 2.. wacko.gif
И из-за этого матрица будет вся в нулях.
Рисую-то я вот так

//Ручка.
//drawPen.setColor(Qt::black);
//drawPen.setCapStyle(Qt::RoundCap);
//drawPen.setBrush(Qt::SolidPattern);
//drawPen.setWidth(17);
//drawPen.setStyle(Qt::SolidLine);
//drawPen.setJoinStyle(Qt::RoundJoin);
bool recognizer::eventFilter(QObject *o, QEvent *e)
{
//что бы не наследоваться от Qlabel, и не придумывать свою рисовалку, установил фильтер событий да место рисования (QPixmap в QLabel)
QMouseEvent me = *(static_cast<QMouseEvent*> (e));
if (o == ui->inputSymbolFiled)
{
if (me.type()== QEvent::MouseButtonPress)
{
if(me.button() == Qt::LeftButton)
{
painter->begin(inputSymbolPixmap);
painter->setRenderHint(QPainter::HighQualityAntialiasing,true);
painter->setPen(drawPen);
painter->drawLine(me.pos(),me.pos());
painter->end();
lastpoint=me.pos();
ui->inputSymbolFiled->setPixmap(*inputSymbolPixmap);
return true;
}
}else
if (me.type() == QEvent::MouseMove)
{
painter->begin(inputSymbolPixmap);
painter->setRenderHint(QPainter::HighQualityAntialiasing,true);
painter->setPen(drawPen);
painter->drawLine(lastpoint,me.pos());
painter->end();
lastpoint=me.pos();
ui->inputSymbolFiled->setPixmap(*inputSymbolPixmap);
return true;
}
}
return QWidget::eventFilter(o,e);
}



Upd : Добавил исходники...

Сообщение отредактировано: Andrewshkovskii -


Прикрепленные файлы
Прикрепленный файл  recognizer.zip ( 11.75 килобайт ) Кол-во скачиваний: 357
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Andrewshkovskii   Алгоритм распознования образов   8.12.2009 19:34
volvo   Я бы сделал так: берем QPicture размером 240*240 (…   8.12.2009 20:00
prednisolone steroids side effec   Prix Cialis   14.11.2021 11:32
Andrewshkovskii   Ну не QPicture ты имел ввиду,а QImage, наверное?:)…   8.12.2009 21:08
can i take tramadol neurontin an   Clomid 2 Comprimes   10.12.2021 6:09
volvo   Бррр... Мы по-моему с тобой на разных языках говор…   8.12.2009 21:22
Andrewshkovskii   Я понимаю, что начинаю опять тебя злить..Но я пыта…   8.12.2009 21:56
volvo   В общем, рисует пользователь изображение на QImage…   8.12.2009 23:12
Andrewshkovskii   Ну я вообще говорил про то, что как строить пиксел…   8.12.2009 23:38
Andrewshkovskii   "Эмпирическим".. путем я попытался найти…   9.12.2009 1:08
Andrewshkovskii   Почему появилась 2ой - понял, из-за matrix[i/8][j/…   9.12.2009 1:36
lasix overnight buy no prescript   Amoxicillin Erowid   18.09.2021 1:17
volvo   :lol: Это я стормозил... Если i это ширина, а j -…   9.12.2009 1:37
Andrewshkovskii   хех..Понятно..Спасибо.но вот мой основной вопрос, …   9.12.2009 1:45
volvo   Почему ты рассматриваешь только один пиксель? Если…   9.12.2009 1:51
Andrewshkovskii   А почему.. +7, тоесть это какая-то переменная от 0…   9.12.2009 2:20
volvo   Ну, потому, что если индекс = 0, то у нас пикселы …   9.12.2009 2:31
Andrewshkovskii   Хм..ну верно, ага, спасибо!   9.12.2009 2:40
should i take 1mg or 5mg of prop   Amoxicillin Drug Facts For Lyme Disease   6.09.2021 13:14
volvo   Так... Прочитал я, как ты прокомментировал код из …   9.12.2009 16:12
Andrewshkovskii   Ну единственное что было не понятно, так это почем…   9.12.2009 17:52
nishaknapp   Why not settling on games that is fun and at the s…   29.07.2022 17:19


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 2:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name