This repository contains the source for the Academy Input Device Transform (IDT) online Apps:
Academy Input Device Transform (IDT) Calculator - P-2013-001
Academy Input Device Transform (IDT) Calculator - Prosumer Camera
aces/
- Python package containing the API code.apps/
- Python package of the online Apps.assets/
- Assets, e.g. CSS files for the online Apps.docs/
- Documentation for the API code.
Docker is the only requirement to run the Apps locally.
Poetry is recommended for developers willing to contribute to the project.
The pyproject.toml
file defines the various packages required.
It is also possible to use the requirements.txt
file to generate a virtual environment with all the dependencies.
$ docker build --platform=linux/amd64 \
-t ampas/ampas-apps:latest \
-t ampas/ampas-apps:latest-amd64 .
The apps can then be launched locally as follows:
$ docker run -d \
--name=ampas-apps \
-p 8010:8000 ampas/ampas-apps:latest-amd64
$ poetry install
The Apps can then be launched locally as follows:
$ poetry run python index.py
or
$ poetry run invoke docker-run
Each App has an About
tab describing the given App and its usage.
The IDT App for Prosumer Cameras requires a Zip archive file, i.e. IDT archive, with a specific structure and content.
The explicit specification of the IDT archive requires a root JSON file describing the paths to the various image sequences.
The root JSON file describes which image sequences correspond to which exposure value, flatfield and grey card.
The JSON schema for the IDT archive can be used to validate a new user file using a validator and is defined as follows:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"header": {
"type": "object",
"properties": {
"schema_version": {
"type": "string"
},
"aces_transform_id": {
"type": "string"
},
"aces_user_name": {
"type": "string"
},
"camera_make": {
"type": "string"
},
"camera_model": {
"type": "string"
},
"iso": {
"type": "number"
},
"temperature": {
"type": "number"
},
"additional_camera_settings": {
"anyOf": [{ "type": "string" }, { "type": "null" }]
},
"lighting_setup_description": {
"anyOf": [{ "type": "string" }, { "type": "null" }]
},
"debayering_platform": {
"anyOf": [{ "type": "string" }, { "type": "null" }]
},
"debayering_settings": {
"anyOf": [{ "type": "string" }, { "type": "null" }]
},
"encoding_colourspace": {
"anyOf": [{ "type": "string" }, { "type": "null" }]
}
},
"required": ["schema_version", "camera_make", "camera_model"]
},
"data": {
"type": "object",
"properties": {
"colour_checker": {
"type": "object",
"patternProperties": {
"[+-]?[0-9]+[.]?[0-9]*([e][+-]?[0-9]+)?": {
"type": "array",
"items": [
{
"type": "string"
}
]
}
},
"additionalProperties": false
},
"flatfield": {
"type": "array",
"items": [
{
"type": "string"
}
]
},
"grey_card": {
"type": "array",
"items": [
{
"type": "string"
}
]
}
},
"required": ["colour_checker"]
}
},
"required": ["header", "data"]
}
Floating point exposure values are also supported as keys in the JSON file:
The implicit specification of the IDT archive requires that the image sequences are stored in specific directories that match the JSON schema:
The implicit specification cannot represent some of the metadata that the explicit specification supports, e.g. manufacture
or exposure_settings
.
It is also possible to use floating point exposure values by naming the directories accordingly:
This project is licensed under the terms of the LICENSE agreement.
Thank you for your interest in contributing to our project. Before any contributions can be accepted, we require contributors to sign a Contributor License Agreement (CLA) to ensure that the project can freely use your contributions. You can find more details and instructions on how to sign the CLA in the CONTRIBUTING.md file.
For support, please visit ACESCentral.com