############################### ## PART C ############################### CT, bgs git@gitlab.idiv.de:sugu/camtron.git Does > background subtraction > calculates centroid points of all frames in a record ############################### ############################### #define bgs_register(x) static BGS_Register<x> register_##x(quote(x)) ## >> glue together macro? quote() adds "" bgs_register(Tapter) >> static BGS_Register<Tapter> register_Tapter("Tapter") PCA? > difference virtual(); virtual(){ /*empty*/ } virtual() = 0; #pure virtual > also difference > virtual dtor(): if pointer to base-class deletes object > pure virtual dtor(): need to also define function body, cuz dtor is special function whis is not overriden > interface class (needs pure virtual??) > abc - abstract base class. can't be instantiated anymore > abc <> interface? // IplImage is oldskool mat and not supported anymore.. > use smartpointer like so: auto videoAnalysis = std::make_unique<VideoAnalysis>(); videoCapture = std::make_unique<VideoCapture>(); frameProcessor = std::make_shared<FrameProcessor>(); ########### libarchive stuff archive_read_xxx() archive_write_xxx() struct archive_entry huge workaround for corrupted files clock random command arg parser ??? #if CV_MAJOR_VERSION > 3 || (CV_MAJOR_VERSION == 3 && CV_SUBMINOR_VERSION >= 9) IplImage _frame = cvIplImage(img_input); frame = &_frame; #else frame = new IplImage(img_input); #endif #smartpointer?? #elif CV_MAJOR_VERSION >= 3 cv::Ptr<cv::BackgroundSubtractorMOG2> mog; #endif > What Tboy do... why did he do it? > forked branch bgslib_qtgui_2.0.0 > Tapter > adapter for model > was probably copied from LBAdaptiveSOM.cpp --> which is disabled in openCV4 Which Background Subtraction Algo to use?? median, mean, framedifference + simple, fast, - not robust if light/bg changes - slow changes ? > adaptive bg? fuzzy? mixture NAMES Kernel? LBSP? Multilayer? Sigma-Delta? Vibe, T2F ,dp ,lb ,vumeter? choquet, sugeno, zivkovic, pratimediod, LOBSTER Test/Use most common >> Ground Truth Frame Difference WeightedMovingMean / Variance LBAdaptiveSOM MOG2 (Mixture Of Gaussian) MixtureOfGaussianV2.h KNN (K Nearest Neighbour) > fast for small fg obj > TRY! FuzzySugenoIntegral.h LSBP - Local Binary Similarity Patterns - (2013) LSBP-based GSoC ? SuBSENSE: improved spatiotemporal LBSP + color features (2014) Combineable with ROI Canny Edge Detection > bg modeling to update BG (eg moving trees) > pixel with threshold > optic flow (camera is also moving. ) > vectoral estimation of own movement features edge canny edge detector + calc contour > https://en.wikipedia.org/wiki/Canny_edge_detector roi crop color RGB - not so robuse by itself (sensitive to illumination, shadows, oscillations ...) YUV YCrCb - brightness, chroma, color texture robust to illumination and shadow eg Local Binary Pattern (LBP) https://github.com/murari023/awesome-background-subtraction (2021 new stuff!) https://learnopencv.com/background-subtraction-with-opencv-and-bgs-libraries/ http://docs.opencv.org/2.4/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html https://hackthedeveloper.com/background-subtraction-opencv-python/ #mog2 + knn in python https://docs.opencv.org/4.3.0/d4/dd5/classcv_1_1bgsegm_1_1BackgroundSubtractorGSOC.html#details #GSOC LSBP ALGO from openCV bgsegm.hpp https://openaccess.thecvf.com/content_cvpr_workshops_2014/W12/papers/St-Charles_Flexible_Background_Subtraction_2014_CVPR_paper.pdf https://www.scitepress.org/Papers/2018/66296/66296.pdf #vehicle tracking latvia. 2018, BackgroundSubtractorMOG, BackgroundSubtractorMOG2 (zivkovic) https://www-sop.inria.fr/members/Francois.Bremond/Postscript/AnhTuanAVSS14.pdf 2014 https://arxiv.org/pdf/1803.07985.pdf # visual animal tracking (2018) https://arxiv.org/pdf/1507.06821.pdf # Multimodal Deep Learning for Robust RGB-D Object Recognition (2015) https://towardsdatascience.com/background-removal-with-deep-learning-c4f2104b3157?gi=2ef3a5272e5d (2017 Background removal with deep learning) https://opencv.org/courses/ #xpensive ai course https://www.fast.ai/ #free ai course ################## # computervision # ################## background subtraction (bgs) image segmentation Semantic Segmentation (ai) detection (feature, object) classification (category recognition) Challenges: Occlusion, (Sensor-)Noise, changing external conditions( lighting, Shadows, fog, reflection ) > pre-training if lack of data > corrupt data to guarantee robust learning ###### # AI # ###### Convolutional Neural Networks (CNNs) https://www.researchgate.net/publication/337401161_Fundamental_Concepts_of_Convolutional_Neural_Network (2020 37p) > Kernel > filter? > preprocessing > Training > Parameter init > regularization > optimize RGB-D - RGB + depth >> eg Kinect-Sensors KNN - k-nearest neighbors algorithm Monte Carlo tree search algorithm (alphaGo...) RGB-D descriptor that relies on a K-Means HMP - hierarchical matching pursuit ( hierarchical sparse-coding method; learn features from multiple channel input) encoding depth information into three channels (HHA encoding) feature hierachy cascade of Random Forest classifiers that are fused in a hierarchical manner ?? #Random Forest recall - how many relevant items are retrieved? precision - how many retrieved items are relevant? > https://en.wikipedia.org/wiki/Recall_(information_retrieval) ? automatically learn a fusion strategy for the recognition task – in contrast to simply training a linear classifier on top of features extracted from both modalities MISRE - Multiple Input Structures with Robust Estimator gradient-based learning > MNIST supervised image classification MNISt - large db of hand-written digits (used for ML and ImagePRocessing) > also see classifiers: https://en.wikipedia.org/wiki/MNIST_database#Classifiers multimodal learning the parameters of all layers were adapted using a fixed learning rate schedule At test time the task of the CNN is to assign the correct class label to a previously unseen object instance. Tasks: Classification, clustering, regression, Summarization, Categorization, Natural language processing, ################################## # STAT ################################## Regression Hadamard Product Bernoulli Distribution Discrete Uniform Distribution ################################## # INSTALL ################################## sublime: install package CMAKE (syntax hilight) apt install libarchive-dev python3-pybind11 ################################## init(img_input, img_output, img_bgmodel); #if CV_MAJOR_VERSION > 3 || (CV_MAJOR_VERSION == 3 && CV_SUBMINOR_VERSION >= 9) IplImage _frame = cvIplImage(img_input); frame = &_frame; #else frame = new IplImage(img_input); #endif