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

Flame

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

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

  • Посещение

  • Days Won

    1

Сообщения, опубликованные пользователем Flame


  1. Да у меня вот диссертация по распознаваниям лиц, нада научную новизну ну вот я и подумал про такое :)

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


  2. Да читал я хабр, непойму как вектора по состояниям распределяются, и что дальше делается )

    Можешь по коду пояснить?

    obsInfoVec[ i ] = cvCreateObsInfo( noObs, obsVecLen ); - вот это я так понял вектора создаются.

    а дальше чета не секу, наверное придется отладчиком до посинения смотреть че как считается )))


  3. 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 работает быстрее намного :)

    Вот пример фото IWXTV68p.jpg

    1. Нужно ли выделять лицо для алгоритма HMM ? с eigenface итак нормально работало без выделения лица. (причем если не выделять лицо HMM у меня иногда ошибки распознавания выдает)

    2. Алгоритм так и должен дольше обучаться с большими фотками чем eigenfaces? или можно как то ускорить его? Хотя он даже с маленькими фотками теми что у тебя в программе дольше учиться. Поигрался с параметрами обучения пока ускорить не вышло особо.

    С исходным примером в архиве HMMFacesAlpha0_1.zip пока не разобрался, немогу скомпилировать его под студию, хотел посмотреть как оно там будет, но код вроде 1 в 1

    3. И есть ли какие то преимущества скрытых марковских моделей перед eigenface?


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

    Подскажите как это реализовать? Без таймера используя 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, но это тут непринципиально, просто хочу понять принцип как в отдельном потоке сделать

×