KR20140121354A - 화상 처리 장치, 제어 방법 및 프로그램 - Google Patents

화상 처리 장치, 제어 방법 및 프로그램 Download PDF

Info

Publication number
KR20140121354A
KR20140121354A KR20140039793A KR20140039793A KR20140121354A KR 20140121354 A KR20140121354 A KR 20140121354A KR 20140039793 A KR20140039793 A KR 20140039793A KR 20140039793 A KR20140039793 A KR 20140039793A KR 20140121354 A KR20140121354 A KR 20140121354A
Authority
KR
South Korea
Prior art keywords
processing
item
parallel
image
execution
Prior art date
Application number
KR20140039793A
Other languages
English (en)
Inventor
타카시 이지리
쇼헤이 나카오카
Original Assignee
오므론 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 오므론 가부시키가이샤 filed Critical 오므론 가부시키가이샤
Publication of KR20140121354A publication Critical patent/KR20140121354A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • G06T7/0004Industrial image inspection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

[과제]
유저가 갖고 있는 특정한 어플리케이션 화상 처리에 관한 지식을 이용하여, 보다 효율적이며 고속의 화상 처리를 실현할 수 있는 구성이 요망되어 있다.
[해결 수단]
화상 처리 장치는, 복수의 처리부와, 피고 판정물을 촬상함으로써 생성된 화상 데이터를 접수하는 입력부와, 대화 처리부와, 대화 처리부가 접수한 화상 처리에 관한 설정에 따라, 복수의 처리부에 대한 명령렬을 생성하는 생성부를 포함한다. 대화 처리부는, 병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 인터페이스 화면에서, 병렬적인 실행의 시작을 지시하는 시작 처리항목과 당해 병렬적인 실행의 종료를 지시하는 종료 처리항목과의 조를, 지정되어 있는 처리항목의 실행 순서에 관련지어서 추가함과 함께, 복수의 처리부 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 임의로 접수할 수 있도록 구성된다.

Description

