배경
프로젝트 전체 로직
1. YOLO 모델을 통해 점자 객체를 탐지
2. 이미지 전처리 후
3. 정면 이미지를 점자 해석 알고리즘에 INPUT
이 중 실시간 YOLO 카메라를 통해서 들어오는 이미지를 3번 과정을 위해 정면으로 돌리는 역할을 맡게 되었다.
이미지
점자 이미지는 점의 배열 3*2(예외 케이스가 존재)로 구성되어 있고, 각 점은 돌출 형식으로 되어 있다.
이 예시 이미지를 기준으로 구현해보자.

이미지 정렬 변환 및 변환 과정
1.윤곽선 검출 및 경계 상자 설정 detect_object
- 이미지를 GrayScale
- 이진화(threshold)를 통한 객체 추출
- cv2의 findContours() 메소드를 통해 외곽선을 찾음
- 외곽선 길이 1%로 근사화 정확도 설정
- 외곽선을 다각형으로 근사화

[ 0 49]
[ 0 256]
[359 228]]
2. 경계 상자 기반 이미지 전처리 set_output_shape
- 경계 박스의 크기를 계산
- 계산된 가로 세로 길이를 사용해 출력 이미지의 4개의 꼭짓점 좌표 설정
-> 변환 매트릭스 계산시 사용
Output Shape: [[359 0]
[ 0 0]
[ 0 242]
[359 242]]
3. 이미지 정렬 warp_img
- cv2.getPerspectiveTransform 메소드를 사용해 객체 경계 박스 점과 출력 형태 점들을 기반으로 변환 매트릭스 계산
- wrapPerspective 메소드를 사용해 이미지 변환

이미지 워핑과 객체 감지 한계
이 방법의 단점은 목표로 정한 예제 사진과 같이 밝은 배경에서는 잘 작동하지만 어두운 배경에서는 문제가 발생
- 이진화
- 밝은 배경에서는 객체, 배경간 명암 차이가 커서 이진화 작업이 효과적
- 어두운 배경에서는 객체와 배경의 명암 차이가 작아 이진화 작업이 잘 되지 않음 -> 객체 감지 정확도 Down
- 외곽선 감지
- 객체와 배경의 경계가 명확할 때 잘 작동하지만 어두운 이미지에서는 경계가 불분명해져서 외곽선 감지가 어려움
- 타겟 경계 박스 설정
- 워핑 작업 수행시 타겟 경계 박스가 필요한데 어두운 배경에서는 1,2와 같은 이유로 타겟 박스 설정이 어려움
결론
예제 사진과 같은 밝은 배경은 정면으로 정렬시키는 작업은 성공했다. 하지만 어두운 배경에서 객체를 감지하여 정면 이미지 변환 작업은 해결하지 못했다.
밝은 배경에서는 비교적 쉽게 가능했지만 이를 위해서 이미지 명암비 조정이나 다른 정보들을 더 찾아보고 공부한 후에 완성해보고 싶다.