Skip to content

Conversation

@caglarpir
Copy link
Contributor

Summary

This change adds camera serial number extraction from EXIF/XMP metadata and uses it for sequence building. Previously, images were grouped into sequences only by directory, device make/model, and dimensions. This could incorrectly group images from different physical cameras of the same model into the same sequence.

With this change, images from different camera bodies (identified by their unique serial numbers) are now correctly split into separate sequences, even if they have the same make/model.

Changes

  • Added extract_camera_uuid() method to ExifReadFromXMP, ExifReadFromEXIF, and ExifToolReadVideo classes
  • Extracts body serial and lens serial from various EXIF/XMP tags, creating a composite ID when both are present
  • Added MAPCameraUUID field to VideoMetadata type and propagated through the pipeline
  • Added MAPCameraUUID to sequence grouping criteria in process_sequence_properties.py
  • Updated JSON serialization to include the new field

Test Plan

Added comprehensive unit tests covering:

  • EXIF body/lens serial extraction with priority ordering
  • XMP serial extraction from various namespace tags (exif, exifEX, aux)
  • Video metadata serial extraction (GoPro, Insta360, ExifIFD)
  • Sequence grouping by camera UUID (verifying images with different camera UUIDs are split into separate sequences)

All existing tests pass.

@meta-cla meta-cla bot added the cla signed label Jan 28, 2026
@caglarpir caglarpir force-pushed the camera-serial-sequence branch 2 times, most recently from 12d3703 to bdd17d6 Compare January 28, 2026 16:12
@caglarpir caglarpir requested a review from ptpt January 28, 2026 16:18
Summary:
This change adds camera serial number extraction from EXIF/XMP metadata and uses it for sequence building. Previously, images were grouped into sequences only by directory, device make/model, and dimensions. This could incorrectly group images from different physical cameras of the same model into the same sequence.

With this change, images from different camera bodies (identified by their unique serial numbers) are now correctly split into separate sequences, even if they have the same make/model.

**Changes:**
- Added `extract_camera_uuid()` method to `ExifReadFromXMP`, `ExifReadFromEXIF`, and `ExifToolReadVideo` classes
- Extracts body serial and lens serial from various EXIF/XMP tags, creating a composite ID when both are present
- Added `MAPCameraUUID` field to `VideoMetadata` type and propagated through the pipeline
- Added `MAPCameraUUID` to sequence grouping criteria in `process_sequence_properties.py`
- Updated JSON serialization to include the new field

Test Plan:
Added comprehensive unit tests covering:
- EXIF body/lens serial extraction with priority ordering
- XMP serial extraction from various namespace tags (exif, exifEX, aux)
- Video metadata serial extraction (GoPro, Insta360, ExifIFD)
- Sequence grouping by camera UUID (verifying images with different camera UUIDs are split into separate sequences)

All existing tests pass.
@caglarpir caglarpir force-pushed the camera-serial-sequence branch from bdd17d6 to 55953ab Compare January 29, 2026 11:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants