배너
닫기

산업동향

배너

머신비전 소프트웨어, 왜 중요한가?

이미징, 처리 및 궁극적으로 결과 지원하고 구동하는 엔진

URL복사
[선착순 무료] 자동차와 전자산업을 위한 AI 자율제조혁신 세미나를 개최합니다 (4/24, 코엑스1층 전시장B홀 세미나장)

헬로티 김진희 기자ㅣ

 

머신비전 기술의 성공적인 적용에는 복잡하고 세심하게 균형을 이룬 다양한 요소들이 필요하다. 이미지 생성, 수집, 구성 요소 제어 및 인터페이스 작업을 수행하는 하드웨어 구성요소는 솔루션에 매우 중요하지만, 머신비전 소프트웨어는 이미징, 처리 및 궁극적으로 결과를 지원하고 구동하는 ‘후드 아래의(under the hood)’ 엔진이다.

 

소프트웨어가 산업용 머신비전 시스템에 미치는 다양한 영향과 다양한 구성들의 구조 내에서 완벽한 솔루션을 달성하기 위해 소프트웨어가 어떻게 적용되는지 자세히 살펴보자. 또한 산업 자동화를 위한 일부 머신비전 작업에서 신뢰성을 더욱 높이는 데 기여할 수 있는 소프트웨어의 일반적인 설계 및 사양 기준과 현재 동향에 대해서도 간략히 살펴보도록 한다.

 

 

머신비전 시스템 및 소프트웨어 구조들

 

다양한 머신비전 기술 시장은 구조가 매우 다양한 구성요소와 시스템을 갖추고 있다. 소프트웨어는 모든 시스템의 필수적인 부분이지만, 물리적 시스템 구조에 따라 소프트웨어의 "모양과 느낌"과 구성 요소와의 상호작용 방식은 다르다.

 

산업용 머신비전에서 사용할 수 있는 많은 시스템에는 전용 운영 체제를 사용하여 전용 컴퓨팅 플랫폼에 직접 연결되거나 테더링된 제조업체별 이미징 장치가 있다. 복잡한 구조처럼 들릴 수도 있지만, 머신비전 시장에서 일반적으로 ‘스마트 카메라’라고 불리는 사용하기 쉬운 제품들이다. 보다 간단히 말하면, 스마트 카메라(및 유사한 아키텍처)는 머신비전 작업을 독립형 구성요소로 실행하는 데 필요한 모든 이미징 및 컴퓨팅 장치들을 포함하는 완전히 패키지화된 비전 시스템이다.

 

스마트 카메라와 달리, 일반적으로 구현되는 다른 머신비전 시스템은 완전히 개방된 구조를 가지고 있다. 이 구조에서는 범용 영상 장치(즉, 애플리케이션의 요구에 적합한 카메라 또는 센서)가 상용 운영 체제를 실행하는 표준 컴퓨팅 플랫폼에 연결된다. 카메라에서 컴퓨터로의 인터페이스는 여러 산업 표준 이미지 전송 프로토콜들 중 하나를 가장 많이 사용한다.

 

실제 구현의 관점에서, 머신비전 소프트웨어에 대한 하나의 구조는 시스템 구성 요소와 머신비전 기능 및 작업을 실행하는 방법을 ‘구성’하는 애플리케이션이라고 설명할 수 있다. 이러한 앱은 직관적이고 그래픽으로 다루어지는 애플리케이션 구성 단계를 지닌 ‘사용 편의성’에 초점을 맞춘 그래픽 사용자 인터페이스(GUI)를 사용하는 경향이 있다.

 

전용 및/또는 전용 물리적 구성을 사용하는 스마트 카메라와 시스템은 거의 항상 이러한 고정되고(종종 매우 철저히) 구성 가능한 도구 모음을 갖춘 소프트웨어를 갖추고 있으며, 이 소프트웨어를 통해 제한적이지만 일반적으로 사용자가 정의할 수 있는 순서로 선택하여 완벽한 머신비전 애플리케이션을 실행할 수 있다.

 

