EasyGauge - 서브 픽셀까지 측정
EasyGauge(이지 게이지) 라이브러리는 치수를 제어하며, 부품의 위치, 방향, 곡률, 크기를 정확하게 판정합니다. 또한 그래픽 방식으로 상호 작용하면서 게이지의 크기와 배치를 조정하고, 그룹화된 계층 구조로 결합하며, 모든 매개변수로 게이지를 저장 및 검색할 수 있습니다.

게이지 모델은 프로그래밍으로 또는 그래픽 편집기로 제작하여 최종 애플리케이션에서 "실행"할 수 있습니다.
무교정, 교정 또는 그룹화 중 사용하려는 모델의 복잡성과 필요한 정밀도에 일치하는 작업 흐름을 선택하십시오.

EasyGauge의 기본적인 사용법은 직관적입니다.
- 필요한 측정에 대응하는 게이지 개체를 만듭니다.
- 기본값이 적절하지 않은 매개변수를 변경합니다.
- 원하는 측정 기능을 불러옵니다.
- 결과 위치 매개변수를 읽습니다.
무교정 계량은 손쉽게 구현할 수 있지만 몇 가지 단점이 있습니다.
- 측정이 밀리미터가 아니라 픽셀 단위로 실행됩니다.
- 측정 모델이 이동성이 없어, 관찰 조건이 변경되면 게이지 위치와 크기를 다시 조정해야 합니다.
- 광학 왜곡 또는 원근으로 인해 부정확한 측정이 일어납니다.

교정 계량은 더 정확하며, 관찰 조건에 독립적으로 검사 대상 부품을 측정할 수 있습니다.
모든 왜곡이 암시적으로 보정된 상태로 교정된 유닛 내에서 모든 측정이 이루어집니다. 시야각 교정을 숙달하는 방법을 알아보려면 교정 부분을 참조하십시오.
- 교정자 개체를 만듭니다.
- 이를 검사 대상 장면에 배치합니다.
- 교정 매개변수를 조정합니다.
- 게이지를 첨부합니다.

게이지를 그룹화(게이지 조작 프로세스 참조)하여 다른 항목에 첨부할 수 있습니다.
- 게이지를 EFrameShape 개체에 첨부하면 게이지가 프레임과 함께 이동(평행 이동 및/또는 회전)하며, 애플리케이션 프로그램에서 검사 대상 부품을 추적하려면 프레임 위치를 조정해야 합니다.
- 다른 게이지에 게이지를 첨부하면 지지 게이지의 측정 위치에 따라 함께 이동됩니다. 예를 들어, 부품의 윤곽을 감지하는 일반적인 사각형 게이지에 게이지를 첨부하면, 사각형 윤곽이 일치할 때 모든 게이지가 자동으로 부품을 추종합니다.
여러 측정 사이트를 사용하는 경우, 교정 모드, 계수, 첨부된 게이지를 포함한 전체 모델을 하나의 파일에 저장할 수 있습니다.


하나 또는 여러 개의 개체 에지와 교차하는 라인 세그먼트 프로브를 따라 가장 관련성 높은 변이점을 선택할 수 있습니다. 노이즈 감소를 위해 십자형 및 길이 방향 필터링을 적용할 수 있습니다.
점 위치. 대비 기준 선택

웨지게이지의 배치는 공칭 위치 (중심의 좌표에 의해 결정됨), 공칭 내부 및 외부 반경 (내부 및 외부 직경), 폭 (반경 사이의 차이), 그것의 범위와 진폭으로 결정되는 각도 위치에 의해 정의됩니다.
Set(설정) 멤버는 전체 링, 링의 일부, 원반 사이를 구분할 수 있습니다.
웨지의 각 측면에 자체 변이 감지 매개변수를 적용할 수 있으며, ActiveEdges 속성으로 활성화 또는 비활성화 여부를 설정할 수 있습니다. 측면이 활성 상태라는 것은 다음과 같은 의미가 있습니다.
- 매개변수의 값 설정은 현재 활성 상태인 측면에만 적용됩니다.
- 매개변수의 값을 가져오면 해당 매개변수의 값이 모든 활성 측면에 동일할 때에만 결과가 산출됩니다.
- 활성 측면만 측정과 모델 맞춤에 사용됩니다.
따라서 여러 측면에 다양한 매개변수를 적용할 수 있고, 전체 쐐기가 아니라 평행 호 또는 빗면 또는 코너 지점을 측정할 수 있습니다. 네 측면은 각각 문자 "a", "r", "AA", "RR"로 표시됩니다.
웨지 게이지의 측면에 대한 명명 규칙
사용법
게이지를 정의하고 배치한 다음, Measure(측정) 를 사용하여 선을 맞춥니다.
웨지 속성을 얻으려면 ActualShape 속성을 TRUE(참)로 설정하여 일치된 라인(공칭 라인 위치 FALSE(거짓) 대신 기본값)이 반환되도록 합니다.
또는, MeasuredWedge에서도 결과를 EWedge 개체로 제공합니다.

