findhomography 예제

이 기사가 마음에 들어서 고 코드 (C ++ 및 파이썬) 및 이 게시물에 사용 된 예제 이미지를 다운로드 하려는 경우, 우리의 뉴스 레터를 구독 하시기 바랍니다. 또한 무료 컴퓨터 비전 리소스 가이드를 받게 됩니다. 뉴스레터에서는 C++/Python으로 작성된 OpenCV 자습서 및 예제와 컴퓨터 비전 및 기계 학습 알고리즘 및 뉴스를 공유합니다. 아래 결과를 참조하십시오. 개체는 어수선한 이미지에서 흰색으로 표시됩니다: 두 이미지 간의 상모그래피를 계산하려면 두 이미지 간에 최소 4포인트 통신을 알아야 합니다. 4 개 이상의 해당 포인트가있는 경우, 그것은 더 낫다. OpenCV는 모든 해당 지점에 가장 적합한 호모그래피를 강력하게 추정합니다. 일반적으로 이러한 포인트 대응은 이미지 간에 SIFT 또는 SURF와 같은 기능을 일치시켜 자동으로 발견되지만,이 게시물에서는 단순히 손으로 포인트를 클릭하려고합니다. 그래서 우리는 지난 세션에서 무슨 짓을했습니까? 우리는 쿼리이미지를 사용, 그것에 몇 가지 특징 점을 발견, 우리는 다른 trainImage를했다, 너무 그 이미지의 기능을 발견하고 우리는 그들 중 최고의 일치를 발견했다. 요컨대, 우리는 다른 복잡한 이미지에서 개체의 일부 의 위치를 발견했다. 이 정보는 기차에서 정확히 개체를 찾기에 충분하다이미지. 이 게시물을 읽은 후 당신은 아마 가상 광고판에 이미지를 넣어하는 방법에 대한 아이디어가. 그림 4.

인터넷에 업로드된 첫 번째 이미지를 표시합니다. 이를 위해, 우리는 교정 모듈, 즉 cv2.findHomography ()에서 기능을 사용할 수 있습니다. 두 이미지에서 점 집합을 전달하면 해당 개체의 perpective 변환을 찾을 수 있습니다. 그런 다음 cv2.perspectiveTransform()를 사용하여 개체를 찾을 수 있습니다. 변환을 찾으려면 최소 4개의 올바른 점이 필요합니다. 이제 최소 10개의 일치 항목(MIN_MATCH_COUNT에 의해 정의)이 개체를 찾을 수 있는 조건을 설정합니다. 그렇지 않으면 일치하는 항목이 충분하지 않다는 메시지가 표시됩니다. 이제 호모그래피는 3 × 3 매트릭스이기 때문에 우리는 그것을 쓸 수 있지만 평면에없는 점은 어떻습니까? 그림 2에서 볼 수 있듯이 이러한 내용은 상모그래피에 의해 정렬되지 않습니다. 하지만 잠깐, 이미지에 두 개의 평면이있는 경우? 글쎄, 당신은 두 개의 동형화 – 각 평면에 대해 하나씩 있습니다. OpenCV 및 파이썬기능 매칭 튜토리얼에 오신 것을 환영합니다. 기능 일치는 완벽하거나 완벽에 매우 가까운 일치하는 템플릿 일치의 약간 더 인상적인 버전이 될 것입니다.

“Homography”와 같은 용어는 종종 우리가 여전히 의사 소통에 어려움을 겪는 방법을 생각 나게합니다. 호모그래피는 이상한 이름의 간단한 개념입니다! 그림 2의 이미지입니다. 다음 C++ 코드를 사용하여 생성할 수 있습니다. 아래 코드는 두 이미지에서 4개의 해당 지점을 다른 이미지로 왜곡하는 방법을 보여 주며, 이미지를 왜곡하는 방법을 보여 주어 있습니다. 그림 1에 표시된 사진이 있다고 가정해 보겠습니다. 책의 네 모서리를 클릭하고 그림 3에 표시된 것과 같은 이미지를 빠르게 얻을 수 있다면 멋지지 않을 까요? 아래 다운로드 섹션에서 이 예제의 코드를 얻을 수 있습니다.