스마트 카메라의 경우 일반적으로 구성 소프트웨어는 비전 시스템 외부의 컴퓨터에서 실행된다. 전용 컴퓨팅 플랫폼을 사용하는 다른 시스템에는 애플리케이션의 구성을 제공하는 소프트웨어와 함께 전체 그래픽 사용자 인터페이스가 시스템에 내장되어 있을 수 있다.

 

게다가 ‘구성 가능한’ 소프트웨어 애플리케이션들은 Windows 또는 Linux와 같은 표준 운영 체제를 실행하는 개방형 시스템 아키텍처에서도 쉽게 사용할 수 있다. 그러나, 이 애플리케이션의 기능은 머신비전 엔지니어가 하드웨어를 조작하고 도구를 선택/구성하여 애플리케이션을 수행할 수 있는 소프트웨어 플랫폼을 제공하는 것이다.

 

구현 스펙트럼의 다른 쪽 끝에는 완전한 프로그래밍이 가능한 개방형 구조의 머신비전 시스템을 위해 설계된 소프트웨어가 있다. 일반적으로 C, C++, C#, .NET 언어로 컴퓨터 프로그래밍에 대한 적절한 수준의 경험이 있는 사용자를 대상으로 하는 이러한 소프트웨어 제품은 ‘소프트웨어 개발 키트(SDK)’ 또는 ‘라이브러리’라고 불릴 수 있으며, 적절히 결합될 때, 매우 기본적인 작업부터 매우 복잡한 작업까지 적절히 수행할 수 있는 하위 및 중간 수준의 연산자(알고리즘)를 광범위하게 선택할 수 있다.

 

또한 대부분의 경우 머신비전 애플리케이션 개발을 위해 특별히 설계된 라이브러리는 IDE(통합 개발 환경) 또는 라이브러리에 있는 기본 툴을 기반으로 구축된 설정 가능한 소프트웨어 애플리케이션을 지원한다. 이러한 제품 확장은 개별 도구나 알고리즘의 전체 기능을 희생하지 않고 이러한 라이브러리를 사용하는 애플리케이션에서 개발 프로세스를 훨씬 쉽게 만들 수 있으며, 경우에 따라 구성된 애플리케이션 코드 또는 스크립트를 하위 수준의 프로그래밍 언어로 자동으로 이동하는 경로를 제공할 수도 있다.

 

 

머신비전 시스템에서 소프트웨어의 역할

 

자동화 설정의 일반적인 머신비전 애플리케이션은 검사 또는 결함 감지에서부터 복잡한 3D 계측 또는 로봇 안내에 이르기까지 다양하다. 그러나 대부분의 구현에서 소프트웨어에서 지원되어야 하는 기본 작업은 일반적으로 비슷하다. 머신비전 시스템에서 소프트웨어의 역할을 더 잘 설명하기 위해, 각 사례에서 머신비전 소프트웨어가 수행하는 기능과 시스템 구성 요소를 지원하는 방법에 대해 알아보기 위해 다음의 작업들을 살펴본다.

 

1. 이미지화 및 획득(Imaging and acquisition)

머신비전 응용 프로그램의 영상 장치는 머신비전 작업과 직관적으로 연결되어 있어서 ‘카메라’라는 용어가 때때로 전체 머신비전 시스템을 참조하는 데 사용된다("해당 검사에 사용하는 카메라의 종류는 무엇인가?"처럼).

 

그러나 기본적으로 모든 머신비전 시스템에는 이미지 생성 과 조작을 위한 개별 하드웨어 구성요소인 카메라/센서/감지기라는 장치가 한개 이상 있다. 사실상 이러한 모든 장치들은 전용 전자 장치 및 펌웨어를 사용하여 낮은 수준의 감지 및 이미지 전송을 관리하지만, 우리가 논하는 중요한 소프트웨어 기능은 장치가 이미지를 형성하는 방식을 구성하고 컴퓨팅 플랫폼에 전송하는 방법을 제공한 후에 이미지를 획득하기까지의 매개변수들을 실행하고 제어하는 것이다.

 

