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 (>0.0)
SaturationWeight Saturation measure weight (>0.0)
Gamma Gamma correction (1 = linear map)

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
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 Behaviour

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 )) );


Examples

// 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;