화상 처리 장치, 제어 방법 및 프로그램{IMAGE PROCESSING APPARATUS, CONTROL METHOD AND PROGRAM}
본 발명은, 복수의 처리부를 갖는 화상 처리 장치, 그 화상 처리 장치에서의 제어 방법, 및 그 화상 처리 장치를 위한 프로그램에 관한 것이다.
FA(Factory Automation) 분야 등에서는, 워크 등의 피측정물상(上)의 결함이나 오염의 유무를 검사하거나, 그 크기 등을 계측하거나, 피측정물상의 문자나 도형 등을 인식하거나 한 장치로서, 이른바 시각(視覺) 센서가 실용화되어 있다. 이와 같은 시각 센서는, 피측정물을 촬상함으로써 얻어지는 화상 데이터에 대해, 각종의 화상 처리를 행함으로써, 상술한 바와 같은 계측 처리를 실현한다.
이와 같은 FA 분야에서는, 라인 속도의 향상이나 장치 비용의 저감이라는 니즈가 존재한다. 이와 같은 니즈에 응하기 위해, 1대의 화상 처리 장치에 복수의 처리부를 탑재하여, 병렬 처리를 행하는 구성이 알려져 있다. 예를 들면, 일본 특개2011-053787호 공보(특허 문헌 1)는, 니즈에 응하여 복수의 병렬 처리를 선택적으로 실행 가능한 화상 처리 장치 등을 개시한다. 보다 구체적으로는, 특허 문헌 1은, 모드 선택 수단에 의해 선택된 병렬 처리 모드에 따라, 대상의 처리 순서에 포함되는 복수의 처리 단위의 각각을 복수의 연산 처리의 어느 하나로 할당하는 병렬화 수단을 포함한다.
특허 문헌 1에 개시되는 화상 처리 장치는, 복수의 병렬 처리 모드 중 유저가 선택한 병렬 처리 모드에 따라, 일부의 처리가 자동적으로 병렬화된다. 즉, 특허 문헌 1에 개시된 기술은, 일련의 처리에 대한 병렬화를 자동적으로 실현하기 위한 것이다. 특허 문헌 1의 도 13은, 유저가 드래그·드롭 조작에 의해, 유저가 처리 단위의 추가·삭제나 실행 순서의 재배열을 행할 수가 있는 구성을 개시하는데, 병렬화 자체는 화상 처리 장치(병렬화 수단)가 자동적으로 실행한다.
일본 특개2011-053787호 공보
상술한 바와 같은 자동적인 병렬화를 채용한 경우에는, 미리 정하여진 일반적인 규칙에 따라, 처리항목을 병렬화하기 때문에, 화상 처리 장치가 적용되는 어플리케이션의 종류에 의해서는, 잠재적으로 병렬화할 수 있는 처리항목이 있음에도 불구하고, 그 잠재적인 가능성까지를 커버할 수가 없는 경우가 있다. 즉, 특허 문헌 1에 개시된 구성은, 화상 처리에 관한 지식이 부족한 유저에 대해서는 알맞지만, 화상 처리에 관한 지식을 갖고 있는 유저에 대해서는, 그 잠재적인 가능성을 충분히 이용할 수가 없는 경우가 있다.
그 때문에, 유저가 갖고 있는 특정한 어플리케이션 화상 처리에 관한 지식을 이용하여, 보다 효율적이며 고속의 화상 처리를 실현할 수 있는 구성이 요망되고 있다.
본 발명의 어느 국면에 관한 화상 처리 장치는, 복수의 처리부와, 피측정물을 촬상함으로써 생성된 화상 데이터를 접수하는 입력부와, 미리 정의된 복수의 처리항목 중 화상 데이터에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면을 적어도 제공하는 대화(對話) 처리부와, 대화 처리부가 접수한 화상 처리에 관한 설정에 따라, 복수의 처리부에 대한 명령렬(命令列)을 생성하는 생성부를 포함한다. 대화 처리부는, 병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 인터페이스 화면에서, 병렬적인 실행의 시작을 지시하는 시작 처리항목과 당해 병렬적인 실행의 종료를 지시하는 종료 처리항목과의 조(組)를, 지정되어 있는 처리항목의 실행 순서에 관련지어서 추가함과 함께, 복수의 처리부 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 임의로 접수할 수 있도록 구성된다.
바람직하게는, 생성부는, 시작 처리항목과 종료 처리항목과의 사이에서 병렬적으로 실행되도록 지정된 각각의 처리를, 서로 다른 처리부에서 실행시키기 위한 명령렬을 출력한다.
더욱 바람직하게는, 생성부는, 시작 처리항목과 종료 처리항목과의 사이에서 병렬적으로 실행되도록 지정된 각각의 처리의 전부에 관해 실행이 완료된 후에, 종료 처리항목에 잇따라서 지정되어 있는 처리항목을 실행시키기 위한 명령렬을 출력한다.
바람직하게는, 대화 처리부는, 병렬적인 실행의 설정의 삭제를 지시하는 유저 조작에 응답하여, 시작 처리항목과 종료 처리항목과의 조를 동시에 삭제한다.
바람직하게는, 대화 처리부는, 시작 처리항목과 종료 처리항목과의 사이에서 병렬적으로 실행되도록 지정된 처리의 각각으로서, 복수의 처리항목을 접수할 수 있도록 구성된다.
바람직하게는, 시작 처리항목은, 병렬적인 실행의 시작 전에, 당해 병렬적인 실행에 관한 처리부에 각각 대응지어진 기억 영역을 확보함과 함께, 당해 병렬적인 실행 전에 사용되고 있는 화상 데이터를 각 기억 영역에 복제하기 위한 명령을 포함한다.
더욱 바람직하게는, 종료 처리항목은, 병렬적인 실행의 시작 전에 사용되고 있던 화상 데이터를 복원하기 위한 명령을 포함한다.
바람직하게는, 화상 처리 장치는, 병렬적인 실행이 설정된 처리항목 이외의 처리항목에 관해, 미리 정하여진 규칙에 따라, 2개 이상의 처리부에 대해 병렬적으로 실행시키도록 설정을 변경하는 변경부를 또한 포함한다.
본 발명의 다른 국면에 관해서는, 피측정물을 촬상함으로써 생성된 화상 데이터에 대한 화상 처리를 실행하는, 복수의 처리부를 포함하는 화상 처리 장치에서의 제어 방법이 제공된다. 제어 방법은, 미리 정의된 복수의 처리항목 중 화상 데이터에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면을 적어도 제공하는 스텝과, 병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 인터페이스 화면에서, 병렬적인 실행의 시작을 지시하는 시작 처리항목과 당해 병렬적인 실행의 종료를 지시하는 종료 처리항목과의 조를, 지정되어 있는 처리항목의 실행 순서에 관련지어서 추가함과 함께, 복수의 처리부 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 임의로 접수하는 스텝과, 입력된 화상 처리에 관한 설정에 따라, 복수의 처리부에 대한 명령렬을 생성하는 스텝을 포함한다.
본 발명의 또 다른 국면에 관해서는, 피측정물을 촬상함으로써 생성된 화상 데이터에 대한 화상 처리를 실행하는, 복수의 처리부를 포함하는 화상 처리 장치를 위한 프로그램이 제공된다. 당해 프로그램은, 컴퓨터에, 미리 정의된 복수의 처리항목 중 화상 데이터에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면을 적어도 제공하는 스텝과, 병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 인터페이스 화면에서, 병렬적인 실행의 시작을 지시하는 시작 처리항목과 당해 병렬적인 실행의 종료를 지시하는 종료 처리항목과의 조를, 지정되어 있는 처리항목의 실행 순서에 관련지어서 추가함과 함께, 복수의 처리부 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 임의로 접수하는 스텝과, 입력된 화상 처리에 관한 설정에 따라, 복수의 처리부에 대한 명령렬을 생성하는 스텝을 실행시킨다.
본 발명에 의하면, 유저가 갖고 있는 특정한 어플리케이션 화상 처리에 관한 지식을 이용하여, 보다 효율적이며 고속의 화상 처리를 실현할 수 있다.
도 1은 본 실시의 형태에 관한 화상 처리 장치를 포함하는 화상 처리 시스템의 전체 구성을 도시하는 개략도.
도 2는 본 실시의 형태에 관한 화상 처리 장치의 기능 구성을 도시하는 모식도.
도 3은 본 실시의 형태에 관한 화상 처리 장치가 제공하는 플로 작성에 관한 조작 화면을 도시하는 도면.
도 4는 플로에 대한 자동 병렬화의 한 예를 설명하기 위한 도면.
도 5는 플로에 대한 자동 병렬화 및 수동 병렬화를 비교하여 설명하기 위한 도면.
도 6은 본 실시의 형태에 관한 화상 처리 장치가 제공하는 수동 병렬화에 관한 화면 유저 인터페이스의 한 예를 도시하는 도면.
도 7은 본 실시의 형태에 관한 화상 처리 장치가 제공하는 수동 병렬화에 관한 화면 유저 인터페이스의 한 예를 도시하는 도면.
도 8은 본 실시의 형태에 관한 화상 처리 장치에 실장되는 제어 프로그램의 구성을 도시하는 모식도.
도 9는 본 실시의 형태에 관한 병렬화 처리의 실행에 수반하는 화상 데이터의 취급을 설명하기 위한 도면.
도 10은 본 실시의 형태에 관한 화상 처리 장치에서의 처리 순서를 설명하기 위한 플로 차트.
도 11은 본 실시의 형태에 관한 화상 처리 장치를 포함하는 화상 처리 시스템의 전체 구성을 도시하는 개략도.
도 12는 도 10에 도시하는 화상 처리 시스템에서의 플로에 대한 병렬화를 설명하기 위한 도면.
도 13은 도 12(c)에 도시하는 플로에 대응하는 화면 유저 인터페이스의 한 예를 도시하는 도면.
도 14는 본 실시의 형태에 관한 화상 처리 장치를 포함하는 견상 처리 시스템의 전체 구성을 도시하는 개략도.
도 15는 도 14에 도시하는 화상 처리 시스템에서의 플로에 대한 병렬화를 설명하기 위한 도면.
도 16은 도 15(c)에 도시하는 플로에 대응하는 화면 유저 인터페이스의 한 예를 도시하는 도면.
본 발명의 실시의 형태에 관해, 도면을 참조하면서 상세히 설명한다. 또한, 도면 중의 동일 또는 상당 부분에 관해서는, 동일 부호를 붙이고 그 설명은 반복하지 않는다.
<A. 화상 처리 시스템의 구성>
우선, 본 발명의 실시의 형태에 관한 화상 처리 장치(100)를 포함하는 화상 처리 시스템(1)의 전체 구성에 관해 설명한다. 도 1은, 본 실시의 형태에 관한 화상 처리 장치(100)를 포함하는 화상 처리 시스템(1)의 전체 구성을 도시하는 개략도이다.
도 1를 참조하면, 화상 처리 시스템(1)은, 주요한 컴포넌트로서, 시각 센서라고도 칭하여지는 화상 처리 장치(100)와, 화상 처리 장치(100)에 접속된 촬상부(8a. 8b)와, 화상 처리 장치(100)와 통신 가능한 PLC(Programmable Logic Controller)(5)를 포함한다. 한 예로서, 표시부(102)와 일체적으로 구성된 화상 처리 장치(100)를 도시한다.
화상 처리 장치(100)는, 생산 라인 등에 조립되고, 피측정물(이하 「워크(2)」라고도 칭한다.)상의 결함이나 오염의 유무의 검사, 워크(2)의 크기나 배치 방향 등의 계측, 워크(2) 표면상의 문자나 도형 등의 인식이라는 화상 처리를 실행한다. 즉, 화상 처리 장치(100)는, 워크(2)를 촬상함으로써 생성된 화상 데이터에 대한 화상 처리를 실행한다. 화상 처리 시스템(1)에서는, 워크(2)는 벨트 컨베이어 등의 반송 기구(6)에 의해 반송되고, 촬상부(8a, 8b)에 의해 순차적으로 촬상된다. PLC(5)는, 화상 처리 장치(100)와 연계하여, 반송 기구(6) 등의 제어를 실행한다.
촬상부(8a, 8b)(이하 「촬상부(8)」라고도 총칭한다.)는, 한 예로서, 렌즈 등의 광학계에 더하여, CCD(Coupled Charged Device)나 CMOS(Complementary Metal Oxide Semiconductor) 센서라는, 복수의 화소로 구획된 촬상 소자를 포함하여 구성된다. 촬상부(8)에 의한 촬상에 의해 취득된 화상 데이터(이하 「카메라 화상」이라고도 칭한다.)는, 화상 처리 장치(100)에 전송된다. 그리고, 화상 처리 장치(100)는, 촬상부(8)에 의해 촬상된 카메라 화상에 대해 화상 처리를 행한다. 촬상부(8)에 의해 촬상된 워크(2)에 대해 광을 조사하는 조명 장치를 또한 마련하여도 좋다. 보다 많은 촬상부(8)를 접속할 수 있도록 화상 처리 장치(100)를 구성하여도 좋다.
화상 처리 장치(100)는, 촬상부(8)로부터의 카메라 화상에 대해 미리 설정된 화상 처리를 실행하기 위한 「측정 모드j와, 화상 처리의 내용을 설정이나 조정하기 위한 「설정 모드」를 적어도 갖고 있다. 「설정 모드」에서, 유저는, 화상 처리를 실현하기 위한 처리항목 및 그 실행순(實行順) 등을 화상 처리 장치(100)에 대해 설정할 수 있다. 이 화상 처리에 관한 설정 순서 등의 상세에 관해서는, 후술한다.
<B. 화상 처리 장치의 구성>
다음에, 도 1에 도시하는 화상 처리 시스템(1)에 포함되는 화상 처리 장치(100)의 전체 구성에 관해 설명한다. 도 2는, 본 실시의 형태에 관한 화상 처리 장치(100)의 기능 구성을 도시하는 모식도이다.
도 2를 참조하면, 화상 처리 장치(100)는, 전형적으로는, 범용적인 컴퓨터 아키텍처에 따른 구조를 갖고 있고, 미리 인스톨된 프로그램을 프로세서가 실행함으로써, 후술하는 바와 같은 각종의 화상 처리를 실현한다.
보다 구체적으로는, 화상 처리 장치(100)는, CPU(Central Processing Unit)나 MPU(Micro-Processing Unit) 등의 프로세서(110)와, RAM(Random Access Memory)(112)과, 표시 컨트롤러(114)와, 시스템 컨트롤러(116)와, I/0(Input Output) 컨트롤러(118)와, 하드 디스크(120)와, 카메라 인터페이스(122)와, 입력 인터페이스(124)와, PLC 인터페이스(126)와, 통신 인터페이스(128)와, 메모리 카드 인터페이스(130)를 포함한다. 이들의 각 부분은, 시스템 컨트롤러(116)를 중심으로 하여, 서로 데이터 통신 가능하게 접속된다.
프로세서(110)는, 복수의 처리부에 상당하는 복수의 프로세서 코어(제1 코어(110a), 제2 코어(1l0b), 제3 코어(110c), 제4 코어(110d))를 갖는다. 프로세서(110)는, 시스템 컨트롤러(116)와의 사이에서 프로그램(코드) 등을 교환하여, 이들을 소정 순서로 실행함으로써, 목적하는 연산 처리를 실현한다.
코어(110a 내지 110d)는, 서로 독립하여 명령을 실행 가능하다. 프로세서(110)에 실장되는 코어의 수는, 4개로 한정되지 않고, 기술적으로 실현 가능한 범위의 복수개라면 좋다. 도 2에는, 단일한 프로세서 내에 복수의 코어가 실장되어 있는 구성(이른바, 멀티 코어 프로세서 시스템)을 나타내지만, 복수의 프로세서를 실장하는 구성(이른바, 멀티 프로세서 시스템)을 채용하여도 좋다. 또한, 멀티 프로세서 시스템을 구성하는 프로세서의 일부 또는 전부가 멀티 코어 프로세서 시스템을 채용하고 있어도 좋다. 즉, 본 실시의 형태에 관한 화상 처리 장치는, 서로 독립하여 처리를 실행 가능한 복수의 처리부를 갖고 있으면, 어떤 아키텍처를 채용하여도 좋다.
시스템 컨트롤러(116)는, 프로세서(110), RAM(l12), 표시 컨트롤러(114), 및 I/O 컨트롤러(118)와 각각 버스를 통하여 접속되어 있고, 각 부분과의 사이에서 데이터 교환 등을 행함과 함께, 화상 처리 장치(100) 전체의 처리를 맡는다.
RAM(l12)은, 전형적으로는, DRAM(Dynamic Random Access Memory) 등의 휘발성의 기억 장치이고, 하드 디스크(120)로부터 판독된 프로그램이나, 촬상부(8)에 의해 취득된 카메라 화상(화상 데이터), 카메라 화상에 대한 처리 결과, 및 워크 데이터 등을 유지한다.
표시 컨트롤러(114)는, 표시부(102)와 접속되어 있고, 시스템 컨트롤러(116)로부터의 내부 커맨드에 따라, 각종의 정보를 표시하기 위한 신호를 표시부(102)에 출력한다. 표시부(102)는, 한 예로서, 액정 디스플레이나 유기 EL(Electro Luminescence) 디스플레이나 유기 EL 등을 포함한다.
I/O 컨트롤러(118)는, 화상 처리 장치(100)에 접속되는 기록 매체나 외부 기기와의 사이의 데이터 교환을 제어한다. 보다 구체적으로는, I/O 컨트롤러(118)는, 하드 디스크(120)와, 카메라 인터페이스(122)와, 입력 인터페이스(124)와, PLC 인터페이스(126)와, 통신 인터페이스(128)와, 메모리 카드 인터페이스(130)와 접속된다.
하드 디스크(120)는, 전형적으로는, 불휘발성의 자기 기억 장치이고, 프로세서(110)에서 실행되는 제어 프로그램(150)에 더하여, 각종 설정치 등이 격납된다. 이 하드 디스크(120)에 인스톨되는 제어 프로그램(150)은, 메모리 카드(106) 등에 격납된 상태에서 유통된다. 또한, 하드 디스크(120)에는, 후술하는 로깅 처리에 의해, 카메라 화상이 격납된다. 또한, 하드 디스크(120)에 대신하여, 플래시 메모리 등의 반도체 기억 장치나 DVD-RAM(Digital Versatile Disk Random Access Memory) 등의 광학 기억 장치를 채용하여도 좋다.
카메라 인터페이스(122)는, 워크(2)(피측정물)를 촬상함으로써 생성된 화상 데이터를 접수하는 입력부에 상당하고, 프로세서(110)와 촬상부(8)와의 사이의 데이터 전송을 중개한다. 보다 구체적으로는, 카메라 인터페이스(122)는, 하나 이상의 촬상부(8)와 접속이 가능하고, 각 촬상부(8)로부터의 화상 데이터를 일시적으로 축적하기 위한 화상 버퍼(122a 및 122b)를 포함한다. 복수의 촬상부(8)에 대해, 촬상부(8)의 사이에서 공유할 수 있는 단일한 화상 버퍼를 마련하여도 좋지만, 처리 고속화를 위해, 각각의 촬상부(8)에 대응지어서 독립적으로 복수 배치하는 것이 바람직하다.
입력 인터페이스(124)는, 프로세서(110)와 키보드(104), 마우스, 터치 패널, 전용 콘솔 등의 입력 장치와의 사이의 데이터 전송을 중개한다. 즉, 입력 인터페이스(124)는, 유저가 입력 장치를 조작함으로써 주어지는 조작 지령을 접수한다.
PLC 인터페이스(126)는, 프로세서(110)와 PLC(5)와의 사이의 데이터 전송을 중개한다. 보다 구체적으로는, PLC 인터페이스(126)는, PLC(5)에 의해 제어되는 생산 라인의 상태에 관한 정보나 워크(2)에 관한 정보 등을 프로세서(110)에 전송한다.
통신 인터페이스(128)는, 프로세서(110)와 도시하지 않은 다른 퍼스널 컴퓨터나 서버 장치 등과의 사이의 데이터 전송을 중개한다. 통신 인터페이스(128)는, 전형적으로는, 이서넷(등록상표)나 USB(Universal Serial Bus) 등으로 이루어진다. 또한, 후술하는 바와 같이, 메모리 카드(106)에 격납된 프로그램을 화상 처리 장치(100)에 인스톨하는 형태에 대신하여, 통신 인터페이스(128)를 통하여, 배신 서버 등으로부터 다운로드한 프로그램을 화상 처리 장치(100)에 인스톨하여도 좋다.
메모리 카드 인터페이스(130)는, 프로세서(110)와 기록 매체인 메모리 카드(106) 와의 사이의 데이터 전송을 중개한다. 즉, 메모리 카드(106)에는, 화상 처리 장치(100)에서 실행되는 제어 프로그램(150) 등이 격납된 상태로 유통되고, 메모리 카드 인터페이스(130)는, 이 메모리 카드(106)로부터 제어 프로그램을 판독한다. 또한, 메모리 카드 인터페이스(130)는, 프로세서(110)의 내부 지령에 응답하여, 촬상부(8)에 의해 취득된 카메라 화상 및/또는 화상 처리 장치(100)에서의 처리 결과 등을 메모리 카드(106)에 기록한다. 또한, 메모리 카드(106)는, SD(Secure Digital) 등의 범용적인 반도체 기억 디바이스나, 플렉시블 디스크(Flexible Disk) 등의 자기 기록 매체나, CD-ROM(Compact Disk Read Only Memory) 등의 광학 기록 매체 등으로 이루어진다.
또한, 화상 처리 장치(100)에는, 필요에 응하여, 프린터 등의 다른 출력 장치가 접속되어도 좋다.
상술한 바와 같은 범용적인 컴퓨터 아키텍처에 따른 구조를 갖는 컴퓨터를 이용하는 경우에는, 본 실시의 형태에 관한 기능을 제공하기 위한 어플리케이션에 더하여, 컴퓨터의 기본적인 기능을 제공하기 위한 OS(Operating System)가 인스톨되어 있어도 좋다. 이 경우에는, 본 실시의 형태에 관한 제어 프로그램은, OS의 일부로서 제공되는 프로그램 모듈 중, 필요한 모듈을 소정의 순서 및/또는 타이밍에서 호출하여 처리를 실행하는 것이라도 좋다. 즉, 본 실시의 형태에 관한 프로그램 자체는, 상기한 바와 같은 모듈을 포함하지 않고, OS와 협동하여 처리가 실행된 경우도 있다. 따라서 본 실시의 형태에 관한 제어 프로그램으로서는, 이와 같은 일부의 모듈을 포함하지 않는 형태라도 좋다.
또한, 본 실시의 형태에 관한 제어 프로그램은, 다른 프로그램의 일부에 조립되고 제공되는 것이라도 좋다. 그 경우에도, 프로그램 자체에는, 상기한 바와 같은 조합되는 다른 프로그램에 포함되는 모듈을 포함하고 있지 않고, 당해 다른 프로그램과 협동하여 처리가 실행된다. 즉, 본 실시의 형태에 관한 제어 프로그램으로서는, 이와 같은 다른 프로그램에 조립된 형태라도 좋다.
또한, 대체적(代替的)으로, 제어 프로그램의 실행에 의해 제공되는 기능의 일부 또는 전부를 전용의 하드웨어 회로로서 실장하여도 좋다.
<C. 개요>
본 실시의 형태에 관한 화상 처리 장치(100)에서는, 카메라 화상에 대해, 유저가 임의로 선택한 적어도 하나의 처리항목을 포함하는 화상 처리를 실행 가능하다. 이 화상 처리에 포함되는 처리항목은, 유저에 의해 실행 순서가 정하여져 있고, 이 일련의 처리항목에 의해 정의되는 화상 처리의 내용을, 이하에서는 「플로」라고도 칭한다. 즉, 「플로」은, 유저의 입력에 의해 선택된 처리항목의 조합을 의미한다. 또한, 플로를 실행하는 것을 「계측 처리의 실행」이라고도 칭한다. 또한, 본 명세서에서의 처리항목은, 특정한 용도를 갖는 기능 단위(「처리항목」 또는 「유닛」)이고, 각 처리항목에 관해, 처리 대상 및 처리 결과를 특정할 수 있도록 되어 있다.
본 실시의 형태에 관한 화상 처리 장치(100)에서는, 유저의 지견(知見)을 이용하여 화상 처리를 보다 효율화이면서 고속화할 수 있도록, 목적하는 화상 처리를 구성하는 처리항목의 병렬적인 실행을 보다 간단하게 설정하기 위한 화면 유저 인터페이스가 제공된다. 이와 같은 유저가 명시적으로 병렬 실행을 지시하는 것을, 이하에서는 「수동 병렬화」라고도 칭한다. 본 실시의 형태에서는, 유저가 설정한 플로에 포함되는 처리항목에 관해, 미리 정하여진 규칙에 따라 병렬적으로 실행되도록 플로를 변경하는 처리도 아울러서 실장되어도 좋다. 이와 같은 화상 처리 장치가 처리항목을 병렬적으로 실행하도록 변경하는 동작을, 이하에서는 「자동 병렬화」라고도 칭한다. 보다 바람직한 실시의 형태에서는, 수동 병렬화에 더하여, 자동 병렬화도 실장된다.
이하, 본 실시의 형태에 관한 수동 병렬화에 관한 보다 상세한 내용에 관해 설명한다.
<D. 플로 작성에 관한 화면 유저 인터페이스>
다음에, 본 실시의 형태에 관한 화상 처리 장치(100)가 제공하는 플로 작성에 관한 화면 유저 인터페이스에 관해 설명한다. 도 3은, 본 실시의 형태에 관한 화상 처리 장치(100)가 제공하는 플로 작성에 관한 조작 화면(300)을 도시하는 도면이다.
화상 처리 장치(100)는, 대화 처리 기능으로서, 도 3에 도시하는 바와 같은, 미리 정의된 복수의 처리항목 중 화상 데이터에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면을 적어도 제공한다.
보다 구체적으로, 유저가 목적하는 화상 처리를 실현하기 위한 플로를 작성하는 순서에 관해 설명한다. 조작 화면(300)은, 설정 완료 플로 표시 영역(302)과, 처리항목 선택 영역(304)과, 카메라 화상 표시 영역(306)과, 처리항목 삽입/추가 버튼(308)과, 실행 순서 교체 버튼(310)을 포함한다. 설정 완료 플로 표시 영역(302)에는, 현재 설정되어 있는 플로의 내용(처리 내용)이 그래피컬하게 표시된다. 처리항목 선택 영역(304)에는, 추가 가능한 처리항목을 나타내는 아이콘이 그 명칭과 함께 일람 표시된다.
유저는, 조작 화면(300)의 처리항목 선택 영역(304)에서, 목적하는 화상 처리에 필요한 처리항목을 선택함((l) 처리항목을 선택)와 함께, 설정 완료 플로 표시 영역(302)에서 선택한 처리항목을 추가하여야 할 위치(순서)를 선택한다(추가 위치). 그리고, 유저가 처리항목 삽입/추가 버튼(308)을 선택하면((3) 삽입/추가 버튼을 누른다), 처리항목이 추가된다((4) 처리항목이 추가된다). 처리항목 추가후의 플로의 내용은, 설정 완료 플로 표시 영역(302)에 반영된다.
유저는, 이 처리를 적절히 반복함으로써 목적하는 화상 처리를 실현하기 위한 플로를 작성한다. 또한, 유저는, 플로의 작성 중 또는 작성 완료 후에, 설정 완료 플로 표시 영역(302)에서 처리항목을 선택한 다음, 실행 순서 교체 버튼(310)을 선택한 것으로, 실행 순서를 적절히 변경할 수도 있다.
이와 같은 조작에 의해, 유저는, 목적하는 화상 처리에 필요한 플로를 작성할 수 있다. 이 플로의 작성은, 설정 모드에서 실행된다.
그 후, 측정 모드에 있어서 지시되면, 지정된 플로의 실행이 시작된다. 보다 구체적으로는, 플로의 작성이 완료되면(전형적으로는, 작성된 플로가 보존된다), 그 보존된 플로에 대응하는 명령렬이 생성된다. 이 명령렬이 프로세서에서 실행됨으로써, 목적하는 화상 처리가 실현된다. 또한, 이 명령렬은, 프로세서에 주어지는 네이티브 코드라도 좋고, OS나 미들웨어에 대해 주어지는 내부 커맨드라도 좋고, 이들을 혼합한 것이라도 좋다.
즉, 화상 처리 장치(100)는, 대화 처리에 의해 접수된 화상 처리에 관한 설정에 따라, 복수의 프로세서 코어(처리부)에 대한 명령렬을 생성한다.
<E. 병렬화 처리(자동 설정 및 수동 설정)>
다음에, 유저가 설정한 플로의 실행 효율을 높이기 위한 병렬화 처리에 관해 설명한다. 특히, 병렬화 처리를 자동 설정하는 경우와 수동 설정하는 경우를 비교하여 설명한다. 도 4는, 플로에 대한 자동 병렬화의 한 예를 설명하기 위한 도면이다.
도 4(a)에는, 유저가 설정한 플로의 한 예를 도시한다. 도 4(a)에 도시하는 플로(400)는, 직렬적으로 실행되는 처리항목(402, 404, 406, 408, 410, 412, 414, 416)을 포함한다. 초기 단계에서는, 유저는, 일련의 처리가 직렬적으로 실행되는 플로를 설계하였다고 한다. 보다 구체적으로는, 「O. 카메라 화상 입력」으로 표기되는 처리항목(402)은, 카메라 화상을 취득하는 명령을 포함한다. 「l. 서치」로 표기되는 처리항목(404)은, 카메라 화상 내에서 미리 등록된 모델과 일치하는 영역을 서치하는 명령을 포함한다. 「2. 필터」로 표시되는 처리항목(406)은, 카메라 화상을 후단의 처리항목에서의 처리에 적합한 화상으로 조정하는 명령을 포함한다. 처리항목(406)은, 예를 들면, 지정된 범위의 농도를 묽힘으로써 불필요한 배경을 제거하는 명령이나, 화면 전체의 명도 변화의 추종이나 조명 얼룩 등의 단계적인 명도 변화를 제거하는 명령을 포함할 수 있다. 「3. 흠집 오염」로 표시되는 처리항목(408)은, 워크(2)의 표면에 존재하는, 흠집, 오염, 부품의 빠짐, 버르 등을 검사하는 명령을 포함한다. 「4. 컬러 그레이」로 표시되는 처리항목(410)은, 컬러 화상을 특정한 색으로 강조된 모노클로 화상으로 변환하는 명령을 포함한다. 「5. 서치」로 표시되는 처리항목(412)은, 워크(2)의 형상 식별이나 위치를 검출하는 명령을 포함한다. 「6. 레이블링」으로 표시되는 처리항목(414)은, 지정한 색의 레이블이 몇 개 있는지를 카운트하는 명령이나, 지정한 레이블의 면적이나 중심 위치를 계측하는 명령을 포함한다. 「7. 연산」으로 표시되는 처리항목(416)은, 먼저 실행된 복수의 처리항목에서의 결과를 이용하여 평가를 행하기 위한 명령을 포함한다. 처리항목(416)은, 예를 들면, 처리항목(412)에서의 서치에서 일치도(상관도)가 80% 이상이고, 사고, 처리항목(414)에서 「휘도치가 100 이하」의 영역이 전체 면적의 20% 이상 존재하는 경우에 「OK」로 판단한다, 라는 복합적인 조건을 이용하여 평가하는 명령을 포함할 수 있다.
도 4(a)에 도시하는 바와 같은 유저 설정의 플로(400)에 대해, 처리시간 단축을 목적으로 하여, 병렬화(멀티 태스크화)를 하는 경우를 생각한다. 처리항목 사이의 제약을 무시하여 병렬화하면, 예를 들면, 도 4(b)에 도시하는 바와 같은 플로(420)에 변환할 수 있다. 이 도 4(b)에 도시하는 플로(420)에서는, 처리항목(402)의 실행 후에, 제1 태스크로서, 처리항목(404, 410, 414, 416)의 합계 4개의 처리항목이 직렬적으로 실행되고, 제1 태스크와 병렬적으로 실행되는 제2 태스크로서, 처리항목(406, 408, 412)의 합계 3개의 처리항목이 직렬적으로 실행될 것이 지시된다..
그렇지만, 도 4(b)에 도시하는 병렬화된 플로(420)에서는, 카메라 화상을 모노클로 화상으로 변환하는 명령인 처리항목(414)의 실행 전에, 처리항목(412)(4. 컬러 그레이)의 실행이 시작되기 때문에, 컬러 화상에 대해 서치 처리가 실행되게 된다. 즉, 도 4(b)에 도시하는 플로에서는, 처리항목(412)의 처리가 적절하게 실행되지 않는다.
또한, 처리항목(416)은, 처리항목(412) 및 처리항목(414)의 처리 결과를 참조하여 처리를 실행할 필요가 있지만, 도 4(b)에 도시하는 플로에서는, 처리항목(412)의 실행 완료 전에, 처리항목(416)의 실행이 시작되고 있다. 즉, 처리항목(412)에서의 서치 처리가 끝나기 전에 처리항목(416)에 의해 그 데이터가 참조되게 된다. 이 참조처(先)에 격납되어 있는 데이터는, 과거의 계측 처리에서 계측 결과이고, 잘못된 결과가 산출되게 된다.
이와 같이, 플로의 병렬화에는, 각 처리항목의 전후에 있는 관련되는 처리항목을 고려할 필요가 있다. 즉, 자동적인 병렬화 처리에서는, 이하와 같은 처리항목이 존재하면, 그 존재한 위치에서 병렬로 실행되는 처리를 서로 동기시킬(즉, 다른 처리항목에서의 실행이 완료될 때까지 기다릴) 필요가 있다.
(1) 복수의 처리항목이 공통적으로 사용하는 화상 데이터에 어떠한 가공을 가하는 처리항목
(2) 다른 처리항목의 결과를 참조하는 처리항목
이와 같은 제약에 따라 병렬화함으로써 얻어지는 플로(430)를 도 4(c)에 도시한다. 이 도 4(c)에 도시하는 병렬화된 플로(430)에서는, 처리항목(412)과 처리항목(414)이 병렬적으로 실행된다. 즉, 처리항목(412)과 처리항목(414) 중 처리 완료에 필요로 하는 시간이 짧은 쪽의 처리항목(도 4(c)의 예에서는 처리항목(414))의 시간분만큼, 전체적인 처리시간을 단축할 수 있다(도 4(c)에 도시하는 병렬화 효과). 이 도 4(c)에 도시하는 병렬화된 플로(430)와 같이, 제약에 따라 병렬화한 경우에는, 항상 올바르게 처리되도록 병렬화되지만, 그 시간 단축의 효과(병렬화 효과)를 그다지 높일 수가 없는 경우가 있다.
또한, 자동적으로 병렬화를 행하는 경우에는, 각각의 처리항목이 필요로 하는 처리시간이나 파라미터에 의해서도 동작이 변화하기 때문에, 어떤 조건에서도 올바르게 처리되도록 병렬화할 필요가 있다. 그 결과, 병렬화 효과를 떨어뜨리게 되어도, 보다 안전한 병렬화를 행할 필요가 있다.
이에 대해, 대상의 플로를 작성한 유저의 지견을 이용함으로써, 병렬화 효과를 보다 높일 수도 있다.
도 5는, 플로에 대한 자동 병렬화 및 수동 병렬화를 비교하여 설명하기 위한 도면이다. 도 5(a)에는, 도 4(a)와 같은 플로(400)를 도시하고, 도 5(b)에는, 도 4(b)와 같이 병렬화된 플로(430)를 도시한다. 한편, 도 5(e) 및 도 5(d)에는, 유저의 지견을 이용하여 병렬화된 플로(440 및 450)를 각각 도시한다.
하나의 지견으로서, 도 5(a)에 도시하는 플로(400)에서는, 처리항목(402)에서 카메라 화상을 취득한 후, 실질적으로는, 당해 취득한 카메라 화상에 대해, 처리항목(404)의 서치 처리와, 처리항목(406 및 408)의 흠집 오염 처리와의 2개의 처리가 실행된다. 그 후, 처리항목(410)에서의 그레이 화상(모노클로 화상)으로 변환된 후, 처리항목(412)의 서치 처리 및 처리항목(414)의 레이블링 처리가 각각 독립적으로 실행된다. 따라서 모노클로 화상으로의 변환 전의 단계에서, 서치 처리 및 흠집 오염 처리를 병렬화할 수 있음을 알 수 있다. 또한, 모노클로 화상으로의 변환 후의 단계에서, 서치 처리 및 레이블링 처리를 병렬화할 수 있음을 알 수 있다. 이와 같은 지견을 이용함으로써, 도 5(e)에 도시하는 바와 같은 플로(430)(수동 병렬화 패턴(A))을 얻을 수 있다. 이 도 5(e)에 도시하는 플로(440)에서는, 도 4(b)에 도시하는 플로(420)와 같은 잘못된 처리가 실행되는 것을 회피할 수 있다.
다른 지견으로서, 도 5(a)에 도시하는 플로(400)에서는, 처리항목(402)에서 취득된 카메라 화상 그 자체에 대해 처리항목(404)의 서치 처리가 실행되고, 그 후, 처리항목(406)에서 필터 처리된 화상에 대해, 처리항목(408)의 흠집 오염 처리가 실행됨과 함께, 처리항목(410)의 필터 처리된 화상에 대해, 처리항목(412, 414, 416)이 실행된다. 이와 같은 지견을 이용함으로써, 도 5(d)에 도시하는 바와 같은 플로(450)(수동 병렬화 패턴(B))을 얻을 수 있다. 이 도 5(d)에 도시하는 플로(450)에서는, 도 4(b)에 도시하는 플로(420)와 같은 잘못된 처리가 실행되는 것을 회피할 수 있다.
또한, 도 5(c) 및 도 5(d)에 도시하는 플로에 의하면, 도 5(b)에 도시하는 제약에 따라 자동적으로 병렬화된 플로에 의해 얻어지는 병렬화 효과에 비교하여, 보다 큰 병렬화 효과를 얻을 수 있다.
이와 같이, 화상 처리에 관한 지식을 갖고 있는 유저가 갖는 지견을 이용함으로써, 보다 큰 병렬화 효과를 얻을 수 있다. 즉, 병렬화에 필요한 각각의 처리항목의 할당을 수동으로(즉, 유저의 지견을 이용하여) 조정함으로써, 보다 처리시간이 짧은 플로의 구성을 실현할 수 있다.
<F. 수동 병렬화에 관한 화면 유저 인터페이스>
다음에, 본 실시의 형태에 관한 수동 병렬화에 관한 화면 유저 인터페이스에 관해 설명한다. 본 실시의 형태에서는, 유저가 병렬화를 명시적으로 설정할 수 있다. 즉, 화상 처리 장치(100)에는, 수동 병렬화의 기능이 탑재되어 있고, 그 기능 설정에 관한 화면 유저 인터페이스도 제공된다. 전형적으로는, 도 3에 도시하는 조작 화면(300)의 처리항목 선택 영역(304)에 표시된 처리항목의 하나로서, 수동 병렬화의 기능을 설정하기 위한 처리항목이 추가된다.
도 6 및 도 7은, 본 실시의 형태에 관한 화상 처리 장치(100)가 제공하는 수동 병렬화에 관한 화면 유저 인터페이스의 한 예를 도시하는 도면이다. 도 6(a)에 도시하는 바와 같이, 초기 상태 또는 어떠한 처리항목이 설정되어 있는 상태에 있어서, 처리항목 선택 영역(304)에 표시된 수동 병렬화의 아이콘을 유저가 선택한 것으로, 설정 완료 플로 표시 영역(302)에서, 수동 병렬화 블록(350)이 설정중의 플로에 추가된다.
이 수동 병렬화 블록(350)은, 적어도, 병렬 처리 시작을 나타내는 처리항목(352)과, 병렬 처리 종료를 나타내는 처리항목(354)과의 조(組)를 포함한다. 그리고, 처리항목(352)과 처리항목(354)과의 사이에 병렬 처리의 대상이 되는 하나 이상의 병렬화 태스크(도 6(a)에 도시하는 예에서는, 병렬화 태스크(360 및 370))를 포함한다. 수동 병렬화 블록(350)에 포함되는 병렬화 태스크의 수는 유저가 임의로 변경할 수도 있다. 즉, 유저의 조작에 의해, 지정된 수동 병렬화 블록(350)에 대해, 병렬화 태스크의 추가 또는 삭제가 행하여진다.
병렬 처리 시작을 나타내는 처리항목(352)은, 복수의 프로세서 코어(처리부)에 대한 명령렬을 생성함과 함께, 모든 명령렬의 처리가 종료되면 처리 종료항목(처리항목(354))으로 옮기는 처리를 지시한다. 또한, 병렬 처리 종료를 나타내는 처리항목(354)은, 처리 종료항목(처리항목(354))으로부터 처리가 옮겼으면, 후속 처리로 이동한다.
이와 같이, 화상 처리 장치(100)의 대화 처리 기능은, 병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 인터페이스 화면에서, 병렬적인 실행의 시작을 지시하는 시작 처리항목(처리항목(352))과 당해 병렬적인 실행의 종료를 지시하는 종료 처리항목(처리항목(354))과의 조를, 지정되어 있는 처리항목의 실행 순서에 관련지어서 추가함과 함께, 복수의 프로세서 코어(처리부) 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 임의로 접수할 수 있도록 구성된다.
단, 원리적으로는, 화상 처리 장치(100)에 포함되는 처리부(전형적으로는, 코어 수나 프로세서 수)를 초과한 태스크를 병렬 실행할 수가 없기 때문에, 수동 병렬화 블록(350)은, 처리부의 수를 초과하지 않는 범위의 수의 병렬화 태스크를 포함할 수 있다.
본 실시의 형태에서는, 한 예로서, 처리항목 선택 영역(304)에 표시되는 수동 병렬화의 아이콘이 선택되면, 소정수(전형적으로는, 2개)의 병렬화 태스크를 포함하는 병렬화 블록이 자동적으로 삽입된다. 전형적으로는, 병렬화 블록의 각각은, 독립한 스레드로서 실행된다. 즉, 도 6(b)에 도시하는 바와 같은 2개의 병렬화 태스크가 설정되어 있는 경우에는, 수동 병렬화 블록(350)이 실행됨으로써, 각각의 병렬화 태스크에 대응하는 복수의 스레드가 생성되고, 각 스레드에서, 미리 설정된 처리항목이 각각 실행된다.
병렬화 블록이 삽입된 플로에 대해 병렬화 태스크를 나타내는 블록을 유저가 선택하면, 대응하는 병렬화 태스크에서 실행되는 처리항목이 보다 상세히 표시된다. 한 예로서, 도 6(a)에 도시하는 바와 같이, 병렬화 태스크(360 및 370)를 포함하는 수동 병렬화 블록(350)이 설정 완료 플로 표시 영역(302)에서의 설정되어 있고, 병렬화 태스크(360)에서는, 병렬화 태스크의 시작을 나타내는 처리항목(362)에 더하여, 유저가 임의로 선택한 처리항목으로서, 2개의 서치 처리에 관한 처리항목(364 및 366)이 설정되어 있다. 병렬화 태스크(360)에서는, 처리항목(362), 처리항목(364) 및 처리항목(366)이 직렬적으로 실행된다.
마찬가지로, 병렬화 태스크(370)에서는, 병렬화 태스크의 시작을 나타내는 처리항목(372)에 더하여, 유저가 임의로 선택한 처리항목으로서, 에지 코드를 이용한 서치 처리에 각각 관한 처리항목(374 및 376)이 설정되어 있다. 병렬화 태스크(370)에서는, 처리항목(372), 처리항목(374) 및 처리항목(366)이 직렬적으로 실행된다.
이와 같이, 조작 화면(300)에서는, 시작 처리항목(처리항목(352))과 종료 처리항목(처리항목(354))과의 사이에서 병렬적으로 실행되도록 지정된 처리의 각각으로서, 복수의 처리항목을 접수할 수 있도록 구성된다. 각 프로세서 코어(처리부)에 관해, 병렬적인 실행에 관한 처리항목을 복수 지정할 수 있도록 구성된다. 환언하면, 병렬화 태스크(360 및 370)의 각각에서, 복수의 처리항목을 설정할 수도 있다.
도 6에 도시하는 바와 같이, 각각의 블록(처리항목)은, 전형적으로는, 트리 구조를 이용하여 계층적으로 표시된다. 도 6(b)에서, 선행의 수동 병렬화 블록으로부터 다음의 수동 병렬화 블록까지가 하나의 병렬 처리(스레드)가 된다. 이 l개의 병렬 처리의 임의의 위치에 처리항목을 추가함으로써, 병렬화 태스크에 포함되는 처리항목으로서 추가된다.
상술한 바와 같은 수동 병렬화로서 유저가 설정한 내용의 상세한 것은, 전형적으로는, 트리 구조를 이용하여 그 계층 등에 응하여, 표시 내용을 적절히 변경할 수 있다. 예를 들면, 도 7(a)에 도시하는 바와 같이, 병렬 처리 시작을 나타내는 처리항목(352)의 버튼(352a)을 유저가 선택하면, 설정되어 있는 상세한 내용이 전개된다. 그 역으로, 상세한 내용이 전개 표시되어 있는 상태로부터, 그 상세한 내용을 접음으로써, 간소화된 표시로 할 수도 있다. 즉, 도 7에는, 수동 병렬화 블록(350)에 포함되는 모든 병렬화 태스크 및 그것에 대한 설정 내용을 표시시킬 수 있다.
또한, 어느 하나의 병렬화 태스크마다 그 설정 내용을 표시시킬 수도 있다. 예를 들면, 도 7(b)에 도시하는 바와 같이, 병렬화 태스크(360)의 버튼(352a)을 유저가 선택하면, 선택된 병렬화 태스크에 관해 설정되어 있는 상세한 내용이 전개된다.
또한, 설정 완료 플로 표시 영역(302)에서 어느 하나의 처리항목이 선택되면, 대응하는 범위(블록)가 일괄하여 선택된다. 예를 들면, 도 7(a)에 도시하는 바와 같이, 병렬 처리 시작을 나타내는 처리항목(352)이 선택되면, 수동 병렬화 블록의 전체가 선택된다. 즉, 추가 및/또는 삭제에 관해서는, 수동 병렬화 블록의 단위로 실행된다. 또는, 도 7(b)에 도시하는 바와 같이, 병렬화 태스크(360)가 선택되면, 그 병렬화 태스크(360)의 전체가 선택된다.
상술한 바와 같이, 화상 처리 장치(100)의 대화 처리 기능에서는, 병렬적인 실행의 설정의 삭제를 지시하는 유저 조작에 응답하여, 병렬적인 실행에 관한 시작 위치(처리항목(352)) 및 종료 위치(처리항목(354))의 조를 동시에 삭제한다. 즉, 수동 병렬화에서는, 처리 대상의 범위마다 일체적으로 취급되고, 단일한 처리항목이 아니라, 복수가 일체화된 처리항목의 단위로 추가 또는 삭제 등이 실행된다.
또한, 상술한 유저가 수동 병렬화 블록을 이용하여 병렬화 처리를 지정한 플로에 대해서도, 또한 자동 병렬화를 적용할 수도 있다. 바람직한 형태에서, 화상 처리 장치(100)는, 병렬적인 실행이 지시된 처리항목 이외의 처리항목에 관해, 미리 정하여진 규칙에 따라, 2개 이상의 프로세서 코어(처리부)에 대해 병렬적으로 실행시키도록 설정을 변경하는 기능을 실장하여 두는 것이 바람직하다.
<G. 제어 프로그램의 기능 구성>
다음에, 본 실시의 형태에 관한 수동 병렬화를 포함하는 처리를 실현하기 위한 제어 프로그램의 기능 구성에 관해 설명한다. 도 8은, 본 실시의 형태에 관한 화상 처리 장치(100)에 실장되는 제어 프로그램(150)의 구성을 도시하는 모식도이다.
도 8를 참조하면, 제어 프로그램(150)은, 기본적인 컴포넌트로서, 대화 처리 모듈(152)과, 자동 병렬화 모듈(154)과, 명령 생성 모듈(156)과, 화상 처리 실행 모듈(158)과, 라이브러리(160)를 포함한다.
대화 처리 모듈(152)은, 미리 정의된 복수의 처리항목 중 화상 데이터에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면을 적어도 제공한다. 즉, 대화 처리 모듈(152)은, 유저 조작에 따라, 유저가 소망하는 화상 처리의 플로(170)를 작성하기 위한 대화형의 화면 유저 인터페이스를 제공한다. 보다 구체적으로는, 대화 처리 모듈(152)은, 상술한 도 3, 6. 7에 도시하는 바와 같은 화면 유저 인터페이스를 표시부(102)에 표시함과 함께, 유저 조작에 따라 플로(170)를 생성한다. 이 생성된 플로(170)는, RAM(112)(도 2) 등에 확보된 워크 영역에 일차적으로 격납된다.
자동 병렬화 모듈(154)은, 상술한 수동 병렬화에 더하여, 플로(170)에 포함되는 처리항목을 자동적으로 병렬화한다. 즉, 자동 병렬화 모듈(154)은, 플로(170)에서 병렬적인 실행이 지시된 처리항목 이외의 처리항목에 관해, 미리 정하여진 규칙에 따라, 2개 이상의 프로세서 코어(처리부)에 대해 병렬적으로 실행할 수 있는지의 여부를 평가한다. 이 자동 병렬화 모듈(154)에 의한 자동 병렬화의 처리는, 미리 정하여진 처리항목 사이의 제약에 따라 실행된다. 자동 병렬화 모듈(154)은, 플로(170)에 포함되는 처리항목 중, 자동 병렬화의 대상이 되는 복수의 처리항목을 명령 생성 모듈(156)에 통지한다. 즉, 자동 병렬화 모듈(154)은, 유저에 의해 명시적으로는 병렬 실행이 지시되지 않은 처리항목의 일부 또는 전부에 관해, 미리 정하여진 규칙에 따라, 2개 이상의 프로세서 코어(처리부)에서 병렬적으로 실행되도록, 명령 생성 모듈(156)에 내부 커맨드를 발한다.
명령 생성 모듈(156)은, 대화 처리 모듈(152)이 접수한 화상 처리에 관한 설정(플로(170))에 따라, 복수의 프로세서 코어(처리부)에 대한 명령렬을 생성한다. 즉, 명령 생성 모듈(156)은, 유저에 의해 설정된 플로(170)에 따른 처리를 실현하기 위한 프로그램을 생성한다. 이때, 명령 생성 모듈(156)은, 명령 생성 모듈(156)로부터 자동 병렬화의 대상이 되는 복수의 처리항목이 통지되어 있으면, 플로(170)에 포함되는 당해 통지된 복수의 처리항목이 각각 별개의 프로세서 코어(처리부)에 할당하는, 명령렬을 생성한다.
명령 생성 모듈(156)은, 시작 처리항목(처리항목(352))과 종료 처리항목(처리항목(354))과의 사이에서 병렬적으로 실행되도록 지정된 각각의 처리를, 서로 다른 프로세서 코어(처리부)에서 실행시키기 위한 명령렬을 출력한다. 또한, 명령 생성 모듈(156)은, 시작 처리항목(처리항목(352))과 종료 처리항목(처리항목(354))과의 사이에서 병렬적으로 실행되도록 지정된 각각의 처리의 전부에 관해 실행이 완료된 후에, 종료 처리항목(처리항목(354))에 잇따라서 지정되어 있는 처리항목을 실행시키기 위한 명령렬을 출력한다.
이 생성되는 명령렬(또는, 프로그램)은, 프로세서(110)에서 실행 가능한 오브젝트 형식의 프로그램을 포함하고 있어도 좋고, OS에 대해, 스레드의 기동 및 종료 등을 지시하는 내부 커맨드를 포함하고 있어도 좋다.
이 생성된 명령렬은, RAM(112)이나 하드디스크(120)(도 2) 등에 격납된다. 화상 처리 실행 모듈(158)은, 명령 생성 모듈(156)에 의해 생성된 명령렬로 따라, 대상의 카메라 화상에 대해 화상 처리를 실행하고, 그 결과를 출력한다. 명령렬이 오브젝트 형식의 실행 프로그램을 포함하고 있는 경우에는, 화상 처리 실행 모듈(158)의 전부 또는 일부는, 명령렬에 의해 실현되게 된다. 실장례로서, 화상 처리 실행 모듈(158)은, 미리 준비된 라이브러리(160)를 참조함으로써, 명령렬에서 지정된 처리를 실행한다. 즉, 도 3에 도시하는 조작 화면(300)의 처리항목 선택 영역(304)에 일람 표시되는 처리항목에 각각 대응하는 라이브러리 프로그램이 라이브러리(160)에 포함되어 있고, 화상 처리 실행 모듈(158)은, 필요한 라이브러리 프로그램을 호출함으로써, 지정된 처리항목에 대응하는 화상 처리를 실행한다. 이와 같은 라이브러리(160)를 채용함으로써, 처리항목의 추가나 개량을 보다 용이하게 행할 수 있다.
또한, 도 8에는, 플로 설정, 명령렬의 생성, 및 화상 처리의 실행의 모든 처리를 실행 가능한 단일한 제어 프로그램(150)을 예시하였지만, 복수의 프로그램이 연계하여, 이들의 기능을 실현하도록 하여도 좋다. 예를 들면, 플로 설정 및 명령렬의 생성에 관한 처리에 관해서는, 퍼스널 컴퓨터상에서 실행되고, 그 실행의 결과 생성된 명령렬이 화상 처리 장치에 전송되어 실행된다는 기능을 분담하는 실장 형태를 채용할 수도 있다. 이 경우에는, 퍼스널 컴퓨터에서는, 대화 처리 모듈(152), 자동 병렬화 모듈(154), 및 명령 생성 모듈(156)에 상당하는 모듈을 포함하는 프로그램이 실행되고, 화상 처리 장치에서는, 화상 처리 실행 모듈(158) 및 라이브러리(160)를 포함하는 프로그램이 실행되게 된다. 이와 같은 실장 형태에 대해서도, 본 발명의 기술적 범위에 포함되는 것은 자명하다.
<H. 병렬화 처리의 실행에 수반하는 기억 영역>
다음에, 본 실시의 형태에 관한 병렬화 처리의 실행시에 있어서, 병렬화 태스크의 각각이 독립적으로 처리를 실행할 수 있도록, 처리 대상의 기억 영역이 각각 독립적으로 준비된다.
도 9는, 본 실시의 형태에 관한 병렬화 처리의 실행에 수반하는 화상 데이터의 취급을 설명하기 위한 도면이다. 도 9에는, 카메라 화상 입력의 처리항목의 실행 후에 병렬화 블록이 설정되어 있고, 병렬화 블록 중에서는 4개의 병렬화 태스크가 정의되어 있다. 병렬화 블록의 실행 직전에는, 카메라 화상 입력의 실행에 의해, 촬상부(8)로부터 취득된 카메라 화상인 「화상(1)」이 처리 대상으로서 유지되어 있다. 병렬화 블록의 실행이 시작되면, 하나의 병렬화 태스크(도 9에 도시하는 예에서는, 병렬화 태스크(1))는, 직전의 처리항목의 실행시에 이용되고 있던 기억 영역을 그대로 이용한다. 즉, 「화상(1)」이 처리 대상으로서 유지된다.
이에 대해, 나머지 병렬화 태스크(도 9에 도시하는 예에서는, 병렬화 태스크(2 내지 4))의 각각에 대해, 새로운 기억 영역이 할당됨과 함께, 각 기억 영역에 대해, 병렬화 블록의 실행 직전에 유지되어 있던 화상 데이터가 복제된다. 즉, 병렬화 블록에 포함되는 모든 병렬화 태스크의 각각은, 독립한 기억 영역을 갖고 있고, 각 기억 영역의 초기 데이터로서, 실행 직전에 유지되어 있던 화상 데이터가 사용된다. 그 후, 병렬화 태스크의 각각에서, 화상 데이터에 대한 어떠한 처리가 실행됨으로써, 유지하고 있는 화상 데이터의 내용이 갱신된다.
이와 같은 병렬화 처리의 실행시에, 새로운 병렬화 태스크(스레드)를 생성하고, 각 스레드에 대응지어지는 기억 영역을 새롭게 설정하는 처리는, 명령 생성 모듈(156)(도 8)에 의해 생성된 명령렬에 의해 실현된다. 즉, 명령 생성 모듈(156)(도 8)은, 처리항목의 병렬적인 실행의 시작 전에, 당해 병렬적인 실행에 관한 프로세서 코어(처리부)에 각각 대응지어진 기억 영역을 확보함과 함께, 당해 병렬적인 실행 전에 사용되고 있는 화상 데이터를 각 기억 영역에 복제하기 위한 명령을 출력한다.
그리고, 병렬화 처리의 실행이 완료되면, 병렬화 블록의 실행 전에 퇴피(退避)되어 있던 화상 데이터가 리커버리되어, 후속의 처리항목의 실행이 시작된다. 이와 같이, 시작 처리항목(처리항목(352))은, 병렬적인 실행의 시작 전에, 당해 병렬적인 실행에 관한 처리부에 각각 대응지어진 기억 영역을 확보함과 함께, 당해 병렬적인 실행 전에 사용되고 있는 화상 데이터를 각 기억 영역에 복제하기 위한 명령을 포함한다. 종료 처리항목(처리항목(354))은, 병렬적인 실행의 시작 전에 사용되고 있던 화상 데이터를 복원하기 위한 명령을 포함한다.
이와 같은 스레드 및 그에 관련지어진 기억 영역을 적절하게 생성함으로써, 다른 처리항목에 영향받는 일 없이, 병렬화 처리를 적절하게 실행할 수 있다.
<I. 처리 순서>
다음에, 본 실시의 형태에 관한 화상 처리 장치(100)에서의 처리 순서에 관해 설명한다. 도 10은, 본 실시의 형태에 관한 화상 처리 장치(100)에서의 처리 순서를 설명하기 위한 플로 차트이다. 도 10에 도시하는 처리 순서는, 화상 처리 장치(100)의 프로세서(110)가 제어 프로그램(150)을 실행함으로써 실현된다.
도 10를 참조하면, 제어 프로그램(150)이 실행됨으로써, 도 3에 도시하는 플로 작성에 관한 조작 화면(300)이 제공된다(스텝 S2). 즉, 프로세서(110)는, 미리 정의된 복수의 처리항목 중 카메라 화상(화상 데이터)에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면(조작 화면(300))을 적어도 제공한다.
이 제공되는 조작 화면(300)에서, 프로세서(110)는, 유저 조작을 접수한다(스텝 S4). 이때, 프로세서(110)는, 도 6 및 도 7에 도시하는 바와 같은 수동 병렬화의 설정에 관한 유저 조작을 접수한다. 즉, 프로세서(110)는, 인터페이스 화면(조작 화면(300))에서, 복수의 프로세서 코어(처리부) 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 접수한다.
그 후, 프로세서(110)는, 자동 병렬화의 실행이 지시되었는지의 여부를 판단한다(스텝 S6). 자동 병렬화의 실행이 지시된 경우(스텝 S6에서 YES)에는, 설정되어 있는 플로에 대해 자동 병렬화를 실행한다(스텝 SS). 자동 병렬화의 실행이 지시되지 않은 경우(스텝 S6에서 NO)에는, 스텝 S6의 처리는 스킵된다.
그리고, 프로세서(110)는, 플로 설정의 조작의 종료가 지시되었는지의 여부를 판단한다(스텝 S10). 플로 설정의 조작의 종료가 지시된 경우(스텝 S10에서 YES인 경우)에는, 프로세서(110)는, 최종적으로 설정된 플로에 따라, 명령 설정을 생성한다(스텝 S12). 즉, 프로세서(110)는, 입력된 화상 처리에 관한 설정에 따라, 복수의 프로세서 코어(처리부)에 대한 명령렬을 생성한다. 그리고, 처리는 종료한다. 한편, 플로 설정의 조작의 종료가 지시되지 않은 경우(스텝 S10에서 NO인 경우)에는, 스텝 S4 이하의 처리가 반복된다.
<J. 응용례1>
다음에, 본 실시의 형태에 관한 화상 처리 장치(100)의 응용례1에 관해 설명한다. 도 11은, 본 실시의 형태에 관한 화상 처리 장치(100)를 포함하는 화상 처리 시스템(1A)의 전체 구성을 도시하는 개략도이다. 도 11에 도시하는 화상 처리 시스템(1A)이 적용되는 프로세스에서는, 워크(2)가 적층기판의 기재(基材)이고, 다음의 공정에서 워크(2)상에 다른 층이 형성된다. 이와 같은 프로세스에서, 다음의 공정에서의 층 형성의 처리에 적합하도록, 워크(2)의 위치맞춤이 행하여진다. 보다 구체적으로는, 워크(2)는, XY스테이지(3)상에 배치되어 있고, 4개의 촬상부(Sa, Sb, Se, Sd)를 이용하여 워크(2)의 4모퉁이를 촬상하여 워크(2)의 현재 위치를 특정함과 함께, PLC(5)로부터 지령이 주어져서 XY스테이지(3)를 이동시켜, 워크(2)를 목적하는 위치에 위치 결정한다.
보다 구체적인 순서로서는, 화상 처리 장치(100)는, 촬상부(8a, 8b, 8e, 8d)가 각각 촬상한 워크(2)의 4모퉁이를 나타내는 카메라 화상을 취득하고, 이 취득한 각각의 카메라 화상에 포함되는 마크 위치를 나타내는 오브젝트를 검출한다. 그리고, 화상 처리 장치(100)는, 각각의 카메라 화상 내에서 검출된 마크 위치에 응하여, XY스테이지(3)의 필요한 이동량을 산출하고, 그 산출한 이동량을 PLC(5)에 송신한다. PLC(5)는, 화상 처리 장치(100)로부터의 이동량에 따라, XY스테이지(3)를 이동시킨다.
화상 처리 시스템(1A)에 대한 화상 처리의 병렬화에 관해, 자동 병렬화와 수동 병렬화를 비교하여 설명한다. 도 12은, 도 10에 도시하는 화상 처리 시스템(1A)에서의 플로에 대한 병렬화를 설명하기 위한 도면이다. 도 13은, 도 12(c)에 도시하는 플로에 대응하는 화면 유저 인터페이스의 한 예를 도시하는 도면이다.
도 12(a)에는, 상술한 바와 같은 처리를 실현하기 위한 플로의 한 예를 도시한다. 이 도 12(a)에는, 유저가 수동 병렬화를 이용하지 않고서 설정한 플로를 도시한다. 도 12(a)에 도시하는 플로에서는, 촬상부(Sa, Sb, 8e, Sd)가 각각 촬상한 카메라 화상에 대한 처리가 직렬적으로 실행되고, 각각의 카메라 화상에 대한 처리 결과(합계 4개)가 참조되고, 최종적인 이동량이 산출된다. 보다 구체적으로는, 각 모퉁이에 관해, 대상이 되는 촬상부를 선택하고(「카메라 전환」의 처리항목), 선택한 촬상부에서 취득한 카메라 화상에 대해 캘리브레이션(「캘리브레이션」의 처리항목)을 행한 다음, 미리 등록된 모델과 일치하는 영역을 서치(「서치」의 처리항목)하는 처리가 실행된다.
도 12(b)에는, 도 12(a)에 도시하는 플로에 대해, 자동 병렬화를 실행한 결과를 도시하다. 또한, 도 12(a) 및 도 12(b)에서, 자동 병렬화에 관한 처리항목 사이의 제약의 대상으로 되어 있는 처리항목을 해칭으로 나타내고 있다. 자동 병렬화의 처리에 있어서, 전환되는 카메라 화상의 사이의 관계를 화상 처리 장치(100)가 알 수가 없기 때문에, 도 12(a)에 도시하는 바와 같은 플로에 대해 자동 병렬화를 행하였다고 하여도, 어느 처리항목도 병렬화되지 않는다.
이에 대해, 화상 처리 시스템(1A)에서 요구되는 처리 내용을 알고 있는 유저라면, 각 모퉁이에 관한 화상 처리를 병렬적으로 실행하면 좋음을 알 수 있다. 그 때문에, 도 12(c)에 도시하는 바와 같은 수동 병렬화 블록을 추가함과 함께, 그 수동 병렬화 블록 내에서, 각 모퉁이에 관한 화상 데이터에 대한 화상 처리가 병렬적으로 실행되도록 지정되어 있다. 보다 구체적으로는, 조작 화면(300)의 설정 완료 플로 표시 영역(302)에서, 도 13에 도시하는 유저 설정을 행함으로써, 도 12(c)에 도시하는 바와 같은 수동 병렬화된 플로를 실현할 수 있다.
이와 같이, 수동 병렬화를 적절하게 적용함으로써, 화상 처리의 전체적인 실행 속도를 높일 수 있다.
<K. 응용례2>
다음에, 본 실시의 형태에 관한 화상 처리 장치(100)의 다른 응용례2에 관해 설명한다. 도 14는, 본 실시의 형태에 관한 화상 처리 장치(100)를 포함하는 화상 처리 시스템(1B)의 전체 구성을 도시하는 개략도이다. 도 14에 도시하는 화상 처리 시스템(1B)이 적용되는 프로세스에서는, 워크(2)가 병의 캡 등이고, 출하전 검사를 행한 다음, 그 출하전 검사의 결과가 OK면, 필요한 정보(제조 일시 및 시리얼 번호 등)를 인자(印字)한다. 보다 구체적인 순서로서는, 화상 처리 장치(100)는, 촬상부(8a)가 촬상한 워크(2)의 카메라 화상을 취득하고, 이 취득한 카메라 화상에 대해, 워크(2)에 관한, 레이블의 색, 레이블의 위치, 레이블의 형태를 검사한다. 이 계측 결과는, 화상 처리 장치(100)로부터 PLC(5)에 송신된다. 하나의 항목이라도 검사에 패스하지 않으면(즉, 어떠한 계측항목이 NG라면), 계측 처리는 종료한다. 모든 계측항목이 OK라면, 제조 일시 및 시리얼 번호를 체크하고, 그 계측 결과를 PLC(5)에 송신한다.
화상 처리 시스템(1B)에 대한 화상 처리의 병렬화에 관해, 자동 병렬화와 수동 병렬화를 비교하여 설명한다. 도 15는, 도 14에 도시하는 화상 처리 시스템(1B)에서의 플로에 대한 병렬화를 설명하기 위한 도면이다. 도 16은, 도 15(c)에 도시하는 플로에 대응하는 화면 유저 인터페이스의 한 예를 도시하는 도면이다.
도 15(a)에는, 상술한 바와 같은 처리를 실현하기 위한 플로의 한 예를 도시한다. 이 도 15(a)에는, 유저가 수동 병렬화를 이용하지 않고서 설정한 플로를 도시한다. 도 15(a)에 도시하는 플로에서는, 레이블의 색을 검사하기 위한 「색 평균·편차」의 처리항목과, 레이블의 위치를 검사하기 위한 「면적 중심」의 처리항목과, 레이블의 형태를 검사하기 위한 「레이블」의 처리항목이 직렬적으로 실행된다. 그리고, 이들의 각각의 검사 결과를 이용하여 연산 처리가 실행된다.
도 15(b)에는, 도 15(a)에 도시하는 플로에 대해, 자동 병렬화를 실행한 결과를 도시한다. 또한, 도 15(a) 및 도 15(b)에서, 자동 병렬화에 관한 처리항목 사이의 제약의 대상으로 되어 있는 처리항목을 해칭으로 나타내고 있다. 자동 병렬화의 처리에서, 상술한 3개의 검사의 내용 및 서로의 관계를 화상 처리 장치(100)는 알 수가 없기 때문에, 도 15(a)에 도시하는 바와 같은 플로에 대해 자동 병렬화를 행하였다고 하여도, 검사항목에 관해서는 병렬화되지 않고, 그 후의 범용 문자 검사에 관해서만 병렬화된다.
이에 대해, 화상 처리 시스템(1B)에서 요구되는 처리 내용을 알고 있는 유저라면, 각 검사항목을 병렬적으로 실행하면 좋음을 알 수 있다. 그 때문에, 도 15(c)에 도시하는 바와 같은 수동 병렬화 블록을 추가함과 함께, 그 수동 병렬화 블록 내에서, 화상 데이터에 대한 검사항목이 병렬적으로 실행되도록 지정되어 있다. 보다 구체적으로는, 조작 화면(300)의 설정 완료 플로 표시 영역(302)에서, 도 16에 도시하는 유저 설정을 행함으로써, 도 15(c)에 도시하는 바와 같은 수동 병렬화된 플로를 실현할 수 있다.
이와 같이, 수동 병렬화를 적절하게 적용함으로써, 화상 처리의 전체적인 실행 속도를 높일 수 있다.
<L. 이점>
본 실시의 형태에 관한 화상 처리 장치에 의하면, 보다 간단한 조작으로 목적하는 화상 처리를 구성하는 처리항목의 병렬적인 실행을 설정할 수 있다. 이에 의해, 유저의 지견을 이용하여, 목적하는 화상 처리를 보다 효율화하면서 고속화할 수 있다. 또한, 유저가 병렬적인 실행을 설정한 처리항목 이외의 처리항목에 대해서도, 자동적으로 병렬화할 수도 있기 때문에, 화상 처리에 필요로 하는 시간을 보다 단축할 수 있다.
금회 개시된 실시의 형태는 모든 점에서 예시이고 제한적인 것이 아니라고 생각하여야 할 것이다. 본 발명의 범위는, 상기한 설명이 아니라, 특허청구의 범위에 의해 나타나고, 특허청구의 범위와 균등한 의미 및 범위 내에서의 모든 변경이 포함되는 것이 의도된다.
1 : 화상 처리 시스템
2 : 워크
3 : XY스테이지
5 : PLC
6 : 전송 기구
8, 8a, 8b, 8e, 8d : 촬상부
100 : 화상 처리 장치
102 : 표시부
104 : 키보드
106 : 메모리 카드
110 : 프로세서
110a 내지 110d : 코어
112 : RAM
114 : 표시 컨트롤러
116 : 시스템 컨트롤러
118 : I/O 컨트롤러
120 : 하드 디스크
122 : 카메라 인터페이스
122a : 화상 버퍼
124 : 입력 인터페이스
126 : 인터페이스
128 : 통신 인터페이스
130 : 메모리 카드 인터페이스
150 : 제어 프로그램
152 : 대화 처리 모듈
154 : 자동 병렬화 모듈
156 : 명령 생성 모듈
158 : 화상 처리 실행 모듈
160 : 라이브러리

