DY N DY

bomi 개발 시작 본문

PARK/영상처리 관련

bomi 개발 시작

손세지 2016. 11. 17. 15:36

영상에서의 객체인식, 분류 등등의 알고리즘을 연구하고 구현해보며 느낀건... 

대단한 수학자나 연구자가 아니기 때문에... 알고리즘에 들어가는 파라미터값을 조금씩 바꾸며 최적의 값을 찾는다거나

(물론 대단한 수학자라면 수학공식을 이용해 이론적인 최적해를 찾을 것이다. 부럽다..)

또는 조금씩 수정해보며 다른 더 좋은 방법을 찾는 등의 일이 많다는 것이다. 


구현을 해봤으면 이론은 이론이고 실제는 또 다르기 때문에 이런저런 변경된 사항 별로 실제로 눈으로 보거나 

차영상 등을 이용해 실험결과를 확인해보고 뭐가 더 좋으니 마니 이런걸 기록해가며... 연구했던 것 같다. 

물론 내가 멍청해서 그런것 같지만... 뭔가 진짜 머리가 좋은 분들은 수학공식으로 증명해가며 바로 딱 나오지 않을까..? 


결국 이렇게 실험하다 보면... 사실상의 알고리즘을 생각하고 구현하는 시간보다도 실험결과를 확인하는 시간이 더 많은데

이 시간을 줄여보고자... + 공부도 되지 않을까 하는 마음에 내가 고객이 되고 내가 개발자가 되어 필요한 프로그램을 만들어보고자 한다. 

사실 완성할 수 있을지는 장담을 못하겠다. 지금 생각한 것만 해도 막상 구현하기에는 너무나 어려울 것 같다...


만드려는 프로그램의 기능은 아래와 같다. (이름은... 우리집 고양이 이름을 따서.. 봄이..? bomi)

1. play multiple video (여러개의 영상을 동시에 재생)

2. draw ground truth (실험을 위해 ground truth를 제작)

3. xml writer (ground truth 외에도 영상내의 메모 정보 등을 저장)

4. image operation (영상간의 간단한 연산. 차영상 등)

5. calculate precision, recall - graph (입력된 xml값을 넣어주면 matlab같은 그래프로 결과를 계산하여 보여줌)

가장 필요한 기능들은 다음과 같고, 차차.... 가장 핵심 기능들을 단위별로 뽑아낼 예정.


이를 위해 필요한 툴을 여러개 찾아봤다. 

우선 영상처리 관련 오픈소스 라이브러리인 opencv를 사용해야 한다. 

때문에 처음 생각한 것은 MFC... 하지만 MFC는 예전에 아주 안좋은 기억이 있어 다시는 하기 싫다.... 

그외에 GUI를 구현하기 위해 qt, wxWigets, nara, gtk+ 등등등... 참 좋은게 많다. 

어떤것은 cross platform 지원에.. 뭐는 라이선스가 어떻고...한데 아무래도 언어 자체가 상당히 오래된 언어다 보니 수많은 라이브러리가 있는것은 좋으나...

뭔가 딱 마음에 드는게 없다... 


그나마 고르고 고르고 고르다.. Qt를 사용해볼까 하여 다운로드 받아 HelloWorld까지 띄워봤으나, 학부때 해봤다는 지인의 진절머리 난다는 말에 귀가 팔랑팔랑...


그래서 또 고민하다가... 

GUI하면 역시 C#이 아닌가 하는 마음에 예전에 WinForm을 만들어봤던 기억과... WPF로 프로젝트를 해봤던 기억을 되살려.. 

WPF를 이용해볼까 하며 opencv를 C#용으로 warpping한 것을 찾아보니... 

opencvSharp, emgu cv, opencvdotnet, SharperCV등등... 사실 opencvSharp 말고는 써본적도 들어본적도 없긴 하지만 이런게 있다고 한다. 

찾아보니 emgu cv, opencvSharp가 가장 유명하고 최신버전을 지원하는 것 같다.

https://github.com/shimat/opencvsharp

http://www.emgu.com/

둘중 하나로 하면 될 것 같다. 



사실 아직도 고민이 많다...

C++로 Qt로 가느냐... (C++ 자체는 익숙하기떄문에 쉬울 것 같다.)

C# WPF로 가느냐... (GUI그리기 등이 더 쉽고 WPF를 한번 해보긴 했다. xaml파일 때문에 멘붕이 오긴 했지만..)


+ 얼마나 걸릴지, 완성을 할 수 있을지도.. 


그래도 여기에 써놓으면 계속 보게 되서 조금씩이라도 진행하지 않으려나 하고 써본다..