Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
notes_C 6.75 KiB
###############################
## 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