Claims (10)

  1. 화상 처리 장치로서,
    복수의 처리부와,
    피측정물을 촬상함으로써 생성된 화상 데이터를 접수하는 입력부와,
    미리 정의된 복수의 처리항목 중 상기 화상 데이터에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면을 적어도 제공하는 대화 처리부와,
    상기 대화 처리부가 접수한 화상 처리에 관한 설정에 따라, 상기 복수의 처리부에 대한 명령렬을 생성하는 생성부를 구비하고,
    상기 대화 처리부는, 병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 상기 인터페이스 화면에서, 병렬적인 실행의 시작을 지시하는 시작 처리항목과 당해 병렬적인 실행의 종료를 지시하는 종료 처리항목과의 조를, 지정되어 있는 처리항목의 실행 순서에 관련지어서 추가함과 함께, 상기 복수의 처리부 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 임의로 접수할 수 있도록 구성되는 것을 특징으로 하는 화상 처리 장치.
  2. 제1항에 있어서,
    상기 생성부는, 상기 시작 처리항목과 상기 종료 처리항목과의 사이에서 병렬적으로 실행되도록 지정된 각각의 처리를, 서로 다른 처리부에서 실행시키기 위한 명령렬을 출력하는 것을 특징으로 하는 화상 처리 장치.
  3. 제2항에 있어서,
    상기 생성부는, 상기 시작 처리항목과 상기 종료 처리항목과의 사이에서 병렬적으로 실행되도록 지정된 각각의 처리의 전부에 관해 실행이 완료된 후에, 상기 종료 처리항목에 잇따라서 지정되어 있는 처리항목을 실행시키기 위한 명령렬을 출력하는 것을 특징으로 하는 화상 처리 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 대화 처리부는, 병렬적인 실행의 설정의 삭제를 지시하는 유저 조작에 응답하여, 상기 시작 처리항목과 상기 종료 처리항목과의 조를 동시에 삭제하는 것을 특징으로 하는 화상 처리 장치.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 대화 처리부는, 상기 시작 처리항목과 상기 종료 처리항목과의 사이에서 병렬적으로 실행되도록 지정된 처리의 각각으로서, 복수의 처리항목을 접수할 수 있도록 구성되는 것을 특징으로 하는 화상 처리 장치.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 시작 처리항목은, 병렬적인 실행의 시작 전에, 당해 병렬적인 실행에 관한 처리부에 각각 대응지어진 기억 영역을 확보함과 함께, 당해 병렬적인 실행 전에 사용되고 있는 화상 데이터를 각 기억 영역에 복제하기 위한 명령을 포함하는 것을 특징으로 하는 화상 처리 장치.
  7. 제6항에 있어서,
    상기 종료 처리항목은, 병렬적인 실행의 시작 전에 사용되고 있던 화상 데이터를 복원하기 위한 명령을 포함하는 것을 특징으로 하는 화상 처리 장치.
  8. 제1항에 있어서,
    병렬적인 실행이 설정된 처리항목 이외의 처리항목에 관해, 미리 정하여진 규칙에 따라, 상기 2개 이상의 처리부에 대해 병렬적으로 실행시키도록 설정을 변경하는 변경부를 또한 구비하는 것을 특징으로 하는 화상 처리 장치.
  9. 피측정물을 촬상함으로써 생성된 화상 데이터에 대한 화상 처리를 실행하는, 복수의 처리부를 포함하는 화상 처리 장치에서의 제어 방법으로서,
    미리 정의된 복수의 처리항목 중 상기 화상 데이터에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면을 적어도 제공하는 스텝과,
    병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 상기 인터페이스 화면에서, 병렬적인 실행의 시작을 지시하는 시작 처리항목과 당해 병렬적인 실행의 종료를 지시하는 종료 처리항목과의 조를, 지정되어 있는 처리항목의 실행 순서에 관련지어서 추가함과 함께, 상기 복수의 처리부 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 임의로 접수하는 스텝과,
    입력된 화상 처리에 관한 설정에 따라, 상기 복수의 처리부에 대한 명령렬을 생성하는 스텝을 구비하는 것을 특징으로 하는 제어 방법.
  10. 피측정물을 촬상함으로써 생성된 화상 데이터에 대한 화상 처리를 실행하는, 복수의 처리부를 포함하는 화상 처리 장치를 위한 프로그램으로서, 컴퓨터에
    미리 정의된 복수의 처리항목 중 상기 화상 데이터에 대한 화상 처리에 이용하는 하나 이상의 처리항목의 선택, 및 그 선택된 처리항목의 실행 순서의 지정을 접수하기 위한 인터페이스 화면을 적어도 제공하는 스텝과,
    병렬적인 실행의 설정을 지시하는 유저 조작에 응답하여, 상기 인터페이스 화면에서, 병렬적인 실행의 시작을 지시하는 시작 처리항목과 당해 병렬적인 실행의 종료를 지시하는 종료 처리항목과의 조를, 지정되어 있는 처리항목의 실행 순서에 관련지어서 추가함과 함께, 상기 복수의 처리부 중 2개 이상의 처리부에 대해 병렬적으로 실행시키는 각각의 처리항목의 선택을 임의로 접수하는 스텝과,
    입력된 화상 처리에 관한 설정에 따라, 상기 복수의 처리부에 대한 명령렬을 생성하는 스텝을 실행시키는 것을 특징으로 하는 프로그램.