선 게이지 배치는 X축에 대한 중심 좌표, 길이 및 각도로 정의됩니다. 선 기울기 값을 제한하려면 Angle(각도) 및 KnownAngle을 설정하십시오.
선 맞춤
사용법
게이지를 정의하고 배치한 다음, Measure(측정)를 사용하여 선을 맞춥니다. 선 속성을 얻으려면 ActualShape 속성을 TRUE(참)로 설정하여 일치된 선(기본값인 공칭 라인 위치 FALSE(거짓) 값 대신 TRUE(참) 값)이 반환되도록 합니다.
또는, MeasuredLine에서도 결과를 ELine 개체로 제공합니다.

원 게이지 의 배치는 공칭 위치 (중심 좌표로 결정됨), 공칭 직경 (또는 반경), 범위가 되는 각도 위치 및 각도 진폭으로 정의됩니다.
설정 멤버는 전체 원과 호(호 진폭이 지정되어야 함) 사이를 구분할 수 있습니다.
원 맞춤
사용법
게이지를 정의하고 배치한 후, Measure(측정)를 사용하여 원 맞춤 작업을 트리거할 수 있습니다. 측정 결과를 입수하려면 ActualShape 모드를 TRUE(참)로 설정하십시오. ActualShape 모드는 문의에 대해 일치된 원(TRUE(참) 값) 또는 공칭 원 위치(FALSE(거짓) 값, 기본값)를 반환할 것인지 결정합니다 요청된 정보는 원 속성을 통해 검색됩니다.
또는, MeasuredCircle에서도 결과를 ECircle 개체로 제공합니다.

하나 또는 여러 개의 개체 에지와 교차하는 라인 세그먼트 프로브를 따라 모든 변이점의 위치를 찾고, 가장 관련성 높은 항목을 선택할 수 있습니다. 노이즈 감소를 위해 십자형 및 길이 방향 필터링을 적용할 수 있습니다.
점 위치. 대비 기준 선택

점 위치 원칙(왼쪽) 및 S형 곡선과 그 도함수(오른쪽)
이미지에서 추출한 선형 프로파일에는 에지가 어두운 부분에서 밝은 부분으로(또는 그 반대로) 변이되는 형태로 나타납니다. 게이지를 따라 픽셀 값을 그래프로 만들 때, 이러한 변이는 S형 곡선으로 나타납니다. 이 곡선의 첫 번째 도함수는 변이점 주변의 피크를 보여줍니다. 대비가 강할수록 변이가 뚜렷해지며 피크가 높아집니다.
EasyGauge는 프로파일(빨간 곡선)을 따라 픽셀 값을 추출한 다음, 피크 분석을 사용하여 변이 위치를 판정합니다. 피크 면적 도함수 곡선과 수평 사용자 정의 임계값 레벨 사이 면적 내의 모든 픽셀 값이 변이 위치 계산에 사용됩니다.
- 변이점이 최소 2픽셀 너비의 거의 균일한 영역에 둘러싸인 경우에만 서브 픽셀 정밀도를 구현할 수 있습니다.
- BWB검정색 / 흰색 / 검정색 변이에는 상승하는 프로파일 곡선이 있으며, 피크는 양의 값을 가집니다. 그렇지 않으면, 곡선이 하락하며 피크가 음으로 확장됩니다.
- BWB 또는 WBW 변이는 첫 번째 도함수가 아니라 EPointGauge(또는 동일한 경로)를 따른 회색조 프로파일상의 피크 분석을 기준으로 하므로 일반적으로 기본 임계값(20)을 사용하여 피크를 감지할 수 없습니다.
EPointGauge에는 상당한 대비를 갖는 에지를 감지하는 기본값과 함께 모든 점 측정 매개변수가 포함되어 있습니다.

