5. Dynamic range#

ImageSDK offers a variety of tools for adjusting light and dynamic range. In the example below, shadow/highlight recovery and dehazing are applied to enhance data visibility to the fullest extent.

#include "P1Image.hpp"
#include <iostream>

using namespace P1::ImageSdk;

int main()
{
    try
    {
        // 1. Load IIQ image
        RawImage im("Sample.IIQ");

        // 2. Load convert config
        ConvertConfig config;

        // dehazing
        config.SetAerialDehazing(0.5);

        // Dynamic range
        config.SetShadowRecovery(0.5);
        config.SetHighlightRecovery(0.5);
                
        // 3. Convert
        BitmapImage bmp = im.Convert(config);

        // 4. Export to JPEG
        TiffWriter("out.tiff", bmp, im, TiffConfig());

        return 0;
    }
    catch (const std::exception& e)
    {
        std::cerr << e.what();
        return -1;
    }
}
using P1.ImageSdk;

// 1. Load IIQ image
RawImage im = new("Sample.IIQ");

// 2. Load convert configuration
ConvertConfig config = new();

// dehazing
config.SetAerialDehazing(0.5f);

// dynamic range
config.SetShadowRecovery(0.5f);
config.SetHighlightRecovery(0.5f);

// 3. Convert
IBitmapImage bmp = im.Convert(config);

// 4. Export to Tiff
im.WriteAsTiff("out.tiff", bmp, new TiffConfig());

Note

ImageSDK’s dehazing algorithm is specifically optimized for aerial images, yet it also performs well on general images.