KR20140039793A 2013-04-05 2014-04-03 화상 처리 장치, 제어 방법 및 프로그램 KR20140121354A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013079922A JP2014203309A (ja) 2013-04-05 2013-04-05 画像処理装置、制御方法およびプログラム
JPJP-P-2013-079922 2013-04-05

Publications (1)

Publication Number Publication Date
KR20140121354A true KR20140121354A (ko) 2014-10-15

Family

ID=50440507

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20140039793A KR20140121354A (ko) 2013-04-05 2014-04-03 화상 처리 장치, 제어 방법 및 프로그램

Country Status (5)

Country Link
US (1) US20140304637A1 (ko)
EP (1) EP2787483A3 (ko)
JP (1) JP2014203309A (ko)
KR (1) KR20140121354A (ko)
CN (1) CN104103032A (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6592184B2 (ja) * 2016-03-24 2019-10-16 富士フイルム株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
JP7103746B2 (ja) * 2016-06-30 2022-07-20 オムロン株式会社 画像処理装置、画像処理方法、および画像処理プログラム
JP6819096B2 (ja) * 2016-06-30 2021-01-27 オムロン株式会社 画像処理装置、画像処理方法、および画像処理プログラム
JP6883761B2 (ja) * 2016-10-17 2021-06-09 パナソニックIpマネジメント株式会社 プログラム生成方法、プログラム生成装置および制御プログラム
JP7207509B2 (ja) * 2017-01-30 2023-01-18 オムロン株式会社 画像処理システム、情報処理装置、情報処理方法、および、情報処理プログラム
JP2018124605A (ja) 2017-01-30 2018-08-09 オムロン株式会社 画像処理システム、情報処理装置、情報処理方法、および、情報処理プログラム
JP7146367B2 (ja) 2017-01-30 2022-10-04 オムロン株式会社 画像処理システム、情報処理装置、情報処理方法、および情報処理プログラム
US10338897B2 (en) * 2017-03-03 2019-07-02 Stratedigm, Inc. Visual protocol designer
JP7067869B2 (ja) 2017-03-10 2022-05-16 オムロン株式会社 画像処理システム、情報処理装置、情報処理方法、および情報処理プログラム
IL259143B2 (en) * 2018-05-03 2024-07-01 Inspekto A M V Ltd System and method for visual production line inspection of various production items
JP7204384B2 (ja) * 2018-09-07 2023-01-16 キヤノン株式会社 情報処理装置、及びその制御方法
JP7314491B2 (ja) * 2018-09-26 2023-07-26 株式会社リコー 情報処理システム、サービス提供システム、フロー設定方法
JP7334617B2 (ja) * 2019-12-27 2023-08-29 オムロン株式会社 プログラム実行装置、プログラム実行方法およびプログラム
US12066388B2 (en) * 2020-10-21 2024-08-20 Wit Co., Ltd. Inspection system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940296A (en) * 1995-11-06 1999-08-17 Medar Inc. Method and system for interactively developing a graphical control-flow structure and associated application software for use in a machine vision system
US5999729A (en) * 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US7461376B2 (en) * 2003-11-18 2008-12-02 Unisys Corporation Dynamic resource management system and method for multiprocessor systems
US7331037B2 (en) * 2004-08-12 2008-02-12 National Instruments Corporation Static memory allocation in a graphical programming system
JP2007128356A (ja) * 2005-11-04 2007-05-24 Canon Inc 情報処理装置及び方法及びシステム
JP4302710B2 (ja) * 2006-04-11 2009-07-29 シャープ株式会社 画像処理装置制御システム
US7827491B2 (en) * 2006-05-12 2010-11-02 Tran Bao Q Systems and methods for video editing
JP4358262B2 (ja) * 2007-07-02 2009-11-04 ザイオソフト株式会社 医療画像処理装置およびプログラム
US20100058048A1 (en) * 2008-08-26 2010-03-04 Advanced Micro Devices, Inc. Profile Adjustment Module For Use With Data Processing System
JP5257898B2 (ja) * 2009-03-18 2013-08-07 キヤノンマーケティングジャパン株式会社 情報処理装置及びその制御方法、並びに、プログラム
JP5353566B2 (ja) * 2009-08-31 2013-11-27 オムロン株式会社 画像処理装置および画像処理プログラム
US20110119604A1 (en) * 2009-11-19 2011-05-19 Clevest Solutions Inc. System and method for a configurable and extensible allocation and scheduling tool
EP2534643A4 (en) * 2010-02-11 2016-01-06 Nokia Technologies Oy METHOD AND APPARATUS FOR PROVIDING MULTIFIL VIDEO DECODING
CN102200881B (zh) * 2010-03-24 2016-01-13 索尼公司 图像处理装置以及图像处理方法
US8941605B2 (en) * 2011-06-16 2015-01-27 Empire Technology Development Llc Process management in a multi-core environment
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system

Also Published As

Publication number Publication date
CN104103032A (zh) 2014-10-15
EP2787483A3 (en) 2015-12-30
US20140304637A1 (en) 2014-10-09
JP2014203309A (ja) 2014-10-27
EP2787483A2 (en) 2014-10-08

Similar Documents

Publication Publication Date Title
KR20140121354A (ko) 화상 처리 장치, 제어 방법 및 프로그램
JP6955211B2 (ja) 識別装置、識別方法及びプログラム
US8698815B2 (en) Image processing apparatus
US20180260669A1 (en) Image processing apparatus, image processing method, template generation apparatus, object recognition processor, and object recognition processing program
CN107408297A (zh) 自动检查
JP7054436B2 (ja) 検出システム、情報処理装置、評価方法及びプログラム
JP2011163766A (ja) 画像処理方法および画像処理システム
CN110148106A (zh) 一种利用深度学习模型检测物体表面缺陷的系统及方法
JP5757156B2 (ja) 検出対象物の中心位置を算出する方法、装置およびプログラム
JP2016530521A (ja) 基板検査装置
JP2020030145A (ja) 検査装置及び検査システム
KR101964805B1 (ko) 머신 비전을 위한 가이드 제공 방법 및 장치
CN107562449B (zh) 图像处理装置、图像处理方法及图像处理程序
US20230059054A1 (en) Method and apparatus for automatically recognizing location of object
US10621455B2 (en) Image processing system, information processing device, information processing method, and information processing program
CN107562003B (zh) 图像处理装置、图像处理方法及图像处理程序
US20220413810A1 (en) Program executing device, program executing method, and non-transitory computer-readable storage medium
JP5757157B2 (ja) 検出対象物について頭部分の位置および軸部分の方向を算出する方法、装置およびプログラム
JP7207509B2 (ja) 画像処理システム、情報処理装置、情報処理方法、および、情報処理プログラム
West et al. Machine Vision Systems Design: The Basics
JP7363601B2 (ja) 画像処理装置、制御方法およびプログラム
US11520315B2 (en) Production system, production method, and information storage medium
JP2019045938A (ja) 画像処理装置、設定支援方法、および設定支援プログラム
US20240282096A1 (en) Interactive user feedback system to enhance inspection accuracy of automated visual inspection system
US20220261943A1 (en) Image processing device, image processing method, production system, product manufacturing method, and storage medium

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application