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 килобайт ) Кол-во скачиваний: 2823
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Так... Прочитал я, как ты прокомментировал код из сообщения №8, и что-то мне кажется, что ты не до конца понимаешь, что там происходит...

Итак, вот тот же фрагмент, но с моими комментариями:
    // почему ты избавляешься от константности - непонятно. У меня наоборот
// выработалась привычка: все, что только можно объявлять со спецификатором const
const int value = 33;

for(int i=0;i<w;++i)
for(int j=0;j<h;++j)
// проверяем каждый пиксель на черный цвет, и если да, то добавляем
// к ячейке матрицы, к которой принадлежит этот пиксель, единицу. Другими
// словами - здесь идет подсчет черных пикселей в каждой из областей 8*8
matrix[j/8][i/8]+=(image.pixel(i, j) == QColor(Qt::black).rgb())? 1 : 0;
for(int i = 0; i < 30; i++)
{
for(int j = 0; j < 30; j++)
{
// А теперь, устанавливаем ячейку в 0, если черных пикселов в соотв. области
// было найдено меньше, чем задано в value, иначе устанавливаем в 1
// Эту строку (с делением) можно заменить на:
// matrix[i][j] = (matrix[i][j] > value) ? 1 : 0;
// или, что одно и то же:
// if(matrix[i][j] > value) matrix[i][j] = 1; else matrix[i][j] = 0;
matrix[i][j] /= value;
cout << matrix[i][j] << " ";
str.append(QString::number(matrix[i][j])); // число в строку
etalonArray.push_back(matrix[i][j]); // etalonArray - qVector <int>
}
arrayList << str;
str.clear();
}
Обрати внимание, как проверяется цвет. Лучше не завязываться на "магические числа"...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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

 





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