Center(중심): 공칭 점 위치(일반적으로 측정 전과 후가 다름).
Tolerance(관용도): 관용도 값과 게이지 방향.
TransitionType, TransitionChoice, TransitionIndex: 피크 선택 전략.
Threshold(임계값): 노이즈 내성.
MinAmplitude, MinArea: 피크 강도.
Thickness(두께), Smoothing(평탄화): 국소적 필터 너비.
RectangularSamplingArea 샘플링 영역(기본적으로 사각형)을 횡단 필터링 모드로 설정합니다.
Measure(측정): 개체를 측정합니다.
- 단일 변이 모드에서, 적절한 점이 발견되면 Valid(유효)가 True(참)를 반환합니다. 측정 결과를 얻으려면, ActualShape를 True(참)로 설정하여 Center(중심)이 위치가 확인된 점을 반환하도록 하십시오. (False(거짓) 기본값은 공칭 점 위치를 반환합니다).
- 다중 변이 모드에서, NumMeasuredPoints는 발견된 점의 수를 반환하며,
GetMeasuredPoint는 위치가 확인된 점 정보가 포함된 EPoint 개체를 반환합니다.
0과 GetNumMeasuredPoints-1 사이의 정수 색인이 통과되어야 합니다.
GetMeasuredPeak: 피크의 Area(면적) 및 Amplitude(진폭)가 포함된 EPeak와 프로브 세그먼트(Start(시작), Length(길이), Center(중심) 값)를 따른 한정 좌표를 반환합니다.

임계값 레벨은 매우 중요하며,
- 너무 높을 경우 상당량의 피크가 누락되고, 유효한 정밀도를 달성하기에 픽셀 값이 부족하게 됩니다.
- 너무 낮을 경우 노이즈로 인해 허위 피크가 생깁니다.
이 딜레마를 해결하기 위해, EasyGauge 피크 선택 메커니즘은 낮은 대비 또는 허위 에지를 무시할 수 있으며, 변이 강도가 피크 진폭 및 면적을 기준으로 측정됩니다. 모든 에지 측정은 피크 진폭과 면적을 결정합니다. 둘 중 한 값이 최소 진폭 또는 최소 면적 아래로 떨어지면, 피크가 무시되며 해당 위치에 점이 없는 것으로 간주됩니다.

EasyGauge는 다중 변이 모드에서 한 번의 실행으로 여러 에지 점을 측정하고 이후 모든 결과를 가져올 수 있습니다.
가장 높은 피크, 가장 면적이 큰 피크, 게이지 중심에 가장 가까운 피크 또는 게이지의 한 선단에서 시작하여 N번째 나타난 피크라는 네 가지 기준을 바탕으로 가장 관련성 높은 단일 변이를 선택할 수 있습니다.

점 게이지의 예상 공칭 위치는 중심, X 축에 대한 방향 각도, 점 위치가 달라질 수 있는 길이 관용도에 의해 지정됩니다.
결과는 위치가 확인된 점(실제 위치)의 좌표와 변의 강도(진폭 및 면적)입니다.
낮은 값은 약한 에지를 나타내며, 신뢰할 수 없는 또는 정확하지 않은 측정을 의미할 수 있습니다.

EasyGauge의 기본 매개변수 및 작동 모드는 명확한 에지에 적합합니다. 더 복잡한 상황일 경우 매개변수 조정이 필요할 수 있습니다.

