hyperion.ng/libsrc/hyperion/BlackBorderProcessor.h

71 lines
2.2 KiB
C
Raw Normal View History

#pragma once
// Local Hyperion includes
#include "BlackBorderDetector.h"
namespace hyperion
{
2013-09-09 04:54:13 +02:00
///
/// The BlackBorder processor is a wrapper around the black-border detector for keeping track of
/// detected borders and count of the type and size of detected borders.
///
class BlackBorderProcessor
{
public:
2013-09-09 04:54:13 +02:00
///
/// Constructor for the BlackBorderProcessor
/// @param unknownFrameCnt The number of frames(images) that need to contain an unknown
/// border before the current border is set to unknown
/// @param borderFrameCnt The number of frames(images) that need to contain a vertical or
/// horizontal border becomes the current border
/// @param blurRemoveCnt The size to add to a horizontal or vertical border (because the
/// outer pixels is blurred (black and color combined))
///
BlackBorderProcessor(
const unsigned unknownFrameCnt,
const unsigned borderFrameCnt,
const unsigned blurRemoveCnt);
2013-09-09 04:54:13 +02:00
///
/// Return the current (detected) border
/// @return The current border
///
BlackBorder getCurrentBorder() const;
2013-09-09 04:54:13 +02:00
///
/// Processes the image. This performs detecion of black-border on the given image and
/// updates the current border accordingly. If the current border is updated the method call
/// will return true else false
///
/// @param image The image to process
///
/// @return True if a different border was detected than the current else false
///
bool process(const RgbImage& image);
private:
2013-09-09 04:54:13 +02:00
/// The number of unknown-borders detected before it becomes the current border
const unsigned _unknownSwitchCnt;
2013-09-09 04:54:13 +02:00
/// The number of horizontal/vertical borders detected before it becomes the current border
const unsigned _borderSwitchCnt;
2013-09-09 04:54:13 +02:00
/// The number of pixels to increase a detected border for removing blury pixels
unsigned _blurRemoveCnt;
2013-09-09 04:54:13 +02:00
/// The blackborder detector
BlackBorderDetector _detector;
2013-09-09 04:54:13 +02:00
/// The current detected border
BlackBorder _currentBorder;
2013-09-09 04:54:13 +02:00
/// The border detected in the previous frame
BlackBorder _previousDetectedBorder;
2013-09-09 04:54:13 +02:00
/// The number of frame the previous detected border matched the incomming border
unsigned _consistentCnt;
};
} // end namespace hyperion