Skip to content

Commit be72be3

Browse files
committed
Add RAW curve metadata semantics and docs
Introduce dedicated RAW curve roles (RawValueCurve, RawLinearityLimit, RawCalibrationCurve, RawCurveControlPoints) in metadata_concepts and metadata_query enums and expose them in the C++/Python APIs. Update query, interpretation, concept-resolution, and transfer-diagnostic logic to classify and handle source RAW curve/linearity/calibration metadata (including rendered-transfer drop behavior). Refresh docs and Sphinx sources, bump VERSION to 0.4.41, update CHANGES.md, and adjust/add tests for concepts, queries, and transfer diagnostics.
1 parent 76dd121 commit be72be3

24 files changed

Lines changed: 546 additions & 170 deletions

CHANGES.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,28 @@
11
# OpenMeta Changes
22

3+
## 0.4.41 - 2026-05-28
4+
5+
Changes compared with `0.4.40`.
6+
7+
### Added
8+
9+
- Added dedicated semantic query and concept roles for RAW value curves, RAW
10+
linearity limits, RAW calibration curves, and RAW curve control points.
11+
- Added conservative RAW curve classification for DNG linearization/linearity
12+
tags plus selected Sony, Nikon, Kodak, Panasonic, and Phase One/Leaf-style
13+
curve or calibration metadata names.
14+
- Added rendered-transfer diagnostics that drop source RAW curve/linearity
15+
metadata while keeping it eligible for compatible RAW/DNG-style transfers.
16+
- Added C++ and Python enum exposure plus focused query, interpretation,
17+
concept-resolution, and transfer-diagnostic tests for the new RAW curve
18+
roles.
19+
20+
### Changed
21+
22+
- Updated public interpretation, API, host-integration, development, quick
23+
start, and writer-contract docs to describe source-bound RAW curve metadata
24+
and rendered-image transfer behavior.
25+
326
## 0.4.40 - 2026-05-27
427

528
Changes compared with `0.4.39`.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.4.40
1+
0.4.41

docs/api_stability.md

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

docs/development.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ model should stay compact:
1717
| Area | Purpose | Readiness |
1818
| --- | --- | --- |
1919
| Decoding | Find metadata carriers and decode EXIF, XMP, IPTC, ICC, Photoshop IRB, JUMBF/C2PA, EXR, and related blocks into `MetaStore` entries. | High, about 98-100% for the current target scope. |
20-
| Interpretation | Normalize names and values, group entries by meaning, and classify source-bound data such as RAW crop, exposure adjustment, color/profile/source-color-transform evidence, lens-correction, sensor, BMFF brand/item-property associations, item semantic counts, and primary item properties, JUMBF labels, Photoshop IRB embedded carriers plus fixed-layout, XML/text, path-record, byte-count, and descriptor-header summaries, computational, thermal, stitch/panorama capture state, and vendor-private fields. | Medium-high, about 91%. |
20+
| Interpretation | Normalize names and values, group entries by meaning, and classify source-bound data such as RAW crop, exposure adjustment, color/profile/source-color-transform evidence, RAW curves/linearity metadata, lens-correction, sensor, BMFF brand/item-property associations, item semantic counts, and primary item properties, JUMBF labels, Photoshop IRB embedded carriers plus fixed-layout, XML/text, path-record, byte-count, and descriptor-header summaries, computational, thermal, stitch/panorama capture state, and vendor-private fields. | Medium-high, about 92%. |
2121
| Query | Find entries by name, fuzzy term, or semantic group, then expose normalized query candidates, structured interpretation records, bounded cross-family concept resolutions, transfer hints, and conflict flags for crop/border/active-area, exposure/gain, color/WB/profile/source-color-transform, orientation, date/time, GPS, lens-correction, computational/thermal/stitch, and RAW/source-processing fields across standard and vendor metadata. | Medium-high, about 77-83%. |
2222
| Creation | Build fresh metadata entries from host-provided values. | Medium, about 55-65%. |
2323
| Editing | Modify existing logical metadata entries while preserving valid surrounding structure. | Medium, about 60-70%. |
@@ -52,10 +52,12 @@ semantic for EXIF color-space evidence, ICC header/tag entries, XMP
5252
ICC/profile/color-space fields, and PNG profile text carriers. Vendor-classified
5353
MakerNote/RAW fields can also form per-family grouped candidates for white
5454
balance, color, raw-storage, sensor, computational, thermal, stitch/panorama,
55-
and source-processing records.
55+
source-processing, raw value curve, linearity-limit, calibration-curve, and
56+
curve-control-point records.
5657
RAW-processing queries add conservative groups for black/white levels,
57-
linearization tables, CFA/sensor layout, source geometry, raw-storage
58-
identifiers, and source-private processing buckets.
58+
linearization tables, RAW value curves, RAW linearity limits, RAW calibration
59+
curves, RAW curve control points, CFA/sensor layout, source geometry,
60+
raw-storage identifiers, and source-private processing buckets.
5961
Exposure/gain concept resolution promotes exposure time, aperture, ISO,
6062
exposure bias, exposure program/mode, gain, and raw exposure-adjustment records
6163
into host-visible roles, with raw exposure adjustments kept unsafe for rendered

