- c#
- oracle
- UI/UX Engineer
- postman collection
- Android/iOS Developer
- Front-end developer
- postman pre-request
- postman html parse
- 프런트엔드
- postman session
- postman collection variables
- postman excel
- postman
- Intellij
- postman tests
- web developer
- solidity
- 다빈치 리졸브
- 우수한 프런트 개발자
- postman csv
- MFC
- Android
- Interaction developer
- 좋은 개발자
- Unity
- postman automations
- C++
- Java
- emplace_back
- LSL_Script
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Today
- Total
david's daily developer note
영상처리 4방향 윤곽선 추적 알고리즘 본문
4방향 윤곽선 추적 알고리즘은 내가 영상처리를 공부하기 시작하고 처음 배운 알고리즘이다. 실력이 부족한 탓에 많이 고생했던 기억이 있다. 4방향 윤곽선 추적 알고리즘은 2*2 마스크를 이용하여 정해진 규칙에 의해 객체의 외곽선을 타고 돌면서 이동한 좌표의 정보를 저장한다. 이때 저장된 정보가 해당 객체의 윤곽선이 된다.
4방향의 규칙은 아래 표와같다
|
A |
B |
X |
Y |
전진 |
1 |
0 |
A |
B |
우측 |
0 |
1 |
B |
Y |
우측 |
1 |
1 |
A |
X |
좌측 |
0 |
0 |
X |
A |
표에서 1과 0의 뜻은 이진화된 영상에서 Gray 값이 0인 검정색을 1, 255 값인 흰색을 0 이라고 한 것이다
마스크는 이미지가 저장된 배열의 첫 픽셀(0 ,0)에서 시작하며, 마스크에서 현재 픽셀을 가르키는 것은
아래 마스크 그림에서 X이다. 객체를 만날 때까지 좌측에서 우측으로 위에서 아래로 이동한다
A |
B |
X |
Y |
1,2 |
1,3 |
2,2 |
2,3 |
처음 모양의 마스크에서 A의 좌표는 x =1, y =2 B의 좌표는 x =1 y =3 과 같다.
A,B의 좌표를 검사하여 0이면 1, 255면 0의 값을 구하고, A = 0 B = 0 의 결과가 나오면 위에 표의 규칙에 의해
X의 좌표는 X로 Y의 좌표는 A로 바꾼다. (예시의 방향에서 A,B가 0,0이면, 마스크는 좌측으로 회전한다.)
마스크는 다음과 같이 움직이게된다.
B |
Y |
A |
X |
여기서 중요한 포인트가있는데 바로 방향성이다. 즉 처음마스크 모양의 방향이 0방향이라고 할 때
현재 마스크는 왼쪽으로 90도 움직인 모양이므로 방향이 0방향에서 1방향으로 바꼇다 라고 할 수 있다
방향에 따라서 A , B의 좌표가 달라지기 때문에 방향에 따라서 A , B 의 좌표의 조건을 바꿔서
검사해야 한다. 이런 식으로 마스크는 객체를 타고 돌다 처음 좌표로 돌아오면 추적을 멈춘다.
이 알고리즘을 완성하기 위해서는 여러 가지 예외 처리를 생각해봐야한다.
외곽선을 타고 도는 마스크의 종료조건이나 최외곽 픽셀이 있을 경우 배열의 범위를 넘어서는 조건검사로 인한 실행오류등. 많은 생각을 해봐야 하는 알고리즘이고, 그 만큼 픽셀 단위 연산을 하는 영상처리에 대한 이해와 알고리즘 공부에 많은 도움이 된다.
'Develop (Algorithm)' 카테고리의 다른 글
line Intersect (0) | 2018.06.04 |
---|---|
Neural Network 연상메모리. (0) | 2010.06.27 |