←Select platform

AlignImagesCommand Class

Aligns two images (the reference and template images) based on the locations of the input points. The images are combined, creating the RegisteredImage.
public class AlignImagesCommand : RasterCommand 
@interface LTAlignImagesCommand : LTRasterCommand 
public class AlignImagesCommand 
    extends RasterCommand 
public ref class AlignImagesCommand : public RasterCommand   
class AlignImagesCommand(RasterCommand): 
  • 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.
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)); 
   //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; 
   // 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:\LEADTOOLS23\Resources\Images"; 
import java.io.File; 
import java.io.IOException; 
import java.util.ArrayList; 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.RotateCommand; 
import leadtools.imageprocessing.RotateCommandFlags; 
import leadtools.imageprocessing.core.*; 
public void alignImagesCommandExample() { 
   RasterCodecs codecs = new RasterCodecs(); 
   // Load an image 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   RasterImage referenceImage = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "cannon.jpg")); 
   // Rotate the image to be registered 
   RasterImage templateImage = new RasterImage(referenceImage); 
   RotateCommand command = new RotateCommand(45 * 100, RotateCommandFlags.BICUBIC.getValue(), 
         new RasterColor(0, 0, 0)); 
   // Get feature points from the two images that correspond to each other 
   ArrayList<LeadPoint> templatePoints = new ArrayList<LeadPoint>(); 
   ArrayList<LeadPoint> referencePoints = new ArrayList<LeadPoint>(); 
   referencePoints.add(new LeadPoint(173, 102)); 
   referencePoints.add(new LeadPoint(216, 259)); 
   templatePoints.add(new LeadPoint(239, 66)); 
   templatePoints.add(new LeadPoint(158, 207)); 
   // Prepare the command 
   AlignImagesCommand alignCommand = new AlignImagesCommand(); 
         alignCommand.getReferenceImagePoints() == referencePoints 
               && alignCommand.getTemplateImagePoints() == templatePoints 
               && alignCommand.getRegistrationMethod() == RegistrationOptions.UNKNOWN); 
   // Apply 
   // Save the resulting image 
   codecs.save(alignCommand.getRegisteredImage(), combine(LEAD_VARS_IMAGES_DIR, "RegisteredImage.bmp"), 
         RasterImageFormat.BMP, 24); 
   assertTrue(new File(combine(LEAD_VARS_IMAGES_DIR, "RegisteredImage.bmp")).exists()); 
   System.out.println("Command run and image saved to " + combine(LEAD_VARS_IMAGES_DIR, "RegisteredImage.bmp")); 

Target Platforms

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

Leadtools.ImageProcessing.Core Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.