스마트 카메라 또는 자체 내장 아키텍처에서 이미징 매개 변수를 가장 자주 조작하는 소프트웨어는 전체 소프트웨어 패키지의 일부다. 이러한 장치에서는 이미지를 프로세서로 전송하는 것은 펌웨어의 최소한의 필수구성의 펌웨어 기능이다.

 

개방형 아키텍처에서 카메라 제조업체는 센서/카메라 제어를 위해 이미징 장치와 인터페이스하는 SDK 및/또는 독립형 애플리케이션을 제공할 수 있다. 이 경우 이미징 구성요소들의 더 많은 융통성이 있기에, 카메라 및 프레임 그래버 제조업체는 일반적으로 컴퓨터에서 이미지 전송/취득을 지원하는 SDK 및/또는 장치 드라이버를 제공한다. 사용자 작성 프로그램이나 설정가능한 애플리케이션 시스템과의 인터페이스를 제공하여 이미지 획득을 수행한다.

 

2. 처리 및 분석(Processing and analysis)

모든 머신비전 응용 프로그램의 핵심은 이미지의 실제 처리 및 분석을 수행하는 소프트웨어다. 이 시점에서 특정 소프트웨어 도구(알고리즘, 운영자 등은 응용 프로그램 또는 라이브러리 공급업체에서 사용하는 용어에 따름)는 수집된 이미지의 픽셀 기반 데이터에 대한 특정 분석을 수행하도록 구성되거나 프로그래밍된다.

 

애플리케이션을 낮은 수준에서 프로그래밍하든 구성하든 간에, 이 개발 단계에서는 상대적으로 시스템의 소프트웨어 구성에 비해 창의적이고 때로는 어려운 머신비전 엔지니어링이 이루어진다. 개발자는 애플리케이션을 실행하는 데 필요한 도구를 선택하고 결합한다.

 

추가 설명을 통해, 대부분의 소프트웨어 구현에서 발견되는 일반적인 도구는 아마도 사전처리, Blob 분석, 가장자리 분석, 검색, 일치, 색상 분석, 분류, 광학 문자 인식 및 검증(OCR/OCV), 바 또는 2D 코드 판독과 같은 몇 가지 카테고리로 나뉠 수 있다. 경우에 따라서는, 도구는 ‘검사’, ‘측정’, ‘읽기’ 등으로 번갈아가며 분류될 수 있다.

 

전반적으로 공구 선택은 구성요소나 라이브러리에 따라 크게 다르며 일부 라이브러리에서는 문자 그대로 수백 개의 개별 연산자(오퍼레이터)들을 제공한다. 구성 가능하고 프로그래밍 가능한 소프트웨어 패키지 모두에서, 완벽한 머신비전 애플리케이션을 실행하기 위해서는 도구들이나 연산자들을 결합해야 한다.

 

3. 커뮤니케이션 및 결과(Communications and results)

궁극적으로 머신비전 시스템은 외부 세계와 접해야 한다. 보다 광범위한 자동화 시스템에서 생산 정보 또는 레시피를 수신하고 프로세스에 결과 및 통계 데이터를 제공하는 능력들은 머신비전 시스템의 성공과 가치 모두에 매우 중요하다.

 

구성 가능한 머신비전 소프트웨어 패키지는 종종 다양한 통신 및 결과 처리 도구를 제공하며, 설계 시 소프트웨어에서 사용할 수 있는 인터페이스가 특정 자동화 환경에 적합한지 여부를 고려하는 것이 중요하다. 프로그래밍 가능한 시스템에서 통신 및 결과 처리작업은 실제 머신비전 소프트웨어의 외부에서 이루어질 수도 있고, 다른 소프트웨어 또는 코드에 의해 수행될 수 있다.

 

