As usual when new Leica cameras come out, I took a quick look inside some DNGs from one of Leica's new M10 cameras. Usually, there's not much to see with Leica DNGs - they are typically text-book vanilla DNGs. But with the Leica M10, things are bit more interesting.

The first thing to note is that I obtained sample DNGs from three sources; these three sources will become important later. The sources were:
  1. From the DPReview site.
  2. The "performance proofs" from the official Leica site.
  3. Some shots from a demo camera, shot by "Tobers".

What's in the DNGs

Firstly, let's talk about what's in the files:
  1. There is no version number for the camera firmware in the majority of files. In those where a version number does exist, it is 1.0.1.0. Having a firmware version number isn't a requirement, but is certainly considered to be best practice. All previous Leica cameras did have a firmware version number.
  2. The camera name shows as "LEICA M10"
  3. The image data is 14-bit.
  4. All of the files use lossless JPEG compression 
  5. The DNG version is 1.4, with a "backward version" of 1.3. This is the same as most current generation Leica cameras.
  6. In the DNGs I looked at, there are no "opcode" lens corrections, as seen, for example, in the Leica Q. 
  7. In all files, there is a embedded named DNG camera profile, or at least parts of one. The profile is named "LEICA M10              ". Note the large number of trailing spaces. 
  8. Unusually, the DNGs all contain 3 different JPEG preview images in addition to the main raw image, one of 1440x960, one of 160x120, and finally a full sized preview of 5952x3968. Having the full sized preview is particularly odd, as it takes up a lot of space. In the approximately 25-30 MB files I've seen, the full size preview typically takes up about 1.8 MB. I discuss the possible reasons for this later.
  9. The color matrix doesn't appear very similar to that from the Leica SL. So the likelihood is that speculation that the sensor is the same as that in the SL is probably incorrect. 
  10. The profile has a "Looktable". Looktables allow color transforms. For more info see my blog posts on the subject. However, it's a very strange looktable - see below.
  11. There is EXIF data for the lens, which is new. However, it's broken - see below.
  12. All the files had XMP data in them, but what that was there varied - see below.

What's not in the DNG

Some users will be disappointed that there's not an estimated as-shot aperture (or f-stop) in the DNG. Leica have flipped-flopped on this - back in the days of the M8, the estimated aperture wasn't written to the DNG, but could be calculated from the "blue dot" data in the makernotes. I set up CornerFix to read that information, and add the estimated aperture to the DNG, and later Adobe added the ability to read the "blue dot" information to Lightroom as well. In later models, Leica relented, and added the estimated aperture to the DNG. But now it seems to have gone again. And no, the "blue dot" information is no more, so CornerFix won't help you. The information is probably hiding in the makernotes somewhere, but it will take some detective work to root out.

The strange looktable

ProfileLookTableDims: Hues = 3, Sats = 2, Vals = 1
ProfileLookTableData:
h [ 0] s [ 0]: h= 0.0000 s=1.0000 v=1.0000
h [ 0] s [ 1]: h= 0.0000 s=1.0000 v=1.0000
h [ 1] s [ 0]: h= 0.0000 s=1.0000 v=1.0000
h [ 1] s [ 1]: h= 0.0000 s=1.0000 v=1.0000
h [ 2] s [ 0]: h= 0.0000 s=1.0000 v=1.0000
h [ 2] s [ 1]: h= 0.0000 s=1.0000 v=1.0000
ProfileLookTableEncoding: Linear
  This is the looktable. Perfectly formed and valid, but does nothing at all. So what's it doing there?

The broken lens EXIF data

One of things that I do to all new DNGs is to run them through Adobe's DNG validation tool. The M10's threw the following warning:
*** Warning: Possible MaxApertureValue conflict with LensInfo ***
The reason for this can be found in how the lens shows in the LensEXIF tag:

24.0 mm f/248.0
In reality, the lens is a Summilux-M 1:1.4/24 ASPH.

Lots of (different) XMP data

As mentioned above, the various image files contained different XMP data. Firstly, by way of background, XMP stands for Extensible Metadata Platform (XMP). XMP is an ISO standard, originally created by Adobe, to allow metadata to be embedded in images, PDFs, etc. Unsurprisingly, Adobe's DNG format explicitly supports XMP data, although it's very rarely found in camera generated images. It is very often found in images that have been processed by Adobe Lightroom or Photoshop. Both Lightroom and Photoshop use XMP to store adjustments, etc directly to DNG files. So for example, in a DNG that has been processed through Lightroom, you might find something like:
XMP:    crs:Temperature="3500"
XMP:    crs:Tint="+24"
XMP:    crs:Saturation="0"
XMP:    crs:Sharpness="29"
This sets the sharpness setting to 29, etc. For a "normal" raw file, Adobe stores this information in separate "sidecar" files.

