#include <GT2004ImageProcessor.h>
Inheritance diagram for GT2004ImageProcessor:
The module scans vertical and horizontal lines in the image from top to bottom and from left to right. As the green of the field is very dark, all edges are characterized by a big difference of the y-channel of adjacent pixels. An increase in the y-channel followed by a decrease is an indication for an edge.
The projection of the pixels on the field plane is used to determine their relative position to the robot.
Definition at line 48 of file GT2004ImageProcessor.h.
GT2004ImageProcessor::GT2004ImageProcessor | ( | const ImageProcessorInterfaces & | interfaces | ) |
Constructor.
interfaces | The paramters of the GT2004ImageProcessor module. |
Definition at line 31 of file GT2004ImageProcessor.cpp.
References GT2004BeaconDetector::analyzeColorTable(), beaconDetector, pi, rotation2x2, vThreshold, and yThreshold.
double GT2004ImageProcessor::calcEdgeAngle | ( | const Vector2< int > & | pointInImage, | |
const Vector2< int > & | pointOnField, | |||
double | scanAngle, | |||
const RingBuffer< const unsigned char *, 7 > & | pixelBuffer, | |||
const bool | againstScanline = false , |
|||
int | channel = 0 | |||
) | const [private] |
The function calculates the angle of an edge at an edge point.
pointInImage | The edge point in image coordinates. | |
pointOnField | The edge point in field coordinates. | |
scanAngle | The angle of the scan line the point was found on. | |
pixelBuffer | The pixels on the scan line around the edge point. | |
againstScanline | The flag if bright to dark is detected against the direction of the scanline. | |
channel | The channel the gradient is calculated in. |
Definition at line 1397 of file GT2004ImageProcessor.cpp.
References Vector2< V >::abs(), Vector2< V >::angle(), ARROW, Geometry::calculatePointOnField(), Image::cameraInfo, ImageProcessorInterfaces::cameraMatrix, getCoords(), Image::image, ImageProcessorInterfaces::image, normalize(), pi, pi2, pi_2, Drawings::pink, prevCameraMatrix, Drawings::red, rotation2x2, LinesPercept::UNDEF, Vector2< V >::x, and Vector2< V >::y.
Referenced by scan().
void GT2004ImageProcessor::clusterRobots | ( | const unsigned char * | bottomPoint, | |
bool | redFound, | |||
bool | blueFound | |||
) | [private] |
The function clusters points of red and blue robots.
bottomPoint | The bottom point of the current scan column. | |
redFound | Has a red robot point been found? In that case, the last entry in the lines percept is that point. | |
blueFound | Has a blue robot point been found? In that case, the last entry in the lines percept is that point. |
Definition at line 1229 of file GT2004ImageProcessor.cpp.
References Vector2< V >::abs(), PlayersPercept::addBluePlayer(), PlayersPercept::addRedPlayer(), LinesPercept::blueRobot, Geometry::calculatePointOnField(), Image::cameraInfo, ImageProcessorInterfaces::cameraMatrix, closestBlue, closestRed, distance(), firstBlue, firstRed, getCoords(), ImageProcessorInterfaces::image, int(), lastBlue, lastRed, ImageProcessorInterfaces::linesPercept, noBlueCount, noRedCount, LinesPercept::numberOfPoints, ImageProcessorInterfaces::playersPercept, LinesPercept::points, prevCameraMatrix, LinesPercept::redRobot, Vector2< V >::x, and Vector2< V >::y.
GT2004ImageProcessor::DECLARE_DEBUG_COLOR_CLASS_IMAGE | ( | segmentedImage1 | ) | [private] |
GT2004ImageProcessor::DECLARE_DEBUG_IMAGE | ( | imageProcessorGradients | ) | [private] |
GT2004ImageProcessor::DECLARE_DEBUG_IMAGE | ( | imageProcessorBall | ) | [private] |
GT2004ImageProcessor::DECLARE_DEBUG_IMAGE | ( | imageProcessorGeneral | ) | [private] |
GT2004ImageProcessor::DECLARE_DEBUG_IMAGE | ( | imageProcessorPlayers | ) | [private] |
void GT2004ImageProcessor::execute | ( | ) | [virtual] |
Executes the module
Implements Module.
Definition at line 48 of file GT2004ImageProcessor.cpp.
References Goal::angle, Flag::angle, angleBetweenDirectionOfViewAndGround, ARROW, ballCandidate, ImageProcessorInterfaces::ballPercept, ballSpecialist, beaconDetector, Drawings::blue, Geometry::calculateHorizon(), Image::cameraInfo, ImageProcessorInterfaces::cameraMatrix, LandmarksPercept::cameraOffset, cmTricot, Goal::color, ImageProcessorInterfaces::colorTable, Geometry::Line::direction, edgeSpecialist, ImageProcessorInterfaces::edgesPercept, GT2004GoalRecognizer::execute(), GT2004BeaconDetector::execute(), filterPercepts(), LandmarksPercept::flags, CameraInfo::focalLength, CameraMatrix::frameNumber, Image::frameNumber, GT2004EdgeSpecialist::getEdgesPercept(), Geometry::getIntersectionPointsOfLineAndRectangle(), getRobotConfiguration(), RobotConfiguration::getRobotDimensions(), goalRecognizer, LandmarksPercept::goals, ImageInfo::horizon, ImageInfo::horizonEnd, ImageInfo::horizonInImage, ImageInfo::horizonStart, idText, ImageProcessorInterfaces::image, imageInfo, INIT_DEBUG_IMAGE, Pose3D::invert(), ImageProcessorInterfaces::landmarksPercept, ImageProcessorInterfaces::linesPercept, ColorCorrector::load(), longestBallRun, ImageInfo::maxImageCoordinates, RobotDimensions::motionCycleTime, normalize(), Geometry::Line::normalizeDirection(), LandmarksPercept::numberOfFlags, LandmarksPercept::numberOfGoals, numberOfScannedPixels, ImageProcessorInterfaces::obstaclesPercept, CameraInfo::opticalCenter, OUTPUT, pi, Flag::pinkAboveSkyblue, ImageProcessorInterfaces::playersPercept, prevCameraMatrix, prevCmTricot, Drawings::ps_solid, Drawings::red, GT2004EdgeSpecialist::reset(), EdgesPercept::reset(), ObstaclesPercept::reset(), PlayersPercept::reset(), BallPercept::reset(), LinesPercept::reset(), LandmarksPercept::reset(), CameraInfo::resolutionHeight, CameraInfo::resolutionWidth, Pose3D::rotation, scanColumns(), scanRows(), GT2004BallSpecialist::searchBall(), sqr, text, toDegrees(), Pose3D::translation, Flag::type, ImageInfo::vertLine, Vector2< V >::x, Vector3< V >::x, xFactor, Vector2< V >::y, Vector3< V >::y, yellow, Flag::yellowAbovePink, yFactor, and Vector3< V >::z.
Referenced by BB2004Calibrator::evolve().
void GT2004ImageProcessor::filterLinesPercept | ( | LinesPercept & | percept, | |
int | type, | |||
const CameraMatrix & | cameraMatrix, | |||
const CameraMatrix & | prevCameraMatrix, | |||
const Image & | image | |||
) | [private] |
The function filters the line-percepts, i.e. it removes potential misreadings, for the given line-type.
Definition at line 1497 of file GT2004ImageProcessor.cpp.
References Vector2< V >::angle(), normalize(), LinesPercept::numberOfPoints, and LinesPercept::points.
Referenced by filterPercepts().
void GT2004ImageProcessor::filterPercepts | ( | ) | [private] |
The function filters the percepts, i.e. it removes potential misreadings.
Definition at line 1295 of file GT2004ImageProcessor.cpp.
References PlayersPercept::bluePlayers, LinesPercept::border, ImageProcessorInterfaces::cameraMatrix, LinesPercept::field, filterLinesPercept(), ImageProcessorInterfaces::image, ImageProcessorInterfaces::linesPercept, PlayersPercept::numberOfBluePlayers, LinesPercept::numberOfLineTypes, LinesPercept::numberOfPoints, PlayersPercept::numberOfRedPlayers, pi, ImageProcessorInterfaces::playersPercept, prevCameraMatrix, and PlayersPercept::redPlayers.
Referenced by execute().
Vector2<int> GT2004ImageProcessor::getCoords | ( | const unsigned char * | p | ) | const [inline, private] |
The function converts an address to pixel coordinates.
p | An address in image.image. |
Definition at line 174 of file GT2004ImageProcessor.h.
References cameraResolutionWidth_ERS7, Image::image, and ImageProcessorInterfaces::image.
Referenced by calcEdgeAngle(), clusterRobots(), plot(), and scan().
bool GT2004ImageProcessor::handleMessage | ( | InMessage & | message | ) | [virtual] |
Handles an incoming message
message | The message |
Reimplemented from Module.
Definition at line 1476 of file GT2004ImageProcessor.cpp.
References GT2004BeaconDetector::analyzeColorTable(), beaconDetector, InMessage::getMessageID(), and idColorTable64.
void GT2004ImageProcessor::plot | ( | const unsigned char * | p, | |
Drawings::Color | color | |||
) | [private] |
Definition at line 1459 of file GT2004ImageProcessor.cpp.
References getCoords(), last, LINE, lineColor, Drawings::numberOfColors, Drawings::ps_solid, Vector2< V >::x, and Vector2< V >::y.
void GT2004ImageProcessor::scan | ( | const Vector2< int > & | start, | |
const Vector2< int > & | end, | |||
bool | vertical, | |||
bool | noLines | |||
) | [private] |
The function scans a line for line points.
start | The start point of the line. | |
end | The end point of the line. | |
vertical | Vertical lines are scanned for more information. | |
noLines | Should the line not be scanned for points on field lines or borders? |
Definition at line 509 of file GT2004ImageProcessor.cpp.
References abs(), LinesPercept::add(), ballCandidate, blue, Player::blue, LinesPercept::blueRobot, LinesPercept::border, calcEdgeAngle(), Geometry::calculateLineSize(), Geometry::calculatePointOnField(), Image::cameraInfo, ImageProcessorInterfaces::cameraMatrix, GT2004EdgeSpecialist::checkPoint(), closestBottom, cmTricot, COLOR_CLASS, ColorClasses::colorClassToDrawingsColor(), colorCorrector, ColorCorrector::correct(), DEBUG_IMAGE_SET_PIXEL_BLACK, DEBUG_IMAGE_SET_PIXEL_GREEN, DEBUG_IMAGE_SET_PIXEL_PINK, DEBUG_IMAGE_SET_PIXEL_RED, DEBUG_IMAGE_SET_PIXEL_YELLOW, dist(), distance(), DOT, edgeSpecialist, LinesPercept::field, firstBlue, firstRed, getCoords(), getPlayer(), Geometry::getSizeByDistance(), Player::getTeamColor(), goalAtBorder, gray, Drawings::gray, green, Image::image, ImageProcessorInterfaces::image, int(), CameraMatrix::isValid, lastBlue, lastRed, LINE, lineColor, ImageProcessorInterfaces::linesPercept, longestBallRun, noColor, noOrangeCount, Drawings::numberOfColors, LinesPercept::numberOfLineTypes, LinesPercept::numberOfPoints, numberOfScannedPixels, orange, orangeCount, Drawings::pink, pink, PLOT, prevCameraMatrix, prevCmTricot, Drawings::ps_solid, Drawings::red, red, Player::red, LinesPercept::redRobot, GT2004EdgeSpecialist::resetLine(), CameraInfo::resolutionHeight, CameraInfo::resolutionWidth, sgn, CameraInfo::simulated, skyblue, LinesPercept::skyblueGoal, sqr, Pose3D::translation, LinesPercept::UNDEF, vThreshold, Drawings::white, white, Vector2< V >::x, Vector2< V >::y, yellow, LinesPercept::yellowGoal, yThreshold, and Vector3< V >::z.
Referenced by scanColumns(), and scanRows().
void GT2004ImageProcessor::scanColumns | ( | ) | [private] |
The function scans columns for line points.
Definition at line 340 of file GT2004ImageProcessor.cpp.
References Geometry::Line::base, Image::cameraInfo, closestBottom, Geometry::Line::direction, Geometry::getIntersectionOfLines(), Geometry::getIntersectionPointsOfLineAndRectangle(), goalAtBorder, ImageInfo::horizon, ImageProcessorInterfaces::image, imageInfo, int(), ImageInfo::maxImageCoordinates, noBlueCount, noRedCount, CameraInfo::resolutionHeight, CameraInfo::resolutionWidth, scan(), ImageInfo::vertLine, Vector2< V >::x, and Vector2< V >::y.
Referenced by execute().
void GT2004ImageProcessor::scanRows | ( | ) | [private] |
The function scans rows for line points.
Definition at line 471 of file GT2004ImageProcessor.cpp.
References Geometry::Line::base, Geometry::Line::direction, Geometry::getIntersectionPointsOfLineAndRectangle(), Drawings::green, ImageInfo::horizon, imageInfo, LINE, ImageInfo::maxImageCoordinates, Drawings::ps_solid, scan(), ImageInfo::vertLine, Vector2< V >::x, and Vector2< V >::y.
Referenced by execute().
double GT2004ImageProcessor::angleBetweenDirectionOfViewAndGround [private] |
Vector2<int> GT2004ImageProcessor::ballCandidate [private] |
The beacon detector
Definition at line 94 of file GT2004ImageProcessor.h.
Referenced by execute(), GT2004ImageProcessor(), and handleMessage().
Vector2<int> GT2004ImageProcessor::closestBlue [private] |
Closest blue robot point in a cluster.
Definition at line 76 of file GT2004ImageProcessor.h.
Referenced by clusterRobots().
int GT2004ImageProcessor::closestBottom [private] |
Closest bottom point on the grid.
Definition at line 70 of file GT2004ImageProcessor.h.
Referenced by scan(), and scanColumns().
Vector2<int> GT2004ImageProcessor::closestRed [private] |
Closest red robot point in a cluster.
Definition at line 76 of file GT2004ImageProcessor.h.
Referenced by clusterRobots().
CameraMatrix GT2004ImageProcessor::cmTricot [private] |
Camera matrix without tricot height.
Definition at line 88 of file GT2004ImageProcessor.h.
The color correction tool.
Definition at line 92 of file GT2004ImageProcessor.h.
Referenced by scan().
The edge specialist.
Definition at line 100 of file GT2004ImageProcessor.h.
Vector2<int> GT2004ImageProcessor::firstBlue [private] |
First blue robot point in a cluster.
Definition at line 76 of file GT2004ImageProcessor.h.
Referenced by clusterRobots(), and scan().
Vector2<int> GT2004ImageProcessor::firstFlag [private] |
First flag point in a cluster.
Definition at line 76 of file GT2004ImageProcessor.h.
Vector2<int> GT2004ImageProcessor::firstRed [private] |
First red robot point in a cluster.
Definition at line 76 of file GT2004ImageProcessor.h.
Referenced by clusterRobots(), and scan().
bool GT2004ImageProcessor::goalAtBorder [private] |
Is the first goal point at the image border?
Definition at line 84 of file GT2004ImageProcessor.h.
Referenced by scan(), and scanColumns().
ImageInfo GT2004ImageProcessor::imageInfo [private] |
Additional information about the current image
Definition at line 102 of file GT2004ImageProcessor.h.
Referenced by execute(), scanColumns(), and scanRows().
const unsigned char* GT2004ImageProcessor::last [private] |
Vector2<int> GT2004ImageProcessor::lastBlue [private] |
Last blue robot point in a cluster.
Definition at line 76 of file GT2004ImageProcessor.h.
Referenced by clusterRobots(), and scan().
Vector2<int> GT2004ImageProcessor::lastFlag [private] |
Last flag point in a cluster.
Definition at line 76 of file GT2004ImageProcessor.h.
Vector2<int> GT2004ImageProcessor::lastRed [private] |
Last red robot point in a cluster.
Definition at line 76 of file GT2004ImageProcessor.h.
Referenced by clusterRobots(), and scan().
int GT2004ImageProcessor::longestBallRun [private] |
int GT2004ImageProcessor::noBlueCount [private] |
Number of columns without a blue robot point.
Definition at line 70 of file GT2004ImageProcessor.h.
Referenced by clusterRobots(), and scanColumns().
int GT2004ImageProcessor::noGoalCount [private] |
Number of columns without a opponent goal seen.
Definition at line 70 of file GT2004ImageProcessor.h.
int GT2004ImageProcessor::noOrangeCount [private] |
Number of columns without a ball point.
Definition at line 70 of file GT2004ImageProcessor.h.
Referenced by scan().
int GT2004ImageProcessor::noRedCount [private] |
Number of columns without a red robot point.
Definition at line 70 of file GT2004ImageProcessor.h.
Referenced by clusterRobots(), and scanColumns().
int GT2004ImageProcessor::numberOfScannedPixels [private] |
int GT2004ImageProcessor::orangeCount [private] |
Number of columns with ball points.
Definition at line 70 of file GT2004ImageProcessor.h.
Referenced by scan().
The camera matrix of the previous image.
Definition at line 88 of file GT2004ImageProcessor.h.
Referenced by calcEdgeAngle(), clusterRobots(), execute(), filterPercepts(), and scan().
The tricot matrix of the previous image.
Definition at line 88 of file GT2004ImageProcessor.h.
Matrix2x2<double> GT2004ImageProcessor::rotation2x2 [private] |
Definition at line 191 of file GT2004ImageProcessor.h.
Referenced by calcEdgeAngle(), and GT2004ImageProcessor().
int GT2004ImageProcessor::vThreshold [private] |
Brightness decrease threshold.
Definition at line 69 of file GT2004ImageProcessor.h.
Referenced by GT2004ImageProcessor(), and scan().
double GT2004ImageProcessor::xFactor [private] |
Factor to convert the pixel coordinate space to the anglular coordinate space.
Definition at line 66 of file GT2004ImageProcessor.h.
Referenced by execute().
double GT2004ImageProcessor::yFactor [private] |
Factor to convert the pixel coordinate space to the anglular coordinate space.
Definition at line 66 of file GT2004ImageProcessor.h.
Referenced by execute().
int GT2004ImageProcessor::yThreshold [private] |
Brightness increase threshold.
Definition at line 68 of file GT2004ImageProcessor.h.
Referenced by GT2004ImageProcessor(), and scan().