4. 머신비전 소프트웨어 지정(Specifying machine vision software)

소프트웨어 사양에 대한 논의하기 전에, 애플리케이션의 요구에 관련된 센서, 조명, 광학 및 컴퓨팅 플랫폼을 포함한 이미징 구성 요소의 설계 및 사양들은 전체 시스템의 성공에 매우 중요하다. 소프트웨어에는 잘못된 이미지 형성이나 처리 속도 또는 전력 부족을 만회하는 지름길이 없다.

 

중요한 전반적인 포장은 하드웨어와 소프트웨어 모두가 애플리케이션의 요구를 반드시 충족해야 한다는 것이다. 소프트웨어 사양에 대한 간략한 개요에서는, 대상 시스템이 이미 올바른 해상도와 기능 대비를 갖춘 매우 높은 품질의 이미지를 획득하도록 설계되어 있다고 가정한다.

 

앞서 언급한 것처럼, 스마트 카메라와 같은 독점 아키텍처가 있는 머신비전 시스템에서의 소프트웨어는 완전한 패키지의 시스템에 완벽히 연결된다. 이 소프트웨어는 확장 가능하거나 변경할 수 없으며, 그런 다음, 패키지의 사용 가능한 도구가 대상 애플리케이션에서 필요한 작업을 수행하도록 해야 한다. 아마도, 말하기는 쉬워도 행하기는 쉬울 것이다. 항상 좋은 설계 단계에 있는 한 가지 권장 사항은 성능을 보장하기 위해 생산 샘플 부품으로 구성요소 및 소프트웨어 애플리케이션을 평가하라는 것이다.

 

소프트웨어 라이브러리의 평가와 개념증명이 항상 모범 사례이며 도구 제공도 여전히 애플리케이션과 일치해야 하는 경우에도 마찬가지다. 하지만 개방형 구성들을 사용하면 소프트웨어를 추가한 선택된 라이브러리를 변경하거나 보완하는 정도까지 구성 요소와 소프트웨어 모두에서 확장성을 얻을 수 있다.

 

프로세스가 때때로 지연되거나 잘못된 경우는 구성요소와 소프트웨어가 오롯이 개인 취향에 따라 선택될 때이다. 익숙하고 과거에 써봤기 때문에 특정 소프트웨어 패키지의 GUI를 선호할 수 있다. 이것이 중요한 고려사항일 수는 있지만, 요구되어진 머신비전 작업을 성공적으로 실행하는 시스템의 기능에 대한 현실적인 평가를 무시해서는 안된다.

 

머신비전 소프트웨어의 핫토픽은?

 

결론은 새로운 머신비전 소프트웨어와 구성 요소가 정기적으로 개발되고 있다는 것이다. 고려해야 할 가장 좋은 조언은 새로운 기술 제품들을 모든 프로젝트에 대한 자동 솔루션이 아니라, 주어진 애플리케이션에 대해 평가할 수 있는 도구로 보는 것이다.

 

앞으로 10년의 시작을 위한 머신비전 소프트웨어에서의 눈에 띄는 몇가지 주요 주제는 1) 초분광의 구성 요소를 사용한 고급 스펙트럼 이미징, 2) 하나의 조명 구조로는 잘 보이지 않는 특징을 더 잘 강조하기 위해 여러 이미지를 결합하고, 비전 시스템 구성 사용의 큰 용이성을 위한 다양한 방법으로의 인공지능(AI) 및/또는 딥러닝의 사용 및/또는 기능 또는 결점 분류를 위해 주관적 변화를 인식하는 컴퓨터(또는 결합) 영상화이다.

 

모든 애플리케이션에 적합한 단일 솔루션이 없다는 이해를 바탕으로 한 새로운 소프트웨어 기술을 연구해야 한다.










배너









주요파트너/추천기업