Jump to content
Compvision.ru

BashOrgRu

Пользователи
  • Content count

    18
  • Joined

  • Last visited

Everything posted by BashOrgRu

  1. Помогите пожалуйста. История такова - сделал по мануалам всяким вот такую штуку - она находит на фотографии центры кругов (планируется использовать их как метки на реальном объекте, выделять в какой то цветовой гамме). Но мне нужно сделать это для видео - то есть снимается видео-эталон и видео-пример, найти надо степень расхождения координат между собой. Условно можно представить, что они допустимо разнятся в некотором диапазоне, который не критичен, затем уже считать разницу. Посмотрите пожалуйста код, скажите, много ли надо поменять, что бы перейти к видео? не очень разбираюсь в вопросе, однако хоть что-то написал. Может какие то примеры подскажете, или шаблон. И по общей структуре тоже, если есть мысли, нужен ли массив для хранения данных с каждого кадра (я так себе это представляю, возможно ошибаюсь). forforum.txt
  2. Здравствуйте. Создал каскад, cascade.xml, вроде обучение завершилось. Написал программу, работает, но с каскадом распознавания лиц от emgu. с моим каскадом программа не работает. Прикладываю свой каскад и каскад от эмгу. Видно, что они сильно разнятся. Как мне сделать каскад как у них? У них даже структура каскада другая. Как сделать такую же? my.xml haarcascade_frontalface_alt_tree.xml
  3. я его скачиваю, распаковываю, открываю как проект в вижуалке (2013), пытаюсь запустить, и он выдает разные ошибки. Их приводить нет смысла, идея в том, что он не может найти каскад. Или ему не нравится битность операционки или дебаггера (ставил разные). Не совсем понял вашу строчку "Файл с каскадом поместили в папку проекта и включили в solution explorer", каскад в папку проекта клал, а как "включить в solution explorer "?
  4. Либо как вариант, помогите запустить проект с совой из статьи...Это тоже было бы отличным решением.
  5. Программа запускает форму, даже пытается инициализировать камеру (на ней загорается лампочка), затем программа просто схлопывается. С каскадом по лицам такого не происходит. Первый этап обработки исключения типа "Emgu.CV.Util.CvException" в Emgu.CV.dll Программа "[416] WpfApplication1.vshost.exe" завершилась с кодом -1073741819 (0xc0000005) 'Access violation'. Программа "[416] WpfApplication1.vshost.exe: Трассировка программы" завершилась с кодом 0 (0x0). вот такое вот пишет Visual studio 2013 при моем каскаде.. Обучал по инструкции из вот этой статьи, шаг в шаг - http://habrahabr.ru/post/208092/ но его код у меня так и не заработал и я вот этот (приведенный выше) взял. По завершению обучения просто все прекратилось, все стадии (16) пройдены..Вроде успех..Мой каскад почти копия (только числа другие), каскада с совой из статьи с хабра...
  6. в таком случае это повлияло бы на точность а не на сам факт работы каскада? я не очень разбираюсь, но подозреваю что дело не в этом..
  7. Файлы разнятся на столько, что я уже думаю не нужно ли как то запустить concert_cascade.c, правда я пока не понял как это сделать Вы имели ввиду в коде? Вот мой код, при замене в нем HaarCascade на CascadeClassifier выдает всякие ошибки, где именно заменить, если вы про код..? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Threading; using Emgu.CV.Structure; using Emgu.CV; using System.Runtime.InteropServices; namespace WpfApplication1 { /// <summary> /// Логика взаимодействия для MainWindow.xaml /// </summary> public partial class MainWindow : Window { private Capture capture; private HaarCascade haarCascade; DispatcherTimer timer; public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { capture = new Capture(); haarCascade = new HaarCascade(@"haarcascade_frontalface_alt_tree.xml"); timer = new DispatcherTimer(); timer.Tick += new EventHandler(timer_Tick); timer.Interval = new TimeSpan(0, 0, 0, 0, 1); timer.Start(); } void timer_Tick(object sender, EventArgs e) { Image<Bgr, Byte> currentFrame = capture.QueryFrame(); if (currentFrame != null) { Image<Gray, Byte> grayFrame = currentFrame.Convert<Gray, Byte>(); var detectedFaces = grayFrame.DetectHaarCascade(haarCascade)[0]; foreach (var face in detectedFaces) currentFrame.Draw(face.rect, new Bgr(0, double.MaxValue, 0), 3); image1.Source = ToBitmapSource(currentFrame); } } [DllImport("gdi32")] private static extern int DeleteObject(IntPtr o); public static BitmapSource ToBitmapSource(IImage image) { using (System.Drawing.Bitmap source = image.Bitmap) { IntPtr ptr = source.GetHbitmap(); //obtain the Hbitmap BitmapSource bs = System.Windows.Interop .Imaging.CreateBitmapSourceFromHBitmap( ptr, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); DeleteObject(ptr); //release the HBitmap return bs; } } } }
  8. Собственно другой ветки куда бы моя тема подходила не нашел, по этому пишу здесь как более... Итак, моя задача состоит в реализации алгоритма линейный дискриминантный анализ фишера.. Т.е насколько я понял из теории это почти тот же метод главных компонент + доп. проектирование... Почитав теорию у меня сложился такой алгоритм: 1) Создать Базу фоток 2) найти ковариционную матрицу 3) найти собственные вектора и значения 4) спроектировать базу фотографий в пространство собс векторов (? так ли это? ) 5) найти проекцию такую, которая бы удовлетворяла идеи Фишера 6) загнать новую фотку, спроектировать в полученное пространство и сравнить А теперь как я это понял и начал делать: 1) У нас имется N фотография (серая, 8 битова) размерами WxH, 2) Формируем матрицу X которая состоит из фотографий. Каждый ряд - вектор размерностью (WxH). Т.е если у меня 10 фоток размерами 100х100 то матрица Х = 10000х10. 3) Необходимо найти ковариционую матрицу. Я ее ищу таким образом: 3.1) Нахожу среднее по столбцам матрицы Х 3.2) Отнимаю от каждого столбца его среднее 3.3) Полученную матрицу транспонирую, умножаю ее на себя же и умножаю на коефициент. То есть матрица А = это матрица Х - среднее. C = А' * A * (1/(N-1)) где ' - символ транспонирования Получаю симетричную матрицу, которая является ковариционной. Дальше, насколько я понял, надо найти собственные вектора, которые ищутся так: S = F' * C * F Где S - собственные значения F - собственные вектора C - ковариционная матрица (отсюда у меня возникает вопрос: Получается собственные вектора получаются из ВСЕЙ матрицы Х? Т.е из всех наборов фоток???) Разве не должно быть что у каждого набора фотографий - свои собственные лица?) Как теперь найти собственные значения и вектора? Все методы что не нахожу все аналитические, которые мне не подходят в силу размерности. Итерационный метод есть, вроде Мизес наз. но я не могу найти описание В общем я тут застрял. Дальше пока не могу представить как спроектировать фотки на полученные вектора Если кто прочел и знает как помочь - напишите, спасибо, жду. Возможно в openCV Есть ф-ция поиска собственных векторов и значений, мне нужны первые 5.. спасибо(!)
  9. Собственные вектора и значения

    да ну... матрица пикселей жеж.... если размер матрицы не превышает кол-ва фоток то как усечь?)
  10. Собственные вектора и значения

    Есть более быстрый алгоритм поиска собств. значений потому как якоби я запустил на матрице 2500х2500 он что-то завис глухо... хотя если поставить брекпоинт то считает... т.е работает но долго(
  11. Собственные вектора и значения

    Это матлаб ?
  12. Собственные вектора и значения

    может есть что-то по алгоритму фишера в opencv? я чет не нашел
  13. Собственные вектора и значения

    прикол в том, что в opencv есть все для PCA(
  14. Собственные вектора и значения

    Напоследок, если в курсе, подскажи: 1) я выбираю 5 векторов которым соотвествуют 5 макс собс значений.. (после сортировки) 2) далее мне надо фотку разложить на эти вектора (как) 3) спроектировать ее в этот базис (как?) я честно говоря не дружил с алгеброй... по этому сори(
  15. Собственные вектора и значения

    Да, это ок (http://www.cyberguru.ru/programming/programming-theory/matrix-vectors-values-page6.html) внизу написано: Итак, ключевые слова для поисковиков Якоби исходник, якоби собственные значения исходник, собственные вектора, якобы, eigenvectors, eigenvalues, jacobi, source++, якоби, якоби
  16. cvCalcEigenObjects

    Возвращает белый квадрат // 2 картинки инпута IplImage **input = new IplImage*[2]; input[0] = new IplImage; input[1] = new IplImage; // преобразовываю картинки в ЧБ цвет IplImage *temp; temp=cvLoadImage("image1.jpg",1); input[0]=cvCreateImage(cvSize( 160,120 ), IPL_DEPTH_8U, 1); cvCvtColor(temp, input[0], CV_BGR2GRAY); cvReleaseImage(&temp); temp=cvLoadImage("image2.jpg",1); input[1]=cvCreateImage(cvSize( 160,120), IPL_DEPTH_8U, 1); cvCvtColor(temp, input[1], CV_BGR2GRAY); // ГОТОВЛЮ output'ы IplImage **output = new IplImage*[2]; for(int i=0;i<2;i++) {output=new IplImage; output=cvCreateImage(cvSize(160,120), IPL_DEPTH_32F, 1); } // сюда в avg поидее придет то что мне нужно(!) IplImage *avg=cvCreateImage(cvSize(160,120), IPL_DEPTH_32F, 1); // готовлю CvTermCriteria term; term.type= CV_TERMCRIT_ITER | CV_TERMCRIT_EPS; term.max_iter=10; term.epsilon=0.1; float vals[2]; cvCalcEigenObjects(2, input, output, 0, 0, 0, &term, avg, vals); cvSaveImage("image0.jpg", avg); //Все, белый лист, непойму в чем дело Все, не могу понять почему так... помогите)
  17. cvCalcEigenObjects

    подскажи более подробней....потому как я попытался доступится как avg[x][y] мне писало ероры... как вытянуть мин/макс? cvMin?
  18. cvCalcEigenObjects

    А аутпуты черные... почти черные... иногда видно что там чтото есть но настколько темное что трудно рассмотреть.. такое ощущение что картинку затемнили специально может параметр гдето попустил
×