ImageEn, unit iexHelperFunctions

TIEMultiBitmapHelper.MergeExposures

TIEMultiBitmapHelper.MergeExposures

Declaration

function MergeExposures(Dest: TIEBitmap; AlignImages: Boolean = False; ContrastWeight: Single = 1.0; SaturationWeight: Single = 1.0; Gamma: Single = 1.0): Boolean;

Description

A shortcut method that creates a TIEVisionExposureMerger object and calls run to combine images of different exposures into a single tone-mapped HDR image.
Parameter Description
Dest The bitmap that will be assigned the resulting image (must be created before calling)
AlignImages If True the algorithm tries to align the images
ContrastWeight Contrast measure weight (Must be > 0.0. Typical range is 0.1 - 9.9)
SaturationWeight Saturation measure weight (Must be > 0.0. Typical range is 0.1 - 9.9)
Gamma Gamma correction (1.0 = linear map. Typical range is 0.1 - 3.0)

When the TIEMultiBitmap is attached to a TImageEnMView:
If Checkboxes are enabled, only checked images will be included. An exception is raised if there are no checked items
If StoreType is not ietNormal, an attempt is made to load full quality images from file. An exception is raised if the files cannot be accessed

Note:
You must add the iexHelperFunctions unit to your uses clause
Delphi/C++ 2005 or newer is required to use helper classes
Exposure merging requires IEVision. You will need to register it before calling the method
If Dest is attached to a TImageEnView, it will automatically call Update

Method Behavior

The following call:
ImageEnMView1.IEMBitmap.MergeExposures( ImageEnView1.IEBitmap,
                                        AlignImagesCheckBox.Checked,
                                        StrToFloatDef( EditContrastWeight.Text, 1.0 ),
                                        StrToFloatDef( EditSaturationWeight.Text, 1.0 ),
                                        StrToFloatDef( EditGamma.Text, 1.0 ));

Is the same as calling:
merger := IEVisionLib().createExposureMerger();
for i := 0 to ImageEnMView1.ImageCount - 1 do
begin
  bmp := ImageEnMView1.GetTIEBitmap( i, True );
  merger.addImage( IEVisionLib.createImage( bmp.GetIEVisionImage() ));
  ImageEnMView1.ReleaseBitmap( i, False );
end;

ImageEnView1.IEBitmap.AssignIEVisionImage( merger.run( AlignImagesCheckBox.Checked,
                                                       StrToFloatDef( EditContrastWeight.Text, 1.0 ),
                                                       StrToFloatDef( EditSaturationWeight.Text, 1.0 ),
                                                       StrToFloatDef( EditGamma.Text, 1.0 )) );

Demo

Demo  Demos\ImageEditing\EveryMethod\EveryMethod.dpr

Examples

Also see: Automated Samples
// Merge the exposures of all the images in ImageEnMView1 and display the result in ImageEnView1
ShowTempHourglass();
ImageEnMView1.IEMBitmap.MergeExposures( ImageEnView1.IEBitmap );

// Merge the exposures of 3 image files
mbmp := TIEMultiBitmap.Create();
mbmp.FillFromList( ['D:\image1.png', 'D:\image2.png', 'D:\image3.png'] );
mbmp.MergeExposures( ImageEnView1.IEBitmap );
mbmp.Free;