←Select platform

ApplyTransformationParametersCommand Constructor()

Summary

Initializes a new ApplyTransformationParametersCommand class object with default parameters.

Syntax
C#
VB
Objective-C
C++
Java
Public Function New() 
- (instancetype)init 
public ApplyTransformationParametersCommand() 
public: 
ApplyTransformationParametersCommand(); 

Example

This example computes the translation parameters. The example makes the assumption that you have saved the position of the registration marks of the reference image in a file. Modify this example and replace the manual assignment of the rmData with your own code to load the reference registration mark data before testing this example.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
public void ApplyTransformationParametersConstructorExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "RGSRef.cmp")); 
 
   // Prepare the command 
   RasterImage tempImage = image; 
   try 
   { 
      tempImage = image.Clone(); 
      if (tempImage.HasRegion) 
         tempImage.MakeRegionEmpty(); 
      if (image.HasRegion) 
         image.MakeRegionEmpty(); 
      SearchRegistrationMarksCommandData[] rmData = new SearchRegistrationMarksCommandData[3]; 
 
      // Mark1 
      rmData[0] = new SearchRegistrationMarksCommandData(); 
      rmData[0].Rectangle = new LeadRect(680, 20, 941 - 680, 218 - 20); 
      rmData[0].MarkDetectedPoints = new LeadPoint[1]; 
      rmData[0].Width = 31; 
      rmData[0].Height = 29; 
      rmData[0].Type = RegistrationMarkCommandType.TShape; 
      rmData[0].MinimumScale = 90; 
      rmData[0].MaximumScale = 110; 
      rmData[0].SearchMarkCount = 1; 
 
      // Mark2 
      rmData[1] = new SearchRegistrationMarksCommandData(); 
      rmData[1].Rectangle = new LeadRect(665, 790, 899 - 665, 961 - 790); 
      rmData[1].MarkDetectedPoints = new LeadPoint[1]; 
      rmData[1].Width = 31; 
      rmData[1].Height = 29; 
      rmData[1].Type = RegistrationMarkCommandType.TShape; 
      rmData[1].MinimumScale = 90; 
      rmData[1].MaximumScale = 110; 
      rmData[1].SearchMarkCount = 1; 
 
      // Mark3 
      rmData[2] = new SearchRegistrationMarksCommandData(31, 29, 90, 110, new LeadRect(7, 1073, 298 - 7, 1246 - 1073), 1, new LeadPoint[1], RegistrationMarkCommandType.TShape); 
      SearchRegistrationMarksCommand command1 = new SearchRegistrationMarksCommand(); 
      command1.SearchMarks = rmData; 
      command1.Run(image); 
 
      if ((rmData[2].MarkDetectedCount != 1) || (rmData[1].MarkDetectedCount != 1) || (rmData[0].MarkDetectedCount != 1)) 
         return; 
 
      LeadPoint[] original = 
         { 
            new LeadPoint(81400, 11300), 
            new LeadPoint(78600, 87400), 
            new LeadPoint(14300, 115400) 
         }; 
 
      LeadPoint[] detected = 
         { 
            rmData[0].MarkDetectedPoints[0], 
            rmData[1].MarkDetectedPoints[0], 
            rmData[2].MarkDetectedPoints[0] 
         }; 
 
      // Find center of mass for detected registration marks in the transformed image 
      LeadPoint[] transformed = CoreUtilities.GetRegistrationMarksCenterMass(image, detected); 
      // Find transformation parameters 
      TransformationParameters parameters = CoreUtilities.GetTransformationParameters(image, original, transformed); 
      // Apply transformation parameters to correct the image 
      ApplyTransformationParametersCommand applyCommand = new ApplyTransformationParametersCommand(); 
      applyCommand.XTranslation = parameters.XTranslation; 
      applyCommand.YTranslation = parameters.YTranslation; 
      applyCommand.Angle = parameters.Angle; 
      applyCommand.XScale = parameters.XScale; 
      applyCommand.YScale = parameters.YScale; 
      applyCommand.Flags = ApplyTransformationParametersCommandFlags.Normal; 
      applyCommand.Run(tempImage); 
   } 
   catch (Exception exception) 
   { 
      MessageBox.Show(exception.Message); 
   } 
 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Core 
 