docs/host_integration.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,10 @@ previews, `transfer_concept_diagnostics_from_store(...)` converts those hints
8080
into keep/drop/requires-target-image-spec actions for a selected
8181
`TransferSafetyMode`, plus stable severity tokens and default message text for
8282
host UI. Rendered-transfer drop messages distinguish source color transforms,
83-
white balance, lens correction, source-bound RAW processing, and target-owned
84-
image properties. Hosts can localize or replace the wording, but they do not
85-
need to invent the basic safe/drop/rewrite reasons.
83+
white balance, lens correction, source RAW curves/linearity metadata,
84+
source-bound RAW processing, and target-owned image properties. Hosts can
85+
localize or replace the wording, but they do not need to invent the basic
86+
safe/drop/rewrite reasons.
8687

8788
## Adapter Classes
8889

docs/interpretation_status.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ meaningful interpretation. Interpretation means that decoded entries have
55
stable names, typed values, semantic groups, query shapes, and transfer-safety
66
classification that host applications can use directly.
77

8-
Current overall status: **medium-high, about 91%** for the public target scope.
8+
Current overall status: **medium-high, about 92%** for the public target scope.
99
This is intentionally lower than decode coverage. Decode parity only proves
1010
that metadata carriers and entries are visible; interpretation also requires
1111
human-readable meaning and safe cross-format behavior.
@@ -37,12 +37,12 @@ explicit outcome:
3737
| Geometry, crop, active area, and borders | DNG crop/active-area/masked-area tags, Phase One/Leaf geometry, Fujifilm RAF raw crop/zoom rectangles, Canon aspect/crop metadata, Nikon Capture crop bounds, Sony panorama crop margins, canonical border margins, vendor RAW-processing geometry buckets, and fuzzy crop/border-style paths are queryable. | High, about 88-92%. | More vendor-specific normalized rectangles and stronger output contracts for ambiguous multi-tag geometry. |
3838
| Exposure and gain | Standard EXIF exposure time, f-number, exposure program/mode, photographic sensitivity, exposure bias, exposure index, gain control, selected DNG baseline/raw-preview gain fields, matching XMP paths, and selected decoded vendor/MakerNote exposure names are queryable and promoted into cross-family exposure roles. Standard EXIF exposure program/mode and gain-control values plus selected Canon/Nikon/Sony/Fujifilm/Pentax/Olympus/Panasonic/Phase One/Kodak/Minolta/Sigma/Samsung/Ricoh MakerNote values carry human-readable labels where stable. Capture exposure facts are marked safe, while raw/DNG exposure adjustments are marked unsafe for rendered-image transfer. | Medium-high, about 91-94%. | More vendor MakerNote exposure print conversions and richer per-vendor exposure/gain labels. |
3939
| Color, white balance, profiles, and matrices | DNG color/calibration/reduction/forward matrix groups, white-balance vector groups, EXIF color-space evidence, ICC header/tag entries, XMP ICC/profile fields, PNG profile text carriers, RAW color/source-processing safety buckets, transfer hints, per-family grouped vendor color/WB candidates, long-tail camera-to-XYZ/RGB, style/color, and white-balance gain aliases, and cross-family concept candidates with full grouped value vectors are identified. ICC/profile and color-space records have a distinct `color_profile` semantic role, while camera RAW profile/look/tone-curve/style fields and vendor source color tables have a separate `source_color_transform` role marked unsafe for rendered-image transfer. Matrix/vector groups require numeric payloads with conservative minimum shapes before promotion. | Medium-high, about 85-92%. | Deeper camera/vendor color science interpretation is intentionally conservative, especially for rendered-image transfer. |
40-
| Lens correction and RAW processing | Lens-correction groups, black/white levels, linearization, CFA/sensor layout, raw-storage identifiers, vendor RAW/source-processing buckets, creative/picture style, film simulation, dynamic-range, optical correction, raw-development, computational, thermal, and stitch/panorama aliases, per-family vendor raw-storage/sensor/computational/thermal/stitch/source-processing table candidates, transfer hints, transfer diagnostics, and concept candidates with grouped table/vector values are classified for query and transfer safety. Lens-correction grouped tables require numeric payloads before promotion. | Medium-high, about 83-90%. | Long-tail per-model correction tables and richer numeric normalization. |
40+
| Lens correction and RAW processing | Lens-correction groups, black/white levels, linearization, RAW value curves, RAW linearity limits, RAW calibration curves, RAW curve control points, CFA/sensor layout, raw-storage identifiers, vendor RAW/source-processing buckets, creative/picture style, film simulation, dynamic-range, optical correction, raw-development, computational, thermal, and stitch/panorama aliases, per-family vendor raw-storage/sensor/computational/thermal/stitch/source-processing table candidates, transfer hints, transfer diagnostics, and concept candidates with grouped table/vector values are classified for query and transfer safety. Current public RAW curve coverage includes DNG linearization/linearity-limit tags plus conservative Sony, Nikon, Kodak, Panasonic, and Phase One/Leaf-style curve or calibration names where decoded metadata is visible. Lens-correction grouped tables require numeric payloads before promotion. | Medium-high, about 84-91%. | Long-tail per-model correction tables and richer numeric normalization. |
4141
| Vendor MakerNotes | Broad MakerNote naming and source-processing classification exists for common vendors and several live computational/thermal vendors. Unknown entries remain lossless and source-private subgroups distinguish preview, face geometry, computational, thermal, stitch/panorama, pixel-shift, multi-shot, composite, auto-lighting, RAW crop/active-area, source color-transform, source style/rendering aliases, lens-correction, raw-level processing data, and Phase One/Leaf RAW-processing fields handled by direct classification plus dedicated normalized helpers. Classified multi-field vendor groups now surface as grouped query/interpretation candidates where safe to expose structurally. Selected Canon/Nikon/Sony/Fujifilm/Pentax/Olympus/Panasonic/Casio/Phase One/Kodak/Minolta/Sigma/Samsung/Ricoh print conversions expose bounded human-readable labels, including expanded Canon sub-IFDs and CanonCustom fields, Nikon sub-IFDs and NikonSettings fields, decoded Fujifilm `mk_fuji*`, Pentax sub-IFDs, Olympus main/focus/equipment fields, Casio Type2 fields, and Panasonic long-tail main-table fields. Ambiguous per-model, per-version, or value-type-dependent labels intentionally remain empty instead of guessing. | Medium-high, about 91-95%. | Remaining ExifTool-style firmware/version formulas, encrypted/custom settings, and per-model private tables. |
4242
| BMFF item graph, HEIF/AVIF/CR3, JUMBF, and C2PA | BMFF derived fields, brand-name fields, item-info rows, item type/semantic labels and semantic aggregate counters for common metadata carriers, bounded `ipma` item-property association rows, bounded relations, primary-linked roles, aux semantics, primary color/profile property summaries, primary pixel aspect ratio, primary pixel component bit depth, clean-aperture rationals, JUMBF box labels, and draft C2PA/JUMBF structural fields are exposed. | Medium, about 70-80%. | Full BMFF scene modeling and full C2PA manifest/policy semantics. |
4343
| Photoshop IRB | Raw resources are preserved and a bounded interpreted subset is decoded for fixed-layout resources, including Photoshop 2 info/color-table summaries, resolution/version/print data, print-flag bytes, border/background/effective-BW data, display info, grid/guide info, color sampler headers/records, descriptor-header summaries, path record summaries, alpha names/identifiers, captions, QuickMask info, URL/list data, autosave strings, `XMLData`, ImageReady XML text, thumbnail headers, channel options, clipping-path names, legacy halftone/transfer/duotone/EPS byte summaries, embedded ICC/XMP/EXIF resource byte counts, and embedded IPTC/XMP/ICC payload decode where enabled. | Medium, about 75-84%. | Broader resource-specific descriptor parsing and long-tail resource interpretation. |
44-
| Semantic query/search and records | Query helpers expose raw matches, confidence, provenance, value shapes, normalized candidates, canonical crop/active-area rectangles, Fujifilm RAF raw crop/zoom rectangles, Canon/Nikon/Sony crop and border patterns, border margins, exposure/gain roles, selected vendor/MakerNote exposure-name aliases, per-family grouped vendor records, descriptive EXIF/IPTC/XMP concepts, explicit color-profile records for EXIF/ICC/XMP/PNG profile carriers, explicit source-color-transform records for camera RAW profiles, looks, tone curves, and vendor source color tables, explicit computational/thermal/stitch source-processing records, expanded source color/style/lens/source-processing aliases, source-processing buckets, optional RapidFuzz near-miss matching, structured interpretation records, and bounded cross-family concept resolution for orientation, date/time, exposure/gain, color/profile, GPS, geometry, lens-correction, and RAW-processing with parsed date/time fields, timezone/precision classification, combined GPS timestamps, GPS altitude-reference state and display token, canonical geometry origin/size/rect/margins, normalized exposure values, shape-checked grouped value vectors, transfer hints, rendered/compatible safety booleans, and tolerance-aware GPS/exposure/color/geometry conflicts. | Medium-high, about 82-88%. | More long-tail per-model concept aliases and richer localized policy wording. |
45-
| Transfer-safety classification | Compatible-file versus rendered-image safety policies classify source-specific image geometry, color/profile, RAW-processing, MakerNote, JUMBF/C2PA, and vendor-private data, with concept-level diagnostics that report keep/drop/requires-target-image-spec actions, severity, and role-specific default message text before prepare. | High, about 89-93%. | More per-family policy tests and optional host localization hooks. |
44+
| Semantic query/search and records | Query helpers expose raw matches, confidence, provenance, value shapes, normalized candidates, canonical crop/active-area rectangles, Fujifilm RAF raw crop/zoom rectangles, Canon/Nikon/Sony crop and border patterns, border margins, exposure/gain roles, selected vendor/MakerNote exposure-name aliases, per-family grouped vendor records, descriptive EXIF/IPTC/XMP concepts, explicit color-profile records for EXIF/ICC/XMP/PNG profile carriers, explicit source-color-transform records for camera RAW profiles, looks, tone curves, and vendor source color tables, explicit `raw_value_curve`, `raw_linearity_limit`, `raw_calibration_curve`, and `raw_curve_control_points` records, explicit computational/thermal/stitch source-processing records, expanded source color/style/lens/source-processing aliases, source-processing buckets, optional RapidFuzz near-miss matching, structured interpretation records, and bounded cross-family concept resolution for orientation, date/time, exposure/gain, color/profile, GPS, geometry, lens-correction, and RAW-processing with parsed date/time fields, timezone/precision classification, combined GPS timestamps, GPS altitude-reference state and display token, canonical geometry origin/size/rect/margins, normalized exposure values, shape-checked grouped value vectors, transfer hints, rendered/compatible safety booleans, and tolerance-aware GPS/exposure/color/geometry conflicts. | Medium-high, about 83-89%. | More long-tail per-model concept aliases and richer localized policy wording. |
45+
| Transfer-safety classification | Compatible-file versus rendered-image safety policies classify source-specific image geometry, color/profile, RAW curves/linearity metadata, RAW-processing, MakerNote, JUMBF/C2PA, and vendor-private data, with concept-level diagnostics that report keep/drop/requires-target-image-spec actions, severity, and role-specific default message text before prepare. | High, about 90-94%. | More per-family policy tests and optional host localization hooks. |
4646

