←Select platform

AlignImagesCommand Class

Summary

Aligns two images (the reference and template images) based on the locations of the input points. The images are combined, creating the RegisteredImage.

Syntax
C#
VB
Objective-C
C++
Java
public class AlignImagesCommand : RasterCommand 
Public Class AlignImagesCommand  
   Inherits RasterCommand 
@interface LTAlignImagesCommand : LTRasterCommand 
public class AlignImagesCommand extends RasterCommand 
public ref class AlignImagesCommand : public RasterCommand   

Remarks
  • The two images should have the same depth (i.e. Bits Per Pixel); otherwise, this class will throw an Invalid Parameter exception.
  • It is best to choose points that are far apart from each other.
  • The transformation performed depends upon the number of pairs of corresponding points given. As many as four pairs can be given.
  • Set the reference image using the Run method and set the template image using the TemplateImage property.
  • Set the template image before calling the Run method; otherwise, an Invalid Parameter exception will be thrown.
  • This function supports 12-bit and 16-bit grayscale and 48-bit and 64-bit color images. Support for 12-bit and 16-bit grayscale and 48-bit and 64-bit color images is available only in the Document and Medical Imaging toolkits.
  • This command supports signed/unsigned images.

Example
C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
 
public void AlignImagesCommandExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   //Load an image 
   RasterImage ReferenceImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg")); 
 
   //Rotate the image to be registered 
   RasterImage TemplateImage = new RasterImage(ReferenceImage); 
   RotateCommand command = new RotateCommand(45 * 100, RotateCommandFlags.Bicubic, new RasterColor(0, 0, 0)); 
   command.Run(TemplateImage); 
 
   //Get feature points from the two images that correspond to each other. 
   LeadPoint[] templatePoints = new LeadPoint[2]; 
   LeadPoint[] referencePoints = new LeadPoint[2]; 
 
   referencePoints[0] = new LeadPoint(173, 102); 
   referencePoints[1] = new LeadPoint(216, 259); 
 
   templatePoints[0] = new LeadPoint(239, 66); 
   templatePoints[1] = new LeadPoint(158, 207); 
 
   //Prepare the command 
   AlignImagesCommand alignCommand = new AlignImagesCommand(); 
 
   alignCommand.TemplateImage = TemplateImage; 
   alignCommand.ReferenceImagePoints = referencePoints; 
   alignCommand.TemplateImagePoints = templatePoints; 
   alignCommand.RegistrationMethod = RegistrationOptions.Unknown; 
 
   //Apply 
   alignCommand.Run(ReferenceImage); 
 
   // Save the resulting image 
   codecs.Save(alignCommand.RegisteredImage, Path.Combine(LEAD_VARS.ImagesDir, "RegisteredImage.bmp"), RasterImageFormat.Bmp, 24); 
 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Core 
 
Public Sub AlignImagesCommandExample() 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
 
   'Load an image 
   Dim ReferenceImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg")) 
 
   'Rotate an image to be registered 
   Dim TemplateImage As RasterImage = New RasterImage(ReferenceImage) 
   Dim command As RotateCommand = New RotateCommand(45 * 100, RotateCommandFlags.Bicubic, New RasterColor(0, 0, 0)) 
   command.Run(TemplateImage) 
 
   'Get feature points from the two images that are corresponding to each other. 
   Dim templatePoints() As LeadPoint = New LeadPoint(2) {} 
   Dim referencePoints() As LeadPoint = New LeadPoint(2) {} 
 
   referencePoints(0) = New LeadPoint(173, 102) 
   referencePoints(1) = New LeadPoint(216, 259) 
 
   templatePoints(0) = New LeadPoint(239, 66) 
   templatePoints(1) = New LeadPoint(158, 207) 
 
   'Prepare the command 
   Dim alignCommand As AlignImagesCommand = New AlignImagesCommand() 
 
   alignCommand.TemplateImage = TemplateImage 
   alignCommand.ReferenceImagePoints = referencePoints 
   alignCommand.TemplateImagePoints = templatePoints 
   alignCommand.RegistrationMethod = RegistrationOptions.Unknown 
 
   'Apply 
   alignCommand.Run(ReferenceImage) 
 
   ' Save the result image 
   codecs.Save(alignCommand.RegisteredImage, Path.Combine(LEAD_VARS.ImagesDir, "RegisteredImage.jpg"), RasterImageFormat.Bmp, 24) 
 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 

Requirements

Target Platforms

Help Version 20.0.2020.4.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ImageProcessing.Core Assembly