【BEV】OpenCV에서 bird eye view 변환을 실험해 본다
배경
「전부터 보고 있는 것을 Bird Eye View(위로부터의 시점)로 변환한다고 하는 것은?」
"위에 또 하나의 카메라가 붙어 있지 않아?"
최근까지 수학적으로 전혀 이미지 할 수 없었다.
BEV의 사고방식을 반짝반짝 쓴다.
알고리즘
어떻게하면 위에서 볼 수 있습니까?
위에서 본 도로의 사진은 흰색 선이 직선으로되어 있다고 생각합니다.
* 선이 곡선이 아니면
* 평행한 직선이면 무엇이든 okay
그러나, 전부터 보면 8의 시형이 되고 있네요. 이것은 먼 것이 작아 보이는 것에서 일어납니다.
실제로는 직선인 4점을 선택해, 직선이라고 하는 사실로부터, 직선이 되도록 늘리는 이미지로 변환하면, BEV가 됩니다.
opencv에서 실제로 시도했기 때문에보십시오.
설정
필요한 것은 직선인 4점을 선택하는 것만
lane_shape = [(584, 458), (701, 458), (295, 665), (1022, 665)]
top_left, top_right, bottom_left, bottom_right = lane_shape
source = np.float32([top_left, top_right, bottom_right, bottom_left])
destination = np.float32([(bottom_left[0], 0), (bottom_right[0], 0),
(bottom_right[0], self.img_height - 1), (bottom_left[0], self.img_height - 1)])
self.overhead_transform = cv2.getPerspectiveTransform(source,
destination)
bird eye view 변환
def warp_to_overhead(self, undistorted_img):
"""
Transforms this camera's images from the dashboard perspective to an overhead perspective.
Note: Make sure to undistort first.
"""
return cv2.warpPerspective(undistorted_img, self.overhead_transform, dsize=(self.img_width, self.img_height))
결과
before
after
결론
・평행한 직선이라는 사실에서 4점을 선택하면 변환하기 위한 Parameter를 얻을 수 있다.
・이 방법이라면 지면에 대한 카메라의 기울기나 지면이 평평하지 않은 경우 등은 사용할 수 없다.
거리의 정보를 가지고 있을까~라든지 기대했기 때문에가 없었습니다.
Reference
이 문제에 관하여(【BEV】OpenCV에서 bird eye view 변환을 실험해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/minh33/items/aca2d8777ad233c237ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
어떻게하면 위에서 볼 수 있습니까?
위에서 본 도로의 사진은 흰색 선이 직선으로되어 있다고 생각합니다.
* 선이 곡선이 아니면
* 평행한 직선이면 무엇이든 okay
그러나, 전부터 보면 8의 시형이 되고 있네요. 이것은 먼 것이 작아 보이는 것에서 일어납니다.
실제로는 직선인 4점을 선택해, 직선이라고 하는 사실로부터, 직선이 되도록 늘리는 이미지로 변환하면, BEV가 됩니다.
opencv에서 실제로 시도했기 때문에보십시오.
설정
필요한 것은 직선인 4점을 선택하는 것만
lane_shape = [(584, 458), (701, 458), (295, 665), (1022, 665)]
top_left, top_right, bottom_left, bottom_right = lane_shape
source = np.float32([top_left, top_right, bottom_right, bottom_left])
destination = np.float32([(bottom_left[0], 0), (bottom_right[0], 0),
(bottom_right[0], self.img_height - 1), (bottom_left[0], self.img_height - 1)])
self.overhead_transform = cv2.getPerspectiveTransform(source,
destination)
bird eye view 변환
def warp_to_overhead(self, undistorted_img):
"""
Transforms this camera's images from the dashboard perspective to an overhead perspective.
Note: Make sure to undistort first.
"""
return cv2.warpPerspective(undistorted_img, self.overhead_transform, dsize=(self.img_width, self.img_height))
결과
before
after
결론
・평행한 직선이라는 사실에서 4점을 선택하면 변환하기 위한 Parameter를 얻을 수 있다.
・이 방법이라면 지면에 대한 카메라의 기울기나 지면이 평평하지 않은 경우 등은 사용할 수 없다.
거리의 정보를 가지고 있을까~라든지 기대했기 때문에가 없었습니다.
Reference
이 문제에 관하여(【BEV】OpenCV에서 bird eye view 변환을 실험해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/minh33/items/aca2d8777ad233c237ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【BEV】OpenCV에서 bird eye view 변환을 실험해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/minh33/items/aca2d8777ad233c237ca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)