'머신비전'에 해당되는 글 1건

  1. 2018.11.03 머신비전 라이브러리 종류와 특징 2
posted by JMP 2018. 11. 3. 13:02

머신비전 라이브러리 종류와 특징을 나열해 보고자 한다.


머신비전에 사용되는 PC용 라이브러리 프로그램은 5가지 정도가 있다.

1. Intel OpenCV Vision Library

2. Matrox Imaging Library 

3. Euresys eVision Library,

4. Cognex Vision Pro

5. MVTec Halcon HDevelop Library


각 머신비전 라이브러리별 구입 금액, 기능, 언어 지원, 의견에

해해 나열하고자 한다.


첫째, Intel OpenCV Vision Library


유료? 무료?

프로그램의 소스가 공개되어있다. 

사용자 환경에서 입맛에 맛게 소스를 새로 빌드하여,

최적화(IPP, TBB, CUDA 기능 연동) 가능한 비전 라이브러리이다.


기능

기본 이미지 뿐만 아니라 Machine Learning 관련 알고리즘까지

다양하게 지원한다.


언어 지원

C, C++, Python, Java 등 다양한 언어를 지원한다.

단, C# 유저는 C++ CLI나 C#에서 사용가능하게 Wrapping된 

C# 라이브러리를 사용해야 한다.

C++ CLI란 Managed Code와 Unmanaged Code를 통합해서

Managed Language에서 사용할 수 있도록 만드는 라이브러리이다.

C++ CLI 클래스 라이브러리를 만드는데 드는 비용이 만만치 않다.

그러므로 C#에서는 Wrapping된 Managed 라이브러리를 사용하는 

것을 권장한다. Managed Library는 OpenCVSharp(완전 무료)과 

Emgu CV(일부만 무료)가 대표적인 Wrapping Library이다.


의견

C++과 STL등에 익숙한 사용자라면, 괜찮은 라이브러리이다.

패턴 매칭과 좌표계 전환등의 기능은 미약하지만,

측정보다는 검사기 쪽 기능(Blob처리, 필터링, 스티칭)에 적당하다.



둘째, Matrox Imaging Library



유료? 무료?

상용 프로그램이다. 금액은 상용 라이브러리 중 중하 정도에 분류된다.


기능

머신 비전, 이미지 분석, 의료 프로그램 기능등을 지원한다.

세부적 기능으로는 기본 이미지 전처리를 지원하고, 패턴매칭, 

Geometric Model Finder (GMF), 캘리퍼 (치수 측정)과 

OCR (Object Character Recognition) 등을 지원한다.


언어 지원

C, C++, C#등의 언어를 지원한다.


의견

예제와 매뉴얼이 잘 되어 있어 기본적인 비전에 대한

이해가 있다면 쉽게 따라할 수 있고 익힐 수 있는 라이브러리라고

생각한다.


버전은 최신 버전인 10.0 이후 버전을 사용하는 것을 권장한다.

이미징 라이브러리 기능들을 플로우 차트 형식으로 테스트할 수 

있는 프로그램이 제공되어, 개발 시간을 단축할 수 있다.



셋째, Euresys eVision Library



유료? 무료?

상용 프로그램이다. 금액은 적당히 저렴하다. 


기능

매트록스 이미징 라이브러리에 필적하는 기능들이 제공된다.

전처리, 패턴매칭, 치수 측정, OCR등이 제공된다.

예제를 쉽게 따라할 수 있는 어시스트(도움말 시스템)가 제공된다.
세부 파라미터, 필터 등의 자유도가 필요한 부분은 부족하다.


언어 지원

COM으로 개발되어 언어를 가지리 않고 지원가능하다.

C, C++, DELPHI, C#등을 지원한다.


의견

비전 얼라인, 측정 관련 프로그램 개발에 사용하면

괜찮을 것 같다.



넷째, Cognex Vision Pro


유료? 무료?

유료 프로그램이다. 공급자에게 부탁하면

무료 테스트 버전을 내려받을 수 있다.


기능


이것은 마치 바코드 리더기인줄 아는 사람이 많을 것으로 안다.

하지만 다양한 기능이 숨어있다. 그 기능들을 살펴보자.

패턴매치 기능이 엄청나다.

캘리퍼 툴을 사용하여 측정하는 기능도 다양하다.

Blob툴도 적당히 많은 기능들이 존재한다.

