Перейти к содержимому
Compvision.ru

Flame

Пользователи
  • Количество публикаций

    34
  • Зарегистрирован

  • Посещение

  • Days Won

    1

Все публикации пользователя Flame

  1. Да у меня вот диссертация по распознаваниям лиц, нада научную новизну ну вот я и подумал про такое А еще думаю может сделать какой нибудь алгоритм подстройки входных параметров для создания марковских моделей.
  2. А не подскажите можно ли построение модели маркова выполнить с использованием видеокарты? Должно ведь быстрее быть поидее
  3. Да читал я хабр, непойму как вектора по состояниям распределяются, и что дальше делается ) Можешь по коду пояснить? obsInfoVec[ i ] = cvCreateObsInfo( noObs, obsVecLen ); - вот это я так понял вектора создаются. а дальше чета не секу, наверное придется отладчиком до посинения смотреть че как считается )))
  4. А обьясните на пальцах как работают эти марковские модели я понял только что по изображению окно бегает, и что для каждого пикселя в этом окне строится вектор.
  5. Спасибо! потестировал еще и понял что с марковскими моделями меньше ошибок распознавания
  6. Smorodov, Привет! Подскажи, вот там есть в алгоритме такой код с подавлением первого коэффициента: (это у меня под си шарп переделано уже, но суть не в этом) if( SUPPRESS_INTESITY ) { float[] observations = new float[noObs.height * noObs.width * ( obsVecLen + 1 ) ]; hmm.cvlib.cvImgToObs_DCT(iplImg, observations, dctSize, noDCTCoeff, stepSize); ExtractDCT(observations, obsInfoVec[i].obs, noObs.height * noObs.width, obsVecLen); // Подавляем первый коэффициент ДКП // Очистка if (observations != null) { observations = null; } } Вобщем функция cvImgToObs_DCT работает долго если загрузить фотки хотябы 640 на 480 к примеру, потому как массив float[] observations становится очень большим. Тот же eigenface работает быстрее намного Вот пример фото 1. Нужно ли выделять лицо для алгоритма HMM ? с eigenface итак нормально работало без выделения лица. (причем если не выделять лицо HMM у меня иногда ошибки распознавания выдает) 2. Алгоритм так и должен дольше обучаться с большими фотками чем eigenfaces? или можно как то ускорить его? Хотя он даже с маленькими фотками теми что у тебя в программе дольше учиться. Поигрался с параметрами обучения пока ускорить не вышло особо. С исходным примером в архиве HMMFacesAlpha0_1.zip пока не разобрался, немогу скомпилировать его под студию, хотел посмотреть как оно там будет, но код вроде 1 в 1 3. И есть ли какие то преимущества скрытых марковских моделей перед eigenface?
  7. Smorodov, прошу прощения, не прочитал что там у вас реализация в отдельном потоке, сейчас буду разбираться, спасибо вам!
  8. Подскажите как это реализовать? Без таймера используя OpenCV как сделать захват кадров? WaitKey не предлагать. Есть такой код: (Вариант 1) private void button6_Click(object sender, EventArgs e) { CvCapture capture = CvCapture.FromCamera(0); CvWindow windowCapture = new CvWindow("SampleCapture"); while (CvWindow.WaitKey(33) < 0) { pictureBox1.Image = capture.QueryFrame().ToBitmap(); } } Изображение выводится на форму но и окно появляется ненужное. И изображение чуть дерганое. Изменяем код на такой: (Вариант 2) private void button6_Click(object sender, EventArgs e) { CvCapture capture = CvCapture.FromCamera(0); //CvWindow windowCapture = new CvWindow("SampleCapture"); while (CvWindow.WaitKey(33) < 0) { pictureBox1.Image = capture.QueryFrame().ToBitmap(); pictureBox1.Refresh(); } } Изображение вроде как плавнее становится, но и проц программа сильнее юзает, ибо pictureBox1.Refresh() в цикле видимо не есть хорошо, к тому же окно с программой перестает реагировать на события от мышки, тоесть сделать с ним ничего нельзя. Вариант с таймером: CvCapture capture; private void button6_Click(object sender, EventArgs e) { capture = CvCapture.FromCamera(0); timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { pictureBox1.Image = capture.QueryFrame().ToBitmap(); } Изображение так же чуть дерганое как в первом варианте. А как сделать отдельный поток? Или в отдельном потоке будет свой таймер? Использую OpenCVSharp, но это тут непринципиально, просто хочу понять принцип как в отдельном потоке сделать
×