Lightroom also leaves a history of what's been done to an image in the XMP, so for example:
XMP:      
XMP:    
XMP:      XMP:       stEvt:action="converted"
XMP:       stEvt:parameters="from image/dng  to image/dng"/>
XMP:      XMP:       stEvt:action="saved"
XMP:       stEvt:instanceID="xmp.iid:691e10f8-fb5a-4bc0-8465-cca0e0319c13"
XMP:       stEvt:when="2017-01-11T11:52:07-08:00"
XMP:       stEvt:softwareAgent="Adobe Photoshop Lightroom 6.8 (Macintosh)"
XMP:       stEvt:changed="/metadata"/>
XMP:      XMP:       stEvt:action="saved"
XMP:       stEvt:instanceID="xmp.iid:e90503e6-47da-4388-943e-4643d6307c35"
XMP:       stEvt:when="2017-01-11T16:05:29-08:00"
XMP:       stEvt:softwareAgent="Adobe Photoshop Camera Raw 9.8 (Macintosh)"
XMP:       stEvt:changed="/metadata"/>
XMP:    

XMP:    
This (ostensibly) shows that the image in question was converted by Adobe Lightroom 6.8. So it's not something you'd expect to find in a camera generated DNG, unless that DNG had been somehow processed though Lightroom. But in fact:
  • The Lightroom "fingerprints" above are present in the M10 DNG files from both DPReview, and Leica's own performance proofs.
  • But the images shot on the demo camera don't have Lightroom fingerprint in them. They do have an XMP placeholder, basically an empty XMP header, but no Lightroom adjustment information, etc
It is also the Lightroom fingerprint that is responsible for version numbers  not being present in most files; in the files where the fingerprint is present, the "Software" tag that usually holds the Leica version number has been overwritten with "Adobe Photoshop Lightroom 6.8 (Macintosh)".

Lightroom/Photoshop noise reduction settings vary depending on camera settings

The Lightroom/Photoshop settings will be what's loaded when one of these files is imported into Lightroom for the first time. Note also that these settings can vary depending on camera settings. So, for example, noise reduction setting appear to vary by ISO (or perhaps some other camera setting):

For an 800 ISO image:
XMP:    crs:LuminanceSmoothing="0"
XMP:    crs:ColorNoiseReduction="25"
But for an 6400 ISO image:
XMP:    crs:LuminanceSmoothing="25"
XMP:    crs:ColorNoiseReduction="25"
So Lightroom is being told to do stronger noise reduction at higher ISOs. Of course, other Lightroom setting may also vary depending on other camera settings.

And then there's the lens profile.....

Just confuse things a bit further, the XMP data that has the Lightroom "fingerprints" in it also has lens profile information, for example:

XMP:    crs:LensProfileSetup="LensDefaults"
XMP:    crs:LensProfileName="Adobe (Leica SUMMILUX-M 35 mm f/1.4 ASPH.)"
XMP:    crs:LensProfileFilename="Leica Camera AG (Leica SUMMILUX-M 35 mm f1.4 ASPH.) - RAW.lcp"
By way of background, in the world of DNGs and Adobe Lightroom/Photoshop, there are two separate way that lens corrections can be applied:
  1. By opcodes embedded into DNGs. This has been extensively used by Leica for their point and shoot cameras, e.g.,  the Leica Q, as well as the Leica SL. But never for M class cameras.
  2. Via Adobe lens profiles, applied via Lightroom or Photoshop. Generally these have to be installed on the computer that LR/Photoshop is running on. It's this kind of profile information that's embedded in the XMP - not actual lens correction data, but simply a reference to a file that contains the lens correction data.
However, this is a strange thing to put into an camera generated DNG. You can't really be sure that the named profile will be installed, and having a lens profile in the XMP will probably result in that profile being loaded by default, which not all users will be happy with. Also, it will only have an effect if the user is using Adobe software. But given that the profile matches the lens actually on the camera, this seems to be deliberate on Leica's part.

So what's going on here?