4747
## Competitor Position
4848

docs/quick_start.md

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,10 @@ exposure/gain, white balance, color/profile, lens correction, orientation, and
148148
RAW-processing metadata. Color-profile matches include EXIF color-space
149149
evidence, ICC header/tag entries, XMP ICC/profile/color-space fields, and PNG
150150
profile text carriers. Source-bound camera RAW profile, look, tone-curve, and
151-
style metadata is reported separately as `source_color_transform`, so hosts can
152-
inspect it without treating it as a portable ICC/profile value.
151+
style metadata is reported separately as `source_color_transform`, while RAW
152+
value curves, linearity limits, calibration curves, and curve control points
153+
use dedicated RAW-processing semantic roles. Hosts can inspect these values
154+
without treating them as portable rendered-image color or profile metadata.
153155
`query_descriptive_metadata(...)` also exposes a
154156
bounded EXIF/IPTC/XMP reconciliation view for common descriptive fields:
155157
title/headline, description/caption, creator/author, and keywords/subject.
@@ -164,7 +166,8 @@ tag/name hits.
164166
For vendor MakerNote/RAW fields, the query layer also builds conservative
165167
per-family grouped candidates for related white-balance,
166168
source-color-transform, raw-storage, sensor, computational, thermal,
167-
stitch/panorama, and source-processing records. These records are for
169+
stitch/panorama, source-processing, raw value curve, linearity-limit,
170+
calibration-curve, and curve-control-point records. These records are for
168171
inspection and safe-transfer policy, not for writing source RAW transforms into
169172
rendered outputs.
170173
Grouped color, white-balance, and lens-correction records require numeric
@@ -201,11 +204,13 @@ from source RAW/correction data and target-owned image facts.
201204
selected transfer safety mode and returns keep/drop/requires-target-image-spec
202205
actions, severity tokens, and default message text for transfer-preview UI.
203206
Rendered-transfer drop messages distinguish source color transforms, white
204-
balance, lens correction, source-bound RAW processing, and target-owned image
205-
properties. Source color transforms cover camera RAW profiles, looks, tone
207+
balance, lens correction, source RAW curves/linearity metadata, source-bound
208+
RAW processing, and target-owned image properties. Source color transforms
209+
cover camera RAW profiles, looks, tone
206210
curves, and vendor style/rendering tables that should not be treated as
207211
portable rendered-image color profiles. Source-bound RAW processing diagnostics
208-
also keep computational, thermal, and stitch/panorama roles separate for UI
212+
also keep RAW value curves, linearity limits, calibration curves, curve control
213+
points, computational, thermal, and stitch/panorama roles separate for UI
209214
policy messages. GPS altitude reference codes can be
210215
displayed with
211216
`metadata_concept_gps_altitude_reference_name(...)`.

0 commit comments

Comments
 (0)