Working Draft - Proposals for New Standards
Transcription
Working Draft - Proposals for New Standards
© ISO 2008 – All rights reserved ISO/TECHNICAL COMMITTEE 42 — PHOTOGRAPHY Address Reply to: Secretariat ISO/TC42 International Imaging Industry Association (I3A) 701 Westchester Avenue, Suite 317W White Plains, NY 10604 USA Phone: +1 914-285-4933 FAX: +1 914-285-4937 Email: [email protected] Date: 2010-11-29 Editors Note: This is working draft text in support of the NWI ballot. As such, it is intended to provide guidance on what the committee invisions during development of the standard. Editors notes throughout the text are both requests for comments and indicate specific areas open for contribution as indicated by the editor: Dr. Scott Foshee, [email protected] ISO/WD 12234-2 ISO TC 42/WG 18 Working Draft for the Second Edition NWI Secretariat: ANSI (I3A) Electronic still picture imaging — Removable memory — Part 2: TIFF/EP image data format Imagerie des prises de vue électroniques — Mémoire mobile — Partie 2: Format de donées image TIFF/EP Warning This document is not an ISO International Standard. It is distributed for review and comment. It is subject to change without notice and may not be referred to as an International Standard. Document type: International Standard Document subtype: Document stage: (20) Preparatory Document language: E BOOTCAMP:Documents and Settings:admin:Desktop:ISO_12234-2_(E)_WD for NWI---10-11-29.doc STD Version 2.1c2 Recipients of this draft are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation. ISO/WD 12234-2 Copyright notice This ISO document is a working draft or committee draft and is copyright-protected by ISO. While the reproduction of working drafts or committee drafts in any form for use by participants in the ISO standards development process is permitted without prior permission from ISO, neither this document nor any extract from it may be reproduced, stored or transmitted in any form for any other purpose without prior written permission from ISO. Requests for permission to reproduce this document for the purpose of selling it should be addressed as shown below or to ISO's member body in the country of the requester: Secretariat ISO/TC42 International Imaging Industry Association (I3A) 701 Westchester Avenue, Suite 317W White Plains, NY 10604 USA Phone: +1 914-285-4933 FAX: +1 914-285-4937 Email: [email protected] Reproduction for sales purposes may be subject to royalty payments or a licensing agreement. Violators may be prosecuted. © ISO 2008 – All rights reserved iii ISO/WD 12234-2 Contents Page Foreword .......................................................................................................................................................... vii Introduction..................................................................................................................................................... viii 1 Scope..................................................................................................................................................... 1 2 Normative references........................................................................................................................... 1 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 Terms and definitions .......................................................................................................................... 2 big-endian byte order network byte order ......................................................................................... 2 byte offset ............................................................................................................................................. 2 byte order .............................................................................................................................................. 2 descriptive metadata............................................................................................................................ 2 field length ............................................................................................................................................ 2 file .......................................................................................................................................................... 2 file system ............................................................................................................................................. 2 first IFD .................................................................................................................................................. 2 fully referred.......................................................................................................................................... 2 IFD entry ................................................................................................................................................ 3 image data format................................................................................................................................. 3 Image File Directory IFD ...................................................................................................................... 3 image length ......................................................................................................................................... 3 image orientation.................................................................................................................................. 3 image width........................................................................................................................................... 3 linear reference space.......................................................................................................................... 3 little-endian byte order......................................................................................................................... 3 opcode................................................................................................................................................... 3 raw ......................................................................................................................................................... 3 reader..................................................................................................................................................... 3 reference camera model ...................................................................................................................... 3 segment................................................................................................................................................. 4 structural metadata .............................................................................................................................. 4 tag .......................................................................................................................................................... 4 TIFF field................................................................................................................................................ 4 TIFF/EP ….............................................................................................................................................. 4 TIFF/EP file ............................................................................................................................................ 4 top-level IFD IFD 0 ................................................................................................................................ 4 tuple < … > ............................................................................................................................................ 4 ValueOffset field ................................................................................................................................... 4 working colour space........................................................................................................................... 4 writer...................................................................................................................................................... 5 X dimension .......................................................................................................................................... 5 .H h......................................................................................................................................................... 5 Y dimension .......................................................................................................................................... 5 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 Introduction to the TIFF/EP Architecture (Informative) ................................................................. 5 TIFF/EP Processing model (Informative) .......................................................................................... 5 TIFF/EP Reader and Writer requirements (Informative)................................................................... 5 TIFF/EP Processing workflow (Informative) ..................................................................................... 5 Private TIFF and TIFF/EP tags (Informative) ..................................................................................... 6 TIFF/EP Profile Classes (Informative)................................................................................................. 6 Alternative images (Informative)......................................................................................................... 9 TIFF/EP tags for image data (Informative) ...................................................................................... 10 Thumbnail images (Informative) ....................................................................................................... 12 Colour encoding information (Informative) ..................................................................................... 12 iv © ISO 2008 – All rights reserved ISO/WD 12234-2 4.10 4.11 4.12 Image data compression (Informative) ............................................................................................ 13 Descriptive Metadata (Informative)................................................................................................... 15 Opcode processing instructions (Informative) ............................................................................... 17 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 The TIFF/EP File Structure ................................................................................................................ 17 General ................................................................................................................................................ 17 The TIFF/EP File Extension ............................................................................................................... 17 The TIFF/EP File Format .................................................................................................................... 17 The TIFF/EP Image File Header......................................................................................................... 17 The Image File Directory Structure................................................................................................... 18 The Image File Directory Entry ......................................................................................................... 19 The Data Types................................................................................................................................... 20 6 6.1 6.2 Image Storage..................................................................................................................................... 22 Supported image types...................................................................................................................... 22 Image Compression ........................................................................................................................... 22 7 7.1 7.2 7.3 7.4 Processing Architecture.................................................................................................................... 23 Processing model .............................................................................................................................. 23 Workflows ........................................................................................................................................... 23 TIFF/EP profiles .................................................................................................................................. 23 Reader / writer requirements............................................................................................................. 23 8 8.1 8.2 8.3 Tag usage............................................................................................................................................ 24 General ................................................................................................................................................ 24 Image File Directories ........................................................................................................................ 24 Metadata File Directories................................................................................................................... 27 9 9.1 9.2 TIFF/EP tag and opcode definitions ................................................................................................. 27 Tag Definitions ................................................................................................................................... 27 Opcode Instructions ........................................................................................................................ 101 Annex A (informative) TIFF/EP Colour Management Overview................................................................. 118 A.1 Colour management modes ............................................................................................................ 118 A.2 sRGB colour management mode.................................................................................................... 118 A.3 ICC colour management mode ....................................................................................................... 118 A.4 DNG colour management mode...................................................................................................... 119 A.5 DNG+ICC colour management mode ............................................................................................. 119 Annex B (informative) DNG Colour Processing Guidelines ...................................................................... 120 B.1 Introduction ...................................................................................................................................... 120 Annex C (informative) Lossy Compression of Raw Image Data ............................................................... 125 C.1 Overview of Encoding and Decoding DSC Raw Data ................................................................... 125 C.2 Encoding/Decoding Model – Structure and Configurations ........................................................ 126 C.3 Recommendations for the Usage and Choice of Parameters...................................................... 127 C.3.1 JPEG Compression.......................................................................................................................... 127 C.3.2 Compression LUT ............................................................................................................................ 128 C.3.3 Correlation Matrix............................................................................................................................. 128 C.3.4 Configuration 1................................................................................................................................. 128 C.3.5 Configuration 2................................................................................................................................. 129 C.4 Compression Data Structure for TIFF/EP ...................................................................................... 130 Annex D (informative) TIFF/EP Workflow Example .................................................................................... 131 Annex E (normative) Mapping Raw Values to Linear Reference Values.................................................. 132 E.1 Linearization ..................................................................................................................................... 132 E.2 Black Subtraction............................................................................................................................. 132 E.3 Rescaling .......................................................................................................................................... 132 E.4 Clipping ............................................................................................................................................. 132 Annex F (normative) Mapping Camera Color Space to CIE XYZ Space ................................................... 133 F.1 Camera Calibration Matrices........................................................................................................... 133 F.2 One or Two Colour Calibrations ..................................................................................................... 133 F.3 Definitions used in the following sections .................................................................................... 133 © ISO 2008 – All rights reserved v ISO/WD 12234-2 F.4 F.5 F.6 F.7 F.8 F.9 Translating White Balance xy Coordinates to Camera Neutral Coordinates.............................. 134 Translating Camera Neutral Coordinates to White Balance xy Coordinates.............................. 134 Camera to XYZ (D50) Transform ..................................................................................................... 134 If the ForwardMatrix tags are not included in the camera profile................................................ 134 If the ForwardMatrix tags are included in the camera profile ...................................................... 135 Applying the Hue/Saturation/Value Mapping Table ...................................................................... 135 Annex G (informative) TIFF EP tag use examples ...................................................................................... 137 Annex H (informative) TIFF EP Versus TIFF 6.0 and DNG 1.3.................................................................... 138 Annex I (informative) TIFF/EP tag lists....................................................................................................... 140 Bibliography................................................................................................................................................... 148 vi © ISO 2008 – All rights reserved ISO/WD 12234-2 Foreword ISO (the International Organization for Standardization) is a worldwide federation of national standards bodies (ISO member bodies). The work of preparing International Standards is normally carried out through ISO technical committees. Each member body interested in a subject for which a technical committee has been established has the right to be represented on that committee. International organizations, governmental and non-governmental, in liaison with ISO, also take part in the work. ISO collaborates closely with the International Electrotechnical Commission (IEC) on all matters of electrotechnical standardization. International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2. The main task of technical committees is to prepare International Standards. Draft International Standards adopted by the technical committees are circulated to the member bodies for voting. Publication as an International Standard requires approval by at least 75 % of the member bodies casting a vote. Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO shall not be held responsible for identifying any or all such patent rights. ISO 12234-2 was prepared by Technical Committee ISO/TC 42, Photography. This second edition cancels and replaces the first edition (ISO 12234-2:2001), which has been technically revised. ISO 12234 consists of the following parts, under the general title Electronic still-picture imaging — Removable memory : ⎯ Part 1: Basic removable-memory module ⎯ Part 2: TIFF/EP image data format © ISO 2008 – All rights reserved vii ISO/WD 12234-2 Introduction The TIFF/EP image data format is a comprehensive, flexible file format that provides the capability to store raw or fully processed (rendered) images with the option of embedding additional images or processing instructions (opcodes) that can be applied later. The purpose of this second edition is to improve interoperability of TIFF/EP files by introducing interoperability profiles for extended colour encodings and camera raw files. This is accomplished by incorporating directly rather than by reference the underlying TIFF specification, copyright 1992 Adobe Systems Incorporated (Adobe), by specifying the interoperability profile reader and writer requirements, by incorporating the Adobe DNG version 1.3 tags, and by defining several new tags unique to this standard. In addition, the metadata tag definitions from earlier versions, DNG, and TIFF have been enhanced to include more information on the content of these tags, and to enable metadata to be stored using a well-defined XML schema. Finally, compatibility with EXIF 2.3 metadata has been enhanced This second edition defines a specific profile for “raw” files which compliant with DNG. This "raw profile" specifies the processing that should be performed by the “raw” reader, using the image data and the metadata in the file. This second edition also defines a specific profile for supporting extended colour encodings including camera RGB and scene-referred colour encodings, using ICC profiles. Other changes include improvements to the figures and to the organization of the tag definitions, in order to enable more consistent implementations. Raw image files have become increasingly important as a method of providing a greater degree of flexibility and artistic control. Unlike ISO 12234-1, which captures images that have been fully processed by the camera, TIFF/EP can capture unprocessed or minimally processed image data. One advantage of this data is the potential of more robust artistic control beyond what is possible in a camera. One disadvantage is that this data requires processing before use. The ability to store both unprocessed and processed data in a single TIFF/EP file is meant to address this. While there are many different single vendor solutions to the raw format requirement, TIFF/EP Version 2 incorporates the many TIFF-based Adobe DNG format tags in order to enhance the raw capabilities of TIFF/EP. DNG was developed to satisfy the customer requirement of a cross vendor raw format capable of sustained support across multiple generations of camera hardware providing an archival capability unavailable elsewhere. The term TIFF/EP refers to Tag Image File Format/Electronic Photography, defined in this part of ISO 12234. The term “TIFF 6.0” refers to the TIFF Revision 6.0 specification. <Editors note: still true? Or TIFF 6 + notes> Wherever possible, TIFF/EP uses tags already defined in TIFF 6.0 and provides guidelines for the use of these tags as well as the allowed field values. Additional tags are defined to encode image data features that are not included in TIFF 6.0. These new tags conform to the practices specified in TIFF 6.0. In this second edition these tags have been chosen to be as compatible as possible with the Exif tags defined in “Digital Still Camera Image File Format Standard (Exchangeable image file format for Digital Still Cameras: Exif)”, Version 2.3 by the Japanese Camera Image Products Assciation (CIPA). The TIFF/EP tag-fields containing enumerated values follow the TIFF 6.0 convention, where the lower half of the values (0 to 127 for byte values, 0 to 32,767 for short values, and 0 to 2,147,483,647 for long values) are reserved by TIFF/EP and the upper half of the values (128 to 255 for byte values, 32,768 to 65,535 for short values, and 2,147,483,648 to 4,294,967,296 for long values) are private values that may be registered through the designated registration authority. <Editors note: need WG18 definition and call for reg auth> I3A contact information viii © ISO 2008 – All rights reserved ISO/WD 12234-2 International Imaging Industry Association (I3A) 701 Westchester Avenue, Suite 317W White Plains, NY 10604 USA Phone: +1 914-285-4933 FAX: +1 914-285-4937 Email: [email protected] This International Standard also describes how related images, such as both “parent” high resolution and “thumbnail” low resolution images of the same subject, or temporal sequence “bursts” of the same scene, or both “RAW” and fully rendered images can be stored in a single TIFF/EP file. The method for storing the "thumbnail image" has been changed from the first edition, in order to match the method used in the Exifuncompressed image file format. TIFF/EP currently does not define how to embed audio information within a TIFF/EP image file. This does not preclude a future release of TIFF/EP from implementing embedded audio as part of the TIFF/EP file. The International Organization for Standardization (ISO) draws attention to the fact that it is claimed that compliance with this International Standard may involve the use of patents from the following companies: ⎯ Canon Incorporated ⎯ Eastman Kodak Company ⎯ Fuji Photo Film Company Ltd. ⎯ Nikon Corporation ⎯ Olympus Optical Company Ltd. <Editor's Note: Contact information to be added> The holders of these patent rights have assured ISO that they are willing to negotiate licenses under reasonable and non-discriminatory terms and conditions throughout the world. In this respect, the statement of the holder of this patent right is registered with ISO. Information may be obtained from the companies listed. Other companies have also determined that, upon approval of this International Standard, they too will grant patent licenses in accordance with ISO Directives, Part 2. Information regarding these companies may also be obtained from the ISO Central Secretariat ISO takes no position concerning the evidence, validity and scope of any of the patent rights listed. © ISO 2008 – All rights reserved ix WORKING DRAFT ISO/WD 12234-2 Electronic still picture imaging — Removable memory — Part 2: TIFF/EP image data format 1 Scope This part of ISO 12234 specifies the TIFF/EP image data format. The TIFF/EP format allows for the storage of image data along with associated metadata that supports the post capture processing of the image data. A TIFF/EP file shall meet the requirements provided in this specification. 2 Normative references The following referenced documents are indispensable for the application of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies. ISO 12232, Photography — Electronic still-picture cameras — Determination of ISO speed ISO 12233, Photography — Electronic still-picture cameras — Resolution measurements ISO 12234-1, Electronic still-picture imaging — Removable memory — Part 1: Basic removable-memory module ISO 14524, Photography — Electronic still-picture cameras — Methods for measuring opto-electronic conversion functions (OECFs) ISO 15076-1, Image technology colour management – Architecture, profile format and data structure – Part 1: Based on ICC 1:2004-10. ISO 15739 Photography — Electronic still picture imaging — Noise measurements. ISO/TS 22028-3 Photography and graphic technology -- Extended colour encodings for digital image storage, manipulation and interchange -- Part 3: Reference input medium metric RGB colour image encoding (RIMM RGB) IEC 61966-2-1, Multimedia systems and equipment - Colour measurement and management - Part 2-1: Colour management - Default RGB colour space -sRGB IEC 61966-2-2, Multimedia systems and equipment - Colour measurement and management - Part 2-2: Colour management - Extended RGB colour space ISO/IEC 10918-1, Information technology — Digital compression and coding of continuous-tone still images: Requirements and guidelines ISO/IEC 14495-1, Information technology — Lossless and near-lossless compression of continuous-tone still images: Baseline ITU-R BT.709-4, Parameter values for the HDTV standards for production and international programme exchange © ISO 2008 – All rights reserved 1 ISO/WD 12234-2 ASTM E1708 - 95 Standard Practice for Electronic Interchange of Color and Appearance Data MIL-STD-2500A – National Imagery Transmission Format Standard (NITFS). 3 Terms and definitions For the purposes of this part of ISO 12234, the following terms and definitions apply. <Editor's Note: Add new definitions so that the terms used in this standard are defined before the reader encounters them in subsequent sections of this Standard. Also add any new DNG related terms.> <Editing note: This list can be sorted: Sort in outline mode with only headers showing> 3.1 big-endian byte order network byte order byte order from the most significant byte to the least significant byte 3.2 byte offset position of a byte with respect to the beginning of the file, encoded as a 32-bit integer, such that the first byte of the file has offset 0 3.3 byte order ordering of bytes for multi-byte data primitives within a file, such as 2-byte and 4-byte integers, or 4-byte and 8-byte floats 3.4 descriptive metadata metadata not required for the expected display of the image 3.5 field length number of bytes in the field 3.6 file sequence of 8-bit bytes 3.7 file system structure by which data is logically organized in files on the storage medium 3.8 first IFD first of the 3.9 fully referred <Editors note: TBD> 2 © ISO 2008 – All rights reserved ISO/WD 12234-2 3.10 IFD entry IFD table row storing a TIFF field 3.11 image data format structure of image data and its metadata within a single file 3.12 Image File Directory IFD table with IFD entries containing values, pointers to values, or links to other IFDs NOTE: Not all IFDs contain images. The term IFD is also used for IFDs without images such as GPS. 3.13 image length image's extension in the Y dimension, in number of pixel rows 3.14 image orientation relationship between the presentation system's horizontal and vertical axes and the image's X and Y dimensions 3.15 image width image's extension in the X dimension, in number of pixel columns 3.16 linear reference space <Editors note: TBD> 3.17 little-endian byte order byte order from the least significant byte to the most significant byte 3.18 opcode image processing instruction to be executed on reading 3.19 raw <Editors note: TBD> 3.20 reader device that consumes files compliant with this standard 3.21 reference camera model <Editors note: TBD> © ISO 2008 – All rights reserved 3 ISO/WD 12234-2 3.22 segment strip or tile 3.23 structural metadata metadata required for the expected display of the image 3.24 tag <Editors note: TBD, integer number identifying the TIFF field> 3.25 TIFF field logical entity consisting of a TIFF tag and its value, where this logical concept is implemented as an IFD entry, plus the actual value if it doesn’t fit into the last 4 bytes of the IFD entry NOTE: The terms TIFF field and IFD entry are interchangeable in most contexts. 3.26 TIFF/EP … (when used as adjective) … compliant with this standard 3.27 TIFF/EP file file compliant with this standard 3.28 top-level IFD IFD 0 IFD at the byte offset specified in the Link field in the image file header 3.29 tuple <…> ordered list of data elements 3.30 ValueOffset field IFD entry field containing a byte offset or a tag value 3.31 working colour space colour space encoding in which manual edits or image enhancement processing is performed NOTE 1 Manual edits in a working colour space are performed viewing the effect of the edits on some medium which becomes the reference medium for the editing process. Typically, the black and white points of this medium are encoded at the minimum and maximum working colour space values. In this case, in order to obtain accurate colorimetric values, the black and white scaling corresponding to the reference medium used must be undone. XYZ scaling is typically recommended (see ISO 22028-2). NOTE 2 When a colour space encoding used for a standard colour image encoding is also used as a working space, it may still be necessary to perform a colour re-rendering of the values associated with the (potentially variable) working colour space reference medium to make them appropriate for the colour image encoding reference medium, and for open exchange. For example, When the sRGB colour space encoding specified in IEC 61966-2-1 is used as a working colour space for the editing of motion picture content, viewing it in a dark theatrical environment, the resulting images will be encoded in the sRGB colour 4 © ISO 2008 – All rights reserved ISO/WD 12234-2 space encoding but not in the sRGB colour image encoding. Consequently they will not produce good results if exchanged and interpreted according to the sRGB colour image encoding standard. NOTE 3 Image enhancement processing may involve the application of algorithms in different working spaces as different operations and algorithms may be optimized for particular working spaces. 3.32 writer device that produces files compliant with this standard 3.33 X dimension horizontal dimension when the image is in Orientation = 0 3.34 .H h in hexadecimal notation 3.35 Y dimension vertical dimension when the image is in Orientation = 0 4 Introduction to the TIFF/EP Architecture (Informative) <Editors Note: This entire section can now be moved to an annex. It's now 100% informative. All requirements have been placed elsewhere. <Editors Note: How much of this should be informative? 100%. It's very hard for a user to find requirements in a section where 95% is informative. Thus, make sure all requirements are stated elsewhere, not surrounded by massive informative sections. > 4.1 TIFF/EP Processing model (Informative) <Editors note: The text here moved to the intro. Add simple figure later.> 4.2 TIFF/EP Reader and Writer requirements (Informative) <Editors note:This seems to be the wrong place for this info. Move to end of section? For each Profile, there is a set of required reader and writer tags. The writer requirements provide any reader with a set of guaranteed tags that will be present when they read the file. This allows reader applications to exhibit a minimal set of functionality. The reader requirements provide writers with knowledge what tags they can be assured that a reader will understand. This allows a writer to create TIFF/EP files with tags that are known to be interpreted at read time. These characteristics are specified in the tag tables in Annex I and the tag definitions in Section 9.1 4.3 TIFF/EP Processing workflow (Informative) While the processing workflow described below is not a required workflow, it is the workflow that was assumed in the writing of this specification. Profiles 1 and 2 are only specified at certain points in this workflow. While the workflow helps define these points in the workflow, there can be alternative methods to get from one defined profile point to another defined profile point. © ISO 2008 – All rights reserved 5 ISO/WD 12234-2 Scene <Editors note: Make this figure better> scene monitor monitor cam | raw referred | | ref printer output | | | => | => | => | => | cam | cam | colour | | capture | compen | rend | | | | | | => | => | opcode | colour | colour | | applied | re-rend | re-rend | | | | | <Editors note: add opcodes processing locations> <Editors note: For an individual file, do we need to flag the state of an image in the workflow > In the above processing workflow, the image can be in one of 7 possible states, the middle 5 being electronic. Profile 1 can describe image date at states 3, 4, and 5. Profile 2 can describe the image data at states 2, and 3. 4.4 Private TIFF and TIFF/EP tags (Informative) <Editors note: confirm that I3A has issued vendor unique tags. Potentially delete I3A option.> A camera manufacturer can store additional information in the form of private tags. Private tags compliant with the Adobe TIFF specification can be included in TIFF/EP files. For private tags, unique tag numbers are obtained from the Adobe Developers Desk (TIFF private) or vendor unique tags from I3A 1) (TIFF/EP private). <Editors Note: Change I3A to IST??> When storing additional vendor unique information within TIFF/EP files, care is needed not to violate the TIFF/EP guidelines described in this part of ISO 12234. Illegal tag numbers or non-compliant tags can results in noncompliant TIFF/EP files. 4.5 TIFF/EP Profile Classes (Informative) √<Editors note: Check for conflicts with Compression section. Likely put all compression in that section.>DONE 4.5.1 √<Editors note: Check for conflict with Color section. Likely put all color items in that section.>Done TIFF/EP Image Profile model (Informative) Two different image profiles, Profile 1 and Profile 2, can be used in a TIFF/EP file. The profile of an image is determined from the image's PhotometricInterpretation value. When PhotometricInterpretation is 1, 2, or 6 (Gray, RGB, and YCbCr, respectively) the image is a profile 1 image. When PhotometricInterpretation is 32803 (CFA) or 34892 (Raw) the image is a profile 2 image. Profile 1 images are intended to be backward compatible with TIFF/EP Version 1 files and ditto writers and readers. 1) 6 See contact information in Introduction © ISO 2008 – All rights reserved ISO/WD 12234-2 Profile 1 image is distinct from the concept of a thumbnail image introduced in TIFF/EP version 1. The thumbnail image has a distinct use for rapidly acquiring a visual concept of what the TIFF/EP file contains. Profile 2 is intended for storing raw images in a TIFF/EP file. The profile of the file is the same as the profile of the main image (the image with NewSubFileType = 0). Opcodes are optional for both profiles. 4.5.2 Profile 1 Profile 1 stores processed (rendered) image data. Profile 1 files have a ".TIF" file extension. Profile 1 supports 8, 10, 12, 14, or 16 bits per sample. Profile 1 supports compressed image data using baseline JPEG as specified in ISO/IEC 10918-1 (8 bits per sample) or JPEG-LS as specified in ISO/IEC 14495-1 (more than 8 bits per sample). Profile 1 files can use subIFD trees. The highest quality image uses NewSubFileType = 0, while rendered, reduced resolution or thumbnail images use NewSubFileType = 1 or 1001.H. An example of a Profile 1 file, using image data stored in strips, is shown in figure 2. <Editor's Note: Support for a 32 bit floating point representation is under consideration> © ISO 2008 – All rights reserved 7 ISO/WD 12234-2 4.5.3 Profile 2 Profile 2 stores "raw" image data. Profile 2 is not fully compatible with the Adobe DNG format, the TBD format, or the TBD format. Profile 2 uses a "DNG" file extension. Profile 2 supports 8, 10, 12, 14, or 16 bits per sample. Profile 2 supports compressed image data using JPEG-LS as specified in ISO/IEC 14495-1. Profile 2 files can use subIFD trees. The highest quality image uses NewSubFileType = 0, while rendered, reduced resolution or thumbnail images use NewSubFileType = 1 or 1001.H. An example of a Profile 2 file is shown in figure 3. 8 © ISO 2008 – All rights reserved ISO/WD 12234-2 4.6 Alternative images (Informative) A file can contain more than one image (and a thumbnail). The additional images are called alternative images. The images can use the same or different profiles. For example, one image can be a fully rendered image (Profile 1) and another image with raw image data (Profile 2) can be the raw image used to create the fully rendered image. Either image can be a main image, and the other image becomes an alternative image. An alternative image can be for example: - A lower resolution version of the main image with the same or alternative rendering - A preview at full or reduced resolution with the same or alternative rendering - A raw image, for example, the raw image used to create the main image. Alternative images have a value of NewSubFileType = 1001.H. Alternative rendering can be indicated in one of two ways: © ISO 2008 – All rights reserved 9 ISO/WD 12234-2 1. An ICC profile tag can also be stored with the alternative image. In this case, the image is intended to be displayed with this ICC profile. This enables ICC based applications to store and edit alternative renderings of the image. 2. In the tags PreviewApplicationName, PreviewApplicationVersion, PreviewSettingsName and PreviewSettingsDigest. The PreviewSettingsName tag refers to a named setting stored in the XMP packet in IFD0. This enables proprietary applications to store and edit alternative renderings of the image By default a reader uses the main image since this is the assumed intent of the file at creation time. Alternative images are displayed only when requested by the user. 4.7 4.7.1 TIFF/EP tags for image data (Informative) General image data tags (Informative) <Editors note: Confirm Part 2 profile flag. Right now, only reference is extension. Need data flag. We have it = PhotometricInterpretation> The general image data tags are used by Profiles 1 and 2. Image data, sometimes referred to as structural metadata, includes everything necessary to display the image. The image width in the X dimension, or the horizontal dimension when the image is normally oriented, is specified in the ImageWidth tag. The image width can be the shorter or longer dimension of the image. The image length, i.e. vertical or Y dimension, is specified in the ImageLength tag. The image orientation is defined by the Orientation tag. The desired image output rendering resolution in the X-dimension is specified in the XResolution tag, while the output resolution in the Y-dimension is specified in the YResolution tag. The ResolutionUnits tag gives the units for the XResolution and YResolution values. The pixel aspect ratio (ratio of the pixel width to pixel height) is determined by the ratio of the XResolution and YResolution values. The preferred pixel aspect ratio is 1:1 (square), so that XResolution equals YResolution. These tags are typically used to determine the default size of the image on the screen. They do not indicate the sample spacing of the image sensor in an electronic still-picture camera. The latter is specified in the FocalPlaneXResolution, FocalPlaneYResolution and FocalPlaneResolutionUnits tags. The number of colour components or samples per pixel in the image is specified in the SamplesPerPixel tag. For example, an image captured using a monochrome sensor has only one colour component or sample per pixel, while a 3-sensor colour RGB camera has three colour components or samples per pixel. The number of bits needed to store each of the colour components (samples) is specified in the BitsPerSample tag. In the case of a monochrome image, the BitsPerSample tag contains only one value, equal to the actual number of bits per pixel. In the case of an RGB image having three colour samples per pixel, the BitsPerSample tag contains three values equal to the actual number of bits of storage used to store each component or sample. The type of image data components is specified in the PhotometricInterpretation tag. All readers can handle greyscale, RGB and YCbCr data. When YCbCr data values are specified, the number of Cb and Cr values is either equal to the number of Y values or smaller owing to subsampling. The chrominance subsampling factors of a YCbCr image are specified in the YCbCrSubSampling tag. This tag contains both the horizontal and vertical subsampling factors, which are labelled YCbCrSubSamplingHoriz and YCbCrSubSamplingVert respectively. The subsampling factors are given relative to the appropriate dimension of the corresponding luminance image. The positions of the subsampled chrominance components relative to the luminance samples are specified in the YCbCrPositioning tag. The headroom/footroom image data values (codes) for each pixel component associated with a YCbCr image is specified in the ReferenceBlackWhite tag. The pair of headroom/footroom values (codes) associated with the luminance component (Y) refers to this component’s ReferenceWhite and ReferenceBlack. The pair of headroom/footroom values (codes) associated with the chrominance components, Cb and Cr, refer to these components' ReferenceBlack and ReferenceWhite, where here the ReferenceWhite value is used to code reference blue and reference red respectively. The coefficients used in the transformation from RGB to YCbCr image data are specified in the YCbCrCoefficients tag. The conversion from RGB to YCbCr is for improving compression; the YCbCrCoefficients have no relation to the RGB colour encoding used. 10 © ISO 2008 – All rights reserved ISO/WD 12234-2 <Editors note: Is this for thumbnails or for image data or both> BOTH The image data is stored using either strips or tiles, which are collectively termed segments. The “strip” mechanism is very useful in accessing images, because it uses less buffer memory than would otherwise be needed to read in the entire image all at one time. The uncompressed image data is expected not to exceed 64 Kbytes per strip; a value chosen to maximize compatibility with various operating systems. When strips are used, the StripOffsets, RowsPerStrip and StripByteCounts tags define the number of strips and the number of rows of image data stored in each strip. The image is divided into an integral number of strips, from one strip to the maximum number of strips, which equals the image’s length. If necessary, the final strip can be “padded” with zeros. The StripOffsets tag stores the offsets to the start of each image data strip. In this way, the reader can easily access various parts of the image. The number of rows per strip is specified in the RowsPerStrip tag. The number of image data bytes stored within each strip is specified in the StripByteCounts tag. The order of the image strips is from the top to the bottom of the image. EXAMPLE 1: Table 1 Main image example Tag ImageWidth ImageLength PhotometricInterpretation SamplesPerPixel BitsPerSample PlanarConfiguration RowsPerStrip Main image 3 072 2 048 2 (RGB) 3 8,8,8 1 (Chunky), i.e. RGBRGBRGB... 8 The size in bytes of each row in this image is 3 072 PixelsPerRow * (3 SamplesPerPixel * 8 BitsPerSample)/8 BitsPerByte ==> 9 216 BytesPerRow. Assuming 8 rows of image data in each strip, the number of bytes per strip is 8 RowsPerStrip * 9 216 BytesPerRow ==> 73 728 BytesPerStrip. The number of strips equals 2048 Rows/8 RowsPerStrip ==> 256 strips. Tiles provide the reader with the ability to perform image “panning”, i.e. viewing portions of the image on a display, which is smaller than the overall image size. When tiles are used, the TileWidth, TileLength, TileOffsets and TileByteCounts tags define the number of tiles and the size of each tile. The image is divided into an integral number of tiles. The TileWidth tag stores the width of the tile in pixels. The TileLength tag stores the length of the tile in rows. The TileOffsets tag stores the offsets from the start of the image file to the start of each image data tile. The number of image data bytes in each tile is specified in the TileByteCounts tag. Tiles are not supported for thumbnails. EXAMPLE 2: Using the above example, the image could be broken up into 1 024 tiles each having a width of 96 pixels and a length of 64 pixels. Each tile would have a size in bytes of 96 PixelsPerTileWidth * 64 RowsPerTileLength * (3 SamplesPerPixel * 8 BitsPerSample)/8 BitsPerByte ==> 18 432 BytesPerTile, i.e. 18K BytesPerTile. 4.7.2 Profile 2 image data tags (Informative) <Editor's note: Should Linear raw discussion be here or in Annex> Profile 2 supports Raw and CFA image data with the understanding that these images will be opened and further processed using camera raw processing software, in order to create the desired reproductions. A profile 1 image can be stored as an alternative image for knowledgeable readers to utilize. In addition to the general image tags defined above, Profile 2 defines tags for Raw and CFA data. A single image component having a colour filter array (CFA) area pattern of the image data derived from a singlechip colour image sensor can be stored. Profile 2 readers handle this type of image data. The colour filter array area pattern is the repetitive spatial colour sampling pattern of photosites on the image sensor. There are many different CFA-type sensors, which capture only one colour component per photosite on the sensor. The SamplesPerPixel, PlanarConfiguration, CFARepeatPatternDim, CFAPattern and SensingMethod tags describe a sensor’s CFA pattern. The RowInterleaveFactor and SubTileBlockSize tags further describe how image data is organized. © ISO 2008 – All rights reserved 11 ISO/WD 12234-2 See section 8.2.7 for further tags. <Editor's Note: describe additional "raw" tags defined in DNG version 1.2, and the "defective pixels" tag defined by Stanley Barkan. Also add “output rendering information” tags.> 4.8 Thumbnail images (Informative) The file can contain a thumbnail, a small preview of the main image. The thumbnail feature set is a subset of Profile 1. The dimensions of the thumbnail image are 512 pixels maximum horizontally and vertically. The thumbnail uses 8 bits per sample, and can be compressed. The thumbnail image is always stored in strips. The color space is sGray or sRGB. The thumbnail image is in the first IFD, a location chosen to match Exif Version 2.3. <Editor's Note: The limitation to 256 x 256 pixels, and the example below, may be revised> EXAMPLE In this example, the thumbnail image has 1/16 the number of lines and 1/16 the number of pixels per line as the main image. The thumbnail image is a single strip, which holds the thumbnail image data. The StripOffsets tag stores the offset from the start of the image file to the start of the thumbnail image data strip. The number of rows per strip, i.e. 64 rows, is specified in the RowsPerStrip tag. The number of thumbnail image data bytes stored in the strip is specified in the StripByteCounts tag. Table 2 Thumbnail example Tag ImageWidth ImageLength PhotometricInterpretation SamplesPerPixel BitsPerSample PlanarConfiguration RowsPerStrip StripByteCounts Main image 3 072 2 048 2 (RGB) 3 8,8,8 1 (Chunky), i.e. RGBRGBRGB... 8 Any Thumbnail 192 128 2 (RGB) 3 8,8,8 1 (Chunky), i.e. RGBRGBRGB... 128 73 728 The size in bytes of the single thumbnail image strip is 192 PixelsPerRow * (3 SamplesPerPixel * 8 BitsPerSample)/8 BitsPerByte ==> 576 BytesPerRow. There are 128 rows of thumbnail image data in the strip, hence the number of bytes per strip is 128 RowsPerStrip * 576 BytesPerRow ==>73 728 BytesPerStrip. The number of strips is equal to 128 Rows/128 RowsPerStrip ==> 1 strip. <Editor's Note: This example violates the 64kb recommendation> 4.9 Colour encoding information (Informative) The camera spectral sensitivities and OECF (opto-electronic conversion function) can be provided with either profile, using the SpectralSensitivity and OECF tag values, in order to provide additional colour characterization information. The TIFF 6.0 PrimaryChromaticities, WhitePoint and TransferFunction tags are not used in TIFF/EP files. In addition, each profile provides different levels of colour encoding support. 4.9.1 Profile 1 Colour support (Informative) Profile 1 supports greyscale, RGB, and YCbCr colour components. The PhotometricInterpretation tag specifies whether the colour components are greyscale, RGB, or YCbCr. PhotometricInterpretation 2 (RGB) applies to any three-component colour encoding for which an ICC profile can be constructed, including native camera RGB, CIE XYZ, CIELAB, CIELUV, CMY, HSL, etc. 12 © ISO 2008 – All rights reserved ISO/WD 12234-2 Profile 1 files can include an ICC profile constructed according to ISO 15076-1 in the ICCProfile tag. When the ICCProfile tag is present, it is used to interpret the intended colour appearance of the digital code values of the image. When the ICCProfile tag is not present, the digital code values of the image are interpreted as specified by the PreviewColorSpace tag. YCbCr data are interpreted as RGB data converted to YCbCr using the YCbCrCoefficients. When the YCbCrCoefficients are present, the ICC profile applies to the image data after conversion back to RGB. 4.9.2 Profile 2 Colour support (Informative) Profile 2 supports CFA (Colour Filter Array) and Raw images. The PhotometricInterpretation tag specifies whether the sample representation is CFA or Raw. A large set of tags is defined for processing of Profile 2 images. Colour processing is specified with the AdoptedWhitePoint, AsShotWhiteXY, AsShotNeutral, BaselineExposure, CalibrationIlluminant1, CalibrationIlluminant2, CameraCalibration1, CameraCalibration2, ColorMatrix1, ColorMatrix2, ForwardMatrix1, ForwardMatrix2, ProfileCopyright, ProfileEmbedPolicy, ProfileToneCurve, ReductionMatrix1, ReductionMatrix2, WhiteLevel tags. Cropping and scaling is specified with the ActiveArea, BestQualityScale, DefaultCropOrigin, DefaultCropSize, and DefaultScale tags. Vendor specific tags can be used with Profile 2 to provide proprietary information for subsequent processing by camera raw applications. √<Editor's Note: The use of ICC profiles for profile 2 (raw) files is under consideration. Optional only!!! Yes, the raw image is not rendered yet. > 4.10 Image data compression (Informative) The image data compression method is specified in the Compression tag. When no compression is used, a value of 1 is stored in this tag. When either baseline DCT JPEG compression or lossless JPEG compression is used, a value of 7 is stored. For compressed images, the average number of bits per pixel is specified using the CompressedBitsPerPixel tag. 4.10.1 Baseline JPEG compression for Profile 1 (Informative) √<Editor's Note: A small part of this has been made normative. See elsewhere > √<Editors note: Needs fixing; Conflict with Image data description sections> Profile 1 images with 8 bits per sample can use the DCT (lossy) baseline version of the TIFF/JPEG compression method defined by the Independent JPEG Group and described in TIFF technical note number 2. This compression method is in accordance with ISO/IEC 10918-1:1994. To indicate JPEG compression, a value of 7 is specified in the Compression tag. JPEG compression works in either strip-based or tile-based images. The term “segment” refers to either a strip or a tile. When the Compression tag has the value 7, each image segment contains a complete JPEG data stream, which is valid according to the ISO JPEG standard (ISO/IEC 10918-1). Each image segment in a JPEG-compressed file contains a valid JPEG data stream according to the ISO JPEG standard’s rules for interchange-format (including JPEG quantization and Huffman tables) or abbreviated-imageformat (without JPEG quantization and Huffman tables) data. The datastream contains a single JPEG frame storing that segment of the image. The required JPEG markers within a segment are: - SOI (start of image, appears at the very beginning of the segment) - SOFn (start of frame) © ISO 2008 – All rights reserved 13 ISO/WD 12234-2 - SOS (start of scan, one for each scan) - EOI (end of image, appears at the very end of the segment) The actual compressed data follows SOS. It can contain RSTn (restart) markers if DRI (define restart interval) is used. Additional JPEG “tables and miscellaneous” markers can appear between SOI and SOFn, between SOFn and SOS and before each subsequent SOS if there is more than one scan. These markers include: - DQT (define quantization tables) - DHT (define Huffman tables) - DRI - APPn (define application markers, see note below) - COM (comment, ignored by readers) (define restart interval) Readers can ignore Appn markers. EXIF-uncompressed image files use APP1 to store TIFF tags. DNL (define number of lines) markers are not used in TIFF/EP files. Readers can abort if any other marker type is found, especially the JPEG reserved markers. Such markers are likely to indicate a JPEG extension. The tables/miscellaneous markers appear in any order. Although the SOFn marker refers to DQT tables, JPEG does not require those tables to precede the SOFn, only the SOS. Missing-table checks should be made when SOS is reached. 4.10.1.1 JPEG tables for Profile 1 (Informative) When JPEG compression is used, the optional JPEGTables tag can be used. This tag encodes the JPEG quantization and Huffman tables for subsequent use by the JPEG decompression process. The JPEGTables tag is useful when the image is stored in multiple segments, in order to reduce the file size. When the JPEGTables tag is present, it contains a valid JPEG “abbreviated table specification” datastream, beginning with SOI and ending with EOI. It contains one or more JPEG tables, including DQT (define quantization tables) and DHT (define Huffman tables). When a reader decodes a JPEG compressed image having the JPEGTables tag, it is prudent for the reader to send the JPEGTables abbreviated bitstream prior to each JPEG compressed image segment. This eliminates the need for the reader to manually determine which JPEG compressed image segments require these tables. When no JPEGTables tag is used, then each segment is a complete JPEG interchange datastream. Each segment defines all the tables it references. To allow readers to decode segments in any order, no segment relies on tables being carried over from a previous segment. 4.10.2 JPEG Lossless compression options for Profile 1 (Informative) Profile 1 readers support 10, 12, 14, or 16 bits per sample compressed using JPEG-LS as specified in ISO/IEC 14495-1. For JPEG-LS, the internal width/length/components in the JPEG stream do not always match the strip or tile's width/length/components. Only the total sample counts need to match. 4.10.3 JPEG lossless compression for Profile 2 (Informative) Profile 2 readers support 8, 10, 12, 14, or 16 bits per sample compressed using JPEG-LS as specified in ISO/IEC 14495-1. It is common for CFA images to be encoded with a different width, length or component count to allow the JPEG compression predictors to work across like colours. 14 © ISO 2008 – All rights reserved ISO/WD 12234-2 <Editor's Note: Other compression options are being considered. A proposal for lossy compression of raw image data is described in the Annex.> 4.11 Descriptive Metadata (Informative) Descriptive metadata in TIFF/EP files include picture annotation metadata, camera information metadata, camera and lens settings metadata, camera characterization metadata, and opcode processing instructions. Descriptive metadata include all data NOT necessary to display the image. 4.11.1 Picture annotation (Informative) Information stored with an image that describes and documents the image is called “picture information”. The date and time that a given image was originally captured, is specified in the DateTimeOriginal tag. The date that a given image was last modified, i.e. altered in a way that modifies any image data values, is specified in the DateTime tag. For each modification, there can be an associated update to the image’s history. The TimeZoneOffset tag indicates the time zone of the clocks that generated the DateTimeOriginal and DateTime tags. The subject or purpose of the image is specified using the ImageDescription tag. The subject distance and placement in the image are specified in the SubjectDistance and SubjectLocation tags. A sequence number can be assigned to an image using the ImageNumber tag. This provides a simple image ordering capability, which can help readers determine the order in which multiple images were captured. The name of the photographer or image creator is specified using the Artist tag as an ASCII string. The owner of the image is specified using the Copyright tag as an ASCII string. Pertinent editorial information about the image for news photo applications can be specified using the IPTC/NAA tag. The SecurityClassification tag describes the security classification rating, classification authority and future declassification of an image. The definition of this feature is described in the NITF (National Imagery Transmission Format) specification (MIL-STD-2500). A list documenting changes to the image data is specified in the ImageHistory tag. As changes are made, additional information about the changes can be concatenated to the previous string. An IPTC/NAA annotation tag can be placed in a child IFD. This is useful for entering alternative keywords for an alternative rendering. Child IFD metadata is reconciled with IFD0 metadata by replacing corresponding IFD0 metadata. When keywords are placed in a child IFD0 they must contain all relevant keywords because when reconciling the metadata, they will completely replace the set of keywords in the IPTC/NAA tag in IFD0. <Editor's Note: The following tags will be updated: The IPTC/NAA (International Press Telecommunications Council – Newspaper Association of America) tag (33723) will be updated to allow use of the XMP based IPTC Core" version 1.0 specification. The definition of the copyright tag (33432) will be updated to encourage use of the PLUS (Picture Licensing Universal System) LDF (License Data Format). > <Editor's Note: Consider additional metadata tags, such as Subject, Title, Keywords and Rating tags> 4.11.2 Camera information metadata (Informative) The camera’s “make” is specified in the Make tag. The camera’s “model” is specified in the Model tag. The version of software and/or firmware used in the camera to capture and store the image file is encoded in the Software tag. © ISO 2008 – All rights reserved 15 ISO/WD 12234-2 4.11.3 Camera and lens settings metadata (Informative) These tag values provide the camera settings used when the image was captured. All these tags are optional. In many cases, the settings can be given in either conventional units (seconds, etc.) or in APEX (Additive System of Photographic Exposure) units. The type of scene illuminant (daylight, tungsten, etc.) is encoded in the SceneIlluminant tag as one of several enumerated VALUEs. Alternatively, the colour temperature of the illuminant is reported. The lens f-number (ratio of lens aperture to focal length) is specified using the FNumber tag. Alternatively, the value is specified in the Aperture tag using APEX units. The exposure time used to capture the image is specified using the ExposureTime tag in fractional seconds. Alternatively, the value is specified in the ShutterSpeed tag using APEX units. The exposure bias (i.e. the amount of over- or under-exposure relative to a normal exposure as determined by the camera's exposure system) used to capture the image is encoded in the ExposureBias tag using APEX units. The metering mode, for example the camera’s method of spatially weighting the scene luminance values to determine the sensor exposure, is encoded in the MeteringMode tag. Metering modes include simple average, centre-weighted-average, etc. The exposure program used by the camera to set the appropriate capture trade-offs (shutter speed, aperture, etc.) in order to properly expose the image being captured, is encoded within the ExposureProgram tag. The camera self-timer mode of operation is specified within the SelfTimerMode tag. The exposure index setting of the camera used to capture the image is encoded in the ExposureIndex tag. ISO 12233:1998 is used in determining the exposure index value. An exposure index is a numerical value that is inversely proportional to the exposure provided to an image sensor to obtain an image. Images obtained from a camera using a range of exposure index values will normally provide a range of image quality levels. The camera lens focal length in millimetres, used to capture the image, is encoded in the FocalLength tag. The distance between the front nodal plane of the camera lens and the subject on which the camera is focused, is specified in the SubjectDistance tag. The location of the centre of the main subject in the image is specified using the SubjectLocation tag. The scene brightness measured in BVs (Brightness Value) present when the image was captured, is encoded in the BrightnessValue tag using APEX units. The camera lens maximum aperture value, i.e. maximum f/number, is specified using the MaxApertureValue tag. Whether or not flash was used when the image was captured is encoded in the Flash tag. The amount of flash energy, i.e. flash guide number used, is encoded in the FlashEnergy tag. The battery level is indicated by the BatteryLevel tag. 4.11.4 Camera characterization metadata (Informative) Camera characterization metadata tags are optional tags that describe the performance of the camera used to capture the image file. The camera’s focal plane resolution in the X-dimension, i.e. the horizontal dimension when the camera is normally oriented, is specified in the FocalPlaneXResolution tag. This information, along with the focal plane resolution in the Y-dimension (FocalPlaneYResolution) and the resolution units (FocalPlaneResolutionUnit) is used to relate the image data to the camera focal plane dimensions. The camera’s “spatial frequency response”, which quantifies the camera resolution, is specified in the SpatialFrequencyResponse tag. The camera’s “noise” level is specified in the Noise tag. The ISO speed ratings of the electronic still-picture camera, specified in the ISOSpeedRatings tag, are values calculated from the exposure provided at the focal plane of the camera and the resulting camera output signal characteristics. The two ratings are the ISO speed, which is encoded as a single short value, and the ISO speed latitude, which is encoded as two short values. Some electronic still-picture cameras do not have an ISO speed latitude. The ISOSpeedRatings tag specifies a camera parameter, while the ExposureIndex tag specifies an image parameter. The values encoded in the ISOSpeedRatings tag are those determined for the ISO speed of an electronic still-picture camera. The value encoded in the ExposureIndex tag corresponds to the focal plane exposure provided by the camera settings in capturing each image. For example, when the ISO speed ratings of a camera are 50 for the primary noise speed, 25 for the saturation speed and 400 for the upper limit noise speed, then the values 50 (25-400) are specified in the ISOSpeedRatings tag for all images taken with the camera. When the same camera is used to capture an image with f-number and exposure time settings that produce an arithmetic mean focal plane exposure of 1/20 lux second, the value 200/1 is encoded in the ExposureIndex tag. In summary, 16 © ISO 2008 – All rights reserved ISO/WD 12234-2 the ExposureIndex tag tracks the exposure used to capture each image taken by the camera, while the ISOSpeedRatings tag provides information about the measured ISO speed values of the camera. 4.12 Opcode processing instructions (Informative) Opcode lists specify additional complex processing steps to be performed in conjunction with rendering. These are specified in opcode tags OpcodeList1, OpcodeList2, OpcodeList3. Features include correcting lens artefacts, removing dead pixels, and calculating sample values. OpcodeList1 and OpcodeList2 apply only to Profile 2 CFA images. OpcodeList3 can be applied to any image. 5 The TIFF/EP File Structure 5.1 General This section specifies how data items are stored in a TIFF/EP file 5.2 The TIFF/EP File Extension The file extension of a TIFF/EP file name shall be ".tif" or ".dng" in upper, lower, or mixed case. The file extension ".tif" shall specify a Profile 1 file. The file extension ".dng" shall specify a Profile 2 file. NOTE: As an embedded file does not have a file extension, the Profile type is conveyed through the PhotometricInterpretation tag. 5.3 The TIFF/EP File Format The TIFF/EP file shall have a file header, one or more image file directories, and data referenced by these image file directories. The byte order of the file shall be little-endian or big-endian, and shall be specified in the image file header. The length of the file shall not exceed 4 294 967 295 bytes (= 2**32 - 1). Unless otherwise stated, all data structures and data primitives shall start on an even byte offset. 5.4 The TIFF/EP Image File Header A TIFF/EP file shall contain one image file header. The image file header shall start at byte offset 0. The image file header shall be as defined in Table 3. Image File Header. Field Order Type SHORT Field Length 2 Version SHORT 2 Link LONG 4 © ISO 2008 – All rights reserved Table 3. Image File Header Description The byte order used within the file The identifier and version for a TIFF/EP file Link to an Image File Directory Value 'II' (4949h) = little-endian byte order 'MM' (4D4Dh) = big-endian byte order 42 (002Ah) Byte offset of an IFD 17 ISO/WD 12234-2 NOTE: Future versions of this standard might use a higher version number. 5.5 The Image File Directory Structure 5.5.1 General A TIFF/EP file shall contain one or more Image File Directories. Image File Directories (IFDs) may be stored in any order in the file, and may be stored anywhere where space is available. 5.5.2 The Image File Directory Tree All IFDs shall be linked using IFD links into one tree structure with the Image File Header at its root. IFD links shall be stored in the Link field in the Image File Header or in specific tags, such as SubIFDs and GPSInfo. IFD link fields shall contain the byte offset of the IFD being linked to. The byte offset of the first byte in the IFD shall be the byte offset used for linking to the IFD. IFD links shall be one-way links. There shall be exactly one link to each IFD. 5.5.2.1 Sub-files Two or more IFDs may be linked together into a sequence of IFDs using the EndLink field in the IFDs. IFD 0 shall be the first IFD in the sequence and an EndLink field with the value 0 shall terminate the sequence. A reader need not read other than the first image in the sequence. 5.5.3 The Image File Directory Format An Image File Directory (IFD) contains Image File Directory Entries, which can hold data, pointers to data, and links to other IFDs. The IFD shall contain at least one IFD entry. Within the IFD, the IFD entries shall be in ascending numerical order by tag. Each tag shall occur at most once in the IFD. The IFD shall have the format defined in Table 4. Image File Directory. Field TagCount Type SHORT Entry 1 to n Image File Directory Entry LONG EndLink Table 4. Image File Directory Field length Description 2 The number of IFD entries (n) in this IFD 12 x n (n) IFD entries 4 Optional link to an IFD Value A count > 0 Byte offset of an IFD, or 0, if no IFD The TagCount field shall contain the number of tags or IFD entries in this IFD. The Image File Directory Entries shall be as defined in Section 5.6 The Image File Directory Entry The EndLink field may contain the byte offset of another IFD. If not, the field shall be 0. See Section 5.5.2.1 18 © ISO 2008 – All rights reserved ISO/WD 12234-2 5.6 The Image File Directory Entry 5.6.1 The Image File Directory Entry Format An Image File Directory Entry (IFD entry) contains the values for a specified tag. Each Image File Directory Entry (IFD entry) shall have the format defined in Table 5. Image File Directory Entry. Table 5. Image File Directory Entry Field length Description 2 The tag identifying the field Field Tag Type SHORT Value Tag as a number Type SHORT 2 The data type of the value Type code Count LONG 4 The number of values of the indicated type A count > 0 ValueOffset ValueOffset 4 The tag's value, directly or indirectly The value of the tag or byte offset 5.6.2 The Tag Field The tag field shall specify the tag for which this Image File Directory Entry provides values. Each tag shall be defined in Section 9.1 Tag Definitions. 5.6.3 The Type Field The type field shall specify the data type of the tag's value. The type field shall be encoded using a type code from Table 6. Definition of data types. The tag definition specifies the data type(s) allowed for the tag. Some tag definitions allow more than one data type. Readers shall use the type field, not the tag definition, for determining the data type of the tag's value. When the type is UNDEFINED, the tag definition shall specify the structure of the data. 5.6.4 The Count Field The count field shall indicate the number of items of the specified type. There shall be at least one item. Although most IFD entries contain only a single value, all tag values are stored as one-dimensional arrays. When the type is ASCII, the count shall include the terminating NUL. The count for multi-string fields shall be the number of bytes in all strings in that field including their terminating NUL bytes. When the type is UNDEFINED, the count shall be the number of bytes required to hold the data structure, and the tag definition shall describe the data structure. The count shall not include any pad bytes added after values with odd lengths. Readers shall use the count field, not the tag definition, for determining the number of items in the value. This allows a single procedure to retrieve any value. NOTE: The count is expressed in items, not in bytes. For example, a single 16-bit word (SHORT) has a count of 1, not 2. 5.6.5 The ValueOffset Field The field length of the value determines whether the ValueOffset field contains a byte offset or a tag value. © ISO 2008 – All rights reserved 19 ISO/WD 12234-2 The field length of the value shall be the type's field length multiplied by the count. When the field length exceeds 4 bytes, the ValueOffset field shall contain the byte offset of the stored value. The value may be stored anywhere where space is available in the file. When the field length does not exceed 4 bytes, the ValueOffset field shall contain the stored value. When the field length is shorter than 4 bytes, the value shall be stored in the lower-numbered bytes within the field, i.e. left justified. Readers shall use the field length, not the tag definition, for determining the location of the tag's value. This allows a single procedure to retrieve any value. NOTE: The 4-byte ValueOffset field is not a LONG data type since, for values shorter than 4 bytes, the value is left-justified, regardless of the byte order. To store the SHORT hex value “AB CD” in MM byte order, the 4 bytes are “AB CD xx xx” (where xx indicates bytes not included in the value). The same hex value in II byte order, the 4 bytes are “CD AB xx xx”. 5.7 The Data Types The field types and their sizes shall be as defined in Table 6. Definition of data types. Table 6. Definition of data types Field Length Definition Type Code Type 1 BYTE 1 Unsigned 8-bit integer 2 ASCII 1 8-bit ASCII code. When Count is greater than 1, the last byte shall be NUL (binary zero). 3 SHORT 2 Unsigned 16-bit integer 4 LONG 4 Unsigned 32-bit integer 5 RATIONAL 8 Two LONGs: the first represents the numerator of a fraction, the second represents the denominator, which shall be non-zero 6 SBYTE 1 Signed 8-bit integer 7 UNDEFINED 1 8-bit byte. The tag definition shall describe the data structure 8 SSHORT 2 Signed 16-bit integer 9 SLONG 4 Signed 32-bit integer 10 SRATIONAL 8 Two SLONGs: the first represents the numerator of the fraction, the second represents the denominator, which shall be non-zero 11 FLOAT 4 32-bit float in IEEE format 12 DOUBLE 8 64-bit float in IEEE format NOTE: ASCII defines only code values 0 to 127. Code values 128 to 255 are platform-dependent. For the ASCII type, each string shall be terminated with one NUL byte. There is no initial count byte as in Pascalstyle strings. 20 © ISO 2008 – All rights reserved ISO/WD 12234-2 Single strings should be used whenever possible. However, the tag definition may specify that an ASCII field may contain multiple strings, in which case each string shall be terminated with one NUL byte. The strings following the first string may begin on an odd byte offset. Readers should accept BYTE, SHORT, and LONG values for any unsigned integer field. This allows a single procedure to retrieve any unsigned integer value. Readers should accept SBYTE, SSHORT, and SLONG for any signed integer field. Readers should accept RATIONAL, SRATIONAL, FLOAT, and DOUBLE for any real field. EXAMPLE: ImageWidth usually uses the SHORT type, but ImageWidth exceeding 65 535 will use the LONG type. © ISO 2008 – All rights reserved 21 ISO/WD 12234-2 6 Image Storage 6.1 Supported image types The file shall include one main image as defined in Section 8.2.3 √<Editors Note: Should thumbnails be required> The file may include one thumbnail image as defined in Section 8.2.4. The file may include any number of alternative images as defined in Section 8.2.5. All images shall be stored as IFDs as defined in section 5. 6.2 Image Compression 6.2.1 Lossy Compression A Profile 1 image with 8 bits per component data may be stored compressed as specified in ISO/IEC 10918-1, also known as JPEG compression. The compression shall be "baseline" JPEG (SOF0), not progressive or hierarchical. <Editors Note: Do we allow other than SOF0 (baseline)? (SOF1 non-baseline lossy JPEG, SOF3 for lossless JPEG ) Each compressed image strip or compressed image tile shall be stored as a data stream compliant with ISO/IEC 10918-1, either in interchange-format (including JPEG quantization and Huffman tables) or in abbreviated-imageformat (excluding JPEG quantization and Huffman tables). When present, RowsPerStrip or TileLength shall be a multiple of 8 times the largest vertical sampling factor, and TileWidth shall be a multiple of 8 times the largest horizontal sampling factor. 6.2.2 Lossless Compression A Profile 1 image with 10, 12, 14 or 16 bits per component data may be stored compressed using JPEG-LS as specified in ISO/IEC 14495-1. Profile 1 readers are not required to support JPEG-LS compression. A Profile 2 image (with 8, 10, 12, 14 or 16 bits per component data) may be stored compressed using JPEG-LS as specified in ISO/IEC 14495-1. Profile 2 readers shall support JPEG-LS compression. For JPEG-LS, the internal width/length/components in the JPEG data stream need not match the strip's or tile's width/length/components. Only the total sample counts need to match. 6.2.3 General on Compression The following applies to both lossy and lossless compression. Only the following markers may appear in the compressed data stream: - 22 SOI (start of image) © ISO 2008 – All rights reserved ISO/WD 12234-2 - SOFn (start of frame) - SOS (start of scan) - EOI - DQT (define quantization tables) - DHT (define Huffman tables) - DRI - RSTn (restart) - APPn (application segments) - COM (comment) (end of image) (define restart interval) All data streams shall use the same SOFn type. Readers shall ignore APPn and COM segments. When the JPEGTables tag is present, the compressed image data stream may reference the (quantization and Huffman) tables in the JPEGTables tag, in addition to the tables in the data stream. There shall be no other references between JPEG data streams. 7 Processing Architecture The workflows and related constraints for images in TIFF 7.1 Processing model 7.2 Workflows 7.3 TIFF/EP profiles 7.3.1 Profile 1 7.3.2 Profile 2 7.4 Reader / writer requirements <Editors Note: What do we want to accomplish here? What is the requirement to be satisfied? Is this the right location?> © ISO 2008 – All rights reserved 23 ISO/WD 12234-2 8 Tag usage 8.1 General This section specifies which tags are required and optional by image, profile or IFD type using the TIFF/EP file structure defined in Section 5. The informative Annex TBD provides a table that lists tags for each image type. 8.2 Image File Directories 8.2.1 Required image tags The tags BitsPerSample, Compression, ImageLength, ImageWidth, NewSubFileType, Orientation, PhotometricInterpretation, PlanarConfiguration, and SamplesPerPixel shall be present when the IFD contains an image. The StripByteCounts, RowsPerStrip, and StripOffsets tag are present when the image data is stored as strips. The TileByteCounts, TileLength, TileOffsets, and TileWidth tag are present when the image data is stored as tiles. When PhotometricInterpretation = 6 (YCbCr), the ReferenceBlackWhite, YCbCrCoefficients, YCbCrPositioning, YCbCrSubSampling tags are present. 8.2.2 Optional image tags Any of the tags DateTime, ImageHistory, ImageNumber, ResolutionUnit, Software, TimeZoneOffset, XResolution, YResolution may be present when the IFD contains an image. SubjectLocation, 8.2.3 Main image IFD The main image shall be in IFD 0.For the main image, NewSubFileType shall be 0 (main image). The main image shall be a Profile 1 image or a Profile 2 image as defined in Sections 8.2.6 and 8.2.7. The profile class of the file is the profile class of the main image. NewSubFileType shall be 0 (main image). A Profile 1 reader shall be able to display a Profile 1 main image. A Profile 2 reader shall be able to display a Profile 2 main image. 8.2.4 Thumbnail image IFD √<Editors note: Is this the full set of constraints? It should be specified here> The thumbnail image is intended for preview of the main image. The thumbnail shall be stored in the first IFD, not in IFD 0. That is, IFD 0 shall contain one SubIFDs tag, and the first entry of the SubIFDs tag shall be the thumbnail IFD. NOTE: This location does not match the location prescribed by EXIF 2.2 or TIFF/EP version 1. √<Editor's Note:Clarify location. top-level ifd or first subifd. Match exif> BitsPerSample shall be 8 bits per sample. 24 © ISO 2008 – All rights reserved ISO/WD 12234-2 Compression shall be 1 or 7 (uncompressed and JPEG compressed, respectively). ImageLength and ImageWidth shall not exceed 512 (pixels). <Editor's Note: The old limitation was 256 x 256 pixels, may be revised> NewSubFileType shall be 1 (thumbnail). Orientation shall be 1. PhotometricInterpretation shall be 1, 2, or 6 (Gray, RGB, and YCbCr, respectively). PlanarConfiguration shall be 1 (chunky). SamplesPerPixel shall be 1 or 3. The image shall be stored in strips. Uncompressed strip sizes should not exceed 65 536 bytes. Any of the optional tags listed in section 8.2.2 may be present. The PreviewApplicationName, PreviewApplicationVersion, PreviewColorSpace, PreviewDateTime, PreviewSettingsDigest, PreviewSettingsName tags may be present. √<Editors Note: What is the default behaviour? What is the required behaviour? What is the recommended behaviour? A reader shall be able to display the thumbnail image. 8.2.5 Alternative image IFD An alternative image may have unique parameter values, such as an image size, content, or rendering different from the main image. EXAMPLE: Alternative images include alternative renderings, alternative resolutions, alternative previews, unrendered images, an original image, a raw image, etc. NewSubFileType shall be 1001.H (alternative image). The alternative image shall be a Profile 1 image or a Profile 2 image as defined in Sections 8.2.6 and 8.2.7. A reader may ignore alternative images. Alternative images should not be displayed by default. 8.2.6 Profile 1 Image IFD A Profile 1 image shall be a rendered image. <Editors note: Rendered only?> The PhotometricInterpretation value shall identify the image as a Profile 1 image. BitsPerSample shall be 8, 10, 12, 14, or 16 bits per sample. <Editors note: shall we allow other bps for uncompressed images> Compression shall be 1 or 7 (uncompressed and JPEG compressed, respectively). PhotometricInterpretation shall be 1, 2, or 6 (Gray, RGB, and YCbCr, respectively). © ISO 2008 – All rights reserved 25 ISO/WD 12234-2 SamplesPerPixel shall be 1 or 3. The image shall be stored in strips or tiles. The required tags listed in section 8.2.1 shall be present. Any of the optional tags listed in section 8.2.2 may be present. The AdoptedWhitePoint, AsShotWhiteXY, CompressedBitsPerPixel, FillOrder, ICCProfile, Interlace, JPEGTables, Noise, NoiseProfile, PreviewApplicationName, PreviewApplicationVersion, PreviewColorSpace, PreviewDateTime, PreviewSettingsDigest, PreviewSettingsName ProfileCopyright, ProfileEmbedPolicy, ProfileToneCurve, SampleFormat tags may be present. 8.2.7 Profile 2 image IFD A Profile 2 image shall be a raw or unrendered image. <Editors note: UnRendered only?> The PhotometricInterpretation value shall identify the image as a Profile 2 image. One of the AsShotNeutral and AsShotWhiteXY tags shall be present. BitsPerSample shall be 8, 10, 12, 14, or 16 bits per sample. <Editors note: shall we allow other bps for uncompressed images> The ColorMatrix1 tags shall be present. Compression shall be 1 or 7 (uncompressed and JPEG compressed, respectively). PhotometricInterpretation shall be 32803 (CFA) or 34892 (Raw). When PhotometricInterpretation = 32803 (CFA), - SamplesPerPixel shall be 1, - the CFAPattern, CFARepeatPatternDim tags shall be present, and - the BayerGreenSplit, CFAPlaneColor, OpcodeList1, OpcodeList2 tags may be present. When PhotometricInterpretation = 34892 (Raw), - SamplesPerPixel shall be in the range [ 1, 7 ], and - the CFAPlaneColor tag shall be present. The image shall be stored in strips or tiles. The required tags listed in section 8.2.1 shall be present. Any of the optional tags listed in section 8.2.2 may be present. The ActiveArea, AdoptedWhitePoint, BaselineExposure, BestQualityScale, BlackLevel, BlackLevelDeltaH, BlackLevelDeltaV, BlackLevelRepeatDim, CalibrationIlluminant1, CalibrationIlluminant2, CameraCalibration1, CameraCalibration2, CFALayout, ChromaBlurRadius, ColorMatrix2, CompressedBitsPerPixel, DefaultCropOrigin, DefaultCropSize, DefaultScale, DefectivePixels, DNGPrivateData, FillOrder, ForwardMatrix1, ForwardMatrix2, JPEGTables, LinearizationTable, LinearResponseLimit, MaskedAreas, Noise, NoiseProfile, OpcodeList3, ProfileCopyright, ProfileEmbedPolicy, ProfileToneCurve, Rawdatatype, RawDataUniqueID, RawImageDigest, 26 © ISO 2008 – All rights reserved ISO/WD 12234-2 ReductionMatrix1, ReductionMatrix2, RowInterleaveFactor, SampleFormat, ShadowScale, SubTileBlockSize, WhiteLevel tags may be present. 8.3 Metadata File Directories Descriptive metadata except GPS data shall be stored in IFD 0. IFD 0 shall contain the TIFF/EPStandardID tag. IFD 0 may contain the file-specific tags Artist, Copyright, ImageDescription, IPTC/NAA, MakerNoteSafety, OriginalRawFileData, OriginalRawFileDigest, OriginalRawFileName, SecurityClassification, SubIFDs, XMP. IFD 0 may contain the capture-specific tags AnalogBalance, AntiAliasStrength, ApertureValue, BaselineNoise, BaselineSharpness, BatteryLevel, BrightnessValue, CameraSerialNumber, DateTimeOriginal, ExposureBiasValue, ExposureIndex, ExposureProgram, ExposureTime, Flash, FlashEnergy, FNumber, FocalLength, FocalPlaneResolutionUnit, FocalPlaneXResolution, FocalPlaneYResolution, GPSInfo, ISOSpeedRatings, LensInfo, LightSource, LocalizedCameraModel, Make, MaxApertureValue, MeteringMode, Model, OECF, SelfTimerMode, SensingMethod, ShutterSpeedValue, SpatialFrequencyResponse, SpectralSensitivity, SubjectDistance, TimeZoneOffset, UniqueCameraModel. The GPSInfo tag shall link to the GPS IFD, as specified in the GPSInfo tag definition. Image-specific metadata are stored in the image's IFD as specified in Section 8.2. 9 TIFF/EP tag and opcode definitions 9.1 9.1.1 Tag Definitions General This section defines all tags provided by this standard. 9.1.2 ActiveArea Tag Name = ActiveArea Tag = 50829 (C68D.H) Type = SHORT or LONG Count = 4 Value = <Top row, left column, bottom row, right column> Default = <0, 0, ImageLength, ImageWidth> The ActiveArea tag shall specify a rectangle of the active (non-masked) pixels of the sensor. The values shall be the positions of the rectangle's top row, left column, bottom row, and right column within the image. <Editors note: do it this way or the way default crop does it?> The rectangle shall not extend beyond the image, and shall include at least 1 pixel. © ISO 2008 – All rights reserved 27 ISO/WD 12234-2 9.1.3 AdoptedWhitePoint Tag Name = AdoptedWhitePoint Tag = To be defined (TO BE DEFINED.H) Type = ASCII Count = length of string Value = see below Default = None The AdoptedWhitePoint tag shall specify spectral power distribution values for the adopted white used to create the image. The format shall be the same as for the SpectralSensitivity tag (except with just one column). 9.1.4 AnalogBalance Tag Name = AnalogBalance Tag = 50727 (C627.H) Type = RATIONAL Count = ColorPlanes Value = See below Default = All 1 The AnalogBalance tag shall specify the gain that has been applied to the stored raw values. The applied gain should be analog, rather than digital. The values shall be positive. NOTE: Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance. However, when camera hardware is capable of white balancing the colour channels before the signal is digitized, it can improve the dynamic range of the final image. 9.1.5 AntiAliasStrength Tag Name = AntiAliasStrength Tag = 50738 (C632.H) Type = RATIONAL Count = 1 Value = Relative strength of the camera's anti-alias filter Default = 1 See also BaselineSharpness 28 © ISO 2008 – All rights reserved ISO/WD 12234-2 The AntiAliasStrength tag shall specify the strength of the camera's anti-alias filter (also known as Optical LowPass FIlter, OLPF). A value of 0 shall mean no anti-alias filter (that is, the camera is prone to aliasing artefacts with some subjects). A value of 1 shall mean a strong anti-alias filter (that is, the camera almost never has aliasing artefacts). The value shall not exceed 1. NOTE: This tag overlaps in functionality with the BaselineSharpness tag. The primary difference is the AntiAliasStrength tag is used as a hint to the de-mosaic algorithm, while the BaselineSharpness tag is used as a hint to a sharpening algorithm applied later in the processing pipeline. <Editor's NOTE: More information is needed to define this tag value> 9.1.6 ApertureValue Tag Name = ApertureValue Tag = 37378 (9202.H) Type = SRATIONAL <Editors note: SRATIONAL OR RATIONAL> Count = 1 Value = see below Default = None The ApertureValue tag shall specify the actual lens aperture (Av) used when the image was captured, in APEX units. The value should be in the range [0.00, 99.99]. NOTE: In APEX units, a value of 0.0 corresponds to f/1.0, and a value of 1.0 corresponds to f/1.4. 9.1.7 Artist Tag Name = Artist Tag = 315 (013B.H) Type = ASCII Count = length of string Value = see below Default = None The Artist tag shall specify the name of the camera owner or image creator. 9.1.8 AsShotNeutral Tag Name = AsShotNeutral Tag = 50728 (C628.H) © ISO 2008 – All rights reserved 29 ISO/WD 12234-2 Type = SHORT or RATIONAL Count = ColorPlanes Value = See below Default = None See also AsShotWhiteXY The AsShotNeutral tag shall specify the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral colour in linear reference space values. The values shall be positive. When the AsShotWhiteXY tag is present, the AsShotNeutral tag shall not be present. 9.1.9 AsShotWhiteXY Tag Name = AsShotWhiteXY Tag = 50729 (C629.H) Type = RATIONAL Count = 2 Value = See below Default = None See also AsShotNeutral The AsShotWhiteXY tag shall specify the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The values shall be in the open interval (0, 1). When the AsShotNeutral tag is present, the AsShotWhiteXY tag shall not be present. 9.1.10 BaselineExposure Tag Name = BaselineExposure Tag = 50730 (C62A.H) Type = SRATIONAL Count = 1 Value = See below Default = 0 The BaselineExposure tag shall specify a default exposure adjustment in ExposureValue (APEX) units. For positive values the reader should produce a brighter image, and for negative values, a darker image. 30 © ISO 2008 – All rights reserved ISO/WD 12234-2 <Editors note: should or may?> NOTE: Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a reader might vary the zero point of its exposure compensation control from model to model. The BaselineExposure tag can provide this information. <Editor's NOTE: More information is needed to define this tag value> 9.1.11 BaselineNoise Tag Name = BaselineNoise Tag = 50731 (C62B.H) Type = RATIONAL Count = 1 Value = See below Default = 1 The BaselineNoise tag shall specify the relative noise level of the camera model at an Exposure Index (EI) value of 100, compared to a reference camera model at the same Exposure Index. <Editors note: we need the camera reference model> A value of 1 shall mean that the camera has the same noise level as the reference camera model. NOTE: Noise levels tend to vary approximately with the square root of the EI value, and a reader can use this value, combined with the current EI, to estimate the relative noise level of the current image. <Editor's NOTE: More information is needed to define this tag value> 9.1.12 BaselineSharpness Tag Name = BaselineSharpness Tag = 50732 (C62C.H) Type = RATIONAL Count = 1 Value = See below Default = 1 See also AntiAliasStrength © ISO 2008 – All rights reserved 31 ISO/WD 12234-2 The BaselineSharpness tag shall specify the relative amount of sharpening recommended for this camera model, compared to a reference camera model. A value of 0 shall mean no sharpening. A value of 1 shall mean reference-level sharpening. NOTE: Camera models vary in the strengths of their anti-aliasing or OLPF filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters. <Editor's NOTE: More information is needed to define this tag value> 9.1.13 BatteryLevel Tag Name = BatteryLevel Tag = 33423 (828F.H) Type = RATIONAL or ASCII Count = 1 (if Type = RATIONAL) or length of string (if Type = ASCII) Value = see below Default = None The BatteryLevel tag shall specify the camera’s battery level at the time of image capture. It should be specified as a ratio of fullness. A full battery level should be indicated by 1/1, half-full battery by 1/2. Alternatively, an ASCII string describing the battery level may be present. 9.1.14 BayerGreenSplit Tag Name = BayerGreenSplit Tag = 50733 (C62D.H) Type = LONG Count = 1 Value = See below Default = 0 The BayerGreenSplit tag shall specify, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of 0 shall mean the two kinds of green pixels track closely, while a non-zero value shall mean they sometimes diverge. A value of n shall mean that the maximum relative divergence is approximately n / WhiteLevel BayerGreenSplit shall apply only to CFA images using a Bayer pattern filter array. NOTE: The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence). <Editor's NOTE: More information is needed to define this tag value> 32 © ISO 2008 – All rights reserved ISO/WD 12234-2 9.1.15 BestQualityScale Tag Name = BestQualityScale Tag = 50780 (C65C.H) Type = RATIONAL Count = 1 Value = see below Default = 1 See also DefaultScale The BestQualityScale tag shall specify the amount by which the values of the DefaultScale tag shall be multiplied to achieve the best quality image size. The value shall be positive. NOTE: For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, some images have maximum detail when their total pixel count is doubled. 9.1.16 BitsPerSample Tag Name = BitsPerSample Tag = 258 (0102.H) Type = SHORT Count = SamplesPerPixel Value = A list of identical integers in the range [8, 32] Default = None See also SamplesPerPixel The BitsPerSample tag shall specify the number of bits in each component of a pixel. The number of bits shall be in the range [8, 32]. All components shall have the same number of bits, regardless of number of components. The number of components shall be as specified by the SamplesPerPixel tag. When BitsPerSample is not equal to 8, 16, or 32, then the sample bits shall be packed into bytes in big-endian order, and the FillOrder tag value shall be 1, regardless of the byte order of the file. NOTE: The BitsPerSample tag does not specify the data type of the samples. This is specified in the SampleFormat tag. 9.1.17 BlackLevel Tag Name = BlackLevel Tag = 50714 (C61A.H) © ISO 2008 – All rights reserved 33 ISO/WD 12234-2 Type = SHORT or LONG or RATIONAL Count = BlackLevelRepeatRows × BlackLevelRepeatCols × SamplesPerPixel Value = An array of pixel values Default = 0 See also ActiveArea, BlackLevelRepeatDim, BlackLevelDeltaH, and BlackLevelDeltaV The BlackLevel tag shall specify the pixel values for zero light, as a repeating pattern. The origin of this pattern shall be the top-left corner of the ActiveArea rectangle. The values shall be pixel values, stored in chunky image sample order. The pixel values for zero light obtained from combining the BlackLevel, BlackLevelDeltaH, and BlackLevelDeltaV tags over the ActiveArea shall be less than the WhiteLevel value for the corresponding pixel. 9.1.18 BlackLevelDeltaH Tag Name = BlackLevelDeltaH Tag = 50715 (C61B.H) Type = SRATIONAL Count = The width of the ActiveArea rectangle Value = See below Default = All 0 See also ActiveArea, BlackLevel The BlackLevelDeltaH tag shall specify the difference between the pixel values for zero light for each column and the pixel values for zero light in the BlackLevel tag. This tag may be present when the pixel values for zero light are a function of the image column. When SamplesPerPixel is not equal to one, this single table shall apply to all the samples for each pixel. 9.1.19 BlackLevelDeltaV Tag Name = BlackLevelDeltaV Tag = 50716 (C61C.H) Type = SRATIONAL Count = The length of the ActiveArea rectangle Value = See below Default = All 0 See also ActiveArea, BlackLevel 34 © ISO 2008 – All rights reserved ISO/WD 12234-2 The BlackLevelDeltaV tag shall specify the difference between the pixel values for zero light for each row and the pixel values for zero light in the BlackLevel tag. This tag may be present when the pixel values for zero light are a function of the image row. When SamplesPerPixel is not equal to one, this single table shall apply to all the samples for each pixel. 9.1.20 BlackLevelRepeatDim Tag Name = BlackLevelRepeatDim Tag = 50713 (C619.H) Type = SHORT Count = 2 Value = <BlackLevelRepeatRows, BlackLevelRepeatCols> Default = <1, 1> See also BlackLevel The BlackLevelRepeatDim tag shall specify the repeat pattern size for the BlackLevel tag. The value shall be the vertical and horizontal dimensions of the pattern. The pattern shall contain at least 1 pixel. 9.1.21 BrightnessValue Tag Name = BrightnessValue Tag = 37379 (9203.H) Type = SRATIONAL Count = 1 or 2 Value = see below Default = None The BrightnessValue tag shall specify the Brightness Value (BV) that was measured when the image was captured, in APEX units. EXAMPLE: The expected maximum value is approximately 13.00 corresponding to a picture taken of a snow scene on a sunny day and the expected minimum value is approximately -3.00 corresponding to a night scene. When the exact value is known, the value shall be specified using a single number. Otherwise, two numbers shall be present to specify the range of the value. In this case, the first number shall be the minimum value and the second number shall be the maximum value. © ISO 2008 – All rights reserved 35 ISO/WD 12234-2 The fields shall be defined as follows: Table 7 BrightnessValue Value Field No. 0 Exact BrightnessValue, if only one value is present. Minimum BrightnessValue of the range of uncertainty, if two values are present 1 (optional) Maximum BrightnessValue of the range of uncertainty, if two values are present 9.1.22 CalibrationIlluminant1 Tag Name = CalibrationIlluminant1 Tag = 50778 (C65A.H) Type = SHORT Count = 1 Value = See below Default = 0 (= unknown) See also LightSource, CalibrationIlluminant2, ColorMatrix1, CameraCalibration1, ReductionMatrix1 The CalibrationIlluminant1 tag shall specify the illuminant selected for the first set of colour calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The value shall be one of the values specified for the LightSource tag. The value shall not be 0, when the CalibrationIlluminant2 tag is present. 9.1.23 CalibrationIlluminant2 Tag Name = CalibrationIlluminant2 Tag = 50779 (C65B.H) Type = SHORT Count = 1 Value = See below Default = None See also LightSource, CalibrationIlluminant1, ColorMatrix2, CameraCalibration2, ReductionMatrix2 The CalibrationIlluminant2 tag shall specify the illuminant selected for the second set of colour calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The value shall be one of the values specified for the LightSource tag, except the value 0. 9.1.24 CameraCalibration1 Tag Name = CameraCalibration1 Tag = 50723 (C623.H) 36 © ISO 2008 – All rights reserved ISO/WD 12234-2 Type = SRATIONAL Count = ColorPlanes × ColorPlanes Value = See below Default = Identity matrix See also ColorMatrix1, CalibrationIlluminant1 The CameraCalibration1 tag shall specify a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix shall be stored in row scan order. The matrix shall be invertible. NOTE: This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement colour matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. 9.1.25 CameraCalibration2 Tag Name = CameraCalibration2 Tag = 50724 (C624.H) Type = SRATIONAL Count = ColorPlanes × ColorPlanes Value = See below Default = Identity matrix See also ColorMatrix2, CalibrationIlluminant2 The CameraCalibration2 tag shall specify a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix shall be stored in row scan order. The matrix shall be invertible. NOTE: This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement colour matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer. 9.1.26 CameraSerialNumber Tag Name = CameraSerialNumber Tag = 50735 (C62F.H) Type = ASCII Count = Length of string Value = Null-terminated string Default = None © ISO 2008 – All rights reserved 37 ISO/WD 12234-2 See also Make, Model, Software, UniqueCameraModel, LocalizedCameraModel The CameraSerialNumber tag shall specify the serial number of the camera or camera body that captured the image. The string may contain any printable ASCII characters, not only digits. 9.1.27 CFALayout Tag Name = CFALayout Tag = 50711 (C617.H) Type = SHORT Count = 1 Value = see below Default = 1 The CFALayout tag shall specify the spatial layout of the CFA. The value and layout shall be one of the following: 1 = Rectangular (or square) layout 2 = Staggered layout A: even columns shall be offset down by 1/2 row 3 = Staggered layout B: even columns shall be offset up by 1/2 row 4 = Staggered layout C: even rows shall be offset right by 1/2 column 5 = Staggered layout D: even rows shall be offset left by 1/2 column. 9.1.28 CFAPattern Tag Name = CFAPattern Tag = 33422 (828E.H) Type = BYTE Count = CFARepeatRows × CFARepeatCols Value = An array of filter colours Default = None See also CFARepeatPatternDim, PhotometricInterpretation The CFAPattern tag shall specify the filter colours in the CFA of the image sensor, as a repeating pattern. The origin of this pattern shall be the top-left corner of the ActiveArea rectangle. The values shall be the filter colours, stored in image pixel order. The values and corresponding filter colours shall be from the following set: 0 = Red, 1 = Green, 2 = Blue, 3 = Cyan, 4 = Magenta, 5 = Yellow, and 6 = White. 38 © ISO 2008 – All rights reserved ISO/WD 12234-2 The tag shall be present when PhotometricInterpretation = 32803 (CFA). The tag may be present when PhotometricInterpretation = 2 (RGB) or 6 (YCbCr) or 34892 (Raw) and SensingMethod = 2 (one chip), where it shall indicate the image sensor's sampling positions. EXAMPLE: CFARepeatPatternDim = <2, 2>, and CFAPattern = <1, 0, 2, 1> (Green, Red, Blue, Green) corresponds to the CFA pattern shown below. Green Table 8 Bayer Pattern Layout Red Green Red Green Red Blue Green Blue Green Blue Green Green Red Green Red Green Red Blue Green Blue Green Blue Green 9.1.29 CFAPlaneColor Tag Name = CFAPlaneColor Tag = 50710 (C616.H) Type = BYTE Count = ColorPlanes Value = See below Default = <0, 1, 2> (corresponding to red, green, blue) See also CFAPattern The CFAPlaneColor tag shall specify the mapping of CFAPattern colours to the colour planes in LinearRaw space. The value in position i shall specify the CFA colour code mapped to plane i. There shall be a one-to-one mapping between the colours present in the CFAPattern and the colour planes in LinearRaw space. The CFAPlaneColor tag shall be present for non-RGB CFA images. 9.1.30 CFARepeatPatternDim Tag Name = CFARepeatPatternDim Tag = 33421 (828D.H) Type = SHORT Count = 2 Value = <CFARepeatRows, CFARepeatCols> Default = None See also CFAPattern, PhotometricInterpretation © ISO 2008 – All rights reserved 39 ISO/WD 12234-2 The CFARepeatPatternDim tag shall specify the repeat pattern size for the CFAPattern tag. The values shall be the vertical and horizontal dimensions of the pattern. The pattern shall contain at least 1 filter colour. The tag shall be present when PhotometricInterpretation = 32803 (CFA). The tag may be present when PhotometricInterpretation = 2 (RGB) or 6 (YCbCr) or 34892 (Raw) and SensingMethod = 2 (one chip), where it shall indicate the original sensor sampling positions. 9.1.31 ChromaBlurRadius Tag Name = ChromaBlurRadius Tag = 50737 (C631.H) Type = RATIONAL Count = 1 Value = Chroma blur radius in pixels Default = See below The ChromaBlurRadius tag shall specify the amount of chroma blur that should be applied to the image, as a pixel radius. When this tag is omitted, the reader may use its default amount of chroma blurring. NOTE: Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the reader's default value is likely optimized for its particular de-mosaic algorithm. <Editor's NOTE: More information is needed to define this tag value> 9.1.32 ColorMatrix1 Tag Name = ColorMatrix1 Tag = 50721 (C621.H) Type = SRATIONAL Count = ColorPlanes × 3 Value = See below Default = None See CalibrationIlluminant1, CameraCalibration1, ReductionMatrix1 The ColorMatrix1 tag shall specify a transformation matrix that converts CIE XYZ values to reference camera native colour space values, under the first calibration illuminant. The matrix values shall be stored in row scan order. 9.1.33 ColorMatrix2 Tag Name = ColorMatrix2 Tag = 50722 (C622.H) 40 © ISO 2008 – All rights reserved ISO/WD 12234-2 Type = SRATIONAL Count = ColorPlanes × 3 Value = See below Default = None See CalibrationIlluminant2, CameraCalibration2, ReductionMatrix2 The ColorMatrix2 tag shall specify a transformation matrix that converts CIE XYZ values to reference camera native colour space values, under the second calibration illuminant. The matrix values shall be stored in row scan order. 9.1.34 CompressedBitsPerPixel Tag Name = CompressedBitsPerPixel Tag = 37122 (9102.H) Type = RATIONAL Count = 1 Value = see below Default = None The CompressedBitsPerPixel tag shall specify the average number of bits per pixel used to store a compressed image. 9.1.35 Compression Tag Name = Compression Tag = 259 (0103.H) Type = SHORT Count = 1 Value = see below Default = None See also JPEGTables The Compression tag shall specify the compression scheme used to store the image data. Section 6.2 specifies the JPEG image compression formats. The value shall be one of the following: © ISO 2008 – All rights reserved 41 ISO/WD 12234-2 Value 1 7 Table 9 Compression Compression method No compression. Data shall be packed as tightly as possible into bytes with up to 7 bits of padding at the end of each row to assure that each row's data ends on a byte boundary. TIFF/JPEG compression compliant with Section 6.2. The JPEG bit stream defines whether Baseline DCT JPEG or other JPEG version is used. 9.1.36 Copyright Tag Name = Copyright Tag = 33432 (8298.H) Type = ASCII Count = length of string Value = see below Default = None <Editor's Note: The definition of the copyright tag (33432) will be updated to encourage use of the PLUS (Picture Licensing Universal System) LDF (License Data Format). > The Copyright tag shall specify the copyright notice of the copyright holder. The complete copyright statement should be included in the tag with dates and statements of claims. This tag may list the royalty clearance house. An empty string shall indicate “unknown”. 9.1.37 DateTime Tag Name = DateTime Tag = 306 (0132.H) Type = ASCII Count = 20 Value = TIFF-formatted date string Default = None See TimeZoneOffset The DateTime tag shall specify the date and time when the image was last modified. The string shall be formatted as YYYY:MM:DD HH:MM:SS, with one space between the date and time, a 24-hour clock, and a null-termination byte. When the writer has no clock, or the clock is disabled, the time should be indicated as 0000:00:00 00:00:00 NOTE: This is not the ISO 8601 date format. 9.1.38 DateTimeOriginal Tag Name = DateTimeOriginal Tag = 36867 (9003.H) Type = ASCII 42 © ISO 2008 – All rights reserved ISO/WD 12234-2 Count = 20 Value = TIFF-formatted date string Default = None See TimeZoneOffset The DateTimeOriginal tag shall specify the date and time when the original image was captured. This tag should never be changed after it is first written in the camera. The string shall be formatted as YYYY:MM:DD HH:MM:SS, with one space between the date and time, a 24-hour clock, and a null-termination byte. When the writer has no clock, or the clock is disabled, the time should be indicated as 0000:00:00 00:00:00 NOTE: This is not the ISO 8601 date format. 9.1.39 DefaultCropOrigin Tag Name = DefaultCropOrigin Tag = 50719 (C61F.H) Type = SHORT or LONG or RATIONAL Count = 2 Value = <DefaultCropOriginH, DefaultCropOriginV> Default = <0, 0> See DefaultCropSize The DefaultCropOrigin tag shall specify the origin of the final image area relative to the top-left corner of the ActiveArea rectangle. The values shall be the positions of the left column and the top row of the final image in the ActiveArea rectangle. When the DefaultCropOrigin tag is present, the DefaultCropSize tag shall also be present. NOTE: Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artefacts near the edges of the final image and should be cropped away after processing. 9.1.40 DefaultCropSize Tag Name = DefaultCropSize Tag = 50720 (C620.H) Type = SHORT or LONG or RATIONAL Count = 2 Value = <DefaultCropSizeH, DefaultCropSizeV> Default = <ImageWidth, ImageLength> The DefaultCropSize tag shall specify the size of the final image. © ISO 2008 – All rights reserved 43 ISO/WD 12234-2 The values shall be the number of columns and the number of rows of the ActiveArea. <Editors note: need a single way to order col/row, it’s diff in diff places> The final image shall not extend beyond the ActiveArea. NOTE: Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artefacts near the edges of the final image and should be cropped away after processing. 9.1.41 DefaultScale Tag Name = DefaultScale Tag = 50718 (C61E.H) Type = RATIONAL Count = 2 Value = <DefaultScaleH, DefaultScaleV> Default = <1, 1> The DefaultScale tag shall specify the default scale factors for each direction to convert the image pixels to square pixels. The values shall be the horizontal and vertical scale factors, respectively. The values shall be positive. DefaultScale shall be present for images with non-square pixels. NOTE: Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, some sensors have these two values usually differ by a factor of 2. 9.1.42 DefectivePixels Tag Name = DefectivePixels Tag = To be defined (TO BE DEFINEDFF.H) Type = UNDEFINED Count = length of the data in bytes Value = See below Default = None The Defective pixels tag shall specify the locations and types of defective or invalid pixels in the image. The tag may be present when the image contains defective pixels. Defects shall be encoded using the structure defined in the following table. 44 © ISO 2008 – All rights reserved ISO/WD 12234-2 Table 10 DefectivePixels Field length Description in bytes n LONG 4 Number of single pixel defects m LONG 4 Number of multi-pixel defects PointDefect [1..n] LONG [2] [n] 8×n List of pixel locations BoxDefect [1..m] (LONG [4] + BYTE) [m] 17 × m List of rectangles with characterization code Each PointDefect field shall have the format <x, y>, where x shall be a column position, and y shall be a row position of a defect pixel in the (unmasked) image. Field Type Each BoxDefect field shall have the format <x1, y1, x2, y2, c>, where x1 and x2 shall be the left and right columns, y1 and y2 shall be the top and bottom rows of a rectangle of defect pixels in the image, and c shall be a defect characterization code. Pixel positions <x1, y1> and <x2, y2> shall be included in this rectangle. <Editors note: The characterization code is redundant for the cases listed below> The value for c shall be one of the following: 1 = a pixel cluster. This is the general case intended for small contiguous pixel defects. 2 = a column defect. In this case, x2 = x1. 3 = a row defect. In this case, y2 = y1. 4 = a double column defect. In this case, x2 = x1 + 1. 5 = a double row defect. In this case, y2 = y1 + 1. All uncorrected defective pixels should be stored in the tag. Vendors that wish to maintain additional private data for improved or faster defective pixel correction may do so in a separate vendor section. When an image is rotated or mirrored or orientation change, the DefectivePixels tag shall be updated. NOTE: It is convenient to use a single structure (the rectangle) for pixel clusters and line segment defects and to characterize each rectangular defect by means of an additional characterization code. Good pixels within a rectangular defect are also definable. <Editors note: do we need a characterization code for good pixels> 9.1.43 DNGPrivateData Tag Name = DNGPrivateData Tag = 50740 (C634.H) Type = BYTE Count = length of the data in bytes Value = See below Default = None The DNGPrivateData tag shall specify private data for use by the camera manufacturer's reader. © ISO 2008 – All rights reserved 45 ISO/WD 12234-2 The private data shall follow these rules: - The private data shall start with a null-terminated ASCII string identifying the data. The first part of this string shall be the manufacturer's name, to avoid conflicts between manufacturers. The private data shall be self-contained. All offsets within the private data shall be offsets relative to the start of the private data, and shall not point to bytes outside the private data. The private data shall be byte-order independent. If a DNG file is converted from a big-endian file to a little-endian file, the data shall remain valid. NOTE: DNGPrivateData provides a way for camera manufacturers to store private data in the DNG file for use by their own readers, and to have that data preserved by programs that edit DNG files. 9.1.44 ExposureBiasValue Tag Name = ExposureBiasValue Tag = 37380 (9204.H) Type = SRATIONAL Count = 1 or 2 Value = see below Default = None The ExposureBiasValue tag shall specify the actual exposure bias (the amount of over- or under-exposure relative to a normal exposure as determined by the camera's exposure system) used when the image was captured, in APEX units. The value shall be the number of exposure values (stops). EXAMPLE: -1.00 indicates 1 EV (1 stop) underexposure or half the normal exposure. The values should be in the range [-99.99, 99.99]. When the exact value is known, the value shall be specified using a single number. Otherwise, two numbers shall be present to specify the range of the value. In this case, the first number shall be the minimum value and the second number shall be the maximum value. The fields shall be defined as follows: Table 11 ExposureBiasValue Value Field No. 0 1 (optional) Exact ExposureBiasValue, if only one value is present. Minimum ExposureBiasValue of the range of uncertainty, if two values are present Maximum ExposureBiasValue of the range of uncertainty, if two values are present 9.1.45 ExposureIndex Tag Name = ExposureIndex Tag = 37397 (9215.H) Type = RATIONAL Count = 1 or 2 46 © ISO 2008 – All rights reserved ISO/WD 12234-2 Value = Any positive rational number Default = None See ShutterSpeedValue, ApertureValue, BrightnessValue, and Annex X The ExposureIndex tag shall specify the exposure index (ISO) set on the camera when the image was captured. The exposure index may be set by the user or by the camera automatically. The exposure index setting shall be the set, or in the case of “auto ISO” the reported value, without adjustment for any exposure bias, additional highlight headroom, etc. NOTE: The actual exposure index used can be calculated from the ShutterSpeedValue, ApertureValue, and BrightnessValue tags as described in Annex X. <Editors note: need annex x> When the exact value is known, the value shall be specified using a single number. Otherwise, two numbers shall be present to specify the range of the value. In this case, the first number shall be the minimum value and the second number shall be the maximum value. The fields shall be defined as follows: Table 12 ExposureIndex Value Field No. 0 1 (optional) Exact ExposureIndex, if only one value is present. Minimum ExposureIndex of the range of uncertainty, if two values are present Maximum ExposureIndex of the range of uncertainty, if two values are present 9.1.46 ExposureProgram Tag Name = ExposureProgram Tag = 34850 (8822.H) Type = SHORT Count = 1 Value = see below Default = None The ExposureProgram tag shall specify the class of exposure program that the camera used to set exposure when the image was captured. The value and meaning shall be one of the following: 0 = Unidentified 1 = Manual 2 = Program Normal (intended for general-purpose auto-exposure) 3 = Aperture Priority (intended for user-set aperture and camera-selected shutter speed) 4 = Shutter Priority (intended for user-set shutter speed and camera-selected aperture) 5 = Program Creative (biased toward greater “depth of field”) © ISO 2008 – All rights reserved 47 ISO/WD 12234-2 6 = Program Action (biased toward faster “shutter speed”) 7 = Portrait Mode (intended for close-up photos with the background out-of-focus) 8 = Landscape Mode (intended for landscapes with the background in good focus) 9.1.47 ExposureTime Tag Name = ExposureTime Tag = 33434 (829A.H) Type = RATIONAL Count = 1 or 2 Value = see below Default = None The ExposureTime tag shall specify the actual exposure time used when the image was captured. The units shall be seconds. EXAMPLE: An exposure time of 1/60 second is encoded as 1/60. When the exact value is known, the value shall be specified using a single number. Otherwise, two numbers shall be present to specify the range of the value. In this case, the first number shall be the minimum value and the second number shall be the maximum value The fields shall be defined as follows: Field No. 0 1 (optional) Table 13 ExposureTime Value Exact Exposure Time, if only one value is present. Minimum Exposure Time of the range of uncertainty, if two values are present Maximum Exposure Time of the range of uncertainty, if two values are present 9.1.48 FillOrder Tag Name = FillOrder Tag = 266 (010A.H) Type = SHORT Count = 1 Value = 1 Default = 1 See also BitsPerSample The FillOrder tag shall specify the logical order of bits within a byte of image sample data. The value shall be 1. Pixels with lower column values shall be stored in the higher-order bits of the byte. NOTE: It is easy and inexpensive for writers to reverse bit order by using a 256-byte lookup table. 48 © ISO 2008 – All rights reserved ISO/WD 12234-2 9.1.49 Flash Tag Name = Flash Tag = 37385 (9209.H) Type = SHORT Count = 1 Value = see below Default = None See also FlashEnergy The Flash tag shall specify whether or not flash was used when the image was captured. © ISO 2008 – All rights reserved 49 ISO/WD 12234-2 The field shall be subdivided into the following bit fields, with meanings as specified below: Table 14 Flash bit fields Bit field values Bit 0: Flash Fire Status bit: Interpretation 0 = Flash didn't fire 1 = Flash fired Bits 1 to 2: Flash Return Sense bits: 00 = No flash return sensing capability 01 = RESERVED 10 = Flash return not sensed 11 = Flash return sensed Bits 3 to 4: Flash Mode bits: 00 = Unknown flash mode 01 = Fill Flash mode (Flash is always on) 10 = Flash off mode (Flash is always off) 11 = Auto flash mode (Flash is on for dark scenes only, camera controlled) Bit 5: Flash Unit Present bit: 0 = Camera has flash unit 1 = Camera does not have a flash unit Bits 6 to 15: 0 (reserved) The composite value and flash status shall be one of the following: 0 = Flash did not fire 1 = Flash fired 5 = Flash fired, Flash return not sensed 7 = Flash fired, Flash return sensed 9 = Flash fired, Fill flash mode, Camera has no flash return sensing capability 13 = Flash fired, Fill flash mode, Flash return not sensed 15 = Flash fired, Fill flash mode, Flash return sensed 16 = Flash did not file, Flash “off” mode 24 = Flash did not fire, “Auto” flash mode 25 = Flash fired, “Auto” flash mode, Camera has no flash return sensing capability 29 = Flash fired, “Auto” flash mode, Flash return not sensed 31 = Flash fired, “Auto” flash mode, Flash return sensed 32 = Camera does not have a flash unit 9.1.50 FlashEnergy Tag Name = FlashEnergy Tag = 37387 (920B.H) 50 © ISO 2008 – All rights reserved ISO/WD 12234-2 Type = RATIONAL Count = 1 or 2 Value = Any positive rational number Default = None See also Flash The FlashEnergy tag shall specify the amount of flash energy that was used when the image was captured, in Beam Candle Power Seconds (BCPS). When the exact value is known, the value shall be specified using a single number. Otherwise, two numbers shall be present to specify the range of the value. In this case, the first number shall be the minimum value and the second number shall be the maximum value The fields shall be defined as follows: Table 15 FlashEnergy Value Field No. 0 1 (optional) Exact FlashEnergy, if only one value is present. Minimum FlashEnergy of the range of uncertainty, if two values are present Maximum FlashEnergy of the range of uncertainty, if two values are present 9.1.51 FNumber Tag Name = FNumber Tag = 33437 (829D.H) Type = RATIONAL Count = 1 or 2 Value = Any positive rational number Default = None The FNumber tag shall specify the actual lens f-number (ratio of lens aperture to focal length) used when the image was captured. <Editor's note: Is f/11 stored as 11/1 or 1/11?> When the exact value is known, the value shall be specified using a single number. Otherwise, two numbers shall be present to specify the range of the value. In this case, the first number shall be the minimum value and the second number shall be the maximum value The fields shall be defined as follows: © ISO 2008 – All rights reserved 51 ISO/WD 12234-2 Table 16 FNumber Value Field No. 0 1 (optional) Exact FNumber, if only one value is present. Minimum FNumber of the range of uncertainty, if two values are present Maximum FNumber of the range of uncertainty, if two values are present 9.1.52 FocalLength Tag Name = FocalLength Tag = 37386 (920A.H) Type = RATIONAL Count = 1 or 2 Value = Any positive rational number Default = None The FocalLength tag shall specify the lens focal length when the image was captured, in millimetres. EXAMPLE: A focal length of 50 mm is encoded as 50/1. When the exact value is known, the value shall be specified using a single number. Otherwise, two numbers shall be present to specify the range of the value. In this case, the first number shall be the minimum value and the second number shall be the maximum value The fields shall be defined as follows: Table 17 FocalLength Value Field No. 0 1 (optional) Exact FocalLength, if only one value is present. Minimum FocalLength of the range of uncertainty, if two values are present Maximum FocalLength of the range of uncertainty, if two values are present 9.1.53 FocalPlaneResolutionUnit Tag Name = FocalPlaneResolutionUnit Tag = 37392 (9210.H) Type = SHORT Count = 1 Value = see below Default = None See also FocalPlaneXResolution, FocalPlaneYResolution The FocalPlaneResolutionUnit tag shall specify the unit of measurement for the FocalPlaneXResolution and FocalPlaneYResolution tags. The value and measurement unit shall be one of the following: 1 = Inch 52 © ISO 2008 – All rights reserved ISO/WD 12234-2 2 = Metre 3 = Centimetre 4 = Millimetre 5 = Micrometre 9.1.54 FocalPlaneXResolution Tag Name = FocalPlaneXResolution Tag = 37390 (920E.H) Type = RATIONAL Count = 1 Value = A positive rational number Default = None See also FocalPlaneYResolution, FocalPlaneResolutionUnit The FocalPlaneXResolution tag shall specify the image resolution at the focal plane of the camera in number of pixels per FocalPlaneResolutionUnit in the ImageWidth direction for the main image. 9.1.55 FocalPlaneYResolution Tag Name = FocalPlaneYResolution Tag = 37391 (920F.H) Type = RATIONAL Count = 1 Value = A positive rational number Default = None See also FocalPlaneXResolution, FocalPlaneResolutionUnit The FocalPlaneYResolution tag shall specify the image resolution at the focal plane of the camera in number of pixels per FocalPlaneResolutionUnit in the ImageLength direction for the main image. 9.1.56 ForwardMatrix1 Tag Name = ForwardMatrix1 Tag = 50964 (C714.H) Type = SRATIONAL Count = 3 × ColorPlanes Value = see below © ISO 2008 – All rights reserved 53 ISO/WD 12234-2 Default = None The ForwardMatrix1 tag shall specify a matrix that maps white balanced camera colours to CIE XYZ D50 colours under the first calibration illuminant. NOTE: Details on applying this tag are provided in informative Annex C. 9.1.57 ForwardMatrix2 Tag Name = ForwardMatrix2 Tag = 50965 (C715.H) Type = SRATIONAL Count = 3 × ColorPlanes Value = see below Default = None The ForwardMatrix2 tag shall specify a matrix that maps white balanced camera colours to CIE XYZ D50 colours under the second calibration illuminant. 9.1.58 GPSInfo Tag Name = GPSInfo Tag = 34853 (8825.H) Type = LONG Count = 1 Value = Byte offset of the GPS IFD Default = None The GPSInfo tag shall specify the byte offset to the GPS IFD. The GPS IFD shall specify the position of the camera using data provided by a Global Positioning System (GPS) satellite receiver. The GPS IFD shall contain the GPSVersionID tag. 54 © ISO 2008 – All rights reserved ISO/WD 12234-2 The following GPSInfo tags may be present in the GPS IFD. Short description Table 18 GPSInfo tags Tag name Decimal Tag Hex Tag Type Count Default GPS tag version GPSVersionID 0 0 BYTE 4 North or South Latitude GPSLatitudeRef 1 1 ASCII 2 Latitude GPSLatitude 2 2 RATIONAL 3 East or West Longitude GPSLongitudeRef 3 3 ASCII 2 Longitude GPSLongitude 4 4 RATIONAL 3 Altitude Reference GPSAltitudeRef 5 5 BYTE 1 Altitude GPSAltitude 6 6 RATIONAL 1 GPS time (atomic clock) GPSTimeStamp 7 7 RATIONAL GPS satellites used for measurement GPSSatellites 8 8 ASCII Any GPS receiver status GPSStatus 9 9 ASCII 2 GPS measurement mode GPSMeasureMode 10 A ASCII 2 Measurement precision GPSDOP 11 B RATIONAL 1 Speed unit GPSSpeedRef 12 C ASCII 2 Speed of GPS receiver GPSSpeed 13 D RATIONAL 1 Reference for direction of movement GPSTrackRef 14 E ASCII 2 Direction of movement GPSTrack 15 F RATIONAL 1 Reference for direction of image GPSImgDirectionRef 16 10 ASCII 2 Direction of image GPSImgDirection 17 11 RATIONAL 1 Geodetic survey data used GPSMapDatum 18 12 ASCII Any Reference for latitude of destination GPSDestLatitudeRef 19 13 ASCII 2 Latitude of destination GPSDestLatitude 20 14 RATIONAL 3 Reference for longitude of destination GPSDestLongitudeRef 21 15 ASCII 2 Longitude of destination GPSDestLongitude 22 16 RATIONAL 3 Reference for bearing of destination GPSDestBearingRef 23 17 ASCII 2 Bearing of destination GPSDestBearing 24 18 RATIONAL 1 Reference for distance to destination GPSDestDistanceRef 25 19 ASCII 2 Distance to destination GPSDestDistance 26 1A RATIONAL 1 Name of GPS processing method GPSProcessingMethod 27 1B UNDEFINED Any Name of GPS area GPSAreaInformation 28 1C UNDEFINED Any GPS date GPSDateStamp 29 1D ASCII 11 GPS differential correction GPSDifferential 30 1E SHORT 1 0 3 'K' 'T' 'T' 'T' 'K' The GPSVersionID tag shall specify the version of this GPSInfo IFD, using 4 BYTES. The value shall be 2, 2, 0, 0 indicating version 2.2, for compatibility with the EXIF specification. © ISO 2008 – All rights reserved 55 ISO/WD 12234-2 The GPSLatitudeRef tag shall specify the latitude used in the GPSLatitude tag using “N” for north latitudes and “S” for south latitudes relative to the earth’s equator. The GPSLatitude tag shall specify the degrees, the minutes and the seconds respectively of the camera’s latitude. The GPSLongitudeRef tag shall specify the longitude used in the GPSLongitude tag, using “E” for east longitudes and “W” for west longitudes relative to the International Prime Meridian which is located by the astronomical observatory in Greenwich, UK. The GPSLongitude tag shall specify the degrees, the minutes and the seconds respectively of the camera’s longitude. The GPSAltitudeRef tag shall specify the altitude used as the reference altitude, using 0 for altitudes above sea level, and 1 for altitudes below sea level. The altitude reading shall be given in metres relative to sea level. The GPSAltitude tag shall specify the camera’s altitude in metres. The GPSTimeStamp tag shall specify the hours, minutes and seconds respectively of the GPS clock in UTC (Coordinated Universal Time). The GPSSatellites tag shall list the satellites used to determine the camera position. This tag can describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format of the ASCII string is not specified. If the GPS receiver is incapable of taking measurements, the value of this tag shall be set to NUL. The GPSStatus tag shall specify "A" for measurement in progress and "V" for measurement interrupted. The GPSMeasureMode tag shall specify "2" for a two-dimensional measurement in progress and "3" for a threedimensional measurement in progress. The GPSDOP tag shall specify the GPS DOP (data degree of precision). An HDOP value shall be written during a two-dimensional measurement and a PDOP value shall be written during a three-dimensional measurement. The GPSSpeedRef tag shall specify the unit for the GPSSpeed tag using "K" for kilometres per hour, "M" for miles per hour and "N" for knots. The GPSSpeed tag shall specify the speed of the GPS receiver. The GPSTrackRef tag shall specify the reference direction for the GPSTrack tag, using "T" for true direction and "M" for magnetic direction. The GPSTrack tag shall specify the direction of the GPS receiver movement, from 0/100 to 35999/100, in degrees. The GPSImgDirectionRef tag shall specify the reference direction for the GPSImgDirection tag, using "T" for true direction and "M" for magnetic direction. The GPSImgDirection tag shall specify the direction of the image when it was captured, from 0/100 to 35999/100, in degrees. The GPSMapDatum tag shall specify the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value shall be “TOKYO” or “WSG-84”. The GPSDestLatitudeRef tag shall specify the latitude of the destination point in the GPSDestLatitude tag, using “N” for north latitudes and “S” for south latitudes. The GPSDestLatitude tag shall specify the degrees, the minutes and the seconds respectively of the destination point. 56 © ISO 2008 – All rights reserved ISO/WD 12234-2 The GPSDestLongitudeRef tag shall specify the longitude of the destination point in the GPSDestLongitude tag, using “E” for east longitudes and “W” for west longitudes The GPSDestLongitude tag shall specify the degrees, the minutes and the seconds respectively of the destination point. The GPSDestBearingRef tag shall specify the reference bearing for the GPSDestBearing tag, using "T" for true direction and "M" for magnetic direction. The GPSDestBearing tag shall specify the bearing to the destination point, from 0/100 to 35999/100, in degrees. The GPSDestDistanceRef tag shall specify the unit for the GPSDestDistance tag using "K" for kilometres per hour, "M" for miles per hour and "N" for knots. The GPSDestDistance tag shall specify the distance to the destination point. For tags GPSLatitude, GPSLongitude, GPSDestLatitude, or GPSDestLongitude, when degrees, minutes and seconds are used, the format shall be dd/1, mm/1, and ss/1; when degrees and minutes are used, and fractions of minutes are expressed using two decimal places, the format shall be dd/1, mmmm/100 and 0/1. The following GPSInfo tags shall be specified in pairs. Both tags in a pair or none of the tags in a pair shall be present. - GPSLatitudeRef, GPSLatitude - GPSLongitudeRef, GPSLongitude - GPSTrackRef, GPSTrack - GPSDestLatitudeRef, GPSDestLatitude - GPSDestLongitudeRef, GPSDestLongitude NOTE: The GPSInfo tags specify the position of the camera, not the position of the subject being photographed. The position of the subject of the image can be represented using the GeoTIFF standard, which is a publicly available standard for relating TIFF image data to a projected coordinate system. 9.1.59 ICCProfile Tag Name = ICCProfile Tag = 34675 (8773.H) Type = UNDEFINED Count = length of the data in bytes Value = see below Default = None The ICCProfile tag shall contain an ICC device profile for the image's colour characterization. The profile shall be an input, display, output, or colorspace profile, as defined in ISO 15076-1. 9.1.60 ImageDescription Tag Name = ImageDescription Tag = 270 (010E.H) Type = ASCII © ISO 2008 – All rights reserved 57 ISO/WD 12234-2 Count = length of string Value = see below Default = None The ImageDescription tag shall provide textual description of the subject or purpose of the image. This tag may be present to provide other information related to the image. An empty string shall indicate “unknown”. 9.1.61 ImageHistory Tag Name = ImageHistory Tag = 37395 (9213.H) Type = ASCII Count = length of string Value = see below Default = None The ImageHistory tag shall specify what has been done to the image. The current information shall not be erased when adding new information to the image history. When changes are made, the additional information about the changes should be concatenated to the previous string. The new information should be separated by one or more ASCII blank spaces and shall be terminated with a NUL byte. 9.1.62 ImageLength Tag Name = ImageLength Tag = 257 (0101.H) Type = SHORT or LONG Count = 1 Value = A positive integer Default = None See also ImageWidth The ImageLength tag shall specify the number of rows in the stored image, as the number of scanlines in the image, at least 1. This may be the shorter or longer dimension of the image. 9.1.63 ImageNumber Tag Name = ImageNumber Tag = 37393 (9211.H) Type = SHORT or LONG Count = 1 Value = see below 58 © ISO 2008 – All rights reserved ISO/WD 12234-2 Default = None The ImageNumber tag shall specify the number assigned to an image. NOTE: This tag is useful when storing a burst of images that are “chained” together within the same file. 9.1.64 ImageWidth Tag Name = ImageWidth Tag = 256 (0100.H) Type = SHORT or LONG Count = 1 Value = A positive integer Default = None See also ImageLength The ImageWidth tag shall specify the number of columns in the stored image, as the number of pixels per scanline, at least 1. This may be the shorter or longer dimension of the image. 9.1.65 Interlace Tag Name = Interlace Tag = 34857 (8829.H) Type = SHORT Count = 1 Value = see below Default = None The Interlace tag shall specify the field number of multifield images. The tag allows for both simple vertical interlace of between 2 and 255 interlace fields per frame and for two-dimensional interlace of up to 127 vertical × 127 horizontal spatial offset locations per frame. The interlace mechanism may be used to store images for progressive transmission. For storing multiple interlace fields in one file, the different fields shall use the IFD chaining mechanism. For 2:1 vertical interlace, as employed in many video systems, the first field (lines 1, 3, 5 from the frame image) shall be indicated with a tag value = 1, and the second field shall be indicated with a tag value = 2. For 2-dimensional interlace, the 7 least significant bits of the value shall indicate the vertical field number 1 to 127, and the next 7 bits shall indicate the horizontal field number (1 to 127) minus 1. For 2-dimensional interlace the value shall be calculated as follows: t = v + (h – 1) × 128 where t = tag value for 2-dimensional interlace © ISO 2008 – All rights reserved 59 ISO/WD 12234-2 v = vertical field h = horizontal field The value shall be one of the following: Table 19 Interlace Field Number 0 Non-interlaced (progressive scan) 1 Vertical field 1, horizontal field 1 (video field 1, “odd” lines) 2 Vertical field 2, horizontal field 1 (video field 2, “even” lines) 3-127 Vertical field 3-127, horizontal field 1 129 Vertical field 1, horizontal field 2. 130-255 Vertical field 2-127, horizontal field 2 257-16255 Vertical field 1-127, horizontal field 3-127 NOTE: Values are corrected relative to TIFF/EP v1. Value 9.1.66 IPTC/NAA Tag Name = IPTC/NAA Tag = 33723 (83BB.H) Type = LONG or ASCII Count = length of the data in bytes Value = As defined by Application Record No. 2 of the IPTC-NAA Default = None <Editor's Note: The IPTC/NAA (International Press Telecommunications Council – Newspaper Association of America) tag (33723) will be updated to allow use of the XMP based IPTC Core" version 1.0 specification. > The IPTC/NAA tag shall specify relevant information concerning the image that is useful for newspaper photographs. The information is defined in Application Record No. 2 of the IPTC-NAA (International Press Telecommunications Council - Newspaper Association of America) Information Interchange Model and Digital Newsphoto Parameter Record, Version 2, April 14, 1993. This record includes the following information: Record Version, Object Name, Edit Status, Urgency, Category, Supplemental Category, Fixture Identifier, Keywords, Release Date, Release Time, Special Instructions, Reference Service, Reference Date, Reference Number, Date Created, Time Created, Originating Program, Program Version, Object Cycle, Byline, Byline Title, City, Province-State, Country Code, Country Name, Original Transmission Reference, Headline, Credit, Source, Caption, Caption Writer, Image Type. NOTE: A file with this tag is sometimes called RichTIFF. See Bibliography. 9.1.67 ISOSpeedRatings Tag Name = ISOSpeedRatings Tag = 34855 (8827.H) Type = SHORT 60 © ISO 2008 – All rights reserved ISO/WD 12234-2 Count = 1 or 3 Value = see below Default = None The ISOSpeedRatings tag shall specify the ISO speed and ISO speed latitude values as defined in ISO 12232. The first value shall be the ISO speed rating and the last two values shall be the minimum and maximum ISO speed latitude values. The last two values may be omitted for cameras that do not have an ISO speed latitude. For the allowed values, see tables in ISO 12232. 9.1.68 JPEGTables Tag Name = JPEGTables Tag = 347 (015B.H) Type = UNDEFINED Count = length of the data in bytes Value = A JPEG “abbreviated table specification” data stream Default = None See also Compression The JPEGTables tag shall specify JPEG quantization and Huffman tables for subsequent use by the JPEG decompression process. When this tag is present, these tables need not be duplicated in each segment (strip or tile), thus saving space and processing time. This tag may be present also in a single-segment file, although there is no space saving in this case. The JPEGTables tag shall contain a valid JPEG “abbreviated table specification” data stream. This data stream shall begin with SOI and end with EOI. It shall contain one or more JPEG tables, including: DQT (define quantization tables); DHT (define Huffman tables). 9.1.69 LensInfo Tag Name = LensInfo Tag = 50736 (C630.H) Type = RATIONAL Count = 4 Value = <Minimum focal length in mm, Maximum focal length in mm, Minimum f-stop at minimum focal length, Minimum f-stop at maximum focal length> Default = None The LensInfo tag shall specify information about the lens that captured the image. © ISO 2008 – All rights reserved 61 ISO/WD 12234-2 The values shall be as follows: Table 20 LensInfo Field No. Contents 0 Minimum focal length in mm 1 Maximum focal length in mm 2 Minimum f-stop (maximum aperture) at minimum focal length 3 Minimum f-stop (maximum aperture) at maximum focal length When the minimum f-stops are unknown, they should be encoded as 0/0. 9.1.70 LightSource Tag Name = LightSource Tag = 37384 (9208.H) Type = SHORT Count = 1 Value = see below Default = None The LightSource tag shall specify the illumination that was selected (manually or automatically) to be present when the image was captured. Bit 15 indicates whether or not a correlated colour temperature value is specified. When bit 15 = 0, then bits 0 to 14 shall specify one of the light sources in Table 21. When bit 15 = 1, then bits 0 to 14 shall specify an approximate correlated colour temperature in degrees Kelvin. <Editors note: ref for how to determine correlated colour temp> 62 © ISO 2008 – All rights reserved ISO/WD 12234-2 The value and illumination shall be as follows: Table 21 LightSource VALUE in Bits 14...0 when Bit 15 = 0 0 1 2 3 4 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 VALUE in Bits 14...0 when Bit 15 = 1 0 – 32767 Light Source Unidentified Daylight Fluorescent light Tungsten Lamp Flash Fine weather Cloudy weather Shade Daylight fluorescent (D 5700 - 7100K) Day white fluorescent (N 4600 - 5400K) Cool white fluorescent (W 3900 - 4500K) White fluorescent (WW 3200 - 3700K) Standard Illuminant A Standard Illuminant B Standard Illuminant C D55 Illuminant D65 Illuminant D75 Illuminant D50 Illuminant ISO studio tungsten Light Source Approximate correlated colour temperature of the scene illuminant in degrees Kelvin 9.1.71 LinearizationTable Tag Name = LinearizationTable Tag = 50712 (C618.H) Type = SHORT Count = Number of values in the table Value = see below Default = Identity table <0, 1, 2, 3, …, 32767> The LinearizationTable tag shall specify a lookup table for mapping stored values into linear values. The value in table position i shall specify the linear value corresponding to stored value i. No mapping is defined for stored values outside the range of the table. This single table shall apply to all the samples for each pixel, also for SamplesPerPixel > 1. NOTE: This tag is typically present to increase compression ratios by storing the raw data in a non-linear, more visually uniform space using a smaller set of stored values. © ISO 2008 – All rights reserved 63 ISO/WD 12234-2 9.1.72 LinearResponseLimit Tag Name = LinearResponseLimit Tag = 50734 (C62E.H) Type = RATIONAL Count = 1 Value = See below Default = 1 See also WhiteLevel The LinearResponseLimit tag shall specify the fraction of the encoding range above which the response may become significantly non-linear. The value shall be in the range [0, 1]. A value of 1 shall mean that the sensor is linear up to the value specified in the WhiteLevel tag. NOTE: Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in colour shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. <Editor's NOTE: More information is needed to define this tag value> Now added. 9.1.73 LocalizedCameraModel Tag Name = LocalizedCameraModel Tag = 50709 (C615.H) Type = ASCII or BYTE Count = length of the data in bytes Value = null terminated UTF-8 encoded string Default = Same as UniqueCameraModel See also Make, Model, Software, UniqueCameraModel, CameraSerialNumber The LocalizedCameraModel tag shall specify a localized version of the UniqueCameraModel. NOTE: With this tag the in-file camera name can match the localization of the camera's name for different markets. 9.1.74 Make Tag Name = Make Tag = 271 (010F.H) Type = ASCII Count = length of string 64 © ISO 2008 – All rights reserved ISO/WD 12234-2 Value = see below Default = None See also Model, Software, UniqueCameraModel, LocalizedCameraModel, CameraSerialNumber The Make tag shall specify the manufacturer or vendor of the camera. An empty string shall indicate “unknown”. 9.1.75 MakerNoteSafety Tag Name = MakerNoteSafety Tag = 50741 (C635.H) Type = SHORT Count = 1 Value = 0 or 1 Default = 0 See also EXIF MakerNote The MakerNoteSafety tag shall specify whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. The value and meaning shall be one of the following: 0 = unsafe 1 = safe When the value is 1, the MakerNote shall meet these requirements: The MakerNote data shall be self-contained. All offsets within the MakerNote shall be offsets relative to the start of the MakerNote, and shall not point to bytes outside the MakerNote. - The MakerNote data shall be byte-order independent. - Moving the data to a file with a different byte order shall not invalidate it. A thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image. - <Editors note: the need/use of this tag is debated. Comments?> 9.1.76 MaskedAreas Tag Name = MaskedAreas Tag = 50830 (C68E.H) Type = SHORT or LONG Count = 4 × number of rectangles Value = <top row, left column, bottom row, right column> for each rectangle © ISO 2008 – All rights reserved 65 ISO/WD 12234-2 Default = None The MaskedAreas tag shall specify a list of non-overlapping rectangles of fully masked pixels, with which a reader can measure the black encoding level. The values shall be the top row, left column, bottom row, and right column positions for each rectangle. Rectangles shall not extend beyond the stored image. If the raw image data has had its black encoding level subtracted, this tag shall not be present, since the masked pixels are no longer useful. When the MaskedAreas tag is present, the BlackLevel tag should be present. Readers may ignore the MaskedAreas tag. 9.1.77 MaxApertureValue Tag Name = MaxApertureValue Tag = 37381 (9205.H) Type = SRATIONAL <Editors note: Rational or SRational?> Count = 1 Value = see below Default = None The MaxApertureValue tag shall specify the maximum possible aperture opening (minimum lens f-number) of the camera, in APEX units. The value should be in the range [0.00, 99.99]. <Editors note: behaviour for value < 0> 9.1.78 MeteringMode Tag Name = MeteringMode Tag = 37383 (9207.H) Type = SHORT Count = 1 Value = see below Default = None The MeteringMode tag shall specify the metering mode (the camera’s method of spatially weighting the scene luminance values to determine the sensor exposure) used when the image was captured. 66 © ISO 2008 – All rights reserved ISO/WD 12234-2 The value and meaning shall be one of the following: 0 = Unidentified 1 = Average 2 = Centre Weighted Average 3 = Spot 4 = Multi-Spot 9.1.79 Model Tag Name = Model Tag = 272 (0110.H) Type = ASCII Count = length of string Value = see below Default = None See also Make, Software, UniqueCameraModel, LocalizedCameraModel, CameraSerialNumber The Model tag shall specify the model name or number of the camera. This may include the serial number of the camera. An empty string shall indicate “unknown”. 9.1.80 NewSubFileType Tag Name = NewSubFileType Tag = 254 (00FE.H) Type = LONG Count = 1 Value = see below Default = None The NewSubFileType tag shall specify the type of image that the IFD contains. Exactly one IFD shall have a NewSubFileType value = 0. © ISO 2008 – All rights reserved 67 ISO/WD 12234-2 The value and image type shall be one of the following: Table 22 NewSubFileType Value The type of image in the IFD 0 Main image 1 Rendered preview or thumbnail 1001.H Alternative image 9.1.81 Noise Tag Name = Noise Tag = 37389 (920D.H) Type = UNDEFINED Count = length of the data in bytes Value = see below Default = None The Noise tag shall specify camera noise measurement values, measured as specified in ISO 15739. The tag contents shall use the following format: <Editors note: this is underspecified > Table 23 Noise table Byte position Field length in bytes Contents Type 0 Count 2 n = number of table columns SHORT 1 2 2 m = number of table rows SHORT 1 4 zzz n column headings, each stored as a null-terminated ASCII string ASCII 4 + zzz nxmx8 zzz n x m table entries in row major order (all data of first row RATIONAL n x m given first) EXAMPLE: Measured noise data: Table 24 Noise example Signal level (code values) R rms noise G rms noise B rms noise 32 1,5 1,0 2,5 128 2,5 1,5 2,9 240 3,0 2,0 3,4 9.1.82 NoiseProfile Tag Name = NoiseProfile 68 © ISO 2008 – All rights reserved ISO/WD 12234-2 Tag = 51041 (C761.H) Type = DOUBLE Count = 2 or 2 × SamplesPerPixel or 2 × ColorPlanes Value = <S1, O1, S2, O2, … Sn, On> Default = None <Editors note: This tag is candidate for deletion or major rewrite.> The NoiseProfile tag shall specify the estimated amount of noise present in the image data. This tag models two common sources of noise: Photon (shot) noise, which has a white Poisson distribution, and Electronic readout noise, which is present even in the absence of light and is assumed to have an approximately white normal (Gaussian) distribution. The noise model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (for example, pixel response non-uniformity, spatially-dependent thermal effects, etc.). If noise reduction has been applied, the tag may be present to specify the estimated residual noise in image data. The tag shall contain n sets of noise model parameters, where n shall be 1, or the number of components (SamplesPerPixel) in the image, or the number of colour planes (CFAPlaneColor) in the image. When n = 1, the single parameter set shall apply to all image planes, else a parameter set shall apply only to the corresponding component or colour plane. When PhotometricInterpretation = 32803 (CFA), the n parameter sets shall be in the plane order specified by the CFAPlaneColor tag, else the n parameter sets shall be in the component order. Each parameter set shall have two values, here called S and O, respectively. The estimated amount of noise shall be calculated as follows: N (x) = Sqrt (S × x + O) where - N (x) shall be the estimated standard deviation of the normalized random variable x - x represents a linear signal in the range [0, 1], - S shall be the variance of the signal-dependent noise, excluding O, - O shall be the variance of the (signal-independent) sensor read-out noise, - S and O shall be relative to the normalized signal x in the range [0, 1], - S shall be positive, and O shall be non-negative (S > 0 and O ≥ 0). © ISO 2008 – All rights reserved 69 ISO/WD 12234-2 EXAMPLE: A typical noise level at ISO 100 corresponds approximately to NoiseProfile parameter values of S = 0.00002 and 0 = 0.00000045 giving a normalized standard deviation of ~ 0.00201 when x = 0.18. NOTE 1: N is relative to the normalized signal x in the range [0, 1], thus, the denormalized standard deviation is N (x) × maximum component intensity, and the example value corresponds to 0.5 digital counts for 8-bit samples. NOTE 2: While the signal x is linear in relation to the photon count, code values in non-linear colour space encodings, such as sRGB, are not. 9.1.83 OECF Tag Name = OECF Tag = 34856 (8828.H) Type = UNDEFINED Count = length of the data in bytes Value = see below Default = None The OECF tag shall specify the “Opto-Electronic Conversion Function” (OECF) values as defined in ISO 14524, which shall be stored as a table with headings. The OECF shall be the relationship between the optical input and the image file code value outputs of an electronic camera. The columns of the table may provide the camera OECF values, or the focal plane OECF values, or both. This document does not prescribe the values for the column headings.. <Editors note: tighten for open sys use> The tag contents shall use the following format: Byte position Field length in bytes Table 25 OECF table Contents Type 0 2 n = number of table columns SHORT 1 2 2 m = number of table rows SHORT 1 4 zzz n column headings, each stored as a nullterminated ASCII string ASCII 4 + zzz n×m×8 n × m table entries in row major order (all data of SRATIONAL first row given first) Count zzz n×m EXAMPLE: An OECF data table: Camera log exposure Table 26 OECF example Red output level Green output level Blue output level –3,0 10,2 12,4 8,9 –2,0 48,1 47,5 48,3 –1,0 150,2 152,0 149,8 <Editors note: Note, the type must be SRATIONAL to store the example table> 70 © ISO 2008 – All rights reserved ISO/WD 12234-2 9.1.84 OpcodeList1 Tag Name = OpcodeList1 Tag = 51008 (C740.H) Type = UNDEFINED Count = length of the data in bytes Value = Opcode List Default = None The OpcodeList1 tag shall specify a list of opcodes that should be applied to the raw image, as read directly from the file. The format and processing details of an opcode list shall be as defined in Chapter 7, "Opcode List Processing". 9.1.85 OpcodeList2 Tag Name = OpcodeList2 Tag = 51009 (C741.H) Type = UNDEFINED Count = length of the data in bytes Value = Opcode List Default = None The OpcodeList2 tag shall specify a list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values. The format and processing details of an opcode list shall be as defined in Chapter 7, "Opcode List Processing". 9.1.86 OpcodeList3 Tag Name = OpcodeList3 Tag = 51022 (C74E.H) Type = UNDEFINED Count = length of the data in bytes Value = Opcode List Default = None The OpcodeList3 tag shall specify a list of opcodes that should be applied to the raw image, just after it has been demosaiced. The format and processing details of an opcode list shall be as defined in Chapter 7, "Opcode List Processing". 9.1.87 Orientation Tag Name = Orientation © ISO 2008 – All rights reserved 71 ISO/WD 12234-2 Tag = 274 (0112.H) Type = SHORT Count = 1 Value = see below Default = None The Orientation tag shall specify the orientation of the image. With the Orientation tag, file browsers can perform lossless rotation of images by modifying a single byte of the file. Readers should support all possible orientations, including mirrored orientations, for backward compatibility. The value shall be one of the following: Table 27 Orientation Orientation The first row represents the visual top of the image and the first column represents the visual left-hand side. The orientation is known to be in the normal “landscape” orientation. 2 The first row represents the visual top of the image, and the first column represents the visual right-hand side. This corresponds to Orientation 1 mirrored left-right. 3 The first row represents the visual bottom of the image and the first column represents the visual right-hand side. This corresponds to Orientation 1 rotated 180 degrees. 4 The first row represents the visual bottom of the image, and the first column represents the visual left-hand side. This corresponds to Orientation 1 mirrored top-down. 5 The first row represents the visual left-hand side of the image, and the first column represents the visual top. This corresponds to Orientation 1 rotated clockwise 90 degrees, then mirrored left-right. 6 The first row represents the visual right-hand side of the image and the first column represents the visual top. This corresponds to Orientation 1 rotated clockwise 90 degrees. 7 The first row represents the visual right-hand side of the image, and the first column represents the visual bottom. This corresponds to Orientation 1 rotated clockwise 90 degrees, then mirrored top-down. 8 The first row represents the visual left-hand side of the image and the first column represents the visual bottom. This corresponds to Orientation 1 rotated counterclockwise 90 degrees. 9 Orientation is unknown. NOTE: Orientations 2, 4, 5, and 7 are mirrored orientations intended for use with mirror-rig stereoscopic cameras. Value 1 9.1.88 OriginalRawFileData Tag Name = OriginalRawFileData Tag = 50828 (C68C.H) Type = UNDEFINED Count = length of the data in bytes Value = See below Default = None 72 © ISO 2008 – All rights reserved ISO/WD 12234-2 The OriginalRawFileData tag shall contain the compressed contents of the original raw file, if this image was converted from a raw image that was not a TIFF/EP image. The contents of this tag shall be in big-endian byte order. The tag shall contain a sequence of data blocks. The order, type, and contents of the data blocks shall be as specified in Table 28: Table 28 Data Block Sequence Ordering Type Data block contents 1 FORK Data fork of original raw file 2 FORK Mac OS resource fork of original raw file 3 BYTE [4] Mac OS file type of original raw file 4 BYTE [4] Mac OS file creator of original raw file 5 FORK Data fork of sidecar thumbnail file 6 FORK Mac OS resource fork of sidecar thumbnail file 7 BYTE [4] Mac OS file type of sidecar thumbnail file 8 BYTE [4] Mac OS file creator of sidecar thumbnail file Non-existent forks shall be encoded as data blocks having zero length. Unknown or non-existent Mac OS file types and file creators shall be encoded as <0, 0, 0, 0>. When a thumbnail file does not exist, the corresponding four entries shall be omitted or encoded as non-existent data. NOTE: Sidecar thumbnail files are assumed to have the file extension ".thm". There shall be no padding or alignment bytes between data blocks. Data blocks may be missing from the end of the sequence. Readers should handle such case, and should assume a default value for all the missing blocks. Readers should ignore extra bytes when parsing this tag, as future versions of this standard may define additional data blocks. <Editors note: review for implications in future versions. Delete?> Each fork (data fork or Mac OS resource fork) shall be encoded as specified in Table 29: Table 29 Fork storage structure Field Type ForkLength LONG Field length in bytes 4 Index [n] LONG [n] 4×n EndPointer LONG … ZIP [n] If (n > 0) 4 else 0 Any Contents The number of bytes in the original data fork (before compression into this fork storage structure) Offset to the start of the compressed data for each compression block 1 to n, where n = Floor ((ForkLength + 65535) / 65536). The total length of this fork storage structure, in number of bytes. When ForkLength = 0, this field shall be omitted Compressed data for each block 1 to n. The original data shall be partitioned into n non-overlapping blocks of 64Kbytes. Each block shall be ZIP-compressed and stored here, in any order. The last block may be less than 64Kbytes long before compression. All offsets shall be relative to the start of the ForkLength field. © ISO 2008 – All rights reserved 73 ISO/WD 12234-2 NOTE: n = 0 for ForkLength = 0. 9.1.89 OriginalRawFileDigest Tag Name = OriginalRawFileDigest Tag = 50973 (C71D.H) Type = BYTE Count = 16 Value = see below Default = None The OriginalRawFileDigest tag shall specify an MD5 digest of the data stored in the OriginalRawFileData tag. 9.1.90 OriginalRawFileName Tag Name = OriginalRawFileName Tag = 50827 (C68B.H) Type = ASCII or BYTE Count = Length of the data in bytes Value = Null terminated UTF-8 encoded string Default = None The OriginalRawFileName tag shall specify the file name of the original raw file, if this image was converted from a raw image that was not a TIFF/EP image. 9.1.91 PhotometricInterpretation Tag Name = PhotometricInterpretation Tag = 262 (0106.H) Type = SHORT Count = 1 Value = see below Default = None See also BitsPerSample, SamplesPerPixel, PlanarConfiguration, CFARepeatPatternDim, CFAPattern, ReferenceBlackWhite, YCbCrCoefficients, YCbCrPositioning, YCbCrSubSampling. The PhotometricInterpretation tag shall specify the general type of the colour space (the colour model) of the image data components and the order of the components. 74 © ISO 2008 – All rights reserved ISO/WD 12234-2 The value shall be one of the following: Value 1 2 6 32803 34892 Table 30 PhotometricInterpretation Image colour space BitsPerSample Gray (Gray component). Black shall be 0 and white shall be 2 -1 RGB (red, green and blue components). The component order shall be R, G, B. Minimum BitsPerSample component intensity shall be 0, and maximum intensity shall be 2 - 1. YCbCr (Y for the luminance component, Cb and Cr for the two chrominance components). The component order shall be Y, Cb, Cr. CFA (Colour Filter Array). Describes “raw” image data from single-chip colour sensors having a colour filter array (CFA) overlay. SamplesPerPixel shall be 1. PlanarConfiguration shall be 1 (Chunky). SensingMethod shall be 2. The spatial sampling pattern of the colour filter array shall be defined using the CFARepeatPatternDim and CFAPattern tags. For each pixel location a filtered colour sample value shall be specified, with the filter colour defined by the CFAPattern tag. For each pixel value, 0 shall represent minimum intensity, and BitsPerSample 2 - 1 shall represent maximum intensity. Raw (a multi-channel colour space). The component order shall be as defined by the CFAPlaneColor tag. This PhotometricInterpretation value is intended for use by cameras that do not use colour filter arrays, but instead capture all colour components at each pixel. This PhotometricInterpretation value may also be used for CFA data that has already been de-mosaiced. 9.1.92 PlanarConfiguration Tag Name = PlanarConfiguration Tag = 284 (011C.H) Type = SHORT Count = 1 Value = see below Default = None See also BitsPerSample, SamplesPerPixel The PlanarConfiguration tag shall specify how the components (samples) of each pixel are stored. The value shall be one of the following: Table 31 PlanarConfiguration Planar Configuration Chunky format. The component values for each pixel shall be stored adjacent to each other, in the order specified by the PhotometricInterpretation tag. The chunky format shall be used when the PhotometricInterpretation value is 1 (Gray) or 32803 (CFA) or SamplesPerPixel = 1. 2 Planar format. The components shall be stored in separate component planes, in the order specified by the PhotometricInterpretation tag. EXAMPLE: Chunky data when PhotometricInterpretation equals 2 (RGB) is stored as RGBRGBRGB. Value 1 9.1.93 PreviewApplicationName Tag Name = PreviewApplicationName Tag = 50966 (C716.H) Type = ASCII or BYTE © ISO 2008 – All rights reserved 75 ISO/WD 12234-2 Count = length of the data in bytes Value = null terminated UTF-8 encoded string Default = None See also PreviewApplicationVersion, PreviewColorSpace, PreviewDateTime, PreviewSettingsDigest, PreviewSettingsName The PreviewApplicationName tag shall specify the name of the application that created the preview. 9.1.94 PreviewApplicationVersion Tag Name = PreviewApplicationVersion Tag = 50967 (C717.H) Type = ASCII or BYTE Count = length of the data in bytes Value = null terminated UTF-8 encoded string Default = None See also PreviewApplicationName, PreviewColorSpace, PreviewDateTime, PreviewSettingsDigest, PreviewSettingsName The PreviewApplicationVersion tag shall specify the version number of the application that created the preview. 9.1.95 PreviewColorSpace Tag Name = PreviewColorSpace Tag = 50970 (C71A.H) Type = LONG Count = 1 Value = see below Default =See below See also ICCProfile, PreviewApplicationName, PreviewApplicationVersion, PreviewDateTime, PreviewSettingsDigest ,PreviewSettingsName The PreviewColorSpace tag shall specify the colour space of the preview. When the ICCProfile tag is present, the PreviewColorSpace tag shall not be present. 76 © ISO 2008 – All rights reserved ISO/WD 12234-2 The value shall be one of the following: 0 = Unknown 1 = Gray Gamma 2.2 2 = sRGB 3 = Adobe RGB 4 = ProPhoto RGB When PhotometricInterpretation = 1, the value may be 0 or 1. When PhotometricInterpretation = 2, the value may be 0, 2, 3, or 4, but not 1. The default value colour space of the preview depends on the PhotometricInterpretation value, and shall be as follows: Table 32 Default preview color space PhotometricInterpretation Default preview color space 1 (gray) Gray Gamma 2.2 2 (RGB) sRGB 6 (YCbCr) sYCC 9.1.96 PreviewDateTime Tag Name = PreviewDateTime Tag = 50971 (C71B.H) Type = ASCII Count = length of string Value = null terminated string Default = None See also PreviewApplicationName, PreviewApplicationVersion, PreviewColorSpace, PreviewSettingsDigest ,PreviewSettingsName The PreviewDateTime tag shall specify the date and time the preview was rendered, in ISO 8601 format. 9.1.97 PreviewSettingsDigest Tag Name = PreviewSettingsDigest Tag = 50969 (C719.H) Type = BYTE Count = 16 Value = see below Default = None © ISO 2008 – All rights reserved 77 ISO/WD 12234-2 See also PreviewApplicationName, PreviewApplicationVersion, PreviewColorSpace, PreviewDateTime, PreviewDateTime, PreviewSettingsName The PreviewSettingsDigest tag shall specify a unique ID of the conversion settings (for example MD5 digest) used to render the preview. 9.1.98 PreviewSettingsName Tag Name = PreviewSettingsName Tag = 50968 (C718.H) Type = ASCII or BYTE Count = length of the data in bytes Value = null terminated UTF-8 encoded string Default = None See also PreviewApplicationName, PreviewApplicationVersion, PreviewColorSpace, PreviewDateTime, PreviewDateTime, PreviewSettingsDigest The PreviewSettingsName tag shall specify a name of the conversion settings (for example “snapshot name”) used for the preview. 9.1.99 ProfileCopyright Tag Name = ProfileCopyright Tag = 50942 (C6FE.H) Type = ASCII or BYTE Count = length of the data in bytes Value = null terminated UTF-8 encoded string Default = None The ProfileCopyright tag shall specify the copyright information for the camera profile. <editor's note; What's a camera profile? tags?> This string should always be preserved along with the other camera profile tags. 9.1.100 ProfileEmbedPolicy Tag Name = ProfileEmbedPolicy Tag = 50941 (C6FD.H) Type = LONG Count = 1 Value = see below 78 © ISO 2008 – All rights reserved ISO/WD 12234-2 Default = 0 The ProfileEmbedPolicy tag shall specify the usage rules for the associated camera profile. The value shall be one of the following: Value 0 1 2 3 Table 33 Profile Embedding Policy Usage policy Allow copying. The camera profile may be used in processing of or for embedding in any TIFF/EP Profile 2 image. It may be copied out of TIFF/EP files and into other TIFF/EP Profile 2 images, or copied out of TIFF/EP files and stored on the user’s system for use in processing of or for embedding in any TIFF/EP Profile 2 image. Embed if used. Same rules as case 0 (“Allow copying”), except the camera profile shall not be copied out of a TIFF/EP file for use in processing any other image except the image it is embedded in, unless the profile is already stored on the user’s system. Embed never. This value only applies to profiles stored a user’s system, and not already embedded in TIFF/EP Profile 2 images. These stored profiles may be used to process images, but shall not be embedded in images. If the camera profile is embedded in a TIFF/EP Profile 2 image, this value shall have the same restrictions as case 1 (“Embed if used”). No restrictions. The camera profile creator has not placed any restrictions of the use of the camera profile. 9.1.101 ProfileToneCurve Tag Name = ProfileToneCurve Tag = 50940 (C6FC.H) Type = FLOAT Count = Number of samples × 2 Value = see below Default = None The ProfileToneCurve tag shall specify a default tone curve that may be applied while processing the image as a starting point for user adjustments. The curve shall be a list of 32-bit IEEE float point value pairs in linear gamma. Each sample shall have an input value in the range [0, 1], and an output value in the range [0, 1]. The first sample shall be <0, 0>, and the last sample shall be <1, 1>. The curve should be interpolated using a cubic spline. 9.1.102 RawDataType Tag Name = RawDataType Tag = To be defined (TO BE DEFINEDFF.H) Type = ??? Count = To be defined Value = see below © ISO 2008 – All rights reserved 79 ISO/WD 12234-2 Default = None The RawDataType tag shall specify which of the following need to be performed, and the required metadata/op codes to perform them: 1. Dark current subtraction 2. Flare subtraction 3. Sensor defect concealment / correction 4. Uniformity correction 5. Noise reduction 6. Colour de-mosaicing 7. White balancing 8. Sensor colour correction (for example 3x3 error minimization matrix) <Editors note: This tag is not future proof. How will it change in future versions? How easy to extend?> <Editor's NOTE: More information is needed to define this tag value> 9.1.103 RawDataUniqueID Tag Name = RawDataUniqueID Tag = 50781 (C65D.H) Type = BYTE Count = 16 Value = See below Default = None The RawDataUniqueID tag shall specify a 16-byte unique identifier for the raw image data. The identifier should be created using an algorithm that shall ensure that it shall be very unlikely two different images will end up having the same identifier. NOTE: Readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. 9.1.104 RawImageDigest Tag Name = RawImageDigest Tag = 50972 (C71C.H) Type = BYTE Count = 16 Value = see below 80 © ISO 2008 – All rights reserved ISO/WD 12234-2 Default = None The RawImageDigest tag shall specify an MD5 digest of the raw image data. All the pixels in the image shall be processed, in row-scan order. Each pixel shall be padded with 0 to 15 zero-bits to a multiple of 16 bits. <Editors note: lead or trail?> The data for each pixel shall be processed in little-endian byte order. 9.1.105 ReductionMatrix1 Tag Name = ReductionMatrix1 Tag = 50725 (C625.H) Type = SRATIONAL Count = 3 × ColorPlanes Value = See below Default = None The ReductionMatrix1 tag shall specify a dimensionality reduction matrix for use as the first stage in converting colour camera native space values to CIE XYZ values, under the first calibration illuminant. This tag shall not be present when ColorPlanes is 3. The matrix shall be stored in row scan order. 9.1.106 ReductionMatrix2 Tag Name = ReductionMatrix2 Tag = 50726 (C626.H) Type = SRATIONAL Count = 3 × ColorPlanes Value = See below Default = None The ReductionMatrix2 tag shall specify a dimensionality reduction matrix for use as the first stage in converting colour camera native space values to CIE XYZ values, under the second calibration illuminant. This tag shall not be present when ColorPlanes is 3. The matrix shall be stored in row scan order. 9.1.107 ReferenceBlackWhite Tag Name = ReferenceBlackWhite © ISO 2008 – All rights reserved 81 ISO/WD 12234-2 Tag = 532 (0214.H) Type = RATIONAL Count = 6 Value = <Y.ReferenceBlack, Y.ReferenceWhite, Cb.ReferenceBlack, Cb.ReferenceWhite, Cr.ReferenceBlack, Cr.ReferenceWhite> Default = None See also PhotometricInterpretation, YCbCrCoefficients, YCbCrPositioning, YCbCrSubSampling The ReferenceBlackWhite tag shall specify headroom and footroom code values as pairs for each component in Y, Cb and Cr. The values in a pair shall represent ReferenceBlack and ReferenceWhite respectively. The pairs shall be in the order Y, Cb and Cr. The ReferenceBlackWhite tag shall be present when and only when PhotometricInterpretation = 6 (YCbCr). The full range component value shall be converted from the code value by: f = (v - k) × r / (w - k) The code value shall be converted from the full-range component value by: v = f × (w - k) / r + k For the luminance component (Y), the CodingRange shall be defined as: b r=2 -1 For the Cb and Cr components, the CodingRange shall be defined as: r = 127 where the following values shall be per component b = BitsPerSample f = Full Range Value k = ReferenceBlack r = CodingRange v = Code value w = ReferenceWhite NOTE: Useful ReferenceBlackWhite values for YCbCr images having BitsPerSample = 8,8,8 are: - 0/1, 255/1, 128/1, 255/1, 128/1, 255/1 for no headroom/footroom; - 15/1, 235/1, 128/1, 240/1, 128/1, 240/1 for CCIR Recommendation 601.1 headroom/footroom. Using the CCIR Recommendation 601.1 headroom/footroom values, code 15 represents ReferenceBlack and code 235 represents ReferenceWhite for the luminance component (Y). For chrominance components, Cb and Cr, code 128 represents ReferenceBlack and code 240 represents ReferenceWhite. With Cb and Cr, the ReferenceWhite value codes reference blue and reference red respectively. 82 © ISO 2008 – All rights reserved ISO/WD 12234-2 In the case of no headroom/footroom, the conversion of luminance (Y) can be skipped because the value equals the code. For Cb and Cr, ReferenceBlack is still subtracted from the code. 9.1.108 ResolutionUnit Tag Name = ResolutionUnit Tag = 296 (0128.H) Type = SHORT Count = 1 Value = see below Default = None See also XResolution, YResolution The ResolutionUnit tag shall specify the unit of measurement for the XResolution and YResolution tags. The value and unit of measurement shall be one of the following: 1 = No absolute unit of measurement 2 = Inch 3 = Centimetre 9.1.109 RowInterleaveFactor Tag Name = RowInterleaveFactor Tag = 50975 (C71F.H) Type = SHORT or LONG Count = 1 Value = RowInterleaveFactor Default = 1 The RowInterleaveFactor tag shall specify that rows of the image shall be stored in interleaved order. The value of the tag shall specify the number of interleaved fields. <Editor's NOTE: More information is needed > 9.1.110 RowsPerStrip Tag Name = RowsPerStrip Tag = 278 (0116.H) Type = SHORT or LONG Count = 1 © ISO 2008 – All rights reserved 83 ISO/WD 12234-2 Value = An integer in the range [1, ImageLength] Default = None See also ImageLength, StripOffsets, and StripByteCounts The RowsPerStrip tag shall specify the number of rows per strip within the image. Image data is stored as strips or tiles. The StripByteCounts, RowsPerStrip, and StripOffsets tag shall be present when and only when the image data is stored as strips. StripsPerImage = ceiling (ImageLength / RowsPerStrip) 9.1.111 SampleFormat Tag Name = SampleFormat Tag = 339 (0153.H) Type = SHORT Count = SamplesPerPixel Value = see below Default = 1 (Unsigned integer data) See also BitsPerSample The SampleFormat tag shall specify the data type of each sample in a pixel. The value and data type per sample shall be one of the following: 1 = Unsigned integer 2 = Signed integer 3 = IEEE floating point 4 = Undefined The value "Undefined" should not be used. A writer may use a value of “Undefined” to indicate that it does not know the data type of the samples, for example, when copying an existing image. A reader may ignore a SampleFormat tag having a value of "Undefined". NOTE: The SampleFormat tag does not specify the size of samples. This is specified in the BitsPerSample tag. 9.1.112 SamplesPerPixel Tag Name = SamplesPerPixel Tag = 277 (0115.H) Type = SHORT Count = 1 Value = see below 84 © ISO 2008 – All rights reserved ISO/WD 12234-2 Default = None See also PhotometricInterpretation The SamplesPerPixel tag shall specify the number of components in each pixel in the image. The value shall be one of the following: Table 34 SamplesPerPixel Value Conditions 1 PhotometricInterpretation = 1 (greyscale) or 32803 (CFA) 3 PhotometricInterpretation = 2 (RGB) or 6 (YCbCr) 1 to 7 PhotometricInterpretation = 34892 (Raw) 9.1.113 SecurityClassification Tag Name = SecurityClassification Tag = 37394 (9212.H) Type = ASCII Count = length of string Value = see below Default = None The SecurityClassification tag shall specify the level of security classification assigned to the image. The fields and values shall be interpreted as defined in MIL-STD-2500A. The tag value may be a single ASCII character or a multicharacter ASCII string. The single character shall be T (= Top Secret), S (= Secret), C (= Confidential), R (= Restricted), or U (= Unclassified). © ISO 2008 – All rights reserved 85 ISO/WD 12234-2 The multicharacter ASCII string shall include one or more of the fields in Table 35. The fields should appear in the order listed in the table. A NULL shall be inserted between each field and its associated value. A NULL character shall be inserted after each value. Field FSCLAS FSCODE FSCLTH FSREL FSCAUT FSCTLN FSDWNG FSDEVT Table 35 NITF SecurityClassification Name Size Value range File Security Classification 1 T, S, C, R or U File Codewords 40 Alphanumeric File Control and Handling 40 Alphanumeric File Releasing Instructions 40 Alphanumeric File Classification Authority 20 Alphanumeric File Security Control Number 20 Alphanumeric File Security Downgrade 6 Alphanumeric File Downgrading Event 40 Alphanumeric Type Required Optional Optional Optional Optional Optional Optional Conditional 9.1.114 SelfTimerMode Tag Name = SelfTimerMode Tag = 34859 (882B.H) Type = SHORT Count = 1 Value = see below Default = None The SelfTimerMode tag shall specify the number of seconds the image capture was delayed from the time the “take picture button” was pressed by the camera operator. A value of zero shall specify that the self-timer is off. 9.1.115 SensingMethod Tag Name = SensingMethod Tag = 37399 (9217.H) Type = SHORT Count = 1 Default = None The SensingMethod tag shall specify the type of image sensor used when the image was captured. 86 © ISO 2008 – All rights reserved ISO/WD 12234-2 The value and sensing method shall be one of the following: 0 = Undefined 1 = Monochrome Area sensor 2 = One-Chip Colour Area sensor 3 = Two-Chip Colour Area sensor 4 = Three-Chip Colour Area sensor 5 = Colour Sequential Area sensor 6 = Monochrome Linear sensor 7 = Tri-Linear sensor 8 = Colour Sequential Linear sensor 9.1.116 ShadowScale Tag Name = ShadowScale Tag = 50739 (C633.H) Type = RATIONAL Count = 1 Value = see below Default = 1 The ShadowScale tag shall specify the sensitivity of the "Shadows" slider. <Editor's NOTE: More information is needed to define this tag value> 9.1.117 ShutterSpeedValue Tag Name = ShutterSpeedValue Tag = 37377 (9201.H) Type = RATIONAL Count = 1 Value = Any positive rational number Default = None The ShutterSpeedValue tag shall specify the shutter speed value used when the image was captured, in APEX units. 9.1.118 Software Tag Name = Software © ISO 2008 – All rights reserved 87 ISO/WD 12234-2 Tag = 305 (0131.H) Type = ASCII Count = length of string Value = see below Default = None See also Make, Model, UniqueCameraModel, LocalizedCameraModel, CameraSerialNumber The Software tag shall specify the name and version of the software or firmware used when the image was created. An empty string shall indicate “unknown”. 9.1.119 SpatialFrequencyResponse Tag Name = SpatialFrequencyResponse Tag = 37388 (920C.H) Type = UNDEFINED Count = length of the data in bytes Value = see below Default = None The SpatialFrequencyResponse tag shall specify the spatial frequency response (SFR) of the camera. The camera measured SFR data described in ISO 12233 may be stored as a table of spatial frequencies, horizontal SFR values, vertical SFR values and diagonal SFR values. This document does not prescribe the values for the column headings. The tag contents shall use the following format: <Editors note: tighten for open sys use> Table 36 SpatialFrequencyResponse table Contents Type Byte position Field length in bytes 0 2 n = number of table columns SHORT 1 2 2 m = number of table rows SHORT 1 4 zzz n column headings, each stored as a null-terminated ASCII string ASCII 4 + zzz n×m×8 88 Count zzz n × m table entries in row major order (all data of first row RATIONAL n × m given first) © ISO 2008 – All rights reserved ISO/WD 12234-2 EXAMPLE: An SFR data table: Table 37 SpatialFrequencyResponse example Spatial Frequency (LW/PH) Horizontal SFR Vertical SFR 0,1 1,0 1,0 0,2 0,90 0,95 0,3 0,80 0,85 9.1.120 SpectralSensitivity Tag Name = SpectralSensitivity Tag = 34852 (8824.H) Type = ASCII Count = length of string Value = see below Default = None The SpectralSensitivity tag shall specify the spectral sensitivity of each channel of the camera when the image was captured. The value shall be an ASCII string using the format defined in the ASTM E1708 - 95 Standard Practice for Electronic Interchange of Colour and Appearance Data. The format includes a keyword list followed by the associated data values. The following keywords shall be included: NUMBER_OF_FIELDS which equals the number of channels (spectral bands) + 1, NUMBER_OF_SETS which specify the number of spectral frequency (wavelength) entries. The first field shall be the wavelength. <Editors note: tighten for open sys use> 9.1.121 StripByteCounts Tag Name = StripByteCounts Tag = 279 (0117.H) Type = SHORT or LONG Count = StripsPerImage PlanarConfiguration = 2) (when PlanarConfiguration = 1); SamplesPerPixel × StripsPerImage (when Value = see below Default = None See also StripOffsets, PlanarConfiguration, RowsPerStrip The StripByteCounts tag shall specify the number of bytes stored for each strip. The amount of image data in each strip, prior to compression, should not exceed 64 KBytes. See the RowsPerStrip tag for the StripsPerImage value. © ISO 2008 – All rights reserved 89 ISO/WD 12234-2 9.1.122 StripOffsets Tag Name = StripOffsets Tag = 273 (0111.H) Type = SHORT or LONG Count = StripsPerImage PlanarConfiguration = 2) (when PlanarConfiguration = 1); SamplesPerPixel × StripsPerImage (when Value = A list of byte offsets to image data Default = None See also PlanarConfiguration, RowsPerStrip, StripByteCounts The StripOffsets tag shall specify the byte offset(s) to each strip of the image data. See the RowsPerStrip tag for the StripsPerImage value. 9.1.123 SubIFDs Tag Name = SubIFDs Tag = 330 (014A.H) Type = LONG Count = number of child IFDs Value = A list of byte offsets to IFDs Default = None See also Section XXX for use of child IFDs. The SubIFDs tag shall specify the byte offsets to image IFDs that this IFD links to. The SubIFDs tag may link this IFD to other image IFDs. The SubIFDs tag shall not link to IFDs not containing images. 9.1.124 SubjectDistance Tag Name = SubjectDistance Tag = 37382 (9206.H) Type = SRATIONAL Count = 1 or 2 Value = Any positive rational number Default = None 90 © ISO 2008 – All rights reserved ISO/WD 12234-2 The SubjectDistance tag shall specify the distance in metres between the front nodal plane of the lens and the subject. -1/1 shall specify a subject distance of infinity. <Editors note: underspecified> NOTE 1: RATIONAL values are used, so that a subject distance of 8 metres is encoded as 8/1. NOTE 2: The camera may have focused on a subject within the scene, which may not have been the primary subject. <Editors note: underspecified> When the exact value is known, the value shall be specified using a single number. Otherwise, two numbers shall be present to specify the range of the value. In this case, the first number shall be the minimum value and the second number shall be the maximum value. The fields shall be defined as follows: Table 38 SubjectDistance Field No. Value 0 Exact SubjectDistance, if only one value is present. Minimum SubjectDistance of the range of uncertainty, if two values are present 1 (optional) Maximum SubjectDistance of the range of uncertainty, if two values are present 9.1.125 SubjectLocation Tag Name = SubjectLocation <Editors note: underspecified…. subject same as sub distance?> Tag = 37396 (9214.H) Type = SHORT Count = 2 or 3 or 4 Value = see below Default = None The SubjectLocation tag shall specify the approximate location and area of the main subject in the scene. The subject location shall be specified as a point, a circle, or a rectangle, using 2, 3, or 4 values respectively. The first two values shall specify a point as an X column number and a Y row number for the centre of the subject location. When three values are given, the third value shall be the diameter of a circle centred at the point. When four values are given, the third and fourth values shall be the width and height, respectively, of a rectangle centred at the point. The fields shall be defined as follows: Table 39 SubjectLocation Field No. 0 Value X column number © ISO 2008 – All rights reserved 91 ISO/WD 12234-2 1 2 (optional) Y row number When Count = 3, Diameter of a circle centred at the point defined by fields 0 and 1. When Count = 4, Width of a rectangle centred at the point defined by fields 0 and 1. 3 (optional) Height of a rectangle centred at the point defined by fields 0, 1 9.1.126 SubTileBlockSize Tag Name = SubTileBlockSize Tag = 50974 (C71E.H) Type = SHORT or LONG Count = 2 Value = <SubTileBlockRows, SubTileBlockCols> Default = <1, 1> The SubTileBlockSize tag shall specify the block size as rows and columns of the rectangular blocks into which pixels within a tile shall be grouped. The block size shall not exceed the tile or image size, and shall include at least 1 pixel. Within each block, the pixels shall be stored in row-scan order. The blocks shall be stored in row-scan order. When the tile size is not an integer multiple of the block size (not recommended), blocks shall be truncated at the tile boundary, and pixels beyond the tile shall not be stored. 9.1.127 TIFF/EPStandardID Tag Name = TIFF/EPStandardID Tag = 37398 (9216.H) Type = BYTE Count = 4 Value = <1, 1, 0, 0> Default = None The TIFF/EPStandardID tag shall specify the version of the TIFF/EP format of this TIFF/EP file. The value shall be the four integers <1, 1, 0, 0>. 9.1.128 TileByteCounts Tag Name = TileByteCounts Tag = 325 (0145.H) Type = SHORT or LONG 92 © ISO 2008 – All rights reserved ISO/WD 12234-2 Count = TilesPerImage (for PlanarConfiguration = 1) or SamplesPerPixel × TilesPerImage (for PlanarConfiguration = 2) Value = see below Default = None See also TileWidth, TileLength, and TileOffsets The TileByteCounts tag shall specify the byte count of each stored image tile. The values shall be stored in the row-scan order of the tiles. Image data is stored as strips or tiles. The TileByteCounts, TileLength, TileOffsets, and TileWidth tag shall be present when and only when the image data is stored as tiles. Images smaller than one tile should not be tiled. <Editors note: comfirm…1 or 4 or 16?> The following shall apply when the image is stored as tiles. The image shall be partitioned in tiles that shall be non-overlapping, adjoining, and aligned with the upper and left image boundaries. The amount of image data in a tile, prior to compression, should be between 4 and 32 KBytes (typically 32 to 128 rows and columns). All tiles shall have the same number of pixels (TileLength rows × TileWidth columns). The image dimensions (ImageLength, ImageWidth) need not be integer multiples of the tile dimensions (TileLength, TileWidth). In such case, tiles shall extend beyond the bottom and right image boundaries. When compression is used, all tiles shall be compressed individually. The following computed values shall apply when using tiles: - TilesAcross = ceiling (ImageWidth / TileWidth) - TilesDown = ceiling (ImageLength / TileLength) - PaddingColumns = TileWidth × TilesAcross – ImageWidth - PaddingRows = TileLength × TilesDown - ImageLength - TilesPerImage = TilesAcross × TilesDown EXAMPLE: If TileWidth is 64 and ImageWidth is 129, then TilesAcross is 3 and PaddingColumns is 63. Pixeis in the PaddingRows rows and PaddingColumns columns beyond the image boundary shall be filled with padding values. Any value may be used for padding. Compression shall include the padded pixels. Readers shall display only the pixels defined by ImageWidth and ImageLength and ignore padded pixels. NOTE: Some compression schemes perform best if the padding is accomplished by replicating the last image column and last image row instead of padding with 0’s. 9.1.129 TileLength Tag Name = TileLength Tag = 323 (0143.H) Type = SHORT or LONG © ISO 2008 – All rights reserved 93 ISO/WD 12234-2 Count = 1 Value = A positive multiple of 16 Default = None See also TileWidth, TileOffsets, and TileByteCounts The TileLength tag shall specify the tile length (height) in pixels of the image, as the number of rows in each tile. The tile width shall be a multiple of 16, and should not exceed ImageLength. 9.1.130 TileOffsets Tag Name = TileOffsets Tag = 324 (0144.H) Type = LONG Count = TilesPerImage PlanarConfiguration = 2) (if PlanarConfiguration = 1) or SamplesPerPixel × TilesPerImage (if Value = A list of byte offsets to image data Default = None See also TileWidth, TileLength, and TileByteCounts The TileOffsets tag shall specify the byte offset to each image tile. The values shall be stored in the row-scan order of the tiles. 9.1.131 TileWidth Tag Name = TileWidth Tag = 322 (0142.H) Type = SHORT or LONG Count = 1 Value = A positive multiple of 16 Default = None See also TileLength, TileOffsets, and TileByteCounts The TileWidth tag shall specify the tile width (in pixels) of the image, as the number of columns in each tile. The tile width shall be a multiple of 16, and should not exceed ImageWidth. 9.1.132 TimeZoneOffset Tag Name = TimeZoneOffset Tag = 34858 (882A.H) Type = SSHORT 94 © ISO 2008 – All rights reserved ISO/WD 12234-2 Count = 1 or 2 Value = see below Default = None The TimeZoneOffset tag shall specify the time zone (relative to Greenwich Mean Time) of the DateTimeOriginal tag value. When a second value is present, it shall specify the time zone of the DateTime tag value. The values shall be in the range [–12, +11]. The TimeZoneOffset tag may be present only when the DateTime or DateTimeOriginal tag is present The fields shall be defined as follows: Table 40 TimeZoneOffset Field No. 0 1 (optional) Value Time Zone (in hours) of DateTimeOriginal tag value relative to Greenwich Mean Time Time Zone (in hours) of DateTime tag value relative to Greenwich Mean Time <Editor’s Note: This tag will be replaced with a new tag that supports offsets of minutes (or fractional hours), not just hours, in order to accommodate certain time zones. USE ISO 8601? > 9.1.133 UniqueCameraModel Tag Name = UniqueCameraModel Tag = 50708 (C614.H) Type = ASCII Count = length of string Value = null terminated string Default = None See also Make, Model, Software, LocalizedCameraModel, CameraSerialNumber The UniqueCameraModel tag shall specify a unique, non-localized name for the camera model that created the image. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets. A reader may use this string to access per-model preferences and replacement profiles. EXAMPLE: Unique model names include: "Canon EOS 300D" "Fujifilm FinePix S2Pro" "Kodak ProBack645" <Editors note: confirm how to provide valid examples vs. no brand names> © ISO 2008 – All rights reserved 95 ISO/WD 12234-2 9.1.134 WhiteLevel Tag Name = WhiteLevel Tag = 50717 (C61D.H) Type = SHORT or LONG Count = SamplesPerPixel Value = see below Default = 2 BitsPerSample –1 The WhiteLevel tag shall specify the fully saturated encoding level for the linearized raw sample values. <Editors note: order of application?> NOTE: Saturation can be caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping. 9.1.135 XMP Tag Name = XMP Tag = 700 (02BC.H) Type = BYTE Count = length of the data in bytes Value = The XMP Packet Default = None The XMP tag shall specify the XMP packet. The XMP packet shall comply with the XMP specification. Required TIFF tags shall be stored as TIFF tags, and may be stored in the XMP packet, when the equivalent items are specified in the XMP specification. <Editors note: Assumption: all structural metadata (ImageWidth…) must be TIFF tags. Valid? > Descriptive metadata items that are defined in both the XMP specification and in the TIFF tag definitions may be stored in the XMP packet, as a TIFF tag, or both. When the same metadata item is stored in both TIFF and XMP format, the TIFF values shall not conflict with the XMP values. A file that contains both formats of metadata may be updated to contain only one format of metadata. Readers shall read both TIFF and XMP metadata. All XMP metadata shall be contained in a single XMP Packet, which shall identified using the XMP tag. The tag may contain all the annotation metadata for the image, divided into various namespaces. 96 © ISO 2008 – All rights reserved ISO/WD 12234-2 A name space can be administered by ISO or by another body in which case ISO 12234-2 will point to the namespace. The following is the known list of annotation domains with namespaces and a suggestion for each as to whether ISO should take over administration or whether ISO 12234-2 should simply point to it. Data Recommended Namespace Comment TIFF http://ns.adobe.com/tiff/1.0/ ISO 12234-2 states that mandatory tags be provided as individual TIFF tags. Optional tags can be placed in the TIFF schema. ISO should point to the existing XMP namespace. EXIF, including GPS New namespace based on http://ns.adobe.com/exif/1.0/) ISO will take over responsibility for this namespace. ISO 12234-2 will provide clarifications in case of conflicting or vague interpretations. IPTC/NAA http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/ Include the updated definition of the copyright tag (33432) to encourage use of the PLUS (Picture Licensing Universal System) LDF (License Data Format). ISO should point to the existing XMP namespace. 9.1.136 XResolution Tag Name = XResolution Tag = 282 (011A.H) Type = RATIONAL Count = 1 Value = A positive rational number Default = None See also YResolution, ResolutionUnit The XResolution tag shall specify the image's number of pixels per ResolutionUnit in the ImageWidth direction, for the desired output rendering. 9.1.137 YCbCrCoefficients Tag Name = YCbCrCoefficients Tag = 529 (0211.H) Type = RATIONAL Count = 3 Value = <LumaRed, LumaGreen and LumaBlue> Default = None © ISO 2008 – All rights reserved 97 ISO/WD 12234-2 See also PhotometricInterpretation, ReferenceBlackWhite, YCbCrPositioning, YCbCrSubSampling The YCbCrCoefficients tag shall specify the transformation from RGB to YCbCr image data. The YCbCrCoefficients tag shall be present when and only when PhotometricInterpretation = 6. LumaRed, LumaGreen and LumaBlue shall be the proportions of red, green and blue respectively in luminance, Y. The sum of LumaRed, LumaGreen and LumaBlue shall be 1. Each of LumaRed, LumaGreen and LumaBlue shall be positive. Y, Cb, and Cr shall be computed from RGB as follows: y = lr × r + lg × g + lb × b cb = (b - y) / (2 - 2 × lb) cr = (r - y) / (2 - 2 × lr) R, G, and B shall be computed from YCbCr as follows: r = cr × (2 - 2 × lr) + y g = (y - lb × b - lr × r) / lg b = cb × (2 - 2 × lb) + y where r = Red code value b = Blue code value g = Green code value y = Y code value cr = Cr code value cb = Cb code value lr = LumaRed value lg = LumaGreen value lb = LumaBlue value The YCbCrCoefficients values will typically reflect the transformation specified by a standard for YCbCr encoding. The following table shows commonly used values. Table 41 Commonly used YCbCrCoefficients Standard LumaRed LumaGreen 98 LumaBlue CCIR Recommendation 601-1 299 / 1000 587 / 1000 114 / 1000 CCIR Recommendation 709 2125 / 10000 7154 / 10000 721 / 10000 © ISO 2008 – All rights reserved ISO/WD 12234-2 9.1.138 YCbCrPositioning Tag Name = YCbCrPositioning Tag = 531 (0213.H) Type = SHORT Count = 1 Value = 2 Default = None See also PhotometricInterpretation, ReferenceBlackWhite, YCbCrCoefficients, YCbCrSubSampling The YCbCrPositioning tag shall specify the positions of subsampled chrominance components relative to luminance samples. The tag value shall be 2, indicating "cosited". The chrominance components shall be sampled at spatial locations identical to luminance sample locations. The YCbCrPositioning tag shall be present when and only when PhotometricInterpretation = 6. 9.1.139 YCbCrSubSampling Tag Name = YCbCrSubSampling Tag = 530 (0212.H) Type = SHORT Count = 2 Value = <YCbCrSubsampleHoriz, YCbCrSubsampleVert> Default = None See also PhotometricInterpretation, ReferenceBlackWhite, YCbCrCoefficients, YCbCrPositioning The YCbCrSubSampling tag shall specify the subsampling factors used for the chrominance components of a YCbCr image. The two fields of this tag, YCbCrSubsampleHoriz and YCbCrSubsampleVert, shall specify the horizontal and vertical subsampling factors respectively. The YCbCrSubSampling tag shall be present when and only when PhotometricInterpretation = 6. The following requirements apply to YCbCr images: - Cb and Cr shall have the same subsampling ratio. - YCbCrSubsampleVert shall always be less than or equal to YCbCrSubsampleHoriz. - ImageWidth, and TileWidth shall be integer multiples of YCbCrSubsampleHoriz. - ImageLength, TileLength, and RowsPerStrip shall be integer multiplies of YCbCrSubsampleVert. © ISO 2008 – All rights reserved 99 ISO/WD 12234-2 The fields shall have one of the following values: Field YCbCrSubsampleHoriz Value 1 2 4 YCbCrSubsampleVert 1 2 4 Table 42 YCbCrSubSampling Interpretation ImageWidth of this chroma image shall be equal to the ImageWidth of the associated luma image. ImageWidth of this chroma image shall be half the ImageWidth of the associated luma image. ImageWidth of this chroma image shall be one-quarter the ImageWidth of the associated luma image. ImageLength (height) of this chroma image shall be equal to the ImageLength of the associated luma image. ImageLength (height) of this chroma image shall be half the ImageLength of the associated luma image. ImageLength (height) of this chroma image shall be a quarter of the ImageLength of the associated luma image. 9.1.140 YResolution Tag Name = YResolution Tag = 283 (011B.H) Type = RATIONAL Count = 1 Value = A positive rational number Default = None See also XResolution, ResolutionUnit The YResolution tag shall specify the image's number of pixels per ResolutionUnit in the ImageLength direction, for the desired output rendering. 100 © ISO 2008 – All rights reserved ISO/WD 12234-2 7 9.2 Opcode Instructions 9.2.1 General An opcode list shall be a list of opcodes, each of which shall specify an image processing operation to be applied by the reader. Opcode lists shall be specified in opcode tags defined in Section 5.3 for Profile 2 subIFDs. There are three possible opcode tags specifying operations at three distinct points in the processing pipeline defined in Section 4.x. Each opcode shall be applied in the sequence specified in the list. Opcode lists shall be stored in big-endian byte order, regardless of the file’s main byte order. This allows utility programs to copy opcode lists from file to file, without needing to understand their detailed internal structure. At the start of the opcode list, there shall be a 32-bit unsigned integer count, which shall contain the number of opcodes in the list. This shall be followed by the data for each opcode. Each opcode shall start with a 32-bit unsigned integer, which shall contain the opcode ID. The opcode ID shall identify the specific opcode, which shall be one of the opcodes defined in this specification. Next shall be a 32-bit unsigned integer, which shall contain the DNG specification version in which the opcode ID was defined. The four-part version number shall be treated as a 4-digit number with the radix 256. New opcode IDs might be defined in future specification versions. A reader should not attempt to process an opcode with a version higher than the specification version that the reader was written to support. Next shall be a 32-bit unsigned integer, which shall contain flag bits. There shall be two defined flag bits. When bit 0 (the least significant bit) is set to 1, the reader need not apply this opcode. When bit 1 (the second to least significant bit) is set to 1, the reader need not apply this opcode when doing “preview quality” processing, and the reader shall apply this opcode when doing “full quality” processing. Next shall be a 32-bit unsigned integer, which shall contain the number of bytes in a variable size parameter area for the opcode. The format of this variable size parameter area shall be as defined in the definition of the specific opcode. <Editors note: Where are the bytes stored? After the byte count?> After the application of each opcode, image values shall be clipped to the value range of the image being modified. 32 For OpcodeList1, this range shall be 0 to 4 294 967 295 (= 2 -1) for images with a bit depth greater than 16, 16 otherwise 0 to 65 535 (= 2 -1). For OpcodeList2 and OpcodeList3, the range shall be 0.0 to 1.0. © ISO 2008 – All rights reserved 101 ISO/WD 12234-2 Table 43 illustrates the opcode list structure. Table 43 Opcode List Structure Type Contents LONG Opcode Count (n) LONG Opcode ID 1 LONG Version LONG Flag bits LONG Byte count (m1) BYTE[m1] Parameters … LONG Opcode ID n LONG Version LONG Flag bits LONG Byte count (mn) BYTE[mn] Parameters The opcodes are defined as follows, in alphabetical order. 9.2.2 DeltaPerColumn Opcode ID = 11 DNG Version = 1.3.0.0 Parameters Top - LONG Left - LONG Bottom - LONG Right - LONG Plane - LONG Planes - LONG RowPitch - LONG ColPitch - LONG Count - LONG For Each Count: Delta - FLOAT This opcode shall add a per-column delta (constant offset) to values in a specified area and plane range of an image. 102 © ISO 2008 – All rights reserved ISO/WD 12234-2 The Top, Left, Bottom, and Right parameters specify the bounding rectangle of the area on the image, the Plane and Planes parameters specify the first plane and the number of planes, and RowPitch and ColPitch specify the spacing of rows and columns to be affected. The affected planes shall be planes [Plane, (Plane + Planes – 1)]. The affected rows shall be rows Top + RowPitch × i, where integer i ∈ [0, Floor ((Bottom – Top) / RowPitch)]. The affected columns shall be columns Left + ColPitch × j, where integer j ∈ [0, Floor ((Right – Left) / ColPitch)]. The rectangle shall include at least 1 sample position, and shall not extend outside the image. The list of planes shall not extend beyond the number of planes available in the image. The values Plane, Planes, RowPitch, and ColPitch shall be positive. The Count value shall match the number of affected columns. There shall be Count number of Delta values. The Delta value in position k shall be added to the values in the affected column k. 9.2.3 DeltaPerRow Opcode ID = 10 DNG Version = 1.3.0.0 Parameters <Editor's note: this and following format specifications are not in line with tag value specifications.> Top - LONG Left - LONG Bottom - LONG Right - LONG Plane - LONG Planes - LONG RowPitch - LONG ColPitch - LONG Count - LONG For Each Count: Delta - FLOAT This opcode shall add a per-row delta (constant offset) to values in a specified area and plane range of an image. The Top, Left, Bottom, and Right parameters specify the bounding rectangle of the area on the image, the Plane and Planes parameters specify the first plane and the number of planes, and RowPitch and ColPitch specify the spacing of rows and columns to be affected. © ISO 2008 – All rights reserved 103 ISO/WD 12234-2 The affected planes shall be planes [Plane, (Plane + Planes – 1)]. The affected rows shall be rows Top + RowPitch × i, where integer i ∈ [0, Floor ((Bottom – Top) / RowPitch)]. The affected columns shall be columns Left + ColPitch × j, where integer j ∈ [0, Floor ((Right – Left) / ColPitch)]. The rectangle shall include at least 1 sample position, and shall not extend outside the image. The list of planes shall not extend beyond the number of planes available in the image. The values Plane, Planes, RowPitch, and ColPitch shall be positive. The Count value shall match the number of affected rows. There shall be Count number of Delta values. The Delta value in position k shall be added to the values in the affected row k. 9.2.4 FixBadPixelsConstant Opcode ID = 4 DNG Version = 1.3.0.0 Parameters Constant - LONG BayerPhase - LONG This opcode patches (interpolates over) bad pixels in a Bayer pattern CFA image. The bad pixels in the image shall have the value Constant. BayerPhase shall be 0, when the top-left pixel of the image is red pixel. BayerPhase shall be 1, when the top-left pixel of the image is green pixel in a green/red row. BayerPhase shall be 2, when the top-left pixel of the image is green pixel in a green/blue row. BayerPhase shall be 3, when the top-left pixel of the image is blue pixel. 9.2.5 FixBadPixelsList Opcode ID = 5 DNG Version = 1.3.0.0 Parameters BayerPhase - LONG BadPointCount - LONG BadRectCount - LONG For Each BadPointCount: 104 © ISO 2008 – All rights reserved ISO/WD 12234-2 BadPointRow - LONG BadPointColumn - LONG For Each BadRectCount: BadRectTop - LONG BadRectLeft - LONG BadRectBottom - LONG BadRectRight - LONG This opcode shall correct (interpolate over) specified defect pixels and defect rectangles in a Bayer pattern CFA image. BayerPhase shall be 0, when the top-left pixel of the image is red pixel. BayerPhase shall be 1, when the top-left pixel of the image is green pixel in a green/red row. BayerPhase shall be 2, when the top-left pixel of the image is green pixel in a green/blue row. BayerPhase shall be 3, when the top-left pixel of the image is blue pixel. BadPointCount shall be the number of single defect pixels. Each pair BadPointRow and BadPointColumn shall specify the coordinates of a defect pixel to correct. BadRectCount shall be the number of defect rectangles. For each rectangle, [BadRectTop, BadRectBottom] and [BadRectLeft, BadRectRight] shall be the bounding rows and columns of the rectangle to correct. Each rectangle shall include at least 1 pixel position, and shall not extend outside the image. 9.2.6 FixVignetteRadial Opcode ID = 3 DNG Version = 1.3.0.0 <Editors note: Convert these formula images to text so a spec reader can copy-paste these instructions> Parameters This opcode shall apply a gain function to an image. This can be used to correct vignetting. © ISO 2008 – All rights reserved 105 ISO/WD 12234-2 Parameters ( ) shall define a radially-symmetric gain function. When all terms are zero, then the gain function shall be the identity funciton (that is, no gain will be applied). Parameters of the image. shall be the normalized x- and y-coordinates of the optical centre, relative to the top-left pixel Example 1: specifying (0.5, 0.5) means that the optical centre lies exactly at the image centre. Example 2: specifying (1, 0) means that the optical centre lies at the top-right pixel of the image. Processing of this opcode shall be performed as follows. shall be the uncorrected pixel value of image plane i of the image at pixel position (x, y) (that is, before opcode processing). shall be the corrected pixel value of image plane i of the image at pixel position (x, y) (that is, after opcode processing). For each pixel (x, y) in image plane i of the image, the following transform shall be applied: where <Editors note: Convert these formula images to text so a spec reader can copy-paste these instructions reorder in procedural order with g last> m = the Euclidean distance (in pixels) from the optical centre to the farthest pixel in the image r = the normalized Euclidean distance in range [0, 1] from the optical centre to a given pixel. 106 © ISO 2008 – All rights reserved ISO/WD 12234-2 9.2.7 GainMap Opcode ID = 9 DNG Version = 1.3.0.0 Parameters Top - LONG Left - LONG Bottom - LONG Right - LONG Plane - LONG Planes - LONG RowPitch - LONG ColPitch - LONG MapPointsV - LONG MapPointsH - Long MapSpacingV - DOUBLE MapSpacingH - DOUBLE MapOriginV - DOUBLE MapOriginH - DOUBLE MapPlanes - LONG For Each MapPointsV For Each MapPointsH For Each MapPlanes MapGain - FLOAT This opcode shall multiply sample values within a specified area and plane range of an image with values from an overlayed gain map. The Top, Left, Bottom, and Right parameters specify the bounding rectangle of the area on the image, the Plane and Planes parameters specify the first plane and the number of planes, and RowPitch and ColPitch specify the spacing of rows and columns to be affected. The affected planes shall be planes [Plane, (Plane + Planes – 1)]. The affected rows shall be rows Top + RowPitch × i, where integer i ∈ [0, Floor ((Bottom – Top) / RowPitch)]. The affected columns shall be columns Left + ColPitch × j, where integer j ∈ [0, Floor ((Right – Left) / ColPitch)]. © ISO 2008 – All rights reserved 107 ISO/WD 12234-2 The rectangle shall include at least 1 sample position, and shall not extend outside the image. The list of planes shall not extend beyond the number of planes available in the image. The values Plane, Planes, RowPitch, and ColPitch shall be positive. The gain map shall be a sub-sampled two-dimensional floating-point texture map, including at least 1 value. MapPointsV shall be the number of samples in vertical direction. MapPointsH shall be the number of samples in the horizontal direction. MapPlanes shall specify the number of planes in the gain map. <Editors note: “area being modified” below….how to distinguish between the whole image or an area of interest> The extent of the gain map need not be aligned with the extent of the image area being modified. Inside the gain map bounds, gain map values shall be interpolated using bi-linear interpolation. Outside the gain map bounds, gain map values shall be replicated from the nearest edge values of the gain map. The origin of the gain map relative to the image area being modified shall be specified by MapOriginV (vertical direction) and MapOriginH (horizontal direction), which shall be in relative coordinates, where 1.0 shall be equal to the height or width of the image area being modified, respectively. The spacing between gain map points shall be specified by MapSpacingV (vertical direction) and MapSpacingH (horizontal direction). These shall be in relative coordinates, where 1.0 shall be equal to the height or width of the image area being modified, respectively. When Planes > MapPlanes, the last gain map plane shall be used for any remaining planes being modified. 9.2.8 MapPolynomial Opcode ID = 8 DNG Version = 1.3.0.0 Parameters Top - LONG Left - LONG Bottom - LONG Right - LONG Plane - LONG Planes - LONG RowPitch - LONG ColPitch - LONG Degree - LONG For Each Value 0...Degree: Coefficient - DOUBLE This opcode shall map sample values within a specified area and plane range of an image through a polynomial function. 108 © ISO 2008 – All rights reserved ISO/WD 12234-2 The Top, Left, Bottom, and Right parameters specify the bounding rectangle of the area on the image, the Plane and Planes parameters specify the first plane and the number of planes, and RowPitch and ColPitch specify the spacing of rows and columns to be affected. The affected planes shall be planes [Plane, (Plane + Planes – 1)]. The affected rows shall be rows Top + RowPitch × i, where integer i ∈ [0, Floor ((Bottom – Top) / RowPitch)]. The affected columns shall be columns Left + ColPitch × j, where integer j ∈ [0, Floor ((Right – Left) / ColPitch)]. The rectangle shall include at least 1 sample position, and shall not extend outside the image. The list of planes shall not extend beyond the number of planes available in the image. The values Plane, Planes, RowPitch, and ColPitch shall be positive. The mapping function shall be a polynomial of degree Degree. Degree shall be in range [0, 8]. The coefficients shall be stored in increasing order, starting with the zero degree coefficient (constant term). 9.2.9 MapTable Opcode ID = 7 DNG Version = 1.3.0.0 Parameters Top - LONG Left - LONG Bottom - LONG Right - LONG Plane - LONG Planes - LONG RowPitch - LONG ColPitch - LONG TableSize - LONG For Each TableSize: TableEntry - SHORT This opcode shall map sample values within a specified area and plane range of an image through a 16-bit onedimensional LUT. The Top, Left, Bottom, and Right parameters specify the bounding rectangle of the area on the image, the Plane and Planes parameters specify the first plane and the number of planes, and RowPitch and ColPitch specify the spacing of rows and columns to be affected. The affected planes shall be planes [Plane, (Plane + Planes – 1)]. The affected rows shall be rows Top + RowPitch × i, where integer i ∈ [0, Floor ((Bottom – Top) / RowPitch)]. © ISO 2008 – All rights reserved 109 ISO/WD 12234-2 The affected columns shall be columns Left + ColPitch × j, where integer j ∈ [0, Floor ((Right – Left) / ColPitch)]. The rectangle shall include at least 1 sample position, and shall not extend outside the image. The list of planes shall not extend beyond the number of planes available in the image. The values Plane, Planes, RowPitch, and ColPitch shall be positive. There shall be TableSize number of entries in the 16-bit LUT. TableSize shall be in range [1, 65 535]. The TableEntry value in position k shall specify the output value for sample value k, where k ∈ [0, TableSize – 1]. 9.2.10 ScalePerColumn Opcode ID = 13 DNG Version = 1.3.0.0 Parameters Top - LONG Left - LONG Bottom - LONG Right - LONG Plane - LONG Planes - LONG RowPitch - LONG ColPitch - LONG Count - LONG For Each Count: Scale - FLOAT This opcode shall apply a per-column scale to values in a specified area and plane range of an image. The Top, Left, Bottom, and Right parameters specify the bounding rectangle of the area on the image, the Plane and Planes parameters specify the first plane and the number of planes, and RowPitch and ColPitch specify the spacing of rows and columns to be affected. The affected planes shall be planes [Plane, (Plane + Planes – 1)]. The affected rows shall be rows Top + RowPitch × i, where integer i ∈ [0, Floor ((Bottom – Top) / RowPitch)]. The affected columns shall be columns Left + ColPitch × j, where integer j ∈ [0, Floor ((Right – Left) / ColPitch)]. The rectangle shall include at least 1 sample position, and shall not extend outside the image. The list of planes shall not extend beyond the number of planes available in the image. The values Plane, Planes, RowPitch, and ColPitch shall be positive. The Count value shall match the number of affected columns. 110 © ISO 2008 – All rights reserved ISO/WD 12234-2 There shall be Count number of Scale values. The values in the affected column k shall be multiplied with the Scale value in position k 9.2.11 ScalePerRow Opcode ID = 12 DNG Version = 1.3.0.0 Parameters Top - LONG Left - LONG Bottom - LONG Right - LONG Plane - LONG Planes - LONG RowPitch - LONG ColPitch - LONG Count - LONG For Each Count: Scale - FLOAT This opcode shall apply a per-row scale to values in a specified area and plane range of an image. The Top, Left, Bottom, and Right parameters specify the bounding rectangle of the area on the image, the Plane and Planes parameters specify the first plane and the number of planes, and RowPitch and ColPitch specify the spacing of rows and columns to be affected. The affected planes shall be planes [Plane, (Plane + Planes – 1)]. The affected rows shall be rows Top + RowPitch × i, where integer i ∈ [0, Floor ((Bottom – Top) / RowPitch)]. The affected columns shall be columns Left + ColPitch × j, where integer j ∈ [0, Floor ((Right – Left) / ColPitch)]. The rectangle shall include at least 1 sample position, and shall not extend outside the image. The list of planes shall not extend beyond the number of planes available in the image. The values Plane, Planes, RowPitch, and ColPitch shall be positive. The Count value shall match the number of affected rows. There shall be Count number of Scale values. The values in the affected row k shall be multiplied with the Scale value in position k © ISO 2008 – All rights reserved 111 ISO/WD 12234-2 9.2.12 TrimBounds Opcode ID = 6 DNG Version = 1.3.0.0 Parameters Top - LONG Left - LONG Bottom - LONG Right - LONG This opcode shall crop the image to a rectangle, defined by the rows [Top, Bottom] and columns [Left, Right]. The rectangle shall include at least 1 sample position, and shall not extend outside the image. 9.2.13 WarpFisheye Opcode ID = 2 DNG Version = 1.3.0.0 Parameters Number of coefficient sets <Editors note: Check ISO, Convert these formula images to text so a spec reader can copy-paste these instructions???> For each coefficient set i, where i ∈ {1, 2, …, N}: This opcode shall apply a warp to an image. This can be used to “unwrap” an image captured with a fisheye lens and map it instead to a perspective projection. It can also be used to correct geometric distortion and lateral (transverse) chromatic aberration for both fisheye and rectilinear lenses. This opcode can be used to correct lateral (transverse) chromatic aberration by specifying the appropriate coefficients for each image plane separately. 112 © ISO 2008 – All rights reserved ISO/WD 12234-2 shall denote coefficient set i, where i ∈ {1, 2, …, N}. Parameter N shall be the number of coefficient sets. N shall be 1 or the total number of image planes. When N = 1, a single set of warp coefficients (that is K1) shall be applied to all image planes. All planes undergo the same transformation. When N > 1, coefficient set first image plane, shall be used to process image plane i, that is, K1 defines the warp function for the defines the warp function for the second image plane, etc. Parameters shall be the coefficients that define the warp function for image plane i. See below for implementation details and restrictions. Parameters of the image. shall be the normalized x- and y-coordinates of the optical centre, relative to the top-left pixel Example 1: specifying (0.5, 0.5) means that the optical centre lies exactly at the image centre. Example 2: specifying (1, 0) means that the optical centre lies at the top-right pixel of the image. Processing of this opcode shall be performed as follows. shall be the pixel value of image plane i of the original unwarped image at pixel position (x', y'), that is, before opcode processing. shall be the pixel value of image plane i of the warped image at pixel position (x, y), that is, after opcode processing. For each pixel (x, y) of image plane i of the warped image, the following transform shall be applied: The transform shall be as follows: The pixel at position (x', y') in the original unwarped image shall be moved to position (x, y) in the final warped image, where <Editors note: instructions?> Check ISO. © ISO 2008 – All rights reserved Convert these formula images to text so a spec reader can copy-paste these 113 ISO/WD 12234-2 <Editors note: Reorder the functional steps in operational sequence so x' y' are last.> m = the Euclidean distance (in pixels) from the optical centre to the farthest pixel in the image r = the normalized Euclidean distance [0, 1] from the optical centre to a given pixel. Implementations should use a suitable resampling kernel, such as a cubic spline. Each coefficient set shall satisfy the following constraints. Let , where shall be an increasing function of r for all . , that is, . 9.2.14 WarpRectilinear Opcode ID = 1 DNG Version = 1.3.0.0 Parameters <Editors note: check ISO. instructions> Convert these formula images to text so a spec reader can copy-paste these Number of coefficient sets 114 © ISO 2008 – All rights reserved ISO/WD 12234-2 For each coefficient set i, where i ∈ {1, 2, …, N}: This opcode shall apply a warp to an image. The warp function supports both radial and tangential distortion correction. This opcode can be used to correct geometric distortion and lateral (transverse) chromatic aberration for rectilinear lenses by specifying the appropriate coefficients for each image plane separately. shall denote coefficient set i, where i ∈ {1, 2, …, N} Parameter N shall be the number of coefficient sets. N shall be 1 or the total number of image planes. When N = 1, a single set of warp coefficients (that is K1) shall be applied to all image planes. All planes undergo the same transformation. When N > 1, coefficient set first image plane, shall be used to process image plane i , that is, K1 defines the warp function for the defines the warp function for the second image plane, etc. Parameters shall be the radial and tangential coefficients that define the warp function for image plane i. See below for implementation details and restrictions. When and the remaining terms are zero, then the warp function shall be the identity function (that is, no warp will be applied). Parameters of the image. shall be the normalized x- and y-coordinates of the optical centre, relative to the top-left pixel Example 1: specifying (0.5, 0.5) means that the optical centre lies exactly at the image centre. Example 2: specifying (1, 0) means that the optical centre lies at the top-right pixel of the image. Processing of this opcode shall be performed as follows. © ISO 2008 – All rights reserved 115 ISO/WD 12234-2 shall be the pixel value of image plane i of the original unwarped image at pixel position (x', y'), that is, before opcode processing. shall be the pixel value of image plane i of the warped image at pixel position (x, y), that is, after opcode processing. For each pixel (x, y) of image plane i of the warped image, the following transform shall be applied: The transform shall be as follows: The pixel at position (x', y') in the original unwarped image shall be moved to position (x, y) in the final warped image, where <Editors note: check ISO. instructions> Convert these formula images to text so a spec reader can copy-paste these <Editors note: Reorder in procedural order so x' y' are last?> 116 © ISO 2008 – All rights reserved ISO/WD 12234-2 and shall be the radial and tangential warp components, respectively. m = the Euclidean distance (in pixels) from the optical centre to the farthest pixel in the warped image. r = the normalized Euclidean distance [0, 1] from the optical centre to a given pixel in the warped image. Implementations should use a suitable resampling kernel, such as a cubic spline. Each coefficient set shall satisfy the following constraints. Let be the 2D warp function defined above. Let and be the x-component and y-component of Let , respectively. . The constraints shall be: shall be invertible. shall be an increasing function of x for all , that is, . shall be an increasing function of y for all , that is, . shall be an increasing function of r for all © ISO 2008 – All rights reserved , that is, . 117 ISO/WD 12234-2 Annex A (informative) TIFF/EP Colour Management Overview A.1 Colour management modes The TIFF/EP image format standard supports four possible colour management modes: sRGB, ICC, DNG and DNG+ICC. The first two modes are supported by Interoperability Profile 1 and the latter two are supported by Interoperability Profile 2. It is also possible for an Interoperability Profile 2 reader to support the DNG colour management mode with an Interoperability Profile 1 TIFF/EP file if the required DNG metadata is present. Colour filter array (CFA) image data, where the missing pixel colour values have not been reconstructed (demosaiced), can only be supported by Interoperability Profile 2. A.2 sRGB colour management mode With the sRGB colour management mode, the image data is converted to the sRGB colour image encoding by the image file creator prior to being placed in the TIFF/EP file format. The image file receiver then has to be able to utilize image data encoded as sRGB. With this colour management mode, the TIFF/EP writer and reader do not perform any colour management conversions. The colour conversions required to create the sRGB image data from the intended sRGB reference display colorimetry, and to determine the sRGB reference display colorimetry from sRGB-encoded image data, are specified in IEC 61966-2-1, with additional information provided in ISO 22028-1. The processing required to create the intended sRGB reference display colorimetry (e.g. in a scanner, digital camera or camera raw processing application), and the processing required to utilize the sRGB reference display colorimetry (e.g. for display or printing), are intentionally not standardized, in order to allow for product differentiation and improvement. A.3 ICC colour management mode With the ICC colour management mode, an ICC profile appropriate for the image data is included in the TIFF/EP metadata (i.e the ICC profile is “embedded” in the TIFF/EP file). The colour encoding used for the image data in the TIFF/EP file can be any colour encoding for which an ICC profile can be constructed. As ICC profiles are applied globally to the image data this excludes image data requiring spatially varying processing, such as CFA data. Except for this exclusion, a great many colour encodings can be supported using ICC profiles, such as: - Standard output-referred colour image encodings such as sRGB (IEC 61966-2-1), ROMM RGB (ISO 22028-2), ECI RGB (ISO 22028-4), opRGB (IEC 61966-2-4) and ISO _____ (find DCDM X’Y’Z’ number in TC36). - Standard scene-referred colour encodings such as scRGB (IEC 61966-2-2) and RIMM and ERIMM RGB (ISO 22028-3). - Publicly specified vendor colour image encodings such as Adobe RGB (1998). - A variety of working colour spaces, where the ICC profile embedded is created considering the reference medium used. - A variety of native camera colour spaces, so long as the colour values are spatially co-located or have been processed (demosaiced) to produce co-located values for encoding in the image file. With scene-referred colour encodings the embedded ICC profiles can be image specific, to include image specific colour rendering to the ICC perceptual reference medium. With native camera colour spaces the embedded ICC profiles will typically need to be image specific to account for differences in the scene adopted white, camera flare, 118 © ISO 2008 – All rights reserved ISO/WD 12234-2 OECF and camera spectral sensitivities, as well as the possibility of image specific colour rendering to the ICC perceptual reference medium. When ICC colour management is used with Interoperability Profile 1 files, the embedded ICC profile is communicated with the image data for interpretation and subsequent colour conversions. The receiving application or device is expected to be able to convert to the desired destination colour encoding using the embedded ICC profile and the ICC profile for the destination colour encoding, which is supplied by the receiving application or device. In cases where the receiving application or device cannot perform a colour conversion using ICC profiles, the reader is required to use a sRGB profile as the destination profile and to convert to the sRGB colour image encoding directly, and the resulting sRGB image data is then communicated to the receiving application or device. The rendering intent specified in the embedded ICC profile header is used unless overridden by the user through a user interface. NOTE A specific sRGB ICC profile can be embedded in an Interoperability Profile 1 file to provide a specific colour re-rendering to the ICC perceptual reference medium. A.4 DNG colour management mode With the DNG colour management mode, colour metadata pertaining to the processing of the encoded colour data is contained in various TIFF/EP tags. Taken collectively, these tags are referred to as the “DNG profile.” NOTE The DNG profile metadata is distributed across different TIFF/EP tags and does not have a self-contained profile format. ICC profiles have a self-contained profile format and can be communicated individually or embedded in other content formats such as JPEG and PDF. The DNG profile metadata provides the information necessary for Interoperability Profile 2 readers to convert the image file data to a scene-referred colour encoding. This conversion can be accomplished using default or cameraprovided values specified in the TIFF/EP file, or by adjusting the values in a camera raw processing application user interface. Interoperability Profile 2 readers are required to have the capability to produce an Interoperability Profile 1 TIFF/EP file as the result of the DNG colour management processing, but different readers may produce different resulting files. As the primary benefit of the DNG colour management mode is to provide the capability for users to adjust the processing to both scene-referred (e.g. white balance), and output-referred (e.g. colour rendering), it is anticipated that camera raw processing applications will typically be the receiving applications, and that a user interface will be available. It is allowed to include DNG profile metadata in an Interoperability Profile 1 file, although the DNG profile metadata will be ignored by an Interoperability Profile 1 reader. Camera raw processing applications are also allowed to use other TIFF/EP metadata for processing. For example, the OECF and SpectralSensitivity tags could be used to determine conversions to scene-referred other than those provided in the DNG profile (or if a DNG profile is not present), or the BrightnessValue tag could be used to guide automated colour rendering processing. DNG profile metadata may optionally include colour rendering processing metadata but reader support of such metadata is not required. A.5 DNG+ICC colour management mode With the DNG+ICC colour management mode, both the DNG profile metadata and an ICC profile are present in the TIFF/EP file. The DNG profile metadata and camera raw reader application are used to convert to ICC PCSXYZ values. These values are then sent to the receiving application or saved with the embedded PCSXYZ v4 ICC profile that provides a conversion to the ICC perceptual reference medium (colour rendering to output-referred). The embedded ICC profiles can be image-specific. When both the DNG profile metadata and an ICC profile are present in an Interoperability Profile 2 TIFF/EP file, it is assumed that the DNG profile metadata will be used for the conversion to PCSXYZ, and the ICC profile will be applied after this conversion. The ICC profile is not applied directly to the image data in the Interoperability Profile 2 TIFF/EP file. © ISO 2008 – All rights reserved 119 ISO/WD 12234-2 Annex B (informative) DNG Colour Processing Guidelines <Editor's Note: This annex is based on information available in DNG v1.2 document. The information below is copied directly from the document (except for editors notes) and may be revised. A brief explanation on the theoretical basis for this colour processing pipeline will be added. One example is the use of interpolation between two matrices - one derived from a tungsten-type blackbody radiator illuminant and the second derived from a daylight-type illuminant. The assumption is that an image with a computed color temperature in between the two calibration matrices was captured under an illuminant of (linear) mixed lighting. If the illuminant is unique, it can be characterized by a unique set of color tags, placed in a different "camera profile" as described in the Camera Profiles section.> B.1 Introduction This section describes the Interoperability Profile 2 colour processing applied based on the DNG profile metadata. NOTE The colour processing applied based on the ICC profile metadata is specified in ISO 15076-1 and other ICC publications. Mapping the native camera color space to the CIE XYZ color space This section describes DNG's processing model for mapping between the camera color space coordinates (linear reference values) and CIE XYZ (with a D50 adopted neutral chromaticity). Camera Calibration Matrices DNG 1.2.0.0 and later supports different companies creating the camera calibration tags using different reference cameras. When rendering a DNG file using a camera profile, it is important to know if the selected camera profile was designed using the same reference camera as was used to create the camera calibration tags. If so, the camera calibration tags should be used. Otherwise, it is better to ignore the camera calibration tags, and use identity matrices instead, to minimize the worse case calibration mismatch error. This is matching is done by comparing the CameraCalibrationSignature tag and the ProfileCalibrationSignature tag for the selected camera profile. If they match, use the camera calibration tags. Otherwise, use identity matrices instead. One or Two Color Calibrations DNG provides for one or two sets of color calibration tags, each set optimized for a different illuminant. If both sets of color calibration tags are included, the raw converter should interpolate between the calibrations based on white balance selected by the user. If two calibrations are included, it is recommended that one of the calibrations be for a low color temperature illuminant (e.g., Standard-A), and the second calibration illuminant be a higher color temperature illuminant (e.g., D55 or D65). This combination has been found to work well for wide range of real-world digital camera images. DNG versions before 1.2.0.0 left the choice of interpolation algorithm up the raw converter. DNG 1.2.0.0 and later requires a specific interpolation algorithm, which is linear interpolation using inverse correlated color temperature. The find the interpolation weighting factor between the two tags sets, find the correlated color temperature for the user selected white balance, and the two calibration illuminants. If the white balance temperature is between two 120 © ISO 2008 – All rights reserved ISO/WD 12234-2 calibration illuminant temperatures, invert all the temperatures and use linear interpolation. Otherwise, use the closest calibration tag set. Definitions used in the following sections: Let n be the dimensionality of the camera color space (usually 3 or 4). Let CM be the n-by-3 matrix interpolated from the ColorMatrix1 and ColorMatrix2 tags. Let CC be the n-by-n matrix interpolated from the CameraCalibration1 and CameraCalibration2 tags (or identity matrices if the signatures don’t match). Let AB be the n-by-n matrix, which is zero except for the diagonal entries, which are defined by the AnalogBalance tag. Let RM be the 3-by-n matrix interpolated from the ReductionMatrix1 and ReductionMatrix2 tags. Let FM be the 3-by-n matrix interpolated from the ForwardMatrix1 and ForwardMatrix2 tags. Translating White Balance xy Coordinates to Camera Neutral Coordinates If the white balance is specified in terms on an CIE xy coordinate, this can be translated to a camera neutral coordinate by first finding the correlated color temperature for the xy value. This determines the interpolation weighting factor to use between the two sets of color calibration tags. The XYZ to camera space matrix is: XYZtoCamera = AB * CC * CM The camera neutral can be found by computing expanding the xy value to an 3-by-1 XYZ matrix (assuming Y = 1.0), and multiplying it with the XYZtoCamera matrix. CameraNeutral = XYZtoCamera * XYZ Translating Camera Neutral Coordinates to White Balance xy Coordinates This is slightly more complex than the transform the other direction, since it requires an iterative solution. First guess an xy value. Use that guess to find the interpolation weighting factor between the color calibration tags. Find the XYZtoCamera matrix as above. Then find a new xy value by computing: XYZ = Inverse (XYZtoCamera) * CameraNeutral (If the XYZtoCamera matrix is not square, use the pseudo inverse.) And converting the resulting XYZ to a new xy value. Iterate until the xy values converge to a solution. Camera to XYZ (D50) Transform DNG 1.2.0.0 and later support two ways to specify the camera to XYZ (D50) transform, depending on whether the forward matrix tags are included in the camera profile or not. The use of the forward matrix tags is recommended for two reasons. First, it allows the camera profile creator to control the chromatic adaptation algorithm used to convert between the calibration illuminant and D50. Second, is causes the white balance adjustment (if the user white balance does not match the calibration illuminant) to be © ISO 2008 – All rights reserved 121 ISO/WD 12234-2 done by scaling the camera coordinates rather than adapting the resulting XYZ values, which has been found to work better in extreme cases. If the ForwardMatrix tags are not included in the camera profile: First we need to invert the XYZtoCamera matrix. If n = 3, this is just: CameraToXYZ = Inverse (XYZtoCamera) If n > 3, and the reduction matrix tags are included, then: CameraToXYZ = Inverse (RM * XYZtoCamera) * RM Otherwise: CameraToXYZ = PseudoInverse (XYZtoCamera) The white balanced transform is computed: CameraToXYZ_D50 = CA * CameraToXYZ Where CA is a chromatic adaptation matrix that maps from the white balance xy value to the D50 white point. The recommended way to compute this chromatic adaptation matrix is to use the linear Bradford algorithm. If the ForwardMatrix tags are included in the camera profile: CameraToXYZ_D50 = FM * D * Inverse (AB * CC) Where D is a diagonal n-by-n matrix, computed as required to so the CameraToXYZ_D50 matrix maps the selected camera neutral to XYZ D50. The forward matrix is required to map a unit vector to XYZ D50 by definition, so D can be computed by finding the neutral for the reference camera: ReferenceNeutral = Inverse (AB * CC) * CameraNeutral And then: D = Invert (AsDiagonalMatrix (ReferenceNeutral)) Applying the Hue/Saturation/Value Mapping Table After converting the camera colors have been converted to XYZ (D50) values, then the Hue/Saturation/Value mapping table, if any, is applied. If there are two Hue/Saturation/Value mapping tables, then they are interpolated between using the same method as color calibration tags are interpolated. If only one Hue/Saturation/Value table is included, it is used no matter what the selected white balance was. First the XYZ (D50) values are converted to linear RGB coordinates, using the ProPhoto RGB primaries. (This is also known as RIMM space). The linear RGB coordinates are converted to HSV coordinates (Hue-Saturation-Value). 122 © ISO 2008 – All rights reserved ISO/WD 12234-2 The HSV coordinates are used to index into the mapping table using tri-linear interpolation. The result is three values, a hue shift (in degrees), and saturation scale factor, and a value scale factor. If the division count in a dimension is 1 that means the table is constant for that dimension. Hue is indexed using “wrap-around” math. For example, if HueDivisions is equal to 3, the table samples are at 0 degrees (red), 120 degrees (green), and 240 degrees (blue). The hue coordinate is modified by adding the hue shift. The saturation coordinate is modified by multiplying by the saturation scale factor, and then clipping to no more than 1.0. The value coordinate is modified by multiplying by the value scale factor, and then clipping to no more than 1.0. The HSV coordinates are then converted back to linear RGB coordinates, and then back to XYZ (D50) values. It is recommended that these tables be limited to use a ValueDivisions equal to 1, so the table is only indexed by hue and saturation. This causes all colors with the same hue and saturation, but with different values, to be mapped same new hue and saturation, while preserving their value ratios. © ISO 2008 – All rights reserved 123 ISO/WD 12234-2 124 © ISO 2008 – All rights reserved ISO/WD 12234-2 Annex C (informative) Lossy Compression of Raw Image Data <Editor's Note: This annex defines an lossy image compression algorithm for interoperability profile 2, which currently under consideration. > C.1 Overview of Encoding and Decoding DSC Raw Data The compression workflow (see Fig. 1) refers to the encoding and decoding of DSC raw data and consists of three steps: • Encoding the CFA raw data within the DSC • Compressed raw file format (TIFF/EP) • External decoding of the CFA raw data by a TIFF/EP reader, e.g. a raw converter software Figure 1 - Structure of the workflow for lossy compression of DSC Raw Data The encoding process is controlled by a specific parameter structure. This Raw Encoding Control Data structure may be appropriately set by the Raw Compression Logic with respect to the current camera Settings (e.g. ISO), camera Characteristics (e.g. signal-to-noise-ratio) or Calibration Data. The choice of the control parameters for encoding refers to a specific data set for decoding as well, the Raw Decoding Control Data. These data have to be included as meta data within TIFF/EP for the decoding process. It is the aim of this annex © ISO 2008 – All rights reserved 125 ISO/WD 12234-2 • to define the structures of the Raw Decoding Control Data and the Compressed Raw Data within TIFF/EP (see section 4), • to describe the process how the reader can decode the Compressed Raw Data (decoding model) (section 2) and • to give some recommendations for the camera manufacturer how to choose the variable control data for encoding and decoding (section 3). C.2 Encoding/Decoding Model – Structure and Configurations The encoding and decoding structure is intended to offer various means to the manufacturer to adapt the compression performance to the required demands concerning computational effort, compression ratio and image quality. These means are • the configuration of the processing structure by optional processing stages and • the choice of selectable control parameters for the succeeding processing stages. Figure 2 - Structure of the encoding process The encoding process is defined by the following four stages: • A CFA Separation divides the CFA data of the single image sensor (Bayer pattern) into four sub-images which address the four color planes R, GR, GB and B. • The color signals of a word width of e.g. 14 bit are quantized by a Compression LUT to the required format of the used JPEG encoder, e.g. 12 bit. This one dimensional compression LUT might be a nonlinear (e.g. square root or logarithmic, see section 3) function that can be optimized with respect to the specific camera noise level to meet particular demands (e.g. considering the visual system). [10] • The 4x4 correlation matrix is optional. It defines a linear transform that utilizes the correlation between the 4 color channels to increase the compression ratio. In order to maintain unsigned number types for the 126 © ISO 2008 – All rights reserved ISO/WD 12234-2 succeeding compression stage, appropriate offset values have to be added to the matrix output signals at the end of this processing stage. • The JPEG encoders compress the four color streams independently of each other. They might be controlled by an individual quality factor. In order to preserve highest image quality for this application to raw image data, JPEG 12 bit is being used instead of the common 8 bit version of JPEG. The data flow to decode the compressed image streams corresponds to the inverted encoding model: Figure 3 - Structure of the decoding process First the JPEG Decoder is processed, followed by the linear transformation via the Inverse Correlation Matrix and finally, the Inverse Compression LUT transformation recreates the original CFA sensor data. The data container for the Raw Decoding Control Data within TIFF/EP should include all parameters needed for unpacking the compressed raw data: • Inverse correlation matrix double[ 4x4] and 4 offset values double[ 4] • Inverse compression LUTs uint16[ 4x4096] • JPEG control parameters (4 quantization tables, …) C.3 Recommendations for the Usage and Choice of Parameters The encoding and decoding model are configured by the specific choice of the encoding/decoding control parameters within the camera. These parameters determine the resulting compression ratio and image deterioration by compression noise and artifacts. This section intends to identify the impact of the control parameters on the compression ratio and the image quality. Following, two recommendations of control data sets and model configurations are given. C.3.1 JPEG Compression JPEG’s internal quantization of the DCT coefficients induces compression noise and/or compression artifacts to the overall encoding/decoding process. As long as the input noise level is higher than its compression noise level, the encoding/decoding process can be modelled as a high frequency noise source (the compression noise), and JPEG ringing artefacts are avoided. [10] The compression noise level can be set by a quality factor 0 < QF < 100 respectively the depending DCT quantization tables. Once set, the compression noise level is constant and does not depend on the image intensity level. © ISO 2008 – All rights reserved 127 ISO/WD 12234-2 In order to minimize the signal deterioration and to preserve highest image quality for the application to CFA raw data, JPEG 12 bit is being used instead of the common 8 bit version of JPEG. C.3.2 Compression LUT The Compression/Inverse Compression LUT serves to adjust the constant compression noise to the variable input noise of the CFA raw data. The raw data noise mainly depends on the signal intensity, the ISO setting, the exposure time and the temperature. The local slope of the LUT function represents the gain factor that converts the noise level. A common gamma 0.5 2 function with γ=2, y=x as compression LUT and y=x as decompression LUT for example, adjusts the compression noise to an ideal photon shot noise of the sensor. Moreover, this choice of Compression LUT uniformly distributes the visibility of the compression noise. [10] C.3.3 Correlation Matrix The correlation matrix may form a luminance – chrominance transformation emphasizing color differences of the incoming color signals. It is intended to reduce the correlation between the four color channels and following, to increase the compression ratio. In order to preserve the digital word width of the output signals, the row sum of its absolute elements should be chosen to unity. But these constraints on the matrix coefficients cause an amplified compression noise level. Considering the following matrices for the encoding/decoding model -1 clarifies the noise amplifying behaviour of the inverse correlation matrix CM . C.3.4 Configuration 1 CFA raw data have to pass different processing steps like demosaicking, sharpening and denoising to get a rendered image. Ambitious photographers expect the best image quality and a manual post-processing by the raw converter processing chain. Therefore, a lossy compression of the CFA raw data has to be able to maintain the original image structures (noise, edges etc.) and to avoid compression artifacts up to a great extent. Configuration 1 is focused on preventing JPEG compression artifacts and to ensure low compression noise. To avoid the amplification of compression noise the optional correlation matrix is disabled (comparable to the identity matrix). The sensor noise is adapted by the compression LUTs of a gamma function (see above) and an appropriate JPEG quality factor of about QF~80..90. Thus, a PSNR of about 60 dB is obtained at a compression ratio of 1:4. [10] 128 © ISO 2008 – All rights reserved ISO/WD 12234-2 Figure 4 – Structure of configuration 1 C.3.5 Configuration 2 The second proposal uses the correlation matrix of above to utilize the correlation between the 4 channels and to increase the compression ratio. The GR -pattern data (channel 2) acts as reference plane and is transferred unchanged to the JPEG compression. The other output channels represent the difference signals of the other color planes against the reference channel. The compression LUTs can be used as for configuration 1. The quality factors for the JPEG encoders may be set individually according to the impact of that signal to the visible image quality. An optimization of that special encoding model refers to the GR reference pattern data. Before entering the correlation matrix the reference channel runs the JPEG process. Thereby the noise evolved from JPEG concerning the reference channel GR is taken into account before calculating the channel differences in the correlation matrix. Thereupon the color differences and the unmodified GR data will be compressed by JPEG. Thus, the reference data appears identically for both the compression and the decompression process concerning the correlation matrix and avoids further error propagation. This improvement only affects the compression model, the decompression model appears unchanged. [ 11] © ISO 2008 – All rights reserved 129 ISO/WD 12234-2 Figure 5 - Structure of configuration 2 C.4 Compression Data Structure for TIFF/EP Tag numbers and data types and structures have to be defined yet. 130 © ISO 2008 – All rights reserved ISO/WD 12234-2 Annex D (informative) TIFF/EP Workflow Example <Editors Note: This annex will contain a full example tracing tag data through a sample workflow> © ISO 2008 – All rights reserved 131 ISO/WD 12234-2 Annex E (normative) Mapping Raw Values to Linear Reference Values The section describes DNG’s processing model for mapping stored raw sensor values into linear reference values. Linear reference values encode zero light as 0.0, and the maximum useful value (limited by either sensor saturation or analog to digital converter clipping) as 1.0. If SamplesPerPixel is greater than one, each sample plane should be processed independently. The processing model follows these steps: - Linearization - Black Subtraction - Rescaling - Clipping E.1 Linearization The first step is to process the raw values through the look-up table specified by the LinearizationTable tag, if any. If the raw value is greater than the size of the table, it is mapped to the last entry of the table. E.2 Black Subtraction The black level for each pixel is then computed and subtracted. The black level for each pixel is the sum of the black levels specified by the BlackLeel, BlackLevelDeltaH and BlackLevelDeltaV tags. E.3 Rescaling The black subtraced values are then rescaled to map them to the logical 0.0 to 1.0 range. The scale factor is the inverse of the difference between the value specified in the WhiteLevel tag and the maximum computed black level for the sample plane. E.4 Clipping The rescaled values are then clipped to a 0.0 to 1.0 logical range. 132 © ISO 2008 – All rights reserved ISO/WD 12234-2 Annex F (normative) Mapping Camera Color Space to CIE XYZ Space This section describes the DNG processing model for mapping between the camera colour space coordinates (linear reference values) and CIE XYZ (with a D50 white point). F.1 Camera Calibration Matrices DNG 1.2.0.0 and later supports different companies creating the camera calibration tags using different reference cameras. When rendering a DNG file using a camera profile, it is important to know if the selected camera profile was designed using the same reference camera used to create the camera calibration tags. If so, then the camera calibration tags should be used. If not, then it is preferable to ignore the camera calibration tags and use identity matrices instead in order to minimize the worse case calibration mismatch error. This matching is done by comparing the CameraCalibrationSignature tag and the ProfileCalibrationSignature tag for the selected camera profile. If they match, then use the camera calibration tags. If not, then use identity matrices. F.2 One or Two Colour Calibrations DNG provides for one or two sets of color calibration tags, each set optimized for a different illuminant. If both sets of color calibration tags are included, then the raw converter should interpolate between the calibrations based on the white balance selected by the user. If two calibrations are included, then it is recommended that one of the calibrations be for a low color temperature illuminant (e.g., Standard-A) and the second calibration illuminant be for a higher color temperature illuminant (e.g., D55 or D65). This combination has been found to work well for a wide range of real-world digital camera images. DNG versions earlier than 1.2.0.0 allow the raw converter to choose the interpolation algorithm. DNG 1.2.0.0 and later requires a specific interpolation algorithm: linear interpolation using inverse correlated color temperature. To find the interpolation weighting factor between the two tag sets, find the correlated color temperature for the user-selected white balance and the two calibration illuminants. If the white balance temperature is between two calibration illuminant temperatures, then invert all the temperatures and use linear interpolation. Otherwise, use the closest calibration tag set. F.3 Definitions used in the following sections Let n be the dimensionality of the camera color space (usually 3 or 4). Let CM be the n-by-3 matrix interpolated from the ColorMatrix1 and ColorMatrix2 tags. Let CC be the n-by-n matrix interpolated from the CameraCalibration1 and CameraCalibration2 tags (or identity matrices, if the signatures don’t match). Let AB be the n-by-n matrix, which is zero except for the diagonal entries, which are defined by the AnalogBalance tag. © ISO 2008 – All rights reserved 133 ISO/WD 12234-2 Let RM be the 3-by-n matrix interpolated from the ReductionMatrix1 and ReductionMatrix2 tags. Let FM be the 3-by-n matrix interpolated from the ForwardMatrix1 and ForwardMatrix2 tags. F.4 Translating White Balance xy Coordinates to Camera Neutral Coordinates If the white balance is specified in terms of a CIE xy coordinate, then a camera neutral coordinate can be derived by first finding the correlated color temperature for the xy value. This value determines the interpolation weighting factor between the two sets of color calibration tags. The XYZ to camera space matrix is: XYZtoCamera = AB * CC * CM The camera neutral can be found by expanding the xy value to a 3-by-1 XYZ matrix (assuming Y = 1.0) and multiplying it by the XYZtoCamera matrix: CameraNeutral = XYZtoCamera * XYZ F.5 Translating Camera Neutral Coordinates to White Balance xy Coordinates This process is slightly more complex than the transform in the other direction because it requires an iterative solution. Guess an xy value. Use that guess to find the interpolation weighting factor between the color calibration tags. Find the XYZtoCamera matrix as above. Find a new xy value by computing: XYZ = Inverse (XYZtoCamera) * CameraNeutral (If the XYZtoCamera matrix is not square, then use the pseudo inverse.) Convert the resulting XYZ to a new xy value. Iterate until the xy values converge to a solution. F.6 Camera to XYZ (D50) Transform DNG 1.2.0.0 and later support two methods of specifying the camera to XYZ (D50) transform, depending on whether or not the forward matrix tags are included in the camera profile. The use of the forward matrix tags is recommended for two reasons. First, it allows the camera profile creator to control the chromatic adaptation algorithm used to convert between the calibration illuminant and D50. Second, it causes the white balance adjustment (if the user white balance does not match the calibration illuminant) to be done by scaling the camera coordinates rather than by adapting the resulting XYZ values, which has been found to work better in extreme cases. F.7 If the ForwardMatrix tags are not included in the camera profile 1. First, invert the XYZtoCamera matrix. If n = 3, this is: 134 © ISO 2008 – All rights reserved ISO/WD 12234-2 CameraToXYZ = Inverse (XYZtoCamera) If n > 3, and the reduction matrix tags are included, then: CameraToXYZ = Inverse (RM * XYZtoCamera) * RM Otherwise: CameraToXYZ = PseudoInverse (XYZtoCamera) 2. The white balanced transform is computed: CameraToXYZ_D50 = CA * CameraToXYZ CA, above, is a chromatic adaptation matrix that maps from the white balance xy value to the D50 white point. The recommended method for computing this chromatic adaptation matrix is to use the linear Bradford algorithm. F.8 If the ForwardMatrix tags are included in the camera profile CameraToXYZ_D50 = FM * D * Inverse (AB * CC) D, above, is a diagonal n-by-n matrix, computed so that the CameraToXYZ_D50 matrix maps the selected camera neutral to XYZ D50. The forward matrix is required to map a unit vector to XYZ D50 by definition, so D can be computed by finding the neutral for the reference camera: ReferenceNeutral = Inverse (AB * CC) * CameraNeutral And then: D = Invert (AsDiagonalMatrix (ReferenceNeutral)) F.9 Applying the Hue/Saturation/Value Mapping Table After the camera colors have been converted to XYZ (D50) values, the Hue/Saturation/Value mapping table, if any, is applied. If there are two Hue/Saturation/Value mapping tables, then they are interpolated in the same way that color calibration tags are interpolated. If only one Hue/Saturation/Value table is included, then it is used regardless of the selected white balance. 1. First, the XYZ (D50) values are converted to linear RGB coordinates, using the ProPhoto RGB primaries. (This is also known as RIMM space). 2. The linear RGB coordinates are converted to HSV coordinates (Hue-Saturation-Value). 3. The HSV coordinates are used to index the mapping table using tri-linear interpolation, resulting in three values: hue shift (in degrees); saturation scale factor; value scale factor. If the division count in a dimension is 1, then the table is constant for that dimension. 4. Hue is indexed using “wrap-around” math. For example, if HueDivisions is equal to 3, then the table samples are at 0 degrees (red), 120 degrees (green), and 240 degrees (blue). 5. The hue coordinate is modified by adding the hue shift. 6. The saturation coordinate is modified by multiplying by the saturation scale factor, and then clipping to no more than 1.0. © ISO 2008 – All rights reserved 135 ISO/WD 12234-2 7. The value coordinate is modified by multiplying by the value scale factor, and then clipping to no more than 1.0. 8. The HSV coordinates are converted to linear RGB coordinates, and then back to XYZ (D50) values. It is recommended that these tables be limited to use a ValueDivisions equal to 1, so the table is only indexed by hue and saturation. In this way, all colors with the same hue and saturation, but with different values, map to the same new hue and saturation while preserving their value ratios. 136 © ISO 2008 – All rights reserved ISO/WD 12234-2 Annex G (informative) TIFF EP tag use examples <Editors note: This annex will contain an example use of each/most TIFF EP tags. The order and structure of this section should duplicate the earlier section that lists the TIFF EP tag.> © ISO 2008 – All rights reserved 137 ISO/WD 12234-2 Annex H (informative) TIFF EP Versus TIFF 6.0 and DNG 1.3 Put the comparison here instead of throughout the text 138 © ISO 2008 – All rights reserved ISO/WD 12234-2 © ISO 2008 – All rights reserved 139 ISO/WD 12234-2 Annex I (informative) TIFF/EP tag lists Table 1 lists the tags and in which type of image they can be used. Table 1 Tags by name and usage in images Tag Name ActiveArea AdoptedWhitePoint AnalogBalance AntiAliasStrength ApertureValue Artist AsShotNeutral AsShotWhiteXY BaselineExposure BaselineNoise BaselineSharpness BatteryLevel BayerGreenSplit BestQualityScale BitsPerSample BlackLevel BlackLevelDeltaH BlackLevelDeltaV BlackLevelRepeatDim BrightnessValue CalibrationIlluminant1 CalibrationIlluminant2 CameraCalibration1 CameraCalibration2 CameraSerialNumber CFALayout CFAPattern CFAPlaneColor CFARepeatPatternDim ChromaBlurRadius ColorMatrix1 ColorMatrix2 CompressedBitsPerPixel Compression Copyright DateTime DateTimeOriginal DefaultCropOrigin DefaultCropSize DefaultScale DefectivePixels DNGPrivateData ExposureBiasValue ExposureIndex ExposureProgram ExposureTime FillOrder Flash FlashEnergy FNumber FocalLength FocalPlaneResolutionUnit 140 Tag 50829 100000 50727 50738 37378 315 50728 50729 50730 50731 50732 33423 50733 50780 258 50714 50715 50716 50713 37379 50778 50779 50723 50724 50735 50711 33422 50710 33421 50737 50721 50722 37122 259 33432 306 36867 50719 50720 50718 100000 50740 37380 37397 34850 33434 266 37385 37387 33437 37386 37392 Filespecific (capture & imageinvariant) Capturespecific (imageinvariant) Thumbnail image Profile 1 image ? Profile 2 CFA image Profile 2 non-CFA image Opt Opt Opt Opt Req Req Opt Req Req Opt Opt Opt Req Opt Opt Opt Opt Opt Req Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt ? Opt Opt Opt Req Req Opt Opt Req Opt Req Opt Req Opt Req Opt Req Opt Opt Req Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Req Opt Req Opt Opt Req Opt Req|Opt? Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt © ISO 2008 – All rights reserved ISO/WD 12234-2 FocalPlaneXResolution FocalPlaneYResolution ForwardMatrix1 ForwardMatrix2 GPSInfo ICCProfile ImageDescription ImageHistory ImageLength ImageNumber ImageWidth Interlace IPTC/NAA ISOSpeedRatings JPEGTables LensInfo LightSource LinearizationTable LinearResponseLimit LocalizedCameraModel Make MakerNoteSafety MaskedAreas MaxApertureValue MeteringMode Model NewSubFileType Noise NoiseProfile OECF OpcodeList1 OpcodeList2 OpcodeList3 Orientation OriginalRawFileData OriginalRawFileDigest OriginalRawFileName PhotometricInterpretation PlanarConfiguration PreviewApplicationName PreviewApplicationVersion PreviewColorSpace PreviewDateTime PreviewSettingsDigest PreviewSettingsName ProfileCopyright ProfileEmbedPolicy ProfileToneCurve Rawdatatype RawDataUniqueID RawImageDigest ReductionMatrix1 ReductionMatrix2 ReferenceBlackWhite ResolutionUnit RowInterleaveFactor RowsPerStrip SampleFormat SamplesPerPixel SecurityClassification SelfTimerMode SensingMethod ShadowScale ShutterSpeedValue Software SpatialFrequencyResponse SpectralSensitivity StripByteCounts StripOffsets SubIFDs SubjectDistance SubjectLocation SubTileBlockSize TIFF/EPStandardID TileByteCounts © ISO 2008 – All rights reserved 37390 37391 50964 50965 34853 34675 270 37395 257 37393 256 34857 33723 34855 347 50736 37384 50712 50734 50709 271 50741 50830 37381 37383 272 254 37389 51041 34856 51008 51009 51022 274 50828 50973 50827 262 284 50966 50967 50970 50971 50969 50968 50942 50941 50940 100000 50781 50972 50725 50726 532 296 50975 278 339 277 37394 34859 37399 50739 37377 305 37388 34852 279 273 330 37382 37396 50974 37398 325 Opt Opt Opt Opt Opt Opt Opt ? ? Opt Req Opt Req Opt Opt Req Opt Req ? Opt Req Opt Req ? Opt Opt Opt Opt Opt Opt Opt Opt Opt Req Opt Opt Use Opt Opt Opt Req Req Opt Opt Use Req Req Req Req Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Opt Req Opt Req Opt Opt Req Opt Req Opt Opt Opt Opt Opt Req Opt Req Opt Opt Opt Opt Opt Req|Opt? Opt Opt Opt Req|Opt? Req Req Opt ? Req Req Req Req Opt Opt Opt Opt Opt Opt Req Req Opt Opt Opt Opt Opt Opt Opt Opt ? Opt Opt Req Opt Opt Opt Opt Opt Opt Opt Req Req Opt Req Req Opt Opt Opt Opt Opt Opt Opt Opt Req Req Req Req Use Req Req Use Req Req Opt Opt Opt Opt Opt Opt Req Req Req Opt Opt Opt Opt Req 141 ISO/WD 12234-2 TileLength TileOffsets TileWidth TimeZoneOffset UniqueCameraModel WhiteLevel XMP XResolution YCbCrCoefficients YCbCrPositioning YCbCrSubSampling YResolution 323 324 322 34858 50708 50717 700 282 529 531 530 283 Opt Opt Opt Opt Req Req Req Opt Opt Opt Opt Opt Opt Use Opt Opt Opt Opt Opt Use Req Req Req Opt Use Opt Use Opt Req Req Req Opt Use Opt Use Opt Opt Opt Table 2 lists the tags in numerical order. Table 2 -Tags by number Tag 142 Hex Tag Name 254 00FE.H NewSubFileType 256 0100.H ImageWidth 257 0101.H ImageLength 258 0102.H BitsPerSample 259 0103.H Compression 262 0106.H PhotometricInterpretation 266 010A.H FillOrder 270 010E.H ImageDescription 271 010F.H Make 272 0110.H Model 273 0111.H StripOffsets 274 0112.H Orientation 277 0115.H SamplesPerPixel 278 0116.H RowsPerStrip 279 0117.H StripByteCounts 282 011A.H XResolution 283 011B.H YResolution 284 011C.H PlanarConfiguration 296 0128.H ResolutionUnit 305 0131.H Software 306 0132.H DateTime © ISO 2008 – All rights reserved ISO/WD 12234-2 © ISO 2008 – All rights reserved 315 013B.H Artist 322 0142.H TileWidth 323 0143.H TileLength 324 0144.H TileOffsets 325 0145.H TileByteCounts 330 014A.H SubIFDs 339 0153.H SampleFormat 347 015B.H JPEGTables 529 0211.H YCbCrCoefficients 530 0212.H YCbCrSubSampling 531 0213.H YCbCrPositioning 532 0214.H ReferenceBlackWhite 700 02BC.H XMP 33421 828D.H CFARepeatPatternDim 33422 828E.H CFAPattern 33423 828F.H BatteryLevel 33432 8298.H Copyright 33434 829A.H ExposureTime 33437 829D.H FNumber 33723 83BB.H IPTC/NAA 34675 8773.H ICCProfile 34850 8822.H ExposureProgram 34852 8824.H SpectralSensitivity 34853 8825.H GPSInfo 34855 8827.H ISOSpeedRatings 34856 8828.H OECF 34857 8829.H Interlace 34858 882A.H TimeZoneOffset 34859 882B.H SelfTimerMode 143 ISO/WD 12234-2 144 36867 9003.H DateTimeOriginal 37122 9102.H CompressedBitsPerPixel 37377 9201.H ShutterSpeedValue 37378 9202.H ApertureValue 37379 9203.H BrightnessValue 37380 9204.H ExposureBiasValue 37381 9205.H MaxApertureValue 37382 9206.H SubjectDistance 37383 9207.H MeteringMode 37384 9208.H LightSource 37385 9209.H Flash 37386 920A.H FocalLength 37387 920B.H FlashEnergy 37388 920C.H SpatialFrequencyResponse 37389 920D.H Noise 37390 920E.H FocalPlaneXResolution 37391 920F.H FocalPlaneYResolution 37392 9210.H FocalPlaneResolutionUnit 37393 9211.H ImageNumber 37394 9212.H SecurityClassification 37395 9213.H ImageHistory 37396 9214.H SubjectLocation 37397 9215.H ExposureIndex 37398 9216.H TIFF/EPStandardID 37399 9217.H SensingMethod 50708 C614.H UniqueCameraModel 50709 C615.H LocalizedCameraModel 50710 C616.H CFAPlaneColor 50711 C617.H CFALayout © ISO 2008 – All rights reserved ISO/WD 12234-2 © ISO 2008 – All rights reserved 50712 C618.H LinearizationTable 50713 C619.H BlackLevelRepeatDim 50714 C61A.H BlackLevel 50715 C61B.H BlackLevelDeltaH 50716 C61C.H BlackLevelDeltaV 50717 C61D.H WhiteLevel 50718 C61E.H DefaultScale 50719 C61F.H DefaultCropOrigin 50720 C620.H DefaultCropSize 50721 C621.H ColorMatrix1 50722 C622.H ColorMatrix2 50723 C623.H CameraCalibration1 50724 C624.H CameraCalibration2 50725 C625.H ReductionMatrix1 50726 C626.H ReductionMatrix2 50727 C627.H AnalogBalance 50728 C628.H AsShotNeutral 50729 C629.H AsShotWhiteXY 50730 C62A.H BaselineExposure 50731 C62B.H BaselineNoise 50732 C62C.H BaselineSharpness 50733 C62D.H BayerGreenSplit 50734 C62E.H LinearResponseLimit 50735 C62F.H CameraSerialNumber 50736 C630.H LensInfo 50737 C631.H ChromaBlurRadius 50738 C632.H AntiAliasStrength 50739 C633.H ShadowScale 50740 C634.H DNGPrivateData 145 ISO/WD 12234-2 146 50741 C635.H MakerNoteSafety 50778 C65A.H CalibrationIlluminant1 50779 C65B.H CalibrationIlluminant2 50780 C65C.H BestQualityScale 50781 C65D.H RawDataUniqueID 50827 C68B.H OriginalRawFileName 50828 C68C.H OriginalRawFileData 50829 C68D.H ActiveArea 50830 C68E.H MaskedAreas 50940 C6FC.H ProfileToneCurve 50941 C6FD.H ProfileEmbedPolicy 50942 C6FE.H ProfileCopyright 50964 C714.H ForwardMatrix1 50965 C715.H ForwardMatrix2 50966 C716.H PreviewApplicationName 50967 C717.H PreviewApplicationVersion 50968 C718.H PreviewSettingsName 50969 C719.H PreviewSettingsDigest 50970 C71A.H PreviewColorSpace 50971 C71B.H PreviewDateTime 50972 C71C.H RawImageDigest 50973 C71D.H OriginalRawFileDigest 50974 C71E.H SubTileBlockSize 50975 C71F.H RowInterleaveFactor 51008 C740.H OpcodeList1 51009 C741.H OpcodeList2 51022 C74E.H OpcodeList3 51041 C761.H NoiseProfile 100000 #NUM! AdoptedWhitePoint © ISO 2008 – All rights reserved ISO/WD 12234-2 © ISO 2008 – All rights reserved 100000 #NUM! DefectivePixels 100000 #NUM! Rawdatatype 147 ISO/WD 12234-2 Bibliography [1] ISO 12231, Photography — Electronic still-picture cameras — Terminology [2] CCIR 601:1982, Encoding parameters of digital television for studios [3] Digital Still Camera File Format Standard (Exchangeable image file format for Digital Still Camera: Exif), Version 2.1, June 1998, Japan Electronic Industry Development Association (JEIDA) [4] ICC.1:2001, File Format for Colour Profiles [5] TIFF Revision 6 specification, Adobe Corporation, 1992 [6] TIFF Technical Note 1: TIFF Trees, Adobe Corporation [7] Draft TIFF Technical Note 2: TIFF JPEG, Adobe Corporation [8] IPTC-NAA (International Press Telecommunications Council — Newspaper Association of America) Information Interchange Model and Digital Newsphoto Parameter Record, Version 2, April 14, 1993, available from the Newspaper Association of America, The Newspaper Centre, 11600 Sunrise Valley Drive, Reston, VA 22091 [9] GeoTIFF specification, available at http://www.remotesensing.org/geotiff/geotiff.html [10] Guidelines For Handling Image Metadata, Version 1.0, Metadata Working Group [11] G. Fischer, D. Kunz, K. Köhler, A Survey on Lossy Compression of DSC Raw Data, Proc. Electronic Imaging Conf. Digital Photography IV, 2008 [12] C. Lee, J. Lee, Efficient Color Coding for Color Filter Arrays, Proc. Electronic Imaging Conf. Digital Photography IV, 2008 [13] K. Parulski, R. Reisch, Digital Camera Image Storage Formats, Chapter 13 of Single-Sensor Imaging: Methods and Applications for Digital Cameras, Rastislav Lukac, editor, CRC Press, 2008 [14] Ed note: Add NITF informative ref [15] "RichTIFF -- Standardized TIFF File Specification”, Crossfield, Inc., May 1993. 148 © ISO 2008 – All rights reserved WORKING DRAFT ApertureValue, 54 Artist, 47 BatteryLevel, 60 BitsPerSample, 36 BrightnessValue, 55 CFAPattern, 35 CFARepeatPatternDim, 35 CompressedBitsPerPixel, 40 Compression, 40 Copyright, 47 DateTime, 52 DateTimeOriginal, 52 ExposureBiasValue, 55 ExposureIndex, 62 ExposureProgram, 56 ExposureTime, 53 Flash, 57 FlashEnergy, 58 FNumber, 54 FocalLength, 59 FocalPlaneResolutionUnit, 31 FocalPlaneXResolution, 30 FocalPlaneYResolution, 31 GPSInfo, 49 © ISO 2008 – All rights reserved ISO/WD 12234-2 ImageDescription, 47 ImageHistory, 48 ImageLength, 27 ImageNumber, 47 ImageWidth, 27 InterColourProfile, 62 Interlace, 34 IPTC/NAA, 48 ISOSpeedRatings, 62 JPEGTables, 41 LightSource, 61 Make, 45 MaxApertureValue, 55 MeteringMode, 56 Model, 45 NewSubFileType, 29 Noise, 64 OECF, 63 Orientation, 32 PhotometricInterpretation, 33 PlanarConfiguration, 34 ReferenceBlackWhite, 43 ResolutionUnit, 30 RowsPerStrip, 37 SamplesPerPixel, 36 SecurityClassification, 48 SelfTimerMode, 60 SensingMethod, 35 ShutterSpeedValue, 54 Software, 45 SpatialFrequencyResponse, 64 SpectralSensitivity, 63 StripByteCounts, 38 StripOffsets, 37 SubIFDs, 29 SubjectDistance, 59 SubjectLocation, 60 TIFF/EPStandardID, 27 TileByteCounts, 39 TileLength, 38 TileOffsets, 39 TileWidth, 38 TimeZoneOffset, 53 XResolution, 29 YCbCrCoefficients, 42 YCbCrPositioning, 42 YCbCrSubSampling, 41 YResolution, 30 149