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.