할콘 2D Metrology 개요

할콘의 2D Metrology 를 이용하면 특정 기하학적 기본 도형으로 표현 가능한 물체—원, 타원, 직사각형, 직선—의 치수를 측정할 수 있습니다. 이때 측정하려는 물체의 위치, 방향, 치수에 대한 근사값이 필요합니다. 그런 다음, 이미지에서 실제 물체의 가장자리는 이러한 근사 물체의 경계 근처에서 탐지됩니다. 이렇게 탐지된 가장자리 위치를 기반으로 기하학적 형태의 파라미터를 이미지 데이터에 더 잘 맞도록 최적화한 뒤, 이를 측정 결과로 반환합니다.

물체의 형상 파라미터에 대한 근사값과 측정을 제어하는 여러 파라미터들은 metrology object라는 데이터 구조에 저장됩니다. 이미지에서 물체의 가장자리는 ‘측정 영역’ 내에서 탐지되며, 이 측정 영역은 Metrology 객체의 경계에 수직으로 배열된 직사각형 영역입니다. 측정 영역의 크기와 분포를 조정하는 파라미터들은 각 Metrology 객체에 대해 형상 파라미터의 근사값과 함께 설정됩니다. 측정을 수행하면 모든 측정 영역 내부에서 가장자리 위치가 결정되며, 이 위치들에 RANSAC 알고리즘을 사용하여 기하학적 형태를 fitting하게 됩니다. 모든 Metrology 객체와 측정에 필요한 추가 정보 및 측정 결과는 metrology model에 저장됩니다.

할콘에서는 create_metrology_model 함수로 측정 모델을 생성하고, apply_metrology_model 함수로 해당 모델을 이미지에 적용하여 정확한 측정을 수행할 수 있습니다.

2D Metrology 주요 함수 설명

2D Metrology에서 자주 사용되는 주요 함수는 다음과 같습니다:

  • add_metrology_object_circle_measure
    원의 중심 좌표와 반지름을 추가합니다. 하나 이상의 원을 측정할 수 있습니다.

  • add_metrology_object_ellipse_measure
    타원의 중심 좌표, 주축의 방향, 큰 반지름과 작은 반지름을 추가합니다.

  • add_metrology_object_line_measure
    직선의 시작점과 끝점의 좌표를 추가합니다.

  • add_metrology_object_rectangle2_measure
    직사각형의 중심 좌표, 주축의 방향, 작은 반지름과 큰 반지름을 추가합니다.

  • add_metrology_object_generic
    원, 타원, 직선, 직사각형 등을 포함하는 다양한 형태의 객체를 측정할 수 있습니다.

각 함수는 객체의 기하학적 특성을 정의하고, 이를 바탕으로 정밀한 측정을 수행할 수 있게 합니다. 모델을 생성한 후 apply_metrology_model 함수를 사용하여 실제 이미지를 측정할 수 있습니다.

2D Metrology 활용 예시

  1. 모델 초기화 및 이미지 크기 설정
    측정을 시작하려면 먼저 모델을 생성하고, 이미지의 크기를 설정해야 합니다. 예를 들어, create_metrology_modelset_metrology_model_image_size를 사용하여 이미지를 설정합니다.

    1
    2
    3
    4
    read_image (Image, 'pads') 
    get_image_size (Image, Width, Height)
    create_metrology_model (MetrologyHandle)
    set_metrology_model_image_size (MetrologyHandle, Width, Height)
  2. 측정 객체 추가
    예를 들어, 원을 측정할 때는 add_metrology_object_circle_measure 를 사용하여 원의 중심과 반지름을 설정합니다.

⚠️ Solution Guide 의 pdf에서는 위의 방식으로 표기 되어있지만 실제 프로시저의 문서에 따르면 실제 사용 방식은 아래와 같은 것으로 보입니다.

1
add_metrology_object_circle_measure (MetrologyHandle, CircleInitRow, CircleInitColumn, CircleInitRadius, CircleRadiusTolerance, 5, 1.5, 2, [], [], MetrologyCircleIndices)
1
add_metrology_object_circle_measure( : : MetrologyHandle, Row, Column, Radius, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index)
  • MetrologyHandle

    • 입력: metrology 모델 핸들. 측정할 객체를 포함한 메트롤로지 모델을 지정합니다.
  • Row

    • 입력: 원 또는 원호의 중심 Y 좌표입니다.
  • Column

    • 입력: 원 또는 원호의 중심 X 좌표입니다.
  • Radius

    • 입력: 원 또는 원호의 반지름입니다.
  • MeasureLength1

    • 입력: 경계에 수직인 측정 영역의 절반 길이입니다. 기본값은 20.0입니다.
  • MeasureLength2

    • 입력: 경계에 수평인 측정 영역의 절반 길이입니다. 기본값은 5.0입니다.
  • MeasureSigma

    • 입력: 이미지의 그레이 값에 대한 가우시안 함수의 시그마 값입니다. 기본값은 1.0입니다.
  • MeasureThreshold

    • 입력: 에지의 최소 진폭을 정의하는 값입니다. 기본값은 30.0입니다.
  • GenParamName (optional)

    • 입력: 일반적인 측정 매개변수의 이름입니다. 선택적으로 설정할 수 있습니다. 예를 들어, 'start_phi', 'end_phi', 'point_order' 등이 있습니다.
  • GenParamValue (optional)

    • 입력: GenParamName 에서 설정한 이름에 대한 값입니다. 예를 들어, 'start_phi'의 값은 원호의 시작 각도를 정의합니다.
  1. 측정 적용