Fixturing이라는 상대/절대 좌표의 개념을 도입하여,

이미지 회전, 이동, 변환등을 다른 이미징 프로세스

알고리즘들과 연동하여 사용하기 편리하다.

다만 아쉬운 점은 검사기등에 필요한, 전처리 필터링 처리

기능이 조금은 제한 적이라 다소 아쉽다.


언어 지원

버전 8.2 미만 까지 C, C++, C#을 지원한다.

버전 8.2 이상 부터 C#만 지원한다.


내 메인 제어 프로그램을 C#으로 변경하도록

만들어 준 고마운 라이브러리 지원 정책이다.


의견

제품의 정합 여부나 측정 어플리케이션에서는

최고의 선택이지 싶다.



다섯째, MVTec Halcon


유료? 무료?
유료다. 그것도 자그마치 개발자 버전 라이센스 비용이 2천만원 가량된다.

런타임 라이센스 비용도 다른 비전 라이브러리 개발자 버전 라이센스 비용에

육박한다. 하지만 대량으로 장비 개발 계획이 있고, 특수한

알고리즘들이 필요하다면 투자를 고려할 만한 충분한 가치가 있다.


기능

머신비전 기능은 다 들어가있다.

HDevelop이라는 자체 스크립트를 운용할 수 있는 개발 환경을 제공한다.

모든 예제들을 이 환경에서 테스트가 가능하다. 테스트 완료된 자체 스크립트

프로그램은 사용자가 원하는 언어로 최종 생성할 수 있다.


언어 지원

C, C++ 및 C#등을 지원한다. 

COM 지원으로 다양한 언어에서 사용가능하다.


의견

머신 비전의 끝판왕이다.

하지만 제어 인자 및 알고리즘의 종류가 많다.

배워야할 시간이 충분하다면, 노력해서 얻을 수 있는

가치가 충분한 비전 라이브러리라고 판단한다.


정리

여기까지 머신비전 라이브러리 5가지 특징에 대해서 살펴보았다.


 제조사 

 라이브러리명

 금액 만족도

 기능 만족도

 언어지원 만족도

 Intel

 OpenCV

 ★★★★★

 ★★★

 ★★★

 Matrox

 Imaging Libaray

 ★★★★

 ★★★★

 ★★★★

 Euresys

 eVision Library

 ★★★★

 ★★★★

 ★★★★

 Cognex

 Vision Pro

 ★★★

 ★★★

 ★★★★

 MVTec

 Halcon

 ★★

 ★★★★★

 ★★★★★



본인은 양산 장비에 2, 3, 4(Matrox Imaging Library, Euresys eVision Library, 

Cognex Vision Pro)를 사용해 보았고 또 사용 중이다. 

1, 5(Intel OpenCV, MVTec Halcon) 은 간이 테스트 프로젝트와 특징들만 

간단히 테스트 해보았다.


라이브러리들의 제한적 기능 때문에 특화된 기능을 파악하고 적재적소에 

적용하는것이 중요하다. 하지만 여기에 그쳐서는 안되고 구현하고저 하는 

기능에 대한 기본 원리와 알고리즘을 파악하고 사용하는게 훨씬 더 

중요하고 깊이있는 프로그램을 완성하는 기반이 되지 않을까 싶다. 

기본적인 코드들은 라이브러리화해서 만들고 익혀놓는게, 결국 의미없는 모래성을 

쌓기위한 노력을 피할 수 있는 길이지 않을까 생각한다. 


필자의 머신비전 습득 권장 사항은 아래와 같다.

기본에 충실하는 하기 순서의 머신비전 습득을 본인은 추천한다.

첫째, 순수 C, C++ 기반 비전 프로그램 개발 

둘째, OpenCV 등 공개 프로그램 프로젝트 진행

셋째, 양산 장비에 특화되는 요소를 찾아 해당 기능에 최덕화된 라이브러리 취사 선택


위의 순서가 정석이라고 판단이 되지만,

맨땅에 헤딩도 한 두번이다.

비전 라이브러리를 접해보고 기본을 쌓아가는게

익힘의 방향을 잡아가는 방도가 될 수도 있다.

위에서 아래로 순차 익힘이 정석이겠지만 셋째, 첫째, 둘째 순서로 

진행하여도 무리가 가지 않으면 괜찮은 차선책이될 수 있겠다.