소개
Imatest의 임의 차트 모듈이 테스트 차트 이미지(사용자가 직접 설계한 차트일 수도 있음)를 분석하려면 먼저 해당 차트의 정확한 설계 방식을 알아야 합니다.
이를 위해서는 차트의 특징 (배경색을 제외한 차트의 요소, 예: 색상 패치, 기울어진 사각형, 등록 표시 등)에 대한 정보가 필요합니다. 필요한 정보에는 특징을 정확하게 배치하기 위한 레이아웃 매개변수 와 이러한 특징에서 생성된 관심 영역(ROI)이 모두 포함됩니다. 경우에 따라 색상 패치의 실제 LAB 또는 RGB 값과 같은 특징에 대한 참조 값 정보 도 필요합니다.
차트 정의는 차트의 속성과 기능을 설명하는 JSON 형식의 텍스트 파일 형태로 제공됩니다. 이러한 파일은 수동으로 생성하거나, 원하는 경우 사용자 정의 자동화 프로세스를 통해 생성할 수 있습니다.
지금까지 저희 경험에 따르면 그 과정은 다음과 같습니다.
- Inkscape 또는 Adobe Illustrator와 같은 그래픽 편집 프로그램에서 허용되는 기능을 사용하여 차트를 디자인하세요.
- 모든 특징의 위치와 크기를 측정하거나 기록하고, 이를 정규화된 단위(아래 참조)로 변환하며, 다른 참조 값(색상 값 등)도 마찬가지로 변환합니다.
- 아래 설명된 대로 차트를 설명하는 필수 필드를 포함하는 JSON 파일을 직접 생성하세요.
차트정의 유틸리티는사용자 JSON 파일의 정확성을 확인하고, JSON으로 정의된 차트의 예시를 표시하며, 실제 차트 이미지에서 추출한 ROI 샘플을 보여줌으로써 이 과정을 지원할 수 있습니다.
예시 JSON 파일

Imatest 5.0 이상 버전을 설치했다면 이미 시스템에 몇 가지 예제 차트 정의 파일이 설치되어 있습니다. 이 파일들은 기본 Imatest INI 폴더와 동일한 위치에 있는 리소스 디렉터리의 chart_design 하위 디렉터리에서 찾을 수 있습니다.
시스템에서 이 폴더 위치를 찾는 가장 쉬운 방법은 Imatest 메인 창의 파일 드롭다운 메뉴에서 "INI 파일 폴더 열기" 항목을 선택하는 것입니다.
JSON 설정
차트를 분석하려면 Imatest는 해당 차트에 대한 정의가 필요합니다. 다음은 Imatest가 해당 차트의 관측 이미지를 분석하는 데 필요한 정보를 설명합니다.
임의 해도(Arbitrary Chart)는 다음과 같이 정의됩니다.
- 0부터 1까지의 정규화된 (x,y) 좌표를 갖는 직사각형 필드.
- 왼쪽 상단의 원점("이미지 스타일").
- 정의된 배경색.
- 식별 이름(예: "SFR Plus 5x7").
- 아래 집합에서 분석할 특징들을 선택합니다.

JSON 정의 파일에는 배경색, 인코딩, 화면비 등 각 차트 속성을 정의하는 필드가 필요합니다. 또한 차트에 그려지는 피처 배열도 정의해야 합니다. 각 차트 피처는 속성을 정의하는 데 필요한 필드들을 포함하는 JSON 객체로 나열됩니다. 아래는 올바른 JSON 구조의 예시입니다.