ELineGauge, ECircleGauge, ERectangleGauge 또는 EWedgeGauge 사전 정의 기하 모델을 개체의 에지 위에 맞춰 추가할 수 있습니다. 대상 에지는 정의되어 있어야 하며, 균일한 간격의 점 측정 게이지에서 점이 샘플링되어야 합니다. 최소 자승 방식의 모델 맞춤을 적용할 수 있습니다.
라인: 직선 에지의 위치 및 방향을 측정합니다.. | ![]() ![]() |
원: 원 또는 호의 위치 및 곡률을 측정합니다. | ![]() ![]() ![]() |
사각형: 사각형의 위치, 방향, 크기를 측정합니다. | ![]() ![]() |
쐐기: 링/원반의 일부, 곡선형 사각형의 위치, 방향, 크기를 측정합니다. | ![]() ![]() ![]() |
모든 게이지 유형이 다음과 같은 공통적 특징을 공유합니다.
점 샘플링 | ||
점 게이지는 에지를 따라 배치되며, 사각형 및 쐐기 게이지의 측면마다 서로 다르게 조정할 수 있는 균일한 간격의 지점에서 점 측정이 수행됩니다. 모든 점 측정 매개변수와 작동 모드를 사용할 수 있습니다. SamplingStep은 모델 전반에서 점 위치 게이지의 간격을 설정합니다. NumSamples는 모델 맞춤 작업 도중 샘플링된 점의 수를 반환합니다. |
![]() 샘플링 경로 및 샘플링된 점 |
|
모델 맞춤 | ||
잔여 오류를 최소화하고 최적의 에지 매개변수 예측을 제공할 수 있도록 모델이 조정됩니다. 사각형 및 쐐기에는 평행 관계와 동일 중심성 제한 요소가 있습니다. 이미지에 샘플링된 점과 맞춰진 라인이 표시됩니다. |
![]() |
|
이상점 무시 | ||
모델 맞춤 후에 일부 점이 맞춰진 모델에서 멀리 벗어나 위치 정밀도를 저하시킬 수 있습니다. EasyGauge에서 FilteringThreshold 속성을 사용하여 이러한 점을 무시할 이상점으로 분류할 수 있습니다. 이상점 제거 프로세스는 NumFilteringPasses를 사용하여 여러 번 반복할 수 있습니다. |
![]() |

EasyGauge는 그래픽 방식으로 게이지를 배치하고 크기를 조정하며, 그룹화된 항목의 계층 구조와 결합하고, 게이지와 모든 작업 매개변수를 모델 파일에/에서 저장/검색하는 상호 작용 기능을 제공합니다.

Draw(그리기)는 게이지의 그래픽 표현을 제공합니다. 그리기는 원하는 창에 연결된 장치 컨텍스트에 맞는 현재 펜으로 실행됩니다. 작업 내용에 따라 핸들이 표시될 수 있습니다.

사용자는 게이지를 이미지 위에서 대화형으로 끌 수 있습니다. 몇 가지 끌기 핸들을 사용할 수 있습니다.
- HitTest는 마우스 커서가 핸들 위에 있을 때를 판정합니다. 커서가 핸들 위에 있으면, 커서 형상이 피드백이 가능하도록 변경되고, 끌기 작업이 이루어집니다.
- Drag(끌기)는 핸들과 해당 게이지를 적절히 이동시킵니다.

EasyGauge는 샘플링 경로 및/또는 그 도함수를 따른 회색조 값의 Plot(그래프 만들기) 기능을 제공하며, 이는 매개변수 조정에 유용합니다.
점 측정 게이지는 Measure(측정) 호출 후에 그래프 만들기가 가능합니다.
모델 맞춤 게이지는 MeasureSample 호출 후에 0과 GetNumSamples-1(포함됨) 사이에 있는 색인 인수를 포함한 그래프 만들기가 가능합니다.
해당 샘플링 경로를 보려면 Draw(그리기) 메서드와 함께 EDrawingMode_SampledPath 모드를 사용하십시오.

측정 게이지를 그룹화(상대적 위치는 고정 상태로 유지됨)하여 측정치 계산 전에 검사 대상 품목/프로브의 동작에 따라 이동(평행 이동 및 회전)할 수 있는 전용 도구를 형성할 수 있습니다.
Attach는 게이지를 마더 게이지 또는 EFrameShape 객체에 연결합니다.
NumDaughters, GetDaughter, 또는 Mother(마더)는 연결된 도터 또는 마더에 관련된 정보를 가져옵니다.
Detach(분리), DetachDaughters는 게이지 또는 도터를 마더로부터 분리합니다.


