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

mrgloom

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

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

  • Посещение

  • Days Won

    142

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

  1. Распознавание лиц

    мне вот интересен такой вопрос, через сколько людей в среднем происходит перенасыщение базы лиц? т.е. когда уже невозможно отличить одного от другого. (ну тут конечно тоже есть варианты например заранее заготовленные качественные образы или выделенные из простых фотографий) кстати столько было уже тем про лица,руки,глаза и т.д. на форуме(даже непонятно почему такой ажиотаж), что помоему пора объединять это все в одно место, я возможно тоже поучаствую. (но меня интересует это как just for fun)
  2. по идее если работать с координатами, то можно вычислить новые координаты u= (m11*x + m12*y + m13)/(m31*x + m32*y + m33); v= (m21*x + m22*y + m23)/(m31*x + m32*y + m33); и вычитать из u необходимое смещение по X. и запихнуть их в remap. а так за перенос по оси Х отвечает лишь один элемент матрицы //test for homography double matrix[9]; CvMat* homo = cvCreateMat(3, 3, CV_64F); matrix[0] = 1; matrix[1] = 0; matrix[2] = 100; matrix[3] = 0; matrix[4] = 1; matrix[5] = 100; matrix[6] = 0; matrix[7] = 0; matrix[8] = 1.0; cvmSet(homo, 0, 0, matrix[0]); cvmSet(homo, 0, 1, matrix[1]); cvmSet(homo, 0, 2, matrix[2]); cvmSet(homo, 1, 0, matrix[3]); cvmSet(homo, 1, 1, matrix[4]); cvmSet(homo, 1, 2, matrix[5]); cvmSet(homo, 2, 0, matrix[6]); cvmSet(homo, 2, 1, matrix[7]); cvmSet(homo, 2, 2, matrix[8]); IplImage* img= cvLoadImage("1.png"); IplImage* des= cvCreateImage(cvSize(1000, 1000), 8, 3); cvWarpPerspective(img, des, homo); cvSaveImage("test_homo.png",des); соответсвенно код выводит неизмененное изображение img, на изображении des в точке (100;100), но размер des должен быть больше img + смещение. иначе будет обрубок. соответственно, если еще и наклонные стороны, то надо следить чтобы углы не вышли за пределы.
  3. Распознавание лиц

    то что нужно! действительно вспомнил, что пикаса это умеет, но какая то она была тормознутая, я ее удалил, но это давно было, попробую свежую скачать. http://developers.face.com/tools/#faces/detect вот еще довольно хорошо находит, но только я так понял, что они предоставляют только апи, а сорцов нету. http://rghost.ru/5242130
  4. Распознавание лиц

    есть ли такие уже готовые программы которые могут найти все фотографии, на которых присутствует конкретный человек? т.е. даже не совсем так. на вход подаются фотографии, а на выходе метаинформация о том сколько всего людей и на каких фотографиях они присутствуют. потом например можно выбрать из списка всех найденных людей кого то сопоставить ему тэг - маша,петя и т.д. и найти все фотографии с ним\ней. и чтобы все делалось без помощи человека, человек только потом может отбраковывать когда смотрит результаты. а система учится
  5. Распознавание лиц

    что за программы? и для чего вообще все это используется, нахождение рук,глаз, пальцев, головы и ее частей и всего человека целиком.
  6. CV - art и демки

    может кто то интересуется\накидает похожего http://www.openframeworks.cc/ http://processing.org/
  7. CV - art и демки

    это в целом то понятно, но будет ли это в реал тайме работать? т.е. надо читать из N видео файлов ,и писать в 1. что это означает? и еще каким образом в opencv задается маска хотя бы на изображении?(я вообще так понял, что выцепленный фрэйм ~= изображение?)
  8. CV - art и демки

    попробую еще потом такое сделать только автоматически.
  9. CV - art и демки

    кто то знает как такое сделать?
  10. Дисторсии(подушка,бочка)

    еще подкину http://opencv.willowgarage.com/documentation/STRAWMAN/cpp/camera_calibration_and_3d_reconstruction.html вроде бы можно координаты углов вычислить по этим формулам
  11. Дисторсии(подушка,бочка)

    ну так там опять же калибровка по доске наверно, как пользоваться cvInitUndistortMap + cvRemap я уже понял, даже понятно как задается матрица intrinsic_matrix (по русски собственная матрица?) а вот какой математический смысл в distortion_coeffs я не понял, только поиграл значениями посмотрел как изменяется. и так же непонятно как после преобразования бочка (после того как изображение уменьшится) вычислить вписанный в него прямоугольник и по нему обрезать.
  12. Дисторсии(подушка,бочка)

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

    как то не очень осилил документ но нашел float camIntrinsics[] = { focalX, 0, centerX, 0, focalY, centerY, 0, 0, 1 }; float distortionCoeffs[] = { radialDistX, radialDistY, tangentDistX, tangentDistY }; вообщем буду пробовать методом тыка. и про 5 параметров x' = x + x*(K1*r^2 + K2*r^4 + K3*r^6) + P1*(r^2 + 2*x^2) + 2*P2*x*y y' = y + y*(K1*r^2 + K2*r^4 + K3*r^6) + P2*(r^2 + 2*y^2) + 2*P1*x*y
  14. Дисторсии(подушка,бочка)

    это я понял и так, я не понял чем заполнять intrinsic и distortion. первое это какая то матрица 3х3, а второе какие то параметры.
  15. Дисторсии(подушка,бочка)

    в книге орелли cvInitUndistortMap заполняется через калибровку по доске. т.е. intrinsic,distortion получают из cvCalibrateCamera2. CvMat* intrinsic_matrix = cvCreateMat(3,3,CV_32FC1); CvMat* distortion_coeffs = cvCreateMat(5,1,CV_32FC1); IplImage* mapx = cvCreateImage( cvGetSize(image), IPL_DEPTH_32F, 1 ); IplImage* mapy = cvCreateImage( cvGetSize(image), IPL_DEPTH_32F, 1 ); cvInitUndistortMap( intrinsic, distortion, mapx, mapy ); а как заполнить эти структуры ,если я хочу сжимать\разжимать подушку бочку по вертикали\горизонтали?
  16. Многопоточность и OpenCV

    вообщем поэкспериментирую с opencv2.1 перенесу на ноут(т.к. там 4 ядра и есть вебка) попробую перекомпилировать библиотеку интеловским компилятором и с поддержкой IPP и многопоточности.
  17. Поиск картины на фотографии

    только Note from the editor: the source code and executable files are temporarily removed while a possible copyright issue is investigated. SIFT,SURF и т.д. есть дескрипторы инвариантные к освещению, только не помню какие.
  18. Многопоточность и OpenCV

    тут так и ничего не сказали про многопоточность(или я не понял). все таки как она реализована в opencv? т.е. распараллелены ли функции уже заранее? (у меня все время только 1 ядро загружается) или надо самому использовать Openmp или какие то треды?
  19. из RAW data в IPlImage*

    HBITMAP to IplImage* и обратно я и так нашел в интернете. но это не совсем то же самое, что я спрашивал, /* Копируем данные */ // cvConvertImage if(_Grab3) { for(int i = 0; i < _Grab->height; i++) { memcpy(App + _Grab3->widthStep * (_Grab3->height - i - 1), data + _Grab3->widthStep * i, _Grab3->width * 3); } } тут опять же как я понимаю, просто копируются данные, которые идут в одинаковом порядке только задом наперед. т.е. не понятно как использовать memcopy в случае разных структур.
  20. как в OpenCV реализовано выделение одноцветных областей, областей с одной текстурой? скажем надо получить контур(или блоб или или как ROI (кстати как получить ROI не прямоугольный, а произвольной формы?), вообщем чтобы с этой областью работать) например красной области или объекта имеющего какую то однородную текстуру.
  21. ок посмотрю (хотя тут скорее выделение одного объекта + еще окружающая рамка это инициализация алгоритма(так что он полуавтоматический)) в идеале мне бы хотелось автоматическую сигментацию на N частей (N можно задавать), которая допустим зависит от нескольких параметров. и еще cvWatershed и cvPyrSegmentation вроде бы близко к этому. вот еще нашел http://people.cs.uchicago.edu/~pff/segment/
  22. из RAW data в IPlImage*

    не понял о чем вы. reserved всегда присутствует в структуре RGBPIX, которая кстати совпадает с RGBQUAD виндовой. typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; не очень правда понял для каких целей, может используется как альфа канал.
  23. ну вообщем вопрос то наверно ближе к сегментации. cvFloodFill попробую, ну он по описанию довольно примитивен. вообщем в opencv может есть какие то еще алгоритмы встроенные? и еще вопрос где можно поискать уже более менее готовые решения более сложных(или более узких) не встроенных алгоритмов с использованием opencv.
  24. из RAW data в IPlImage*

    так не очень понятно как использовать memcopy, когда структуры не одинаковые. получается что одна BGR, а вторая BGR+reserved т.е. BGR->BGR то можно скопировать, но потом как то надо сместится на один BYTE, а в случае IplImage to RGBPIX надо reserved заполнить нулями. + еще вопрос если например я имею функцию pointer* fun() { new struct_array; //псевдокод массив всех значений RGBPIX pointer=struct_array; //ставим указатель на массив return pointer; } почему то если возвращать указатель не работает, а если возвращать массив то все ок. (почему нельзя возвращать просто указатель? т.е. выделенная память под struct_array может очищается при выходе из функции?)
  25. Проблемы с ExtractSURF() и CvMemStorage

    ну так например делим изначальное изображение по X на 2 части, тогда у первого будут координаты (x,y), у второго (x+w/2,y).
×