OpenCV는 체스 판 코너를 어떻게 찾습니까?


답변:


12

OpenCV의 소스 코드를 사용할 수 있으므로 코드를 살펴 보는 것이 좋습니다. 이 특정 기능과 관련된 파일은 다음과 같습니다.

calib3d / src / calibinit.cpp

자세히 살펴 보지 않았지만

CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
                             CvPoint2D32f* out_corners, int* out_corner_count,
                             int flags )

이 방법의 주요 구현입니다. 여기에 그들은

  1. cvCheckChessboard체스 판이 이미지에 있는지 확인하는 데 사용
  2. 이진 (B & W)으로 변환하고 구석을 분리하기 위해 확장
  3. icvGenerateQuads사각형을 찾는 데 사용 합니다.

다음 코드는 일련의 검사가이 응축하지만 갈 것으로 보인다 quads포함 체스 판 모서리에 icvFindConnectedQuads, icvCleanFoundConnectedQuads여분의 모서리를 제거 icvCheckQuadGroup하고 icvCheckBoardMonotony.

calib3d / src / checkchessboard.cppcvCheckChessboard 에있는 것을 제외하고 이러한 모든 기능은 동일한 파일로 구현됩니다 . 코드를 얼마나 잘 이해하고 싶었는지에 따라 여러 가지 디버깅 라인이있는 것 같습니다.이 라인은 포함되어있을 수 있으며 진행 상황을 확인하는 데 도움이 될 수 있습니다.#define DEBUG_CHESSBOARD


1
답변 주셔서 감사합니다. 나는 그것을 찾을 수 있다는 것을 알고 있지만, 단지 호기심이 많았지 만 소스 코드를 살펴볼만큼 호기심이 없었습니다. 나는 누군가가 이것을 알아 내고 그 원리를 설명 할 수 있기를 바랐다. :)
Geerten

1
나는 훌륭하게 쓰여진 논문을 찾았다.이 글은 또한 더 안정적이고 빠른 대안을 제공한다 (저자에 따르면) researchgate.net/publication/…
philippe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.