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

mixa7638

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

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

  • Посещение

  • Days Won

    2

mixa7638 last won the day on May 8 2013

mixa7638 had the most liked content!

Репутация

5 Новичек

О mixa7638

  • Звание
    Бывалый
  • День рождения 01.04.1993

Profile Information

  • Пол
    Мужской
  1. да по сути ни чем не отличается, кроме как вероятностью существования уже готовых алгоритмов. если для трехмерных случаев алгоритмы есть, то под 4-х мерный вариант их надо переписывать. Но это не проблема, перепишу. за ссылку спасибо)
  2. Доброго времени суток. Нужен совет по поводу кластеризации четырехмерных данных) собственно вопрос демонстрирует приведенное изображение. это моя визуализация моих 4-х мерных данных в трехмерном пространстве) на приведенном изображении присутствуют, если присмотреться, 7 классов. стоит оговориться, что число классов за ранее не известно, и может различаться от случая к случаю... думал написать свою реализацию кластеризации 4-мерных данных, но решил, что, вероятно, задача уже кем-то решена) пока наткнулся на 3-мерный вариант k-means, думаю что смогу переделать его и под 4-х мерный вариант, но вопрос в том, что алгоритм требует задавать количество кластеров вручную, а моя задача именно понять, сколько кластеров здесь присутствует. еще картинка с данными уже 5 классов в общем, если у кого какие соображения есть на этот счет буду рад, если поделитесь.. пока решил по изучать библиотеку Points Cloud Library, может кто работал с ней и может что посоветовать?
  3. вопрос по оптическому потоку

    все ясно) спасибо
  4. добрый день. собственно суть вопроса: пусть имеется видеоролик с движущимся объектом. у данного объекта выделяющиеся относительно фона границы, а вот область внутри - безтекстурная. без большого количества ключевых точек. При вычислении оптического потока в каждой точке последовательности изображений получаю хорошую маску движения для контуров и прилегающих областей, а вот в середине обьекта получаю дыру. причем порой такую, что даже морфологические операции не помогают. есть ли какие нибудь медоты борьбы с этимы дырками. ( для полной картины скажу, что камера расположена зенитно, а движущиеся объекты - люди, которые под ней проходят. однородные области - всякие лысины, да и просто спины, на которых почти нет ключевых точек )
  5. сегментация grayScale изображения

    там вся проблема в том, что бы каждый многоугольник был минимальными... я пока пробегаю каждый пиксель изображения, и если он черного цвета, то делаю копию изображения, потом в этой точке делаю floodFill. из получившегося изображения вычитаю сделаную копию и получаю маску. звучит как костыль, но вроде быстро...
  6. сегментация grayScale изображения

    идея хороша, но не прокатило. не запускается на 64 битной семерке. может попозже запущу... кстати вопрос не в тему, но в openCV есть такая функция, которая могла бы сегментировать такие изображения? что бы получить непересекающиеся многоугольники, что бы потом по ним маски сделать. а то вручную много писать.... если что, для каждой линии знаю её координаты.
  7. сегментация grayScale изображения

    а, случайно, никто с HOG ом не работал? возможно ли обучить классификатор, что бы скользящим окном проходить сверху вниз и смотреть ответ? у меня же получается HOG дескриптор, на котором можно попробовать обучить нейронную сеть. так не? и еще вопрос есть. для такой картинки гистограмма яркости будет однородной и без провалов как горизонтальная, так и вертикальная. есть ли способ по гистограме понять что здесь два обьекта?
  8. день добрый. стоит задача сегментации изображений в оттенках серого и интересует мнение общественности. пусть имеется картинка, полученая методом аккумуляторной линии с оптического потока (18.png), маска движений (20.png), ну и бесхитросно полученый передний план (22.png). хотелось бы узнать количество людей, за данный проход ( реально там 10 человек прошло ) и услышать конструктивные предложения по методам их подсчета. может как то можно на этой картинке обучить неиронку, но не понятно какие данные ей подавать. формируется данная картинка следующим способом: поток людей проходит под зенитной камерой, расчитывается оптический поток на линии (counting line) и данная линия высотой в пиксель и шириной с линию подсчета закидывается в аккумулятор. маска формируется на основе движения (оптического потока) на линии. пока анализирую распределение оптического потока и получаю картинку примерно такую, как на последней картинке. получается что несколько человек слепляются в один кластер. можно анализировать, конечно, границы, но это, мне кажется, трудоёмко. собственно, если есть какие нибудь идею буду рад услышать.. С одиночными, двойными, тройными проходами проблем в принципе нет... самая большая проблема, что второй и третий человек, идущие параллельно похожи на четвертого широкого человека и трудно их различить. где один широкий человек, а где два параллельно.
  9. именно они)
  10. два куска кода - Flandmark_detector и headtracker-master с гитхаба. собрал их в один проект для своих целей, вроде работет. это мой проект. Надеюсь вопрос правильно понял) там нет библиотек, все в исходниках.
  11. покопавшись в исходниках можно найти для себя несколько заготовок, таких как построение 3d модели лица, его трекинг и даже ( на начальном этапе ) вычисление значения фильтров габора в ключевых точках этой модели. может кому пригодиться... трекинг работает весьма быстро для одного человека, но я по быстрому переделал под свои цели для двоих. в основе детектирования ключевых точек - Flandmark_detector, трекинга - headtracker-master. (лиценция которых GNU GPL, для тех кого это вообще интересует). должно даже собраться и заработать (под ubuntu писалось) Написано на С++, есть куски на С. для работы нужна opencv2.4.4 lndmark.tar.gz
  12. нейронная сеть

    в том то и проблема что бинарные классификаторы не дели желаемого результата. я же чисто для примера прокружки и квадратики говорил) как начальный этап для понятия работы нейронной сети. если брать что - то сложнее, лица к примеру, то проблема отсечения по порогу возникает... именно её я имел ввиду
  13. нейронная сеть

    похоже еще читать и читать) Кстати, я так понимаю возможности применения этой нейронной сети ограничиваются задачей классификации из закрытой базы? просто если мне надо не только к примеру отличать кружки от квадратиков, но и все остальные всевозможные фигуры классифицировать как "не круг и не квадрат". то есть если будем иметь нейронку с двумя выходами ( квадрат и круг ), хорошо ей натренируем, а потом подадим неизвестную нейронке фигуру. По идее будет ошибка. И что бы ее небыло надо добавить еще один выход - "остальные фигуры" и натренировать всевозможными и невозможными изображениями произвольных фигур? а возможных фигур бесконечное множетсво, а невозможных фигур - еще больше... Я надеюсь все правильно понимаю)
  14. нейронная сеть

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

    спасибо что отвечаете) пока делал так, применительно к задаче распознавания лиц std::vector< std::vector < cv::Mat > > peoples - вектор людей, в котором хранятся векторы фоток каждого человека. так же предполагается, что число фотографий каждого человека фиксированно void NeuralNetwork::trainNeuralNetwork( std::vector< std::vector < cv::Mat > > peoples, Settings mysettings ) { int widthFace = mysettings.faceWidth; int heightFace = mysettings.faceHeight; int countPeople = peoples.size(); cv::Mat layerSizes( 1, 3, CV_32SC1 ); layerSizes.at<int>(0,0)= widthFace * heightFace; layerSizes.at<int>(0,1)= 500; layerSizes.at<int>(0,2)= countPeople; this->myMLP.create( layerSizes, CvANN_MLP::SIGMOID_SYM, 0.6, 1); std::vector< cv::Mat > datafaces; for( unsigned int i = 0; i < peoples.size(); i++ ) { cv::Mat dataface( peoples[i].size(), widthFace * heightFace, CV_32FC1 ); for( unsigned int j = 0; j < peoples[i].size(); j++ ) { cv::Mat trainSample = peoples[i][j].reshape( 1, 1 ); cv::Mat row = dataface.row(j); trainSample.copyTo( row ); } datafaces.push_back( dataface ); } cv::Mat bigMat( datafaces[0].rows * datafaces.size(), widthFace*heightFace, CV_32FC1 ); cv::Mat bigMatOutputs( datafaces[0].rows * datafaces.size(), countPeople, CV_32FC1, cv::Scalar(0) ); int countPicture = 0; int counterBigMatRows = 0; while( countPicture < countPeople ) { for( int i = 0; i < datafaces[countPicture].rows; i++ ) { cv::Mat tempRow = datafaces[ countPicture ].row(i); cv::Mat tempBigMatRow = bigMat.row( counterBigMatRows ); tempRow.copyTo( tempBigMatRow ); counterBigMatRows++; bigMatOutputs.at<float>( counterBigMatRows, countPicture ) = 1; } countPicture++; } cv::Mat weigth( 1, counterBigMatRows , CV_32FC1, cv::Scalar::all(0.3) ); int train = this->myMLP.train( bigMat, bigMatOutputs, weigth ); std::cout<< "Train - " << train << std::endl; } И сразу вопрос возникает надо ли исходные картинки преобразовывать во float вручную? то есть брать значение каждого пикселя каждой картинки, делить на 255 и пихать обратно? а то приходят они в функцию как unsigned char. а так же какая примерно стуктура подойдет(скрытые слои и нейроны в них), если я собираюсь сравнивать лица. хотя бы порядок чисел)
×