OpenQualia is an industry group focused on improving digitization quality control through cooperation and standards. OpenQualia works to standardize the workflows and data formats of digitization tools including software for capture, color profiling, image quality analysis, and quality assurance. OpenQualia-compatible tools simplify digitization and help the user achieve higher quality.
The OQ Label standardizes the process of using target-specific measurements for color profiling and quality evaluation in digitization processes. Targets like the DT NGT2 or ColorChecker SG are essential for creating color profiles and assessing quality based on established standards such as ISO 19264 and FADGI. It is best practice to use measurements specific to each target rather than relying on generic average values for the target type.
Using target-specific measurements can be cumbersome and error-prone, involving manually measuring a target, saving these measurements to a file, transferring the file to different computers as needed, and loading it into various software tools throughout the digitization workflow. An OQ Label simplifies this process significantly.
Executive Summary
An OQ Label should use a QR Code or DataMatrix that encodes a URL similar to the one below, pointing to a publicly accessible CGATS measurement file.
https://targets.digitaltransitions.com/measurements?Manufacturer=DT&TargetType=DTNGT2&TargetID=DT-AR-2020041
Code Type
OQ Labels should be encoded as either a QR Code or DataMatrix. A wide range of existing software libraries exists for both formats, supporting detection and decoding. For physically small targets, we recommend DataMatrix, which works better at physically small print sizes. For others, QR Codes are recommended, as they are readable by a wider range of consumer-facing tools such as smartphones.
URL Format as Encoded in the Label
OQ Labels must be a valid URL following the URL Standard. The URL must start with “https://” rather than “http://” and must contain the following query parameters:
TargetID – the serial number of the target. If the target has an existing physical serial number (e.g. the DT NGT2 has a serial number written on the front bottom right of the target) then this serial number should be used for the TargetID. In the case the target does not natively have a serial number the user can make one up, but should use only letters, numbers, and dashes avoiding spaces or special characters.
Manufacturer – The make of the target. That is the entity whose brand is marked most prominently on the target. For example, for a DT NGT2 the manufacturer is “Digital Transitions” or “DT”.
TargetType –The model of target. That is the product name. For example “ColorChecker Classic” or “CCC”.
URL Format as passed to OpenQualia Measurement File Hosting
The label URL is meant to be user friendly in the case that it is scanned by a user using their smartphone. For programmatic use within a software workflow the label should be passed by the user with one additional parameter added:
AccessMode – This parameter is NOT present in the label itself. It allows client software (e.g. image quality analysis software such as ImageZebra or DT Nexus) to directly receive a CGATS file rather than a user-friendly web page. The following values are possible
Interactive (default) – This is the default value, so if AccessMode is missing (as it is in the label itself) then the result will be a user-friendly website that provides at minimum: a brief explanation of OQ Labels, a link to download the most recent measurement file, and the “Measurement Freshness” of that measurement (see “Measurement Freshness” later in this document). This provides a better experience for someone who scans the code with their smartphone than being taken directly to a measurement file in a machine-readable format. Additional features of the interactive view are left to the host, but could include such things as an image of the target with values available via hover, a sample file that includes such a target, an overlay (PNG) with the measured values to use in software such as Capture One for visual QC. It is also acceptable for such pages to include commercial links to related software and hardware; for example, a link to purchase the same or similar targets, a link to purchase measurement service for the target, or software to analyze images containing such targets.
ActiveMeasurement – This is the value expected to be added by image quality software. It should result in a measurement file that comports with the “OpenQualia Compatible Measurement File Format” requirements (basically CGATS with certain typically-optional fields required).
AllMeasurementsZip (optional) – This allows software to automatically retrieve a zip file of all measurements, including older and current measurements. It is NOT required that a OpenQualia Measurement File Host implement this parameter value.
In URL encoding the first parameter name is preceded by ?, and additional parameters are separated using &. Below is an example of those parameters: ?Manufacturer=DT&TargetType=DTNGT2&TargetID=DT-AR-2020041
Additional parameters may be added (e.g. a proprietary field to allow a proprietary feature in a particular program, such as User or MeasurementGeometry). OpenQualia-compatible software should use all provided parameters in the URL used to download the measurement file, but is otherwise free to disregard the additional parameters.
Query Parameter Values
For Manufacturer and TargetName a standardized short-form and long-form canonical names can be found here. OpenQualia targets must use these canonical names when encoding OQ Labels to avoid confusion where the label uses a slightly different name for the target than the software expects; for example ColorChecker SG rather than ColorChecker Digital SG.
Query Parameter Matching
Evaluation of the Manufacturer and TargetName values should be done in a case agnostic and whitespace agnostic manner. Either short-form or long-form are equally acceptable. For example, colorcheckerclassic, CCC, and ccc are all acceptable, as is ColorChecker Classic (which would be URL encoded as ColorChecker%20Classic). OpenQualia recommends encoding without whitespace and in TitleCase to maximize the readability of the resulting URL.
TargetType and Manufacturer Display
We recommend presenting the decoded values of these parameters using their Long Form canonical name. That is, OpenQualia suggests encoding ColorCheckerClassic but displaying ColorChecker. Classic.
One URL per Target
If more than one working code is detected for a given target then an error should be generated. That is, if three codes are present but only one of them is working (the other two lead to 404 errors) then the working code can be used. But if two codes are working then an error should be generated. This is partly to support Private labels since each Private label can only be read in a specific OpenQualia compatible software; where allowed a Public label is a better solution when broad support is desired.
Note this would only be possible because the standard allows additional parameters beyond the three required TargetID, TargetType, Manufacturer fields which should always be unique to a given physical target. However, using this allowance to label a target with more than one OQ Label is not supported. To support the archiving of older measurements please see “Older Measurement File Archive Retrieval” in the Hosting section of this document.
Location of Code
The machine readable code should be physically placed either:
Entirely inside edges of the target (e.g. stuck to the front of the target in an otherwise unused area of the target)
OR
Entirely outside the physical target edges, but close to the target. The entire target should be within a margin of the target defined by 10% of the short side of the target.
This allows the code to be placed on the target, or on a backing paper or mount immediately next to it, while decreasing the chance a target and a code are incorrectly associated. Requiring that the label be entirely inside or entirely outside the target edges – explicitly not allowing the label to overlap or cover the edge of the target – prevents confusion in target detection that is based on the outer edges of the target.
Commercial OQ Label Host Services
Any OpenQualia member can (but is not required to) provide a website or application that allows a user to select a measurement file and make it available at a OpenQualia compatible URL.
Every OpenQualia member that measures targets (their own, or as a metrology service) is strongly encouraged to make those measurements available at a OpenQualia compatible URL using their own service, another commercial service, or the self-serve option detailed below. However, a private use of OpenQualia is allowed; that is, an OQ Label Host can choose to create labels where the URL is not publicly accessible but is only accessible for credentialed users. Private OQ Labels created by one OQ Label Host will not work with other OpenQualia compatible software (e.g. a private label made on ImageZebra would not be readable by DT Nexus) so users should be encouraged to use public settings.
Every DT target that is purchased with measurement (starting 2025) will ship with an OQ Label that points to that measurement as hosted at targets.digitaltransitions.com.
ImageZebra will allow users of their website to add measurements for a particular target, and print a OQ Label to place on (or near) their target, and will host the encoded URL.
Self-Serve OQ Label Hosting
It is important that anyone be able to create OQ Labels (not just OpenQualia members) so it is important that users be able to easily make their own measurements and make them accessible at a compatible URL. Therefore the standard has been designed to allow an end user to host the file themself using a service such as DropBox. This can be accomplished using the following steps:
Start with a CGATS measurement file (your own, or from a vendor) – check that it meets the “OpenQualia Compatible Measurement File Format” requirements
Create a Dropbox account at dropbox.com
Upload a compatible CGATS file to that account
Select the uploaded file and “Copy Link”
At the end of the link will appear DL=0. Change this to DL=1 which means the link will directly download the file rather than take you to file on the dropbox website.
Add the OQ Label URL parameters manually. For example adding &Manufacturer=DT&TargetType=DTNGT2&TargetID=DT-AR-2020041&AccessMode=ActiveMeasurement to the end of the URL provided by Dropbox.
Use a QR code generator such as CyberChef to create a QR code using the resulting longer URL.
Print that QR Code and place it on or near the target.
Note that self-served OQ Labels will take users directly to the measurement file, rather than an interactive view. That is an understood limitation of self-serving, and does not prevent the labels from working with OpenQualia compatible software such as ImageZebra or DT Nexus [add additional software packages that support in time for announcement].
Measurement and Device Calibration Freshness Display
For best results targets should be remeasured on a regular schedule and only relatively fresh measurements should be trusted. Additionally, for best results the measuring device itself should be factory calibrated on a regular schedule (e.g. sending an i1 Spectrophotometer to X-Rite). To this end the Measurement File Format for OQ Labels requires a CREATED date on which the measurements were taken and recommends a CALIBRATION_DATE on which the device was most recently factory calibrated (or its date of purchase if no subsequent calibration has been performed). OpenQualia compliant software should (but is not required to) provide guidance to the user based on these fields. This should take the form of a field named “Measurement Age” and “Measuring Device Calibration Age”
Measurement Age (CREATED field)
Measuring Device Factory Calibration Age (CALIBRATION_DATE field)
Older Measurement File Archiving and Retrieval
When a new Measurement File is uploaded for a unique Manufacturer/TargeType/TargetID combination the default behavior is to set the new measurement as the Active Measurement – the one provided when the URL is called with AccessMode=ActiveMeasurement.
OQ Label Measurement Hosts may optionally retain additional measurements and present them in the Interactive View. In this case they should serve all measurements (past and most recent) as a zip when the URL parameter AccessMode=AllMeasurementsZip is passed in the URL. That allows the client software to offer a selection from all available measurements.
Future Feature Possibilities
As outlined in this document the hosts of OpenQualia Compatible Measurement Files are open-access silos. For example, using ImageZebra to make an OQ Label makes it accessible to any OpenQualia compatible software. In the future the API requirements for OQ Label hosts may be expanded to allow one repository to request periodic synchronization from another repository – syncing all targets from one repository to the other. In this way repositories could provide a backup; software could first check one repository (e.g. DT’s) and if not successful (e.g. server error) could check other repositories.
The CGATS standard is widely used for spectral and colorimetric measurement. However, this standard is very loose and proper quality control requires more specificity. Therefore OpenQualia Measurement files should be fully ANSI CGATS.17-2009 compatible (“CGATS compatible”) with the below additional requirements.
EITHER
The file identifier (First line of characters) shall be “OQM” and the file extension shall be .oqm.txt standing for OpenQuality Measurement. This is preferred as it clarifies the file is CGATS compatible but also meets the additional more specific requirements for OpenQualia Measurements. The use of “.txt” in this extension ensures the file will default to be opened in a text editor.
OR
The file identifier (First line of characters) shall be “CGATS.17” and the file extension shall be .cgats.txt. The use of “.txt” in this extension ensures the file will default to be opened in a text editor.
A # character introduces a comment line.
There shall be a single DESCRIPTOR keyword containing the full name of the target, using the canonical Target Name List.
There may be an ORIGINATOR keyword representing the individual or entity that performed the measurement. For example “Avian Rochester”.
There shall be a CREATED field. This refers to the date of the measurement of the target. It shall have an unambiguous date format, specifically ISO 8601:"YYYY-MM-DD".
There may be a CALIBRATION_DATE field. This refers to the date of the most recent calibration of the measurement device (not the date of the measurement of the target). It shall have an unambiguous date format, specifically ISO 8601:"YYYY-MM-DD". For example, if the i1 was sent to X-Rite for calibration on June 3, 2022 it would read 2022-06-03. If no recalibration or recertification has been performed the date of purchase should be used; it is understood this is not ideal since the device may have been manufactured and calibrated well before purchase, but it is preferable compared to not providing a date.
There shall be a SERIAL keyword that references the specific target measured.
There may be a keyword TARGET_INSTRUMENT which will identify the instrument used to make the measurements.
There may be a keyword MEASUREMENT_SOURCE with a string of key=value pairs,
separated by a space. The value shall contain "Illumination=" followed by D50 or D65 or other illuminant. The value shall contain "ObserverAngle=" followed by either 2 or 10. The value may contain other keys and values, here's an example: MEASUREMENT_SOURCE "Illumination=D50 ObserverAngle=2 WhiteBase=Abs Density=Status E Filter=Undefined"
If the file contains Lab or XYZ values, there shall be two keywords, ILLUMINANT and OBSERVER, containing the values that were assumed when converting the values from spectral distribution to the respective color space. Values should be strings for ILLUMINANT (i.e. “D50”) and numbers for OBSERVER (i.e. 2).
If spectral values are included in the file, the following keywords and values may be used:
SPECTRAL_BANDS shall contain the number of spectral bands in the readings, e.g. "36".
SPECTRAL_START_NM shall contain the wavelength in nanometers of the first band, e.g. "380.0".
SPECTRAL_END_NM shall contain the wavelength in nanometers of the last band, e.g. "730.0".
The NUMBER_OF_FIELDS keyword shall have a value that indicates the number of fields in each data set, e.g. 43. This includes the number in SPECTRAL_BANDS plus additional fields such as SAMPLE_ID, SAMPLE_NAME or extra formats such as RGB, LAB or XYZ.
The start of the declaration of the fields shall be marked by the BEGIN_DATA_FORMAT keyword (as per CGATS). Then shall follow the names of the fields. Standard CGATS field names such as: SAMPLE_ID, SAMPLE_NAME, RGB_R, RGB_G, RGB_B, XYZ_X, XYZ_Y, XYZ_Z, LAB_L, LAB_A, LAB_B shall be used where appropriate.
The physical patches on the target will be identified using the Field SAMPLE_NAME or SAMPLE_ID. They may be identified using either a letter-number pair or a sequential numbering scheme as determined by the physical labels on the target. If both a letter-number pair and a number exist within the measurement file, the letter-number pair will take priority and any other sequential numbering will be ignored. Below are the general rules for the use of letter-number pairs versus sequential numbering.
If the physical target has patch location identifiers using letters for columns and numbers for rows, or alternatively if each patch is labeled with a letter-number pair, then the field SAMPLE_NAME or SAMPLE_ID shall contain the location index of the measured value as marked on the physical target, in letter-number format, with or without a hyphen. Both “A1” and “A-1” are valid, the former is preferred. Examples of this type of target are the Color Checker SG and the DT Next Generation Target v2.
If the physical target has patch labels with numbers only, the field SAMPLE_ID or SAMPLE_NAME shall contain the patch number as labeled on the target. For Example, the Golden Thread Device and Object Level targets have patch number labels.
If the physical target has a rectangular matrix of patches without any labels, then a letter-number pair shall be assigned using the following rules. (The orientation of the text on the target shall determine the orientation of the rows and columns. If no text is present then the orientation shall be assumed to be landscape, with the long dimension in a horizontal direction.)
Columns are identified with the alphabetical label A, B, C, D…. etc
Rows are identified with numbers 1, 2, 3….
This letter-number pair will be identified in the Field SAMPLE_NAME or SAMPLE_ID. An example of this type of target is the Color Checker Classic
If the physical target has a linear array of patches without sequentially numbered labels, then a sequential numbering scheme can be used, where the order is either left to right or top to bottom, depending on the orientation of the target. (The orientation of the text on the target shall determine the orientation of the rows and columns. If no text is present then the orientation shall be assumed to be landscape, with the long dimension in a horizontal direction.) The field SAMPLE_ID or SAMPLE_NAME shall contain the number as defined in the scheme above. Examples of this type of target are the Munsell Linear Gray Scale or the Kodak/Tiffen Grayscale Q-13
If the patches on the target are not labeled and do not fit any of the above criteria, then the specific numbering scheme is defined in the section titled, Unique Target Measurement Order
Spectral band values shall be named SPEC_XXX or nmXXX, or SPECTRAL_NMXXX, where XXX is the nearest integer values of the number of nanometers of the band.
The definition of the fields shall be terminated by the END_DATA_FORMAT keyword.
The NUMBER_OF_SETS keyword shall have a value that indicates the number of sets of data, e.g. 1000. This should match the number of reference patches on the physical target.
The start of the values of the data sets shall be marked by the BEGIN_DATA keyword.
Each set of data shall be on one line, and shall be separated by white space or tab. All device values shall be percentages (e.g. values from 0.0 to 100.0). XYZ values shall be normalized to a Y value of 100.0. L*a*b* values will have their normal range (L* 0.0 to 100.0, a* and b* typically -128.0 to 128.0).
The end of the values of the data sets shall be marked by the END_DATA keyword.
Unique Target Measurement Order
For targets without any identification labels or do not have a matrix of patches, this section is reserved to show an illustration of the target with a numbering sequence that must be followed.