모델을 이미지에 적용하여 실제 측정을 수행합니다. 연산자는 측정된 영역 내에서 가장자리들을 찾아내고, RANSAC 알고리즘을 사용하여 지정된 기하학적 형태를 가장자리 위치에 맞춥니다. 가장자리는 연산자 measure_pos 또는 fuzzy_measure_pos를 사용하여 내부적으로 찾습니다 (1D Measuring 장 참조). 후자는 퍼지 방법을 사용하며, 적어도 하나의 퍼지 함수가 set_metrology_object_fuzzy_param을 통해 설정된 후에 측정을 적용할 때만 사용됩니다. 반환된 객체 형태의 인스턴스가 여러 개 필요할 경우 (위의 이미지 참조), num_instances라는 일반 매개변수를 설정하여 반환할 인스턴스의 수를 지정해야 합니다. 이 매개변수는 개별 측정 객체를 추가할 때 설정할 수 있으며, 이후에 set_metrology_object_param을 통해 설정할 수도 있습니다.

  • fuzzy_measure_pos

    • Extract straight edges perpendicular to a rectangle or an annular arc.
  • fuzzy_measure_pos

    • Extract straight edges perpendicular to a rectangle or an annular arc.
1
apply_metrology_model (Image, MetrologyHandle) get_metrology_object_result (MetrologyHandle, MetrologyCircleIndices, 'all', 'result_type', 'all_param', CircleParameter)

add_metrology_object_line_measure

add_metrology_object_line_measure는 자주 사용하는 프로시저중 하나로, 참고하기 위해 추가적으로 정리해두도록 하겠습니다.

1
add_metrology_object_line_measure( : : MetrologyHandle, RowBegin, ColumnBegin, RowEnd, ColumnEnd, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index)
  • MetrologyHandle

    • 입력: 메트롤로지 모델 핸들. 측정할 객체를 포함한 metrology 모델을 지정합니다.
  • RowBegin

    • 입력: 선의 시작점 Y 좌표입니다.
  • ColumnBegin

    • 입력: 선의 시작점 X 좌표입니다.
  • RowEnd

    • 입력: 선의 끝점 Y 좌표입니다.
  • ColumnEnd

    • 입력: 선의 끝점 X 좌표입니다.
  • MeasureLength1

    • 입력: 경계에 수직인 측정 영역의 절반 길이입니다. 기본값은 20.0입니다.
  • MeasureLength2

    • 입력: 경계에 접선 방향(선 방향)에 수평인 측정 영역의 절반 길이입니다. 기본값은 5.0입니다.
  • MeasureSigma

    • 입력: 이미지의 그레이 값에 대한 가우시안 함수의 시그마 값입니다. 기본값은 1.0입니다.
  • MeasureThreshold

    • 입력: 에지의 최소 진폭을 정의하는 값입니다. 기본값은 30.0입니다.
  • GenParamName (optional)

    • 입력: 일반적인 측정 매개변수의 이름입니다. 선택적으로 설정할 수 있습니다. 예를 들어 'measure_transition', 'num_measures', 'measure_select' 등이 있습니다.
  • GenParamValue (optional)

    • 입력: GenParamName 에서 설정한 이름에 대한 값입니다. 예를 들어, 'measure_transition'의 값은 'positive', 'negative', 'all' 등이 될 수 있습니다.
  • Index

    • 출력: 생성된 메트롤로지 객체의 인덱스입니다.

2D Metrology 모델 정렬

2D Metrology는 객체의 위치가 이미지마다 달라질 수 있기 때문에, 모델을 정렬할 수 있는 다양한 방법을 제공합니다; 필요시, 할콘 Solution Guide 2D Measuring의 2.3.1 Aligning the Metrology Model based on different methods 참고

  1. 형태 기반 매칭 (Shape-based Matching)
    객체의 모양을 기반으로 매칭하여 모델을 정렬합니다.

  2. 영역 처리 기반 정렬 (Region Processing)
    객체의 위치와 방향을 기반으로 모델을 정렬합니다.

  3. 강체 변환 정렬 (Rigid Transformation)
    이미지에서 기준 점들을 추출하여 강체 변환을 통해 모델을 정렬합니다.

2D Metrology의 장점

  • 정밀한 측정
    초기 파라미터만으로 매우 정확한 측정이 가능합니다.

  • 빠른 처리 속도
    모델을 초기화한 후 빠르게 측정을 시작할 수 있습니다.

  • 다양한 객체 지원
    원, 타원, 직선, 직사각형 등 다양한 기하학적 객체를 정밀하게 측정할 수 있습니다.

2D Metrology는 기하학적 객체들의 정확한 측정을 위해 필수적인 도구입니다. HALCON의 2D Metrology 기능을 사용하면, 다양한 형태의 객체를 정밀하고 효율적으로 측정할 수 있습니다.