Box.size📦

스마트폰 카메라를 통한 박스 크기 측정

2023.7.6. ~ 2023.9.3.

Box.size📦 대표 이미지
android studio
openCV
0 번째 이미지
1 번째 이미지
2 번째 이미지
3 번째 이미지
4 번째 이미지
5 번째 이미지

스마트폰 카메라를 통해 박스의 실제 크기(가로, 세로, 높이)를 구할 수 있는 안드로이드 어플리케이션입니다.

2023년 CJ 미래기술 챌린지스마트폰 활용한 상품 체적 측정 주제로 출품하였습니다. 오직 스마트폰으로 카메라만을 통해 박스의 실제 크기를 구해야 했습니다. 사진에서 길이 기준으로 잡을 것이 없었던 만큼 카메라의 기본 원리에 입각하여 접근하였습니다.

카메라의 초점거리 : 실제 거리 = 이미지 상 박스 크기 : 실제 박스 크기

해당 원리에 의하면 카메라와 박스간의 거리를 구하면 실제 박스 크기를 구할 수 있다는 걸 알 수 있습니다. 아래 수식은 실제 박스 최하단 꼭짓점을 월드 좌표로 구하는 공식입니다.

P=Cw+k(pwCw)P = C_w + k(p_w - C_w)

이를 사용하기 위해 카메라의 내부/외부 파라미터를 구해야했고, 체커보드 패턴을 사용한 카메라 캘리브레이션 절차를 추가하였습니다.


이미지로부터 박스 각 변의 길이를 구하기 위해서는 먼저 박스 이미지를 추출해야 했습니다. 박스 이미지를 학습시킨 모델을 통해 Android ML kit박스 이미지만을 크롭해내었습니다.

그리고 OpenCV를 사용하여 크롭한 박스 이미지에서 배경제거를 하였고 윤곽선을 검출하여 각 꼭짓점을 계산했습니다. 계산된 꼭짓점을 이용하여 상자의 꼭짓점을 3D 좌표계로 변환하였고, 캘리브레이션을 통해 계산된 파라미터를 활용하여 실제 월드 좌표계로 변환하여 실제 박스의 체적을 도출해낼 수 있었습니다.

2023년 CJ 미래기술 챌린지 본선 진출 출품작입니다.

🔧 사용 기술

Android Studio Kotlin RxJava Python OpenCV TensorFlow ONNX

어플 구조

flow chart

알고리즘 구조

algorithm

👥 팀원

김종훈(팀장) 사진

김종훈(팀장)

캘리브레이션 / 거리 계산 알고리즘 개발

안혜준 사진

안혜준

인공지능 및 꼭짓점 검출 알고리즘 개발

김유빈 사진

김유빈

ML kit 객체 인식 및 어플 기능 개발

김지훈 사진

김지훈

알고리즘 개발