JSON 구조
일반 차트 속성
- 임의 해도의 전체 너비와 높이는 균일성 분석을 위한 배경 영역으로 해석되며, 특징 영역이나 출입 금지 구역으로 지정된 영역은 제외됩니다.
- 명시적으로 "(선택 사항)"으로 표시되지 않은 모든 필드는 필수 입니다. 기능 정의에 추가 필드를 포함할 수 있지만, 해당 필드는 무시됩니다.
- JSON 숫자 유형의 경우, 1보다 작은 소수 값은 앞에 0을 붙여야 합니다(예: 0.25, .25 아님).
|
필드 이름 | JSON 값 유형 | 설명 |
| bg인코딩 | 끈 | 유효한 인코딩 유형 문자열 |
| bg값 | 숫자 배열 | "인코딩" 필드 입력에 따라 유효한 인코딩 값이 결정됩니다. |
| 이름 | 끈 | 차트 이름 (예: "SFRplus_5x7") 참고: 차트 이름은 결과 파일 이름의 기초가 되므로 영숫자 또는 밑줄로만 구성되어야 합니다( 공백 사용 불가 ). |
| 화면 비율 | 숫자 | 전체 너비를 전체 높이로 나눈 값입니다. 예: 1.750. *참고: 이 숫자는 단위가 없습니다. |
특징
배경 영역이 정의되면 차트에 피처를 배치할 수 있습니다. 테스트 차트 모듈을 사용하여 차트 피처를 생성할 수 있습니다. 다음은 임의 차트에서 분석할 수 있는 허용된 피처 목록입니다.
공유 기능 속성
- 각 기능 유형에는 고유한 인덱스 세트가 있으며, 이 인덱스는 1부터 시작해야 합니다.
- 각 피처의 회전은 피처가 배치되고 크기가 조정된 후에 적용되는 것으로 가정합니다.
- 다음 속성들은 모든 임의 피처 유형에서 공유됩니다.
필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | 특징의 유형을 나타냅니다. 예: "기울어진 사각형 특징" |
| 센터 | 2개의 숫자로 이루어진 배열 | 특징점 중심의 위치 [x,y]를 정규화된 좌표로 나타낸 것입니다. |
| 인디 | 숫자 | 피처를 식별하는 정수 인덱스입니다. *참고: 각 피처 패밀리의 인덱스는 1부터 시작합니다. |
| 키 | 숫자 | 정규화된 y축 차원의 높이 범위는 0~1입니다. |
| 너비 | 숫자 | 정규화된 x축 차원의 너비는 0~1 범위입니다. |
| 회전 | 숫자 | (선택 사항) 회전 각도(도) - 시계 방향 |
"비스듬한 사각형 특징"

| 필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | "비스듬한 사각형 특징" |
| 부호화 | 끈 | 유효한 인코딩 유형 문자열 |
| 값 | 숫자 배열 | "인코딩" 필드 입력에 따라 유효한 인코딩 값이 결정됩니다. |
"경사진 모서리 특징"

| 필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | "경사진 모서리 특징" |
| 부호화 | 끈 | 유효한 인코딩 유형 문자열 |
| 다크밸류 | 숫자 배열 | "인코딩" 필드 입력에 따라 유효한 인코딩 값이 결정됩니다. |
| 라이트밸류 | 숫자 배열 | "인코딩" 필드 입력에 따라 유효한 인코딩 값이 결정됩니다. |
| 경사각 | 숫자 | 수평면에서 시계 방향으로 기울어진 각도(도) |
“RegMarkFeature”

참고: 교차 상관 텍스처 패턴 모서리의 등록 표시는 등록 표시가 아니라 RandomFieldFeature의 일부로 간주됩니다. 따라서 별도의 항목으로 입력하거나 RegMarkFeatures의 인덱스에 포함시켜서는 안 됩니다.
| 필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | “RegMarkFeature” |
“서클피처”

Imatest 5.1 버전에서 도입되었습니다.
참고: CircleFeatures는 기존 타겟의 차트 등록에 사용되며 등록 목적으로만 사용됩니다(결과 분석에는 사용되지 않음). 가능한 경우 RegMarkFeatures를 사용하는 것이 좋습니다. CircleFeatures는 밝은 배경 위에 검은색으로 표시됩니다.
| 필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | “서클피처” |
“컬러패치 기능”

참고: 선택 사항인 "useForNoisePSD"를 true로 설정하면 텍스처 직접 분석을 위해 노이즈 전력 스펙트럼 밀도(PSD)가 계산됩니다. 일반적으로 이를 위해 반사율 18%의 중성 회색 패치가 사용됩니다. 그렇지 않은 경우 이 옵션은 기본값인 false로 유지할 수 있습니다.
| 필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | “컬러패치 기능” |
| 부호화 | 끈 | 유효한 인코딩 유형 문자열 |
| 값 | 숫자 배열 | "인코딩" 필드 입력에 따라 유효한 인코딩 값이 결정됩니다. |
| useForNoisePSD | 부울 | (선택 사항) 노이즈 PSD 차감에 직접 사용 여부를 나타내는 플래그 (예: true, false) |
“랜덤필드피처”

