인프런 커뮤니티 질문&답변

guentc1님의 프로필 이미지
guentc1

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

OpenCV를 활용한 이미지 처리 실습

이미지 값, bounding box 값 min max

작성

·

1.2K

0

안녕하세요~! 선생님, 혼동이 와서 질문을 드립니다.

수업시간에서 이미지를 들고 왔습니다. 이미지에서의 top left가 0부터 시작하고 x도 0으로 xmin, ymin인 것 같은데 bounding box 값에서는 bottom left가 xmin, ymin으로 되는 건가요~?

image와 bounding box에서의 min max 위치가 다른 것일까요?

bouding box 값을 변경하는 과정(yolo format, coco, pascal 등)에서 헷갈리고 있습니다...ㅠㅠ 

실례가 안된다면  annotation의 bounding box값 형태 또는 opencv retangle을 사용하면 변경 과정에 대한 영상도 추가적으로 가능할까요?

추가적으로 안 되도 괜찮습니다~! 찾아보고 더 공부하도록 하겠습니다.

아~! yolo format - class, x center, ycenter, width, height와 coco dataset의 bounding box의 width, height가 이미지의 w와 h가 아닌 bbox의 w,h 값이라고 생각했는데 서로 다른 것일까요??

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

네, 충분히 이해갈 정도로 VOC, COCO와 같은 데이터세트, OpenCV 좌표, YOLO 모델에서 좌표가 각각 따로 놉니다.

하지만 일반적으로 좌상단(top left), 우하단(bottom right) 좌표는 이미지와 bounding box모두 동일하게 표시합니다.

먼저 OpenCV는 주로 Rectangle을 표시하는데, 좌상단 좌표(top left x1,y1 좌표), 우하단 좌표(bottom right x2,y2 좌표)를 사용해 왔습니다.

VOC 데이터 세트도 이렇게 bbox를 표시합니다. 좌상단 좌표(xmin, ymin), 우하단 좌표(xmax, ymax)로 표시합니다.

VOC의 경우 이미지는 좌표로 표시하지 않고, size로 가로(witdth), 세로(height)로 표시합니다. 이미지의 경우 좌표까지는 알 필요가 없습니다. 이미지의 크기가 얼마인지만 알면 됩니다. 

Bounding box를 좌상단, 우하단으로 표시하기도 하지만, 좌상단(top left x1, y1)과 가로(width), 세로(height)로 표현하기도 합니다. Coco가 대표적인 사례 입니다.

그리고 아래 질문은,

yolo format - class, x center, ycenter, width, height와 coco dataset의 bounding box의 width, height가 이미지의 w와 h가 아닌 bbox의 w,h 값이라고 생각했는데 서로 다른 것일까요??

=> yolo format 의 xcenter, ycenter, width, height는 bounding box 기준입니다.

다만 xcenter, ycenter는 좌상단 좌표가 아니라, box의 가운데 중심 좌표 입니다.

개별 데이터 세트의 이런 특징을 파악한 뒤에 Yolo등의 모델에 입력할 때는 좌표 변환을 그에 맞게 수행하면 됩니다.

감사합니다.

guentc1님의 프로필 이미지
guentc1

작성한 질문수

질문하기