mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
bugfix, config enhancement and 3 detection modes
Former-commit-id: edfc3e7ccf7b7d727e73a8563acb521045026d5b
This commit is contained in:
@@ -1,11 +1,26 @@
|
||||
|
||||
#include <iostream>
|
||||
// BlackBorders includes
|
||||
#include <blackborder/BlackBorderDetector.h>
|
||||
|
||||
using namespace hyperion;
|
||||
|
||||
BlackBorderDetector::BlackBorderDetector(uint8_t blackborderThreshold) :
|
||||
_blackborderThreshold(blackborderThreshold)
|
||||
BlackBorderDetector::BlackBorderDetector(double threshold) :
|
||||
_blackborderThreshold(calculateThreshold(threshold))
|
||||
{
|
||||
// empty
|
||||
}
|
||||
|
||||
uint8_t BlackBorderDetector::calculateThreshold(double threshold)
|
||||
{
|
||||
int rgbThreshold = int(std::ceil(threshold * 255));
|
||||
if (rgbThreshold < 0)
|
||||
rgbThreshold = 0;
|
||||
else if (rgbThreshold > 255)
|
||||
rgbThreshold = 255;
|
||||
|
||||
uint8_t blackborderThreshold = uint8_t(rgbThreshold);
|
||||
|
||||
std::cout << "Black border threshold set to " << threshold << " (" << int(blackborderThreshold) << ")" << std::endl;
|
||||
|
||||
return blackborderThreshold;
|
||||
}
|
||||
|
@@ -1,23 +1,31 @@
|
||||
//#include <iostream>
|
||||
|
||||
//*
|
||||
#include <iostream>
|
||||
/*
|
||||
#include <iomanip>
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
using std::setw;
|
||||
using std::left;
|
||||
//*/
|
||||
// Blackborder includes
|
||||
#include <blackborder/BlackBorderProcessor.h>
|
||||
|
||||
|
||||
using namespace hyperion;
|
||||
|
||||
BlackBorderProcessor::BlackBorderProcessor(const unsigned unknownFrameCnt,
|
||||
const unsigned borderFrameCnt,
|
||||
const unsigned blurRemoveCnt,
|
||||
uint8_t blackborderThreshold) :
|
||||
_unknownSwitchCnt(unknownFrameCnt),
|
||||
_borderSwitchCnt(borderFrameCnt),
|
||||
_blurRemoveCnt(blurRemoveCnt),
|
||||
_detector(blackborderThreshold),
|
||||
BlackBorderProcessor::BlackBorderProcessor(const Json::Value &blackborderConfig) :
|
||||
_unknownSwitchCnt(blackborderConfig.get("unknownFrameCnt", 600).asUInt()),
|
||||
_borderSwitchCnt(blackborderConfig.get("borderFrameCnt", 50).asUInt()),
|
||||
_maxInconsistentCnt(blackborderConfig.get("maxInconsistentCnt", 10).asUInt()),
|
||||
_blurRemoveCnt(blackborderConfig.get("blurRemoveCnt", 1).asUInt()),
|
||||
_detectionMode(blackborderConfig.get("mode", "default").asString()),
|
||||
_detector(blackborderConfig.get("threshold", 0.01).asDouble()),
|
||||
_currentBorder({true, -1, -1}),
|
||||
_previousDetectedBorder({true, -1, -1}),
|
||||
_consistentCnt(0),
|
||||
_inconsistentCnt(10)
|
||||
{
|
||||
std::cout << "DETECTION MODE:" << _detectionMode << std::endl;
|
||||
// empty
|
||||
}
|
||||
|
||||
@@ -39,7 +47,7 @@ bool BlackBorderProcessor::updateBorder(const BlackBorder & newDetectedBorder)
|
||||
// makes it look like the border detectionn is not working - since the new 3 line detection algorithm is more precise this became a problem specialy in dark scenes
|
||||
// wisc
|
||||
|
||||
// std::cout << "cur: " << _currentBorder.verticalSize << " " << _currentBorder.horizontalSize << " new: " << newDetectedBorder.verticalSize << " " << newDetectedBorder.horizontalSize << " c:i " << _consistentCnt << ":" << _inconsistentCnt << std::endl;
|
||||
// std::cout << "c: " << setw(2) << _currentBorder.verticalSize << " " << setw(2) << _currentBorder.horizontalSize << " p: " << setw(2) << _previousDetectedBorder.verticalSize << " " << setw(2) << _previousDetectedBorder.horizontalSize << " n: " << setw(2) << newDetectedBorder.verticalSize << " " << setw(2) << newDetectedBorder.horizontalSize << " c:i " << setw(2) << _consistentCnt << ":" << setw(2) << _inconsistentCnt << std::endl;
|
||||
|
||||
// set the consistency counter
|
||||
if (newDetectedBorder == _previousDetectedBorder)
|
||||
@@ -50,7 +58,7 @@ bool BlackBorderProcessor::updateBorder(const BlackBorder & newDetectedBorder)
|
||||
else
|
||||
{
|
||||
++_inconsistentCnt;
|
||||
if (_inconsistentCnt <= 10)// few inconsistent frames
|
||||
if (_inconsistentCnt <= _maxInconsistentCnt)// only few inconsistent frames
|
||||
{
|
||||
//discard the newDetectedBorder -> keep the consistent count for previousDetectedBorder
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user