So all of this begs the question of what's going on here. It is the case that the M10's DNGs don't show the usual Leica perfectionism - rather they look as if firmware development for the M10 was rushed, and not much quality control was done. It's possible, although I think unlikely, that both DPReview and Leica posted images that actually had been modified by Lightroom in exactly identical ways. But some elements of what I've discussed here clearly are deliberate. I certainly don't know what's in Leica's head, but here are some hypotheses. Aka., guesses:

Firstly, I think it's very likely that both the full size preview image and the "Lightroom XMP data" are there to support the Leica M App:
  • The full sized preview image is there to allow the user to see the image at full size, even if at relatively low quality. Bear in mind that even today there are only a handful of apps on the App store, e.g., PhotoRaw, that can reliably do a raw conversion on an iPhone or iPad. 
  • The "Lightroom XMP" data is almost certainly primarily there to enable one of the Leica M App's features - being able to rate images and have those ratings transfer to Lightroom. The technique of "fooling" Lightroom by injecting what looks like a complete set of Lightroom adjustments was used for the same purpose by e.g., Photosmith. 
  • In addition to enabling ratings, the "Lightroom XMP" is also used to setup Lightroom into what Leica seem to consider to be an optimal configuration, with ISO dependent noise reduction, the lens profiles, etc.
Secondly, I think a possible reason why there are some image files with the "Lightroom XMP" information, and some without, may relate to how the files were transferred and/or what camera setting were used. Quite possibly the Lightroom XMP info either is only added if the file is transferred by WIFI/the Leica app but is not added if the image is transferred via an SD card, or is only added if the image is rated. In this regard it's notable that the creation and modification dates in the DNGs are sometimes different, strongly implying that the XMP was injected at some time after capture. Hopefully once the camera becomes available, someone will be able to do some testing and verify exactly what's happening. But there may be other explanations for this as well. Notably there may be different firmware versions in the wild - bear in mind, most files don't have a firmware version code, so there's no way to tell whether we're comparing the same firmware revision.

Why is there a lens profile, noise reduction settings, etc  embedded in the Lightroom XMP data? Well, I guess someone though it was a convenience. My view however is that's its likely to cause more trouble than it's worth.

Finally of course, all of these difference may just be bugs in the firmware. However, I think that's unlikely. For example, the fact that the lens profiles match to the lens attached tends to indicate that at least some of this is deliberate. But of course, as soon as a new firmware version comes out, all this may change. And Leica typically introduce new firmware versions within a month or two of a camera's initial introduction.

If and when someone gets hold of a camera long enough to do some tests, I'll update this post.

Updated: I've created a tool to clean up the M10 DNGs. This will remove the full size preview and the adjustments in XMP.

Note: This post has been updated with new information since it was first published.

6

View comments

  1. Leica has in the past (M8, M9, etc) tended to leave tidying up the EXIF to the very last stage/lowest priority while they work out the operational glitches that the first customers are only too glad to complain about. So I am not surprised to find stuff that looks like it was left over from development in these early files. My concern is that the invocation of lens profile files might be a reference to stuff that only LR can supply from its subscription-updated version, thus locking out other software. And making it trickier for Leica to go back to opcodes that everyone can use.

    scott

    ReplyDelete
  2. Scott, yes, the lens profiles are an odd decision.

    ReplyDelete
  3. Version number appears in the line "software = 1.0.1.0" in Tobers files. But it is obscured by the Adobe overwrite in the Leica downloads and the DPReview files. Maybe 1.0.1.0 is a firmware version ID.

    ReplyDelete
    Replies
    1. Scott, yes. Leica may also have encoded a version number into their proprietary makernotes. But the problem for us is that for the files that have the Lightroom fingerprint, we cant tell what firmware wrote the image file.

      Delete
  4. Hi Sandy,
    Thank You so much for this. You say the color matrix is so different from SL that it means this may be a new sensor. What sorts of sensor design changes would cause this?

    Could it simply be a very different curve in the IR cut coverglass?

    Any suggestions as further reading on this subject?

    TY so much,
    Charlie

    ReplyDelete
  5. The primary driver of the matrix is the characteristics of the dyes used in the Bayer array. In addition, the effects of IR filters, the actual sensitivity of the "naked" sensor, etc all come into it.

    ReplyDelete
Popular Posts
Blog Archive
About Me
About Me
My Photo
Author of AccuRaw, PhotoRaw, CornerFix, pcdMagic, pcdtojpeg, dcpTool, WinDat Opener and occasional photographer....
Loading