8. Exposure masking#
If you need to identify underexposed or overexposed pixels, ImageSDK can generate a mask image for this purpose.
#include "P1Image.hpp"
#include <iostream>
using namespace P1::ImageSdk;
int main()
{
try
{
// 1. Load IIQ image
RawImage im("Sample.IIQ");
// 2. Convert
ConvertConfig config;
config.SetExposureMaskThreshold(0.3, 0.8);
BitmapImage maskIm;
BitmapImage bmp = im.Convert(config,
std::allocator<uint8_t>(),
&maskIm);
// 3. Export mask to Tiff
TiffWriter("out.tiff", bmp, im, TiffConfig());
TiffWriter("mask.tiff", maskIm, 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. Convert
ConvertConfig config = new();
config.SetExposureMaskThreshold(0.8f, 0.3f);
BitmapImage maskIm = new();
double outputFocalLength = 0.0f;
IBitmapImage bmp = im.Convert(config, ref maskIm, ref outputFocalLength);
// 3. Export to Tiff
im.WriteAsTiff("out.tiff", bmp, new TiffConfig());
im.WriteAsTiff("mask.tiff", maskIm, new TiffConfig());
In the below example, red indicates overexposure, while green represents underexposure.