광학 설정을 수정하면 EWorldShape 개체를 사용하여 전체 시야각을 교정할 수 있습니다(카메라 위치 및 렌즈 배율 고정 상태에서 지정된 이미징 조건 하에).
EWorldShape는 적절한 교정 계수를 계산하고 이에 결부된 측정 게이지를 변환합니다.
또한 world-to-sensor 변환 매개변수를 설정하고, 양 좌표계 사이의 변환을 실행하며, 알려지지 않은 교정 매개변수를 판정하고, 나중에 다시 사용할 수 있도록 지정된 변환 매개변수를 저장합니다.
교정 후에 EWorldShape에서 SensorToWorld 및 WorldToSensor를 사용하여 다음과 같은 작업을 함으로써 임의의 점에 대한 좌표 변환을 수행할 수 있습니다.
- 비정방형 픽셀과 회전된 좌표 축 측정.
- 성능 손실 없이 원근 및 광학 왜곡 수정.
교정 계수는 몇 가지 방법을 통해 얻을 수 있습니다.

교정 계수를 예측하려면 시야각의 한계를 찾고 이미지 해상도를 시야각 크기로 나누거나, 다음 절차를 사용해야 합니다.
- 검사할 부품 또는 교정 대상(예: 직사각형)의 사진을 찍습니다.
- 이미지에서 코너와 같은 특징점을 찾고, 그 좌표를 픽셀 유닛 단위로 판정합니다 —let (i,j).
- 유클리드 거리 공식을 사용하여 교정 계수를 산출합니다.
여기서, C는 유닛당 픽셀 단위의 교정 계수이며, D는 해당 점 사이의 유닛 단위 실제 거리입니다. - 비정방형 픽셀의 경우 수평 및 수직 점 쌍에 대해 이 작업을 반복하십시오.
스큐 각도를 예측하려면, 이 공식을 실제 시스템의 X 축에 있는 두 점에 적용하십시오.
교정 계수를 사용할 수 있게 되면, SetSensor를 사용하여 교정 계수를 조정하고 교정 모드를 설정하거나, SetSensorSize, SetFieldSize, SetResolution, SetCenter, SetAngle을 사용하여 개별적으로 설정하십시오.

최소 4개 이상의 기준점을 찾고, 센서(이미지 처리 사용) 및 실제 좌표계(실제 측정치)에서 그 좌표를 입수합니다. 기준점이 많을수록 더 정확하게 교정할 수 있습니다.
결과 픽셀의 종횡비(X 해상도/Y 해상도)는 [-4/3, -3/4](또는 [3/4, 4/3]) 범위 내여야 합니다.

교정 대상을 자동으로 분석하여 적절한 기준점 집합을 확보할 수 있습니다. 원하는 기준점 좌표를 추출하기에 적합한 절차를 사용할 수 있다는 전제 하에 이는 손쉽게 자동 교정을 실행할 수 있는 방법입니다.
Open eVision은 격자에 다른 개체가 없는 상태에서 대칭 점(형상 무관)의 사각 격자를 보유한 특정 대상의 사용에 의존합니다.

- 전체 시야각을 포괄하는 방식으로(또는 시야의 이미지를 점만 보이는 ROI로 제한하는 방식으로) 교정 대상의 이미지를 선택하십시오.
- EasyObject에서 할 수 있는 것처럼 블롭 분석을 적용하여 점 중심의 좌표를 추출하십시오.
- 감지된 포든 점을 AddPoint에 전달합니다(센서 좌표만).
- RebuildGrid 을 호출하여 각 점의 세계 좌표를 계산하는 반복 알고리즘을 사용하여 시야를 보정하는 그리드를 재구성합니다.
- 격자 점의 무게중심(g)에 가장 가까운 격자 점이 선택되어(g1 및 g2) 길이 A의 최초 레퍼런스 지향 세그먼트를 형성합니다.
- 레퍼런스 세그먼트의 말단에서 시작하여(g2), 알고리즘은 수직 방향으로 3개의 관용도 영역(그림의 흰색 정사각형)을 결정합니다. 관용도 영역은 (g2)로부터 거리 A(레퍼런스 세그먼트의 길이)에 중심이 지정됩니다. 이는 정사각형이며 측면 길이가 A입니다.
알고리즘은 각각 3개의 관용도 영역이 있는 1개의 인접 점을 검색합니다.
각 관용도 영역에 인접 점이 포함된 경우 격자가 정확하게 교정됩니다. - 3개의 수직 세그먼트는 다음 반복 검색의 레퍼런스입니다. 알고리즘이 2 단계로 되돌아갑니다.
- Calibrate(교정) 기준점 접근법을 호출하십시오.
격자에 왜곡이 너무 심할 경우, 격자 재구성이 예상대로 작동하지 않습니다. 다음과 같은 오류가 발생할 수 있습니다.
- 관용도 영역에 인접 점(그림의 빨간색 정사각형)이 포함되어 있지 않습니다.
- 관용도 영역에 둘 이상의 인접 점이 포함되어 있습니다.
- 관용도 영역 내의 점이 올바른 점이 아닙니다. 예를 들어, 대각선 방향으로 연결된 점(그림의 빨간색 점)과 같은 경우입니다.