참고:
- 상호 상관 텍스처 패턴 모서리의 등록 표시는 등록 표시가 아니라 RandomFieldFeature의 일부로 간주됩니다. 따라서 별도의 항목으로 입력하거나 RegMarkFeatures의 인덱스에 포함시켜서는 안 됩니다. 테스트 차트 모듈을 사용하여 무작위 패턴을 생성할 수 있습니다.
- 랜덤 다이렉트 분석을 수행하려면 차트 정의에서 노이즈 전력 스펙트럼 밀도(PSD)를 계산하고 이를 랜덤 신호 PSD에서 빼기 위한 회색조 색상 패치 하나를 지정해야 합니다. 이는 "useForNoisePSD" 필드를 사용하여 수행할 수 있습니다.
| 필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | “랜덤필드피처” |
| 랜덤타입 | 끈 | 랜덤 필드 디자인 (예: "Direct_gray", "Direct_color", "Cross_gray", "Cross_color", "DXO_direct_gray", "IE_cross_color") |
“스타피처”

| JSON 값 유형 | 설명 | |
| 기능 유형 | 끈 | "스타피처" |
| 중심마크분수 | 숫자 | 중앙 등록 표시의 지름은 전체 별 모양 특징의 지름에 대한 비율이어야 합니다. 0보다 크고 1보다 작아야 합니다. |
참고 :
- Imatest 5.2는 사인파형 별 패턴만 지원하며, 막대형 별 패턴은 지원하지 않습니다.
- 별 모양에 대한 정의는 별의 "활성 영역", 즉 중심 표시와 사인파 패턴만을 나타내며, 바깥쪽 "껍질" 부분은 포함하지 않습니다.
- 중앙에 등록 표시가 있는 별 모양 패턴만 지원됩니다. 이 표시의 너비는 전체 별 너비에 대한 비율로 centerMarkFraction 값으로 지정해야 합니다.
- 다른 기능(예: 회색조 OECF 패치)은 이 기능의 일부로 간주되지 않습니다.
- 별 모양 패턴 중앙에 있는 등록 표시는 StarFeature의 일부로 간주되며, RegistrationMark 기능 집합의 일부가 아닙니다 . 따라서 별도의 항목으로 등록되거나 RegMarkFeatures의 인덱스에 포함되어서는 안 됩니다.
“웨지피처”

