Would you like to help? Enable feedback tools for individual sentences.
Our English and German web pages are written and checked by ourselves and are generally correct in their details.
We work hard to provide high quality texts. The occasional spelling mistake might still slip through.
Should you see one it would be very nice of you to let us know. To do this, we have developed a simple system Just click the button at the end of each sentence to let us know, without your reading flow being particularly hindered by the interaction. Once you press the button to save a sentence, we will be notified to review the suggestion.
The feature can be toggled here:
Lens correction in current DNG files: Encountering an archival paradox
The "Digital Negative (DNG)" file format historically seemed to strive to offer a reliable means to photographers and archives to preserve digital photos in a better documented and hopefully more future proof format. Apart from keeping the original raw data as produced by the camera it serves many to archive unprocessed and non-interpolated sensor data along with unified meta data. It also allows the use of such unified images with applications predating a given camera.
In that process Adobe's "DNG Converter" application ensured universal compatibility to various software and/or software generations. A given DNG could always be converted to any older version of the standard later on while closely maintaining the visual result.
Starting with the release of "Adobe Camera Raw (ACR) 12.4" in 2020, this archival stability has been severely disrupted for an increasing number of cameras.
Inclusion of proprietary lens correction elements in current DNG files
For the affected cameras "Adobe DNG converter" embeds proprietary "Lens Correction Profiles" (LCPs) into DNG files when targeting modern ACR versions. This step introduces corrections outside of the DNG specification because these LCPs can only be utilized in specific Adobe software.
The proprietary LCPs are being disregarded in subsequent DNG conversions of existing DNG files targeting older ACR versions or other software. This fact impacts the visual continuity by leaving images distorted with no means of correction. The inclusion of proprietary elements in DNG files and especially the impossibility to convert these to a more universal form later on fundamentally undermines the open nature of the DNG format.
Indeed this means that for various modern cameras a conversion path exists that is exclusively accessible from the original camera raw image while having been made impossible from a derived DNG! For affected cameras discarding the original raw image brings a loss of options.
The mentioned absence of backward or third party compatibility of once generated DNG files risks negating the format's core purpose - to provide a reliable, comprehensive, and universally interpretable archival medium for raw image data. Moreover, since the related algorithms used to apply LCPs in software like Photoshop are proprietary, other vendors' imaging applications cannot completely employ the data.
This article examines some of the complexities introduced by the changes in Adobe's approach to DNG files and looks at what happens at the meta data level. We wrote this report to address a topic we felt was under-covered, in the hope of promoting positive change.
Everyone relying on DNG files for long term archival of raw images from cameras released in 2020 or later should be aware of the implications of this change towards favoring solutions from Adobe’s proprietary software ecosystem.
Camera models we identified to be affected by LCP embedding in our tests
In July 2023 we examined raw images from all camera models we had access to which are newer than "Adobe Camera Raw (ACR) 12.4" and compiled a list of affected models known to us:
- Fujifilm GFX 100S
- Fujifilm GFX 50S II
- Nikon Z FC
- Nikon Z5
- Nikon Z6 II
- Nikon Z7 II
- Nikon Z8
- Nikon Z9
- Nikon ZF
- Panasonic GH5 II
- Panasonic GH6
- Panasonic S5
We expect all models from the same camera makers that were released after the ones listed above to be affected as well. DNGs derived from new cameras from other makers should be examined carefully and not just be assumed to fare fine. In fact no complicated analysis is required. Just look at the final paragraph of this page to learn how to tell when opening an original camera raw image in Photoshop's ACR. Particularly new releases by OM System will be interesting as the OM-5 was unaffected despite being new enough. Cameras may be added to the list sporadically. If you spot any missing entries kindly let us know.
Evolution of in-camera geometric distortion correction: A look at the past
Around the year 2010 a significant change in the digital photography landscape started to form. The introduction of the micro four thirds system, announced by Olympus and Panasonic in August 2008, represented a major milestone in this shift.
Suddenly, the challenge of correcting geometric distortion was not solely a problem to be overcome in optical design anymore. This image defect could now be corrected digitally in-camera, without becoming visible. In case of raw photos camera makers started to include the correction instructions as meta data.
One illustrative example of this innovation was the Olympus E-P1, the original digital Olympus Pen, bundled with a 17mm pancake f2.8 lens. This compact and lightweight lens benefited from the inclusion of digital geometric distortion correction in its design.
In our 2011 image of the Tokyo International Forum by architect Rafael Vinoly, the effect of these corrections becomes clear. Notable differences in corner areas and overall image can be observed when comparing corrected and uncorrected versions of the same image. The example can be clicked to enlarge, so that you can see this much better (move the handle to the left to see the corrected state).
It is important to point out that these digital corrections had already become an integral part of lens design back then. The corrected form was visible even on the camera screen during image composition. At the time they actually were completely intransparent to most users and without special means impossible to deactivate in most Adobe centered workflows.
Simultaneously to micro four thirds gaining traction, Canon started subtly integrating these corrections into their compact consumer point and shoot cameras. That was also around the year 2009. This shift in lens design was initially only discoverable by analyzing raw image data made available through CHDK in-camera software add-ons and did not receive much coverage, to our knowledge.
As the digital photography industry gravitated more towards mirrorless systems and moved away from the traditional DSLR camera designs, digital geometric distortion correction became even more widespread. Today, it is pretty much an industry standard, utilized across numerous brands and camera models. Failing to apply these integral corrections will undermine harnessing the full performance potential of the lens, leaving it operating at only part of its effective capability.
Returning to the DNG discussion: A deep dive into opcodes, LCPs and compatibility
For our in depth exploration, we are going to take a closer look at a CC0 licensed raw image taken with a Nikon Z7 II using the NIKKOR Z 24-70mm f/2.8 S lens. This image, readily available from raw.pixls.us, will serve as our real-world example for the DNG examination.
Differences between the state seen in camera and the actual sensor data can again be observed when comparing corrected and uncorrected versions of the same image. The example can again be enlarged by click (move the handle to the left to see the corrected state).
If you would like to donate additional representative Nikon Z7 II or other affected camera examples do write to us.
Opcodes contained in DNGs when compatibility is set for ACR 11.2 or below
Let's examine the opcodes contained in a DNG file when the "DNG Converter" is set for compatibility with non ancient "Adobe Camera Raw (ACR)" versions up to 11.2 first. In this case, the Maker Note meta data of the Nikon raw image gets converted into a "FixVignetteRadial" opcode in "OpcodeList2" and a "WarpRectilinear" opcode in "OpcodeList3".
OpcodeList2: 1 opcode
Opcode: FixVignetteRadial, minVersion = 1.3.0.0, flags = 0
Radial vignette params: 0.167002, -0.023831, 0.040625, 0.000000, 0.000000
Optical center:
h = 0.500029
v = 0.499863
OpcodeList3: 1 opcode
Opcode: WarpRectilinear, minVersion = 1.3.0.0, flags = 0
Planes: 3
Optical center:
h = 0.500029
v = 0.499863
Plane 0:
Radial params: 0.942946, 0.037120, 0.000247, 0.004814
Tangential params: 0.000000, 0.000000
Plane 1:
Radial params: 0.943147, 0.037107, 0.000264, 0.004813
Tangential params: 0.000000, 0.000000
Plane 2:
Radial params: 0.943081, 0.037081, 0.000259, 0.004812
Tangential params: 0.000000, 0.000000 The reason behind this order of operations is that vignetting is a radially symmetric effect that is relatively straightforward to correct as long as the image's geometry is unchanged. However, once the image's geometry has been warped to fix barrel or pincushion distortion, the vignetting would no longer be radially symmetric and thus become significantly more difficult to correct.
These two opcodes will be embedded for any ACR version following the implementation of the DNG 1.3 standard, which was first supported in June 2009 by ACR 5.4.
In addition the same lens used on any camera release prior to ACR 12.4 like the close sibling Nikon Z7 will always yield this kind of DNG no matter the compatibility choice. These adjustments reflect what was already seen in-camera and are fully compliant to the actual DNG standard. When selecting even older version compatibility than ACR 5.4, the image will be interpolated and the adjustments will be permanently baked into the file.
LCP and minuscule opcode contained in DNGs when compatibility is set for ACR 12.4 or above
Now let's see what happens for the Nikon Z7 II, but not the Z7 when the "DNG Converter" is configured for compatibility with ACR 12.4 or above. In this case, the "FixVignetteRadial" opcode vanishes and the "WarpRectilinear" opcode is replaced by one applying minuscule warping to the red and blue image planes.
OpcodeList2: 0 opcodes
OpcodeList3: 1 opcode
Opcode: WarpRectilinear, minVersion = 1.3.0.0, flags = 0
Planes: 3
Optical center:
h = 0.500029
v = 0.499863
Plane 0:
Radial params: 0.999787, 0.000025, -0.000025, 0.000006
Tangential params: 0.000000, 0.000000
Plane 1:
Radial params: 1.000000, 0.000000, 0.000000, 0.000000
Tangential params: 0.000000, 0.000000
Plane 2:
Radial params: 0.999929, -0.000028, -0.000004, 0.000001
Tangential params: 0.000000, 0.000000 This opcode seems intended to set a level playing field for one universal adjustment to all three color channels by the embedded Lens Correction Profile (LCP), which falls outside of the DNG standard and leads to the problems we discussed initially and which we'll look at next.
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c011 79.156380, 2014/05/21-23:38:37">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<photoshop:CameraProfiles>
<rdf:Seq>
<rdf:li>
<rdf:Description
stCamera:Author="Adobe"
stCamera:Make="NIKON CORPORATION"
stCamera:Model="NIKON Z 7_2"
stCamera:UniqueCameraModel="Nikon Z 7 2"
stCamera:CameraRawProfile="True"
stCamera:AutoScale="False"
stCamera:Lens="NIKKOR Z 24-70mm f/2.8 S"
stCamera:CameraPrettyName="Nikon Z 7 2"
stCamera:LensPrettyName="NIKKOR Z 24-70mm f/2.8 S"
stCamera:ProfileName="Camera Settings"
stCamera:SensorFormatFactor="1.003485"
stCamera:FocalLength="70"
stCamera:FocusDistance="10000"
stCamera:ApertureValue="6.918863">
<crlcp:PerspectiveModel>
<rdf:Description
stCamera:Version="2"
stCamera:ImageXCenter="0.500029"
stCamera:ImageYCenter="0.499863"
stCamera:ScaleFactor="0.943147"
stCamera:RadialDistortParam1="0.411859"
stCamera:RadialDistortParam2="0.030669"
stCamera:RadialDistortParam3="5.85431">
<crlcp:VignetteModel>
<rdf:Description
stCamera:ImageXCenter="0.500029"
stCamera:ImageYCenter="0.499863"
stCamera:VignetteModelParam1="1">
<stCamera:VignetteModelPiecewiseParam>
<rdf:Seq>
<rdf:li>0.000000, 1.000000</rdf:li>
<rdf:li>0.009970, 0.999826</rdf:li>
<rdf:li>0.019940, 0.999306</rdf:li>
<rdf:li>0.029911, 0.998440</rdf:li>
<rdf:li>0.039881, 0.997234</rdf:li>
<rdf:li>0.049851, 0.995690</rdf:li>
<rdf:li>0.059821, 0.993814</rdf:li>
<rdf:li>0.069791, 0.991612</rdf:li>
<rdf:li>0.079762, 0.989092</rdf:li>
<rdf:li>0.089732, 0.986260</rdf:li>
<rdf:li>0.099702, 0.983124</rdf:li>
<rdf:li>0.109672, 0.979690</rdf:li>
<rdf:li>0.119642, 0.975966</rdf:li>
<rdf:li>0.129613, 0.971956</rdf:li>
<rdf:li>0.139583, 0.967666</rdf:li>
<rdf:li>0.149553, 0.963098</rdf:li>
<rdf:li>0.159523, 0.958254</rdf:li>
<rdf:li>0.169493, 0.953133</rdf:li>
<rdf:li>0.179463, 0.947730</rdf:li>
<rdf:li>0.189434, 0.942041</rdf:li>
<rdf:li>0.199404, 0.936056</rdf:li>
<rdf:li>0.209374, 0.929762</rdf:li>
<rdf:li>0.219344, 0.923144</rdf:li>
<rdf:li>0.229314, 0.916183</rdf:li>
<rdf:li>0.239285, 0.908857</rdf:li>
<rdf:li>0.249255, 0.901138</rdf:li>
<rdf:li>0.259225, 0.892998</rdf:li>
<rdf:li>0.269195, 0.884403</rdf:li>
<rdf:li>0.279165, 0.875319</rdf:li>
<rdf:li>0.289136, 0.865707</rdf:li>
<rdf:li>0.299106, 0.855528</rdf:li>
<rdf:li>0.309076, 0.844740</rdf:li>
</rdf:Seq>
</stCamera:VignetteModelPiecewiseParam>
</rdf:Description>
</crlcp:VignetteModel>
</rdf:Description>
</crlcp:PerspectiveModel>
</rdf:Description>
</rdf:li>
</rdf:Seq>
</rdf:RDF>
</x:xmpmeta> The inclusion of the LCP for example enforces that when converting an existing DNG file containing it to work with an older ACR version or any third party software, the LCP is simply dropped from the file without being heeded at all. The image then stays in its warped form.
"Custom" DNG conversion settings are broken for affected cameras
A curious observation arises with the custom compatibility settings of the "DNG Converter". When choosing "Custom" you can choose between DNG standard versions 1.1 to 1.6, decide whether to compress the file, and opt for interpolation by "DNG Converter" by ticking the option "linear (demosaiced)". Yet, regardless of your choice, you will always find an embedded LCP in your DNG files for affected cameras.
This holds true even when you select DNG 1.1 and tick "linear (demosaiced)". Of course, you can choose ACR 2.4 compatibility outside of "Custom" to get what you'd expect, but this shows that the custom settings are effectively broken for such cameras.
Implications for using the "DNG Converter" from the command line
For commandline application of the program this implies that the once optional "-acr" switch is now mandatory if you want to avoid having an LCP in your file when using the "-dng" switch, regardless of whether "-l" is used or not. This sudden change could potentially lead to surprising results for advanced users unaware of this modification in behavior. It sure did for us.
Why is this happening? Did Adobe document it at all?
These changes in DNG files present an intriguing puzzle. Why would Adobe, the creators of the DNG standard, introduce elements that are proprietary and not compliant with the format's open nature? Moreover why is there no fallback or compatibility mechanism like the one introduced in the latest DNG standard (1.6) for the "WarpRectilinear2" opcode?
While we can only speculate, one possibility simply is negligence during making lens adjustments editable in ACR for select new cameras.
While Adobe to our knowledge has not officially commented on this development at all, we found the change to be linked to the editability of in camera lens adjustments in ACR, on which Adobe did not comment oficially, either. There is a forum post however where an Adobe employee mentions the latter in a reply to a long standing feature request.
The forum reply is by Rikk Flohr and stems from September 11, 2020. Flohr confirms that a change has been implemented for select new camera models starting from the release of "Camera Raw 12.4", "Lightroom Classic 9.4", and "Lightroom Desktop 3.4". He also mentions that there are no plans to make this change "retroactive to previously released camera models".
Our findings indicate that this change has since been extended to the majority of new interchangeable lens cameras. While Flohr's comment addresses the fact that lens corrections became editable in ACR for these cameras, it doesn't touch on the broader implications this change has on the DNG format at all.
Identifying affected cameras, simply by looking at original raw images in ACR

After having opened an original camera raw image from a camera introduced to market after 2020 in ACR for Photoshop or PSE you can simply look at the "Optics" section to check whether the situation detailed on this page will affect DNGs created from such a camera's images.
That is not the case if you can spot the text: "Built-in lens profile applied." at the bottom of what we show to the right. If shown that info line can be clicked to get to a message box as shown here for the "Nikkor Z MC 50mm f/2.8" when used on a "Nikon Z7" camera. If however that info line is missing and the "Make", "Model" and "Profile" under "Lens Profile" are populated for the lens and there is a "Correction Amount" slider accessible to you, as is the case when the same Nikon macro lens is used on a "Nikon Z7 II" camera, all we detailed on this page applies to the camera model you look at.
Now if you think that change in ACR is a good thing and that you like it we don't need to debate that by itself.
Our point simply is if the LCP can be generated on the fly when opening an original camera raw image it could as well be when opening a derivate DNG of a given camera. There is really no good reason to complicate or degrade the DNG format by adding this function.



