var advanced_ads_pro_visitor_conditions = {"referrer_cookie_name":"advanced_ads_pro_visitor_referrer","referrer_exdays":"365","page_impr_cookie_name":"advanced_ads_page_impressions","page_impr_exdays":"3650"};
var essb_settings = {"ajax_url":"https:\/\/www.lightstalking.com\/wp-admin\/admin-ajax.php","essb3_nonce":"b59c54b5e1","essb3_plugin_url":"https:\/\/www.lightstalking.com\/wp-content\/plugins\/easy-social-share-buttons3","essb3_stats":true,"essb3_ga":false,"essb3_ga_ntg":false,"blog_url":"https:\/\/www.lightstalking.com\/","post_id":"102038"};
Tone mapping is at the heart of what most people consider to be HDR photography. Although we have a wonderful array of tone mapping software at our finger tips, it isn't necessarily an easy task to create something beautiful with it.
With row upon row of sliders screaming at us, it can be difficult to know what combination will get us our desired result. It's also a challenge learning the strengths and weakness of each HDR program. The more we can familiarise ourselves with the software, the more we'll be able to utilise it to its fullest.
In this article, I'll be giving advice that can be generalised to most tone mapping programs to some degree or another.
1.Create a Flat Image
No matter which software I use, I have one goal: create a flat image with as much detail as possible in all areas. I avoid, at all costs, creating or affecting contrast levels while tone mapping. Instead, all contrast adjustments are done in Photoshop, where I have complete control over every part of the image.
Any contrast adjustments while tone mapping will be applied across the image and could result in a loss of details.
This is the flat output after processing my exposures in Photomatix. All contrast adjustments and colour corrections were done in Photoshop afterwards.
2. Control Colour
Tone mapping has nothing to do with colour. It just so happens that HDR is often associated with over-saturated photos. The fact is, while some HDR programs handle colour extremely well, others don't. Photomatix does a terrible job of remapping colours, often leaving us with a cartoony, over-saturated scene. I always keep the saturation slider at around 35. The soul purpose of of the tone mapping software is to blend my exposures – I'll manage the rest in Photoshop.
3. Deal With Artifacts Beforehand
Again, as with colour control, each software varies in how they handle artifacts such as noise and chromatic aberration. For the most part, I will remove noise after the HDR process. However, I always minimise CA before tone mapping, where it will almost certainly be exaggerated. I open my brackets in Lightroom or ACR and enable ‘Lens Correction Profiles' and then check ‘Remove Chromatic Aberration'. I will then save the resultant files as Tiffs.
On some occasions it is important to apply noise removal before tone mapping, especially if the brackets were shot at a high ISO. In the image below, at Opera Garnier in Paris, the brackets were hand-held, limited to an ev spacing of 1 (-1,0,+1) and shot at ISO 400. Excessive noise was going to be an issue. Using Topaz Denoise to gently reduce noise first, I then saved the files as Tiffs and ran them through Photomatix to get a clean result.
4. Create an Extra Exposure to Expand the Dynamic Range
We all know that it is important to make sure your brackets cover the range of light in a given scene. Sometimes, for whatever reason, we can't achieve that. We get home, look at our brackets and realise that our shadows are too dark or our highlights are blown out. In the image below you can see that my -2 exposure didn't have enough information in the sky.
If I run this set of images through an HDR program, the resultant shot will not have much information in the sky, either. This is because, although I'm inputting RAW or Tiff files, HDR programs cannot utilise the vast amount of data in these files and fill in the gaps. We can, on the other hand, rescue the situation. In Lightroom or ACR you can open your image and decrease the exposure by 2 stops. You will see information in the sky appear. Save this as a fourth exposure and run it through the tone mapping software.
Note: you must be shooting in RAW to do this.
An even quicker way of doing this is through the Highlights slider in both Lightroom and ACR. When you open your three exposures in ACR in order to remove CA, click on the lower exposure and slide the Highlights slider to the left. Again, you will see the information in the sky pop up without it affecting the rest of the image. Then you can save the three files and carry on as usual.
Same exposure as the shot before, but with the Highlights slider pushed to the left in ACR Final image Prambanan Temple by Jimmy McIntyre
5. Keep the EV Spacing Low In other words, try not to create a big gap between exposures when you bracket. Ideally, you would cover the entire range of light in the scene and the exposures would have a difference of 1 (-3, -2, -1, 0, +1, +2, +3). That way there can be a smooth transition between highlights and shadows. If your ev spacing is too large, you may be lacking information that the tone mapping software needs. In this particular example, I was dashing out the church when I saw this potential shot. In a rush, I fired off 3 brackets, -2, 0, +2. Then, to compensate for the extremely bright lights, I shot a -5 exposure. This was a gap of 3 stops from the next darkest exposure.
Since Photomatix didn't have enough information around the lights, which would have been supplied if I'd shot with an ev spacing of 1 all the way down to -5, it created a strange, murky halo.
I couldn't rescue this in Lightroon or ACR, sadly, so the final image had severely over-exposed areas and is not a good example of a balanced HDR.
So much to think about in the HDR process! The great thing is, after a bit of practice, the mindset required to consider all of this, and more, becomes ingrained. You tend to have a mental checklist that automatically ticks necessary procedures off as you work your way along the production of the image.
I hope that, even if you don't choose to implement these ideas into your own workflow, you stow them away somewhere in your mind because you never know when, or if, you might need them.
Travel photographer and international trainer, Jimmy McIntyre was voted one of the best photographers to follow on 500px.com by Fstoppers. His free Youtube tutorials and free Easy Panel for Photoshop have helped photographers around the world achieve powerful results in their images. Feel free to visit his blog here: https://throughstrangelenses.com
excellent tips Jimmy! the more you learn about the finer adjustments about the software used, the better results you’ll have at the end
keep up the good work !
I really appreciated your tone mapping tips. I’ve been an HDR enthusiast for years and feel very accomplished at the process, but I still learned new tricks from your article. In particular, I learned some better methods for more effective removal of artifacts such as noise and chromatic aberrations. Great article. Janine
ill definitely give these tips a try ,iv been very disappointed in my own hdr shots and was at a bit of a loss how to improve, think you have just explained where iv been going wrong lol thanks you
var advanced_ads_cookies = {"cookie_path":"\/","cookie_domain":""};
var advadsCfpInfo = {"cfpExpHours":"3","cfpClickLimit":"3","cfpBan":"7","cfpPath":"","cfpDomain":"www.lightstalking.com"};
var beloadmore = {"url":"https:\/\/www.lightstalking.com\/wp-admin\/admin-ajax.php","query":{"post__not_in":[102038],"category_name":"post-production","posts_per_page":3}};
var tve_dash_front = {"ajaxurl":"https:\/\/www.lightstalking.com\/wp-admin\/admin-ajax.php","force_ajax_send":"1","is_crawler":"","recaptcha":[],"post_id":"102038"};
var TVE_Ult_Data = {"ajaxurl":"https:\/\/www.lightstalking.com\/wp-admin\/admin-ajax.php","ajax_load_action":"tve_ult_ajax_load","conversion_events_action":"tve_ult_conversion_event","shortcode_campaign_ids":[],"matched_display_settings":[],"campaign_ids":[],"post_id":102038,"is_singular":true,"tu_em":"","evergreen_redirects":[]};
(function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async=true;; po.src = 'https://www.lightstalking.com/wp-content/plugins/easy-social-share-buttons3/lib/modules/conversions-pro/assets/share-conversions-tracker.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();(function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async=true;; po.src = 'https://www.lightstalking.com/wp-content/plugins/easy-social-share-buttons3/assets/modules/pinterest-pro.min.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();(function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async=true;; po.src = 'https://www.lightstalking.com/wp-content/plugins/easy-social-share-buttons3/assets/modules/subscribe-forms.min.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();(function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async=true;; po.src = 'https://www.lightstalking.com/wp-content/plugins/easy-social-share-buttons3/assets/js/essb-core.min.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
var essb_handle_stats = function(oService, oPostID, oInstance) { var element = jQuery('.essb_'+oInstance); var instance_postion = jQuery(element).attr("data-essb-position") || ""; var instance_template = jQuery(element).attr("data-essb-template") || ""; var instance_button = jQuery(element).attr("data-essb-button-style") || ""; var instance_counters = jQuery(element).hasClass("essb_counters") ? true : false; var instance_nostats = jQuery(element).hasClass("essb_nostats") ? true : false; if (instance_nostats) { return; } var instance_mobile = false; if( (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i).test(navigator.userAgent) ) { instance_mobile = true; } if (typeof(essb_settings) != "undefined") { jQuery.post(essb_settings.ajax_url, { 'action': 'essb_stat_log', 'post_id': oPostID, 'service': oService, 'template': instance_template, 'mobile': instance_mobile, 'position': instance_postion, 'button': instance_button, 'counter': instance_counters, 'nonce': essb_settings.essb3_nonce }, function (data) { if (data) { }},'json'); } }; var essb_log_stats_only = function(service, postId, position) { var instance_mobile = false; if( (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i).test(navigator.userAgent) ) { instance_mobile = true; } if (typeof(essb_settings) != "undefined") { jQuery.post(essb_settings.ajax_url, { 'action': 'essb_stat_log', 'post_id': postId, 'service': service, 'template': position, 'mobile': instance_mobile, 'position': position, 'button': position, 'counter': false, 'nonce': essb_settings.essb3_nonce }, function (data) { if (data) { }},'json'); } };
let ccwpDOMLoaded=!1;
let ccwp_loaded = false;
let resources_length=0;
let resources =undefined;
let is_last_resource = 0;
ccwpUserInteractions=["keydown","mousemove","wheel","touchmove","touchstart","touchend","touchcancel","touchforcechange"];
ccwpUserInteractions.forEach(function(e){
window.addEventListener(e,calculate_load_times);
});
function calculate_load_times() {
// Check performance support
if (performance === undefined) {
console.log("Performance NOT supported");
return;
}
// Get a list of "resource" performance entries
resources = performance.getEntriesByType("resource");
if (resources === undefined || resources.length <= 0) {
console.log("NO Resource performance records");
}
if(resources.length){
resources_length=resources.length;
}
for(let i=0; i < resources.length; i++) {
if(resources[i].responseEnd>0){
is_last_resource = is_last_resource + 1;
}
}
let uag = navigator.userAgent;
let gpat = /Google Page Speed Insights/gm;
let gres = uag.match(gpat);
let cpat = /Chrome-Lighthouse/gm;
let cres = uag.match(cpat);
let wait_till=300;
let new_ua = "Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36";
let new_ua2 = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36";
if(gres || cres || uag==new_ua || uag==new_ua2){
wait_till = 3000;
}
if(is_last_resource==resources.length){
setTimeout(function(){
console.log("ccwpTriggerDelayedScripts timeout : "+wait_till);
ccwpTriggerDelayedScripts();
},wait_till);
}
}
window.addEventListener("load", function(e) {
console.log("load complete");
setTimeout(function(){
calculate_load_times();
},100);
});async function ccwpTriggerDelayedScripts() {
if(ccwp_loaded){ return ;}
ccwpPreloadStyles();
ccwpPreloadDelayedScripts();
ccwpLoadCss();
ccwpScriptLoading();
ccwp_loaded=true;
}
function ccwpPreloadStyles() {
let e = document.createDocumentFragment();
var cssEle = document.querySelectorAll("link[rel=ccwpdelayedstyle]");
for(let i=0; i <= cssEle.length;i++){
if(cssEle[i]){
cssEle[i].href = removeVersionFromLink(cssEle[i].href);
let r = document.createElement("link");
r.href = cssEle[i].href;
r.rel = "preload";
r.as = "style";
e.appendChild(r);
}
}
document.head.appendChild(e);
}
function ccwpPreloadDelayedScripts() {
var e = document.createDocumentFragment();
document.querySelectorAll("script[type=ccwpdelayedscript]").forEach(function(t) {
var n = removeVersionFromLink(t.getAttribute("src"));
if (n) {
t.setAttribute("src", n);
var r = document.createElement("link");
r.href = n, r.rel = "preload", r.as = "script", e.appendChild(r)
}
}), document.head.appendChild(e)
}
function ccwpScriptLoading(){
var jsEle = document.querySelectorAll("script[type=ccwpdelayedscript]");
jsEle.forEach(function(t) {
t.type = "text/javascript";
if(t.src)
{
t.src = removeVersionFromLink(t.src);
}
});
}function ccwpLoadCss(){
var cssEle = document.querySelectorAll("link[rel=ccwpdelayedstyle]");
for(let i=0; i <= cssEle.length;i++){
if(cssEle[i]){
cssEle[i].href = removeVersionFromLink(cssEle[i].href);
cssEle[i].rel = "stylesheet";
cssEle[i].type = "text/css";
}
}var cssEle = document.querySelectorAll("style[type=ccwpdelayedstyle]");
for(let i=0; i <= cssEle.length;i++){
if(cssEle[i]){
cssEle[i].type = "text/css";
}
}
}
function removeVersionFromLink(link)
{
if(ccwpIsValidUrl(link))
{
const url = new URL(ccwpFormatLink(link));
url.searchParams.delete("ver");
url.searchParams.delete("time");
return url.href;
}
else{
return link;
}
}
function ccwpIsValidUrl(urlString)
{
if(urlString){
var expression =/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
var regex = new RegExp(expression);
return urlString.match(regex);
}
return false;
}
function ccwpFormatLink(link)
{
let http_check=link.match("http:");
let https_check=link.match("https:");
if(!http_check && !https_check)
{
return location.protocol+link;
}
return link;
}
3 Comments
excellent tips Jimmy! the more you learn about the finer adjustments about the software used, the better results you’ll have at the end
keep up the good work !
I really appreciated your tone mapping tips. I’ve been an HDR enthusiast for years and feel very accomplished at the process, but I still learned new tricks from your article. In particular, I learned some better methods for more effective removal of artifacts such as noise and chromatic aberrations. Great article. Janine
ill definitely give these tips a try ,iv been very disappointed in my own hdr shots and was at a bit of a loss how to improve, think you have just explained where iv been going wrong lol thanks you