diff --git a/filter/filters_circleci.go b/filter/filters_circleci.go index e9fc155a..f6d46082 100644 --- a/filter/filters_circleci.go +++ b/filter/filters_circleci.go @@ -32,7 +32,7 @@ import ( ) // NewMOGFilter returns a pointer to a new NoOp struct for testing purposes only. -func NewMOGFilter(dst io.WriteCloser, area, threshold float64, history, kernelSize int, debug bool) *NoOp { +func NewMOGFilter(dst io.WriteCloser, area, threshold float64, history int, debug bool) *NoOp { return &NoOp{dst: dst} } diff --git a/filter/mog.go b/filter/mog.go index 283ea034..11bed5a6 100644 --- a/filter/mog.go +++ b/filter/mog.go @@ -48,9 +48,9 @@ type MOGFilter struct { } // NewMOGFilter returns a pointer to a new MOGFilter struct. -func NewMOGFilter(dst io.WriteCloser, area, threshold float64, history, kernelSize int, debug bool) *MOGFilter { +func NewMOGFilter(dst io.WriteCloser, area, threshold float64, history int, debug bool) *MOGFilter { bs := gocv.NewBackgroundSubtractorMOG2WithParams(history, threshold, false) - k := gocv.GetStructuringElement(gocv.MorphRect, image.Pt(kernelSize, kernelSize)) + k := gocv.GetStructuringElement(gocv.MorphRect, image.Pt(3, 3)) var windows []*gocv.Window if debug { windows = []*gocv.Window{gocv.NewWindow("Debug: Bounding boxes"), gocv.NewWindow("Debug: Motion")} diff --git a/revid/revid.go b/revid/revid.go index fd3f83cf..cdbc1cc5 100644 --- a/revid/revid.go +++ b/revid/revid.go @@ -9,7 +9,7 @@ AUTHORS Trek Hopton LICENSE - revid is Copyright (C) 2017-2018 the Australian Ocean Lab (AusOcean) + revid is Copyright (C) 2017-2020 the Australian Ocean Lab (AusOcean) It is free software: you can redistribute it and/or modify them under the terms of the GNU General Public License as published by the @@ -76,13 +76,25 @@ const ( rtmpConnectionTimeout = 10 ) -// KNN filter properties +// Motion filter parameters. const ( - knnMinArea = 25.0 - knnThreshold = 300 - knnHistory = 300 - knnKernel = 9 - knnShowWindows = true + showWindows = true + minFPS = 1.0 +) + +// KNN specific parameters. +const ( + knnMinArea = 25.0 + knnThreshold = 300 + knnHistory = 300 + knnKernel = 9 +) + +// MOG specific parameters. +const ( + mogMinArea = 25.0 + mogThreshold = 20.0 + mogHistory = 500 ) const pkg = "revid: " @@ -341,11 +353,12 @@ func (r *Revid) setupPipeline(mtsEnc func(dst io.WriteCloser, rate float64) (io. case config.FilterNoOp: r.filter = filter.NewNoOp(r.encoders) case config.FilterMOG: - r.filter = filter.NewMOGFilter(r.encoders, 25, 20, 500, 3, true) + r.filter = filter.NewMOGFilter(r.encoders, mogMinArea, mogThreshold, mogHistory, showWindows) case config.FilterVariableFPS: - r.filter = filter.NewVariableFPSFilter(r.encoders, 1.0, filter.NewMOGFilter(r.encoders, 25, 20, 500, 3, true)) + r.filter = filter.NewVariableFPSFilter(r.encoders, minFPS, filter.NewMOGFilter(r.encoders, mogMinArea, mogThreshold, mogHistory, showWindows)) case config.FilterKNN: - r.filter = filter.NewKNNFilter(r.encoders, knnMinArea, knnThreshold, knnHistory, knnKernel, knnShowWindows) + r.filter = filter.NewKNNFilter(r.encoders, knnMinArea, knnThreshold, knnHistory, knnKernel, showWindows) + default: panic("Undefined Filter") }