Abstract
MetaVisualiser is a scalable software application to visualise the EXIF metadata across thousands of RAW images captured by professional photographers using full-frame and APS-C cameras in a graphical format. A RAW image’s metadata contains metrics such as focal length, shutter speed, aperture, ISO, camera and lens model. Across thousands of RAW images, the tool should compile, sort and organise the metadata into graphs and tables to display the most frequent settings used based on user selections. Furthermore, the metadata may contain GPS coordinates which should be pinpointed onto a map to create a mapview of where images were taken. Software performance is critical as there are no strict limits on the quantity of metadata but should be able to handle an input up to 10,000 RAW images at once.
Author
Name: Nathaniel Chan
Student Number: 46967259
Functionality
The purpose of the visualiser is to allow photographers to review their most commonly used settings at a glance without manually searching through their library which may consist of several thousand images, a time-consuming and tedious task. The visualiser should be able to run on any desktop operating system including Windows, MacOS and Linux.
The full functionality for this software tool is as follows:
Account
- When creating a new account, an email will be sent to their inbox for verification.
- Login requires an email address (username), password and a 4 digit pin for authentication.
- Select a default camera model (for prefill) so the application knows the expected file extension. If user has more than 1 camera, they can select a different model when selecting images.
- Records current subscription status, which includes plan and next recurring billing date.
Monthly/Yearly Subscription Plan
- Payments processed via Square/Stripe etc.
- Higher tier plans provide higher limits on quantity of images selected.
- 3 tiers for different needs:
- Basic:
Free
, 75 image limit
- Intermediate:
$
, 1000 image limit
- Advanced:
$$
, 10000 image limit
Selecting Images
- Either select photos inside a directory, a whole directory at once or an Adobe Lightroom Library.
Visualiser
- Display a default dashboard of graphs and tables such as most frequent focal lengths, shutter speeds, lenses used, etc. Dot plots, histograms, pie charts and line graphs would be most suitable for this application.
- The dashboard can be customised by inserting graphs for specific images. A list of filter options will appear.
- Any graph on the dashboard can be deleted and its state can be reset back to empty at the user’s discretion.
- A dashboard can be saved as a JSON file inside the application so it can be loaded in a different session.
- For images with GPS coordinates, its location should be labelled on a map. When clicked, it will show the image’s filename, the coordinates of the location and the date it was taken.
- Any graph should be able to export into
PNG
, JPG
, PDF
, TIFF
formats and CSV
for tables.
Scope
The MVP for this software tool is as follows:
Account
- When creating a new account, an email will be sent to their inbox for verification.
- Login requires an email address (username) and password for authentication.
- Select a default camera model (for prefill) so the application knows the expected file extension. If user has more than 1 camera, they can select a different model when selecting images.
Selecting Images
- Either select photos inside a directory or a whole directory at once.
- For the MVP, handling a limit of 1,000 RAW images is acceptable. This would be the limit of the ‘Intermediate’ tier.
Visualiser
- Display a default dashboard of graphs and tables such as most frequent focal lengths, shutter speeds, lenses used, etc. Dot plots, histograms, pie charts and line graphs would be most suitable for this application.
- The dashboard can be customised by inserting graphs for specific images. A list of filter options will appear.
- Any graph on the dashboard can be deleted and its state can be reset to empty at the user’s discretion.
- A dashboard can be saved as a JSON file inside the application so it can be loaded in a different session.
- Any graph should be able to export into
PNG
, JPG
, PDF
and TIFF
formats.
Quality Attributes
The key quality attributes for this software project are ‘Extensibility’, ‘Reliability’, ‘Scalability’ and ‘Security’ and the following discusses about why they’re important to the project’s success.
Extensibility
- As new camera bodies are released, their RAW files may compile an image’s data slightly differently relative to their predecessors so the software implementation must take future compatibility into consideration.
- New chart types or other metrics such as a visual representation of the most frequent exposure triangle setting.
Reliability
- Photographers need to deliver their work on tight deadlines for clients. Major software glitches and faults can cause slower workflows leading to missed deadlines and disappointed clients. Over the long-term, this would likely cause frustration for users.
Security
- To prevent malicious images from obtaining confidential data with destructive intent, only the image’s header should be read rather than the whole image. The EXIF metadata is typically located in an image’s header. The image header should be well-formed and checked by stripping erroneous HTML and script-like inputs.
- If a file extension does not match a valid extension for RAW images, the file should be rejected immediately as the it could be corrupted or maliciously designed to exploit the tool.
- In most real-world scenarios, an uncompressed RAW image’s file size should not exceed 150MB while maintaining compatibility for ultra-high resolution sensors (>60 MP) on some full-frame cameras.
- The maximum limit of 10,000 RAW images prevents a denial of service attack but for the purposes of this project, a 1,000 limit is sufficient.
Evaluation
On top of the finished MVP, the application itself must run smoothly on a commonly used operating system when handling large quantities of data. The achievement of quality attributes is determined by the following:
Extensibility
- Extensibility will be tested by adding new chart types and metadata fields beyond the initial implementation. The ease of integrating additional features, such as new visualization types or camera model support, will be measured based on any code modifications. A modular design with well-documented code should provide minimal refactoring when extending functionality.
Reliability
- Reliability will be tested by processing a large dataset of RAW images up to the project limit with well-formed (non-corrupted, non-malicious) metadata. It should consistently error check, extract and visualize metadata without crashes, data corruption, or incorrect outputs in a time efficient manner. Stress testing will be performed by handling a large dataset while tracking system performance and memory usage.
Security
- Security will be evaluated by testing against malicious and corrupted RAW files. Common file validation techniques (checking file signatures and file extensions) will be tested. Additionally, potential vulnerabilities, such as path traversal or code injection via the image’s data, will be assessed using security-focused tests.