다음 매개변수를 사용하여 시야각 교정 모델을 조정할 수 있습니다.

시야각(f-o-v) 너비와 높이는 길이 단위의 실제 이미지 크기를 제공하며, 예를 들어 직사각형의 크기는 실제 공간에서의 이미지 에지에 해당합니다. 이 값은 다음 등식과 같이 픽셀 해상도에 비례합니다.
f-o-v 너비 = 픽셀 너비 * 센서 너비
f-o-v 높이 = 픽셀 높이 * 센서 높이
또는
센서 너비 = f-o-v 너비 * 수평 해상도
센서 높이 = f-o-v 높이 * 수직 해상도
기본적으로 픽셀 높이는 지정되지 않으며, 픽셀은 정사각형(픽셀 너비 = 픽셀 높이)인 것으로 간주됩니다.

스큐 각도는 실제 레퍼런스 프레임(X 축)과 이미지 에지(수평)가 이루는 각도입니다. 기본값은 스큐 없음입니다.
참고: 픽셀이 정사각형이 아닐 경우, EWorldShape 개체를 통해 실제와 센서 공간 사이의 각도를 변환할 수 있습니다.

왜곡 강도 및 GetDistortionStrength2는 이미지 코너에 발생하는 방사상 왜곡의 상대적 척도 즉, 왜곡이 있거나 없는 이미지 대각선 길이의 비율을 제공합니다.
옵션의 조합으로 표현된 Calibration 모드는CalibrationModes를 통해 액세스할 수 있습니다.
교정 계수의 영향

EWorldShape 개체는 시야각 교정 상황을 관리합니다. 이 개체는 실제 좌표(물리적 단위)와 센서 좌표(픽셀) 사이의 관계를 표현하고, 이미지 형성 프로세스에서 본질적으로 발생하는 왜곡의 원인을 밝힐 수 있습니다.
이미지 교정은 정량적 측정 애플리케이션에서 중요한 프로세스입니다. 이미지 교정은 검사 대항 품목에서 이미지(픽셀 색인) 내 점 위치와 실제 좌표의 실제 위치 사이의 관계를 확립합니다.
교정 모델 또는 일련의 알려진 지점(기준점) 또는 교정 대상의 명시적인 교정 매개변수를 입력하여 교정을 설정할 수 있습니다.
교정의 목적은 두 가지입니다.
- 관찰 조건(시야각 내의 부품 배치, 렌즈 배율, 센서 해상도 등)에 대해 독립성을 확보함으로써 절대 측정치를 사용하여 한 번에 검사 대상 품목을 묘사하는 것입니다.
단일 모델 대 다중 관찰 조건 비교
- 이미징 프로세스와 관련된 일부 왜곡(원근 효과, 광학 수차 등)을 교정하기 위한 것입니다.
이미지 왜곡 제거
이미지 내의 픽셀 색인은 일반적으로 정수이지만, 서브 픽셀 방식을 사용할 때는 분수 값이 나올 수 있습니다. 이는 일반적으로 이미지를 처리하고 알려진 특징점을 찾는 과정에서 얻을 수 있습니다. 이 값을 센서 좌표라고 부릅니다.
센서 공간 내의 특징점
검사 대상 품목에 있는 점의 위치를 설명하는 실제 좌표는 적절한 길이 측정 단위로 표현됩니다.
실제 좌표는 실제 치수이며, 일반적으로 설계 도면 또는 기계적 측정을 통해 수집됩니다.
그러려면 레퍼런스 프레임을 정의해야 합니다.
실제 공간 내의 레퍼런스 프레임

Unwarp(펴기), SetupUnwarp, UnwarpAfterSetup을 사용한 이미지 펴기.
펴기 작업 전에 조회 테이블을 사용하면 프로세스가 빨라질 수 있습니다.