kookmin-sw / 2019-cap1-2019_4

Flex Ads to implement advertising system in offline market
MIT License
10 stars 7 forks source link

Bounding Box 의 형태 인식과 RGBA Image Cropping #26

Closed james-sungjae-lee closed 5 years ago

james-sungjae-lee commented 5 years ago

C++ 코드 내에서 Bounding Box 는 bb 라는 이름의 2차원 배열로 나타나있다

bounding box 는 한 화면에 여러 개 나타날 수 있으며, 이에 따라 형태를 정확히 인식해야 한다.

우선 다중 클래스 detection 이 핵심 기능인 만큼, 각 클래스에 따라 다른 bounding box vector 를 갖는다.

그리고, 각 클래스가 여러 개 detecting 될 수 있기 때문에 하나의 class 내에 여러 개의 bounding box 가 존재한다.

bb[0], bb[1], bb[2], bb[3] 이 각각 xmin, ymin, xmax, ymax중 어떤 것을 의미하는지 정확하게 인식하고, 이를 활용하여 이미지를 cropping 하는 방법에 대해 조사한다.

james-sungjae-lee commented 5 years ago

bb[0] 와 bb[2] 는 x_min 과 x_max bb[1] 과 bb[3] 는 y_min 과 y_max 를 의미한다는 점을 확인하였다

첫 번째 시도는 detectnet-camera.cpp 코드에서 직접 Cropping 한 다음, 해당 RGBA 이미지를 저장하는 것이었다. 하지만 Cropping 을 위해서 QImage 객체를 생성해야 하는 과정에서 관련된 코드의 include ( link ) 에 문제가 생겼다.

이를 해결하기 위해 두 번째로 loadImage.h 와 cpp 파일을 cropping 할 수 있도록 수정하는 방법을 선택하였다. bounding box 정보를 바탕으로 for 반복문을 이용하여 cropping 을 시도하였으나, serPixel 과정에서 range out 문제가 발생하여 해결중에 있다.

Screenshot from 2019-04-01 14-11-58

setPixel 이 (0, 0) 부터 시작하지 않는 문제로 확인되며, 이를 해결하기 위해 index 를 조정할 필요가 있어 보인다.

james-sungjae-lee commented 5 years ago

range out 문제는 setPixel 에서 index 문제가 맞았으며,

해당 문제를 (x-x_min, y-y_min) 과 같이 변형함으로써 문제를 해결할 수 있었음.

2019_04_02_7