| 필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | “웨지피처” |
참고 사항 :
- 쐐기 모양의 기본 방향은 위 그림과 같이 넓은 쪽이 왼쪽에 있는 수평 방향입니다. 차트 디자인에서 다른 방향으로 쐐기 모양 요소를 정의할 때 이 점을 유의하십시오. 예를 들어, 넓은 쪽이 아래쪽을 향하는 세로 방향의 쐐기 모양을 만들려면 270도 회전이 필요합니다.
- 현재로서는 차트 높이당 쐐기형 차트의 막대 개수나 끝점 선의 너비를 정의할 필요가 없습니다.
"출입 금지 구역"
| 필드 이름 | JSON 값 유형 | 설명 |
| 기능 유형 | 끈 | "출입 금지 구역" |
참고 : 제외 영역은 이 페이지의 다른 차트 기능에서 분석 대상으로 정의되지 않았지만 시스템에서 배경 영역의 균일도 분석을 잘못 사용하지 않도록 인식해야 하는 다른 그래픽 요소가 있을 수 있는 차트 영역입니다. 여기에는 균일도 분석에 포함되어서는 안 되는 그래픽, 텍스트, 프레임 마커 등이 포함됩니다. 제외 영역의 중심, 너비 및 높이는 다른 임의 차트 기능과 마찬가지로 정의됩니다.
출입 금지 구역은 다른 정의된 차트 기능과 겹칠 수 있으며, 이로 인해 부정적인 결과는 발생하지 않습니다.
메모
차트 등록 지점
임의 해도 모듈은 해도 이미지에서 해도 디자인을 정렬하기 위해 최소 3개(가급적 4개)의 등록점이 필요합니다. 이러한 등록점은 다음 요소들의 조합으로 구성될 수 있습니다.
- RegMarkFeatures는 하나의 등록 지점을 제공합니다.
- CircleFeatures는 등록 지점 하나를 제공합니다.
- RandomFieldFeatures는 유형에 따라 2개, 4개(또는 0개)의 등록 지점을 제공할 수 있습니다.
색상 인코딩
차트 기능 중 상당수는 정의 시 색상 값을 입력해야 합니다. 여기에는 ColorPatchFeatures, SlantedSquareFeatures 및 차트 배경 자체가 포함됩니다.
참조 색상 값은 값(일반적으로 3개의 숫자로 이루어진 벡터)과 해당 숫자를 해석하는 방법을 정의하는 인코딩 문자열의 조합으로 나타낼 수 있습니다. 다음 표는 허용되는 인코딩 유형과 해당 값 항목을 보여줍니다.
| 부호화 | "인코딩" 문자열 | 값 설명 |
|---|---|---|
| 표준 RGB 색 공간 | "srgb", "adobe_rgb" | 입력값은 [r, g, b] 값으로 구성된 3비트 길이의 숫자 배열이어야 하며, 이러한 색 공간의 표준 8비트 표현(즉, [0, 255] 범위의 값, 감마 인코딩)으로 스케일링되어야 합니다. |
| CIELAB | "랩" | 입력값은 [L*, a*, b*] 값(D50 화이트 포인트)으로 구성된 3자리 숫자 배열이어야 합니다. L* 값은 [0, 100] 범위로 제한됩니다. |
| 강도 값 | "밀도", "강도", "8비트 강도", "16비트 강도" | 강도 값은 정규화 후 최대값 1을 기준으로 합니다. "intensity" 입력값은 이미 정규화되어 있으며, [0, 1] 범위 내에 있어야 합니다. "intensity_8bit"와 "intensity_16bit"는 각각 최대값 255와 2^16-1을 기준으로 정규화됩니다. "density" 값은 10^(-density) 방식의 지수 값입니다. 모든 값 입력은 단일 숫자 값이어야 합니다. |
댓글
아쉽게도 JSON 파일에서는 파서가 무시하는 주석을 파일 내에 넣을 수 없습니다. JSON 파일을 작성하면서 향후 사용자를 위해 특정 내용을 설명하는 주석을 남기고 싶다면, 대부분의 프로그래밍 언어에서 흔히 사용되는 이스케이프 문자(예: "%" 또는 "//")를 사용하는 방식으로는 불가능합니다.
하지만 JSON 파일에 주석을 추가해야 하는 경우, 파일 내 어떤 객체에든 "comment"라는 이름과 문자열 값을 가진 추가 필드를 자유롭게 추가할 수 있습니다. Imatest는 차트 정의에서 필수 필드만 확인하고, 추가 필드는 무시합니다.
디자인 및 인쇄
대부분의 경우 차트 정의는 레이아웃 과 미디어 모두와 연관됩니다. 임의 차트를 벡터 그래픽(일반적으로 Inkscape 또는 Adobe Illustrator 사용)으로 디자인한 후에는 특정 용지와 인쇄 매체를 고려해야 합니다(예: 반사 및 투과 매체는 색상 패치의 값이 다르기 때문에 두 개의 서로 다른 .json 파일이 필요합니다). 테스트 차트 모듈을 사용하여 사용자 지정 차트를 구성하는 데 사용할 수 있는 벡터 그래픽을 생성할 수 있습니다.
모든 검사 차트와 마찬가지로, 촬영 거리와 최소 인쇄 해상도를 고려하는 것이 중요합니다. Imatest는 다양한 재질과 크기 로 전문적인 인쇄 서비스를 제공합니다. 맞춤형 차트 디자인 제작에 대한 구체적인 문의 사항은 [email protected] 으로 연락해 주십시오. 필요한 경우 차트 정의 파일 제작에 대한 컨설팅 서비스 도 제공합니다.