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

Smorodov

Главные администраторы
  • Количество публикаций

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

  • Посещение

  • Days Won

    346

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


  1. Собственно есть изящный метод как раз с эллипсом:

     

    	cv::Mat Src = imread("image.jpg", 1);	
    	cv::Mat mask = Mat::zeros(Src.size(), CV_8UC1);
    	
        Mat crcb;
    	skinCrCbHist = Mat::zeros(Size(256, 256), CV_8UC1);
    	cvtColor(Src, crcb, CV_BGR2YCrCb);
    
    	ellipse(skinCrCbHist, Point(113, 155.6), Size(23.4, 15.2), 43.0, 0.0, 360.0, Scalar(255, 255, 255), -1);
    
    	double t = (double)getTickCount();
    
    	for (size_t i = 0; i < Src.rows; i++)
    	{
    		for (size_t j = 0; j < Src.cols; j++)
    		{
    			Scalar v;
    			v = crcb.at<Vec3b>(i, j);
    			int s=skinCrCbHist.at<uchar>(v[1], v[2]); // проверяем попали ли в эллипс, если да, то кожа
    			if (s > 0)
    			{
    				mask.at<uchar>(i, j) = 255;
    			}
    		}
    	}

    и довольно неплохо работает.


  2. В qt может быть расширение .a , но они должны создаваться при компиляции Opencv, пройдите поиском. При создании динамических библиотек обычно создается пара файлов dll и lib (или .a) . В проекте подключают lib а при запуске программа должна иметь возможность найти соответствующий dll файл.


  3. 2 часа назад, Nuzhny сказал:

    Ага, очень похоже на то. У тебя случайно нет в планах самому потестить эти штуки на предмет их эффективности? А то как-то времени не хватает.

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


  4. Ковыряю DLIB, наткнулся на оптимизатор параметров венгерского алгоритма в DLIB : examples/assignment_learning_ex.cpp, насколько я понимаю изучается метрика расстояний между объектами для лучшего трекинга. Есть еще learning_to_track_ex.cpp .

    Плюс к тому оптимизатор кроссвалидацией: model_selection_ex.cpp


  5. Что хорошо реализуется, а что плохо, можно прикинуть изучив основные паттерны, например здесь: http://my-it-notes.com/2013/06/gpu-processing-intro-cuda-opencl/ на каждый из них, при желании, всегда можно найти примеры реализации.


  6. Посмотрел патент, там по моему слишком конкретная формула патентуемого метода, если измените один два пункта, это уже не будет подпадать под патент.

    По поводу аналогов, поищите по запросу "Driver Drowsiness Detection System".


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

    Наример http://ab-initio.mit.edu/wiki/index.php/NLopt , https://software.sandia.gov/opt++/  или встроенный в DLIB http://dlib.net/optimization.html .

    • Like 1

  8. Мне видится, что нужно настраивать параметры системы блоками.

    Например: детектор отдельно фильтр Кальмана отдельно.

    Для детектора можно использовать статические картинки и тут вроде все понятно. Есть вполне очевидная целевая функция, есть вектор параметров. Засовываем в оптимизатор, получаем результат. Весовые коэффициенты, например "время детекта"/"точность детекта", задавать пользователем.

    Для трекера, брать рандомный кусок, считать время до срыва трека. Далее применять целевую функцию на этом куске, понятно, что тут без весовых коэффициентов задаваемых пользователем тоже не обойтись. И засовывать в оптимизатор. Каждую итерацию брать новый рандомный кусок до срыва трека. Получится что с улучшением качества, будет расти набор данных для подстройки, что позволит недать более точные оптимизации.

     


  9. Думается это уменьшенное, но не очень сильно. Уменьшать можно до тех пор, пока все объекты которые нужно детектировать различимы.

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


  10. Возможно, для ускорения поиска, изображение нужно уменьшить раза в 4, и шаблон также, точность поиска это уменьшить не должно, а искать будет намного быстрее.

    Затем просто пересчитать координаты в исходный масштаб.


  11. Да, нейронка, в данном случае как из пушки по воробьям, если бы вы изначально подробно описали задачу, то можно было бы найти решение быстрее.

    А так да, Nuzhny прав,поиск по шаблону скорее всего будет работать здесь оптимально см.  http://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html 

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

×