Public Sub ApplyTransformationParametersConstructorExample() 
   Dim codecs As New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
 
   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "RGSRef.cmp")) 
 
   ' Prepare the command 
   Dim tempImage As RasterImage 
   tempImage = leadImage 
 
   Try 
      tempImage = leadImage.Clone() 
      If (tempImage.HasRegion) Then 
         tempImage.MakeRegionEmpty() 
      End If 
      If (leadImage.HasRegion) Then 
         leadImage.MakeRegionEmpty() 
      End If 
 
      Dim rmData() As SearchRegistrationMarksCommandData 
      ReDim rmData(2) 
 
      Dim points() As LeadPoint 
      ReDim points(0) 
 
      ' Mark1 
      rmData(0) = New SearchRegistrationMarksCommandData 
      rmData(0).Rectangle = New LeadRect(680, 20, 941 - 680, 218 - 20) 
      rmData(0).MarkDetectedPoints = points 
      rmData(0).Width = 31 
      rmData(0).Height = 29 
      rmData(0).Type = RegistrationMarkCommandType.TShape 
      rmData(0).MinimumScale = 90 
      rmData(0).MaximumScale = 110 
      rmData(0).SearchMarkCount = 1 
 
      ' Mark2 
      rmData(1) = New SearchRegistrationMarksCommandData 
      rmData(1).Rectangle = New LeadRect(665, 790, 899 - 665, 961 - 790) 
      rmData(1).MarkDetectedPoints = points 
      rmData(1).Width = 31 
      rmData(1).Height = 29 
      rmData(1).Type = RegistrationMarkCommandType.TShape 
      rmData(1).MinimumScale = 90 
      rmData(1).MaximumScale = 110 
      rmData(1).SearchMarkCount = 1 
 
      ' Mark3 
      rmData(2) = New SearchRegistrationMarksCommandData(31, 29, 90, 110, New LeadRect(7, 1073, 298 - 7, 1246 - 1073), 1, points, RegistrationMarkCommandType.TShape) 
 
      Dim command1 As SearchRegistrationMarksCommand 
      command1 = New SearchRegistrationMarksCommand 
      command1.SearchMarks = rmData 
      command1.Run(leadImage) 
 
      If ((rmData(2).MarkDetectedCount <> 1) OrElse (rmData(1).MarkDetectedCount <> 1) OrElse (rmData(0).MarkDetectedCount <> 1)) Then 
         Return 
      End If 
 
      Dim original() As LeadPoint 
      ReDim original(2) 
      original(0) = New LeadPoint(81400, 11300) 
      original(1) = New LeadPoint(78600, 87400) 
      original(2) = New LeadPoint(14300, 115400) 
 
      Dim detected() As LeadPoint 
      ReDim detected(2) 
      detected(0) = rmData(0).MarkDetectedPoints(0) 
      detected(1) = rmData(1).MarkDetectedPoints(0) 
      detected(2) = rmData(2).MarkDetectedPoints(0) 
 
      ' Find center of mass for detected registration marks in the transformed image 
      Dim transformed() As LeadPoint 
      transformed = CoreUtilities.GetRegistrationMarksCenterMass(leadImage, detected) 
 
      ' Find transformation parameters 
      Dim parameters As TransformationParameters 
      parameters = CoreUtilities.GetTransformationParameters(leadImage, original, transformed) 
 
      ' Apply transformatin parameters to correct the image 
      Dim applyCommand As ApplyTransformationParametersCommand 
      applyCommand = New ApplyTransformationParametersCommand 
      applyCommand.XTranslation = parameters.XTranslation 
      applyCommand.YTranslation = parameters.YTranslation 
      applyCommand.Angle = parameters.Angle 
      applyCommand.XScale = parameters.XScale 
      applyCommand.YScale = parameters.YScale 
      applyCommand.Flags = ApplyTransformationParametersCommandFlags.Normal 
      applyCommand.Run(tempImage) 
 
   Catch e As Exception 
      MessageBox.Show(e.Message) 
   End Try 
 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
c#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Examples; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
public void ApplyTransformationParametersConstructorExample(RasterImage image, Stream outStream) 
{ 
   // Prepare the command 
   RasterImage tempImage = image; 
   tempImage = image.Clone(); 
   if (tempImage.HasRegion) 
      tempImage.MakeRegionEmpty(); 
   if (image.HasRegion) 
      image.MakeRegionEmpty(); 
 
   // Apply transformatin parameters to correct the image 
   ApplyTransformationParametersCommand applyCommand = new ApplyTransformationParametersCommand(); 
   applyCommand.XTranslation = 10; 
   applyCommand.YTranslation = 10; 
   applyCommand.Angle = 500; 
   applyCommand.XScale = 1; 
   applyCommand.YScale = 2; 
   applyCommand.Flags = ApplyTransformationParametersCommandFlags.Normal; 
   applyCommand.Run(tempImage); 
   // Save result image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.Save(image, outStream, RasterImageFormat.DicomGray, image.BitsPerPixel); 
   image.Dispose(); 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Core 
 
Public Sub ApplyTransformationParametersConstructorExample(ByVal image As RasterImage, ByVal outStream As Stream) 
   ' Prepare the command 
   Dim tempImage As RasterImage = image 
   tempImage = image.Clone() 
   If tempImage.HasRegion Then 
      tempImage.MakeRegionEmpty() 
   End If 
   If image.HasRegion Then 
      image.MakeRegionEmpty() 
   End If 
 
   ' Apply transformatin parameters to correct the image 
   Dim applyCommand As ApplyTransformationParametersCommand = New ApplyTransformationParametersCommand() 
   applyCommand.XTranslation = 10 
   applyCommand.YTranslation = 10 
   applyCommand.Angle = 500 
   applyCommand.XScale = 1 
   applyCommand.YScale = 2 
   applyCommand.Flags = ApplyTransformationParametersCommandFlags.Normal 
   applyCommand.Run(tempImage) 
   ' Save result image 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.Save(image, outStream, RasterImageFormat.DicomGray, image.BitsPerPixel) 
   image.Dispose() 
End Sub 

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