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

Smorodov

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

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

  • Посещение

  • Days Won

    346

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


  1. Ну можно посмотреть исходники GIMP-а.

    У них там своя библиотека функций с использованием SIMD, но все можно выковырять при определенной настойчивости.  


  2. У вас же здесь цифры в прямоугольнике, прямоугольник белый, найдите его контур, впишите в прямоугольник (minarearect), вот вам и наклон. 

    http://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/bounding_rotated_ellipses/bounding_rotated_ellipses.html

     Дальше повернуть изображение в обратную сторону.


  3. Вообще можно тупо скользящим средним сглаживать.

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

    И тут уже сглаживание не поможет.  

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

     


  4. Ну там не то что бы одно и то-же, но получается компактная область, которая и выделяется при обучении классификатора. Что внутри области - лицо, что снаружи не лицо.

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

     

    • Like 1

  5. Да, классификатору в принципе все равно откуда вы берете дескрипторы, ему важно чтобы классы были разделимы его средствами.

    Он даже не должен знать набор признаков, который вы использовали, но важно использовать один и тот же набор признаков на всем множестве картинок с которыми вы работаете.

    Извлечение признаков, переводит вашу картинку из одной системы координат в другую.

    • Like 1

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

    Будет что то вроде такого, если писать словами:

    Изображение на 12% похоже на горизонтальный перепад яркости, на 5% на вертикальный, на 7% похоже на черную точку на белом фоне, на 4% на диагональный перепад яркости. 

    Вместе они опишут структуру изображения. 

    • Like 1

  7. Это число выражает степень схожести изображения под признаком и самим признаком, наибольшее число будет если признак наложен сам на себя.  Если глаза темнее щек, какая тут абстракция ? тут  откликнется вполне конкретный признак (сверху черный, снизу белый).

    • Like 1

  8. По поводу изображения в серых тонах. Можно использовать и цветное (гонять по всем цветовым слоям), просто будет в три раза больше вычисленных признаков.

    Значение признака = сумма всех пикселей под белой областью признака - сумма всех пикселей под черной областью признака.

    Вообще говоря вы имеете дело с 250000 мерными точками.

    Некоторые из них, это лицо. Задача классификатора провести гиперплоскость разделяющую лица от не лиц.

    "Сильные признаки" - это совокупность "слабых"  признаков. Прочитайте про статейку про adaBoost в теме которую я упоминал выше.

    Просмотр идет от ступеней с максимальной вероятностью к уточняющим. 

    То есть  идет окно вычисляем признак 1 - прошло, 2 - прошло, 3 - не прошло. отбрасываем - вывод - не лицо.

    1 - прошло, 2 - прошло, 3 - прошло, - N - прошло принимаем - вывод - лицо.

     

    Обучение одной ступени каскада выглядит примерно так:

    То же самое, но представьте это в 200 000 мерном пространстве.

    • Like 1

  9. Детектор Хаара работает с изображениями в серых тонах, не с цветными.

    Признаки - это всего лишь правило суммирования пикселей (если пиксель под белой областью + , если под черной - ). Максимальные значения будут если признак наложить сам на себя (попробуйте).  

    Совокупность признаков образует дескриптор, дескриптор является "выжимкой" полезной информации и ее унификацией. Мы не работаем с абсолютными значениями пикселей, а работаем со сжатым описанием области ("верх темнее низа" или "точка на темном фоне"). Это удобно.

    Да они не 2х2, а могут быть разных размеров. 

    1_all_haar_wavelets.png

    В окошке сканирования размещают все возможные комбинации этих признаков 

     

     

    каждый дает числовой отклик.

    Итого, для каждого положения окна сканирования мы вычисляем числа для каждого признака . Признаков в окне может разместиться очень много каждый в каждой возможно позиции скользящего окна, во всех возможных масштабах, всех возможных типов.  Вот для каждого варианта вычисляем число и кладем в вектор дескриптора скользящего окна.

     

    После этот вектор идет на обучение классификатора.

    Именно классификатор после обучения отделяет слонов от лиц. Но если нужны слоны, можно обучить классификатор и для них. 

     

    В детекторе Виолы Джонса используется каскадная система. То есть "сильные" признаки отсутствие которых сразу с большой вероятностью говорит "это не лицо", приверяются первыми, если они не обнаруживаются, процесс анализа окна прекращается и оно переходит на новую позицию (см. видео выше).

    • Like 1

  10. Вот здесь кое что есть: 

    Ну и отвечу на вопросы которые вы задали.

    Для окошка сканирования 24х24, признаков Хаара, (прямоугольников с белыми и черными областями) может быть, насколько я помню, около 200000.

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

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

    Чтобы узнать есть ли в окошке лицо, нужно отправить извлеченный вектор признаков на классификатор.  В OpenCV используется AdaBoost. Этот классификатор и решает есть лицо или нет в данной позичии окна сканирования.

     

    Чтобы это все работало, классификатор вначале обучают.  

    • Like 1

  11. Если там скрыта синусоида, то надо делать разложение в ряд Фурье.

    FFT даст пик на частоте синусоиды. 

    Статейка с Хабра: https://habrahabr.ru/post/219337/

    Имел дело с подобными кривыми когда измерителем пульса баловался: HartRateMeasure.zip 

    Работа по которой делал: "Non-contact, automated cardiac pulse measurements using video imaging and blind source separation." легко гуглится.

    • Like 2
×