영상들을 변환하는 방법으로는 밑의 방법들이 기본입니다.
Original 의 이미지를 위치를 옮기거나( Translation ), 형태를 유지한 상태로 각도만 바꾸거나( Rotation ), 평행을 유지한 상태로 이미지를 변환하거나( Affine ), 평행도 유지하지 않고 변환할 수 있습니다.( Homograpy )
그렇게 변한 이미지를 Original 이미지와 같이 만들어주거나 다른 모양으로 만들어줄 수 있습니다.
이번 시간에는 Homograpy방법을 프로그래밍해보겠습니다.
똑같은 책상 위에 책을 두고 다른 각도에서 찍은 사진입니다.( 첫번째 사진과 두번째 사진입니다. )
이미지를 변환시키기 위해 필요한 행렬을 함수를 이용해 찾습니다. ( 책이라는 동일한 이미지의 4모서리를 기준으로 잡아서 확인하겠습니다. Homograpy는 4개 이상의 좌표가 있어야 실행할 수 있습니다. )
1. 2개의 이미지를 불러와 각 책의 모서리 좌표를 찾습니다.
2. 찾은 점들의 좌표를 4행 2열의 numpy array로 만들어줍니다.
3. OpenCV에서 Homography의 변환행렬을 찾아주는 함수인 findHomography()를 이용합니다.( Homography변환행렬을 h에 받아 들어온 값을 밑의 터미널에 출력하였습니다. )
4. 받아온 행렬을 이용해 warpPerspective함수를 실행해 이미지를 생성합니다.
이렇게 코드를 작성하면 첫번째 책의 4모서리의 점이 두번째 책의 4모서리로 변환되는 행렬이 만들어집니다.( h )
이 변환행렬을 이용해 첫번째 이미지를 두번째 이미지와 같은 각도로 찍은것처럼 사진을 변환해줍니다.
'프로그래밍 > openCV' 카테고리의 다른 글
차선 검출하기 (0) | 2021.04.22 |
---|---|
허프 변환 ( Hough Transform ) (0) | 2021.04.21 |
엣지 검출하기 (feat. sobel, Laplacian, Canny) (0) | 2021.04.20 |
OpenCV 시작하기( feat. visual studio code ) (0) | 2021.04.17 |