728x90
제목은 길지만 결국 얼굴영상을 가지고 개인을 식별하는 프로그램을 만들 생각이다. 개인의 사진을 database에 여러장 넣어두고 노화인식 기법을 이용해 특정인을 인증하는 방법은 현재 실용화되어 사용하는 만큼 자료도 많고 성공한다는 보장이 있다. 처음 등장하는 인물으 가지고 기존의 사진들로 유사도를 비교하는 것은 단순 이미지 비교외에는 아직 없는 듯 보인다.

쉽게 갈 수 있는 것들은 openCV 같은 라이브러리에 있는 것들을 쓰겠지만 특징점을 개인을 구별 할 수 있도록 만든다거나 눈코입의 위치를 정확히 잡는 것은 알고리즘을 많이 생각해봐야 한다. 금,토 이틀간 간단히 공부해서 프로그래밍 해보니 emguCV라는 C#용 openCV 라이브러리가 배포되어 있었다. 예제들을 이용해 간단한 얼굴인식 프로그램을 만들었는데 생각보다 지원되는 함수가 많다.(하지만 강력하진 않다.)

어느정도 얼굴인식은 된다. 그건 일단 라이브러리에 있는 것을 이용했다. XML을 동양인을 기준으로 만든 것으로 바꾼다거나 case가 다양한 것으로 바꾸지 않는 이상 개선될 방도가 없다. 눈을 인식하는 함수는 눈만을 잡아야 하는데 코랑 입까지 다 잡아버려서 사용하지 않기로 했다.

일단 얼굴을 대강 나눠서(가로 5등분, 세로 3등분) 눈코입이 있을만한 곳을 강제로 설정해뒀다. 물론 나중에 영상에서 찾는 것으로 바꿔야 한다.
(이유 : 고개를 상하좌우 어느쪽이든 살짝만 틀어도 눈코입의 위치가 달라지기 때문, 그나마 눈이 영향을 덜 받는다.)

특징점을 구하는 함수도 사용해봤다. gray영상에서 추출하는 것이 기본인데 밝은 부위를 집중적으로 잡아서 일단 영상을 2진화 시켜 외각선만 따온 상태에서 잡았다. 일단 특징점은 잡히는데 역시 이것을 그대로 사용하진 못한다. 같은 사람은 같은 자리에 특징점을 잡아야 하는데 이건 같은 사람이 같은 모습으로 있어도 특징점이 달라지니 큰일이다. 기존의 함수를 이용해서 특징점을 정규화 시킬 것인지 아니면 특징점을 직접 잡아낼 것인지 고민해봐야 겠다.
728x90

+ Recent posts