Leadtools.ImageProcessing.Core Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
ApplyTransformationParametersCommand Constructor()
See Also  Example
Leadtools.ImageProcessing.Core Namespace > ApplyTransformationParametersCommand Class > ApplyTransformationParametersCommand Constructor : ApplyTransformationParametersCommand Constructor()



Initializes a new ApplyTransformationParametersCommand class object with default parameters.

Syntax

Visual Basic (Declaration) 
Public Function New()
Visual Basic (Usage)Copy Code
Dim instance As ApplyTransformationParametersCommand()
C# 
public ApplyTransformationParametersCommand()
C++/CLI 
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. You should 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.

Visual BasicCopy Code
Public Sub ApplyTransformationParametersConstructorExample()
   RasterCodecs.Startup()
   Dim codecs As New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True

   Dim leadImage As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Master.jpg")

   ' 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 Point
      ReDim points(0)

      ' Mark1
      rmData(0) = New SearchRegistrationMarksCommandData
      rmData(0).Rectangle = New Rectangle(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 Rectangle(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 Rectangle(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 Point
      ReDim original(2)
      original(0) = New Point(81400, 11300)
      original(1) = New Point(78600, 87400)
      original(2) = New Point(14300, 115400)

      Dim detected() As Point
      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 Point
      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

   RasterCodecs.Shutdown()
End Sub
C#Copy Code
public void ApplyTransformationParametersConstructorExample() 

   // Load an image 
   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Master.jpg"); 
 
   // 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 Rectangle (680, 20, 941 - 680, 218 - 20); 
      rmData[0].MarkDetectedPoints = new Point[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 Rectangle(665,790,899-665,961-790); 
      rmData[1].MarkDetectedPoints = new Point[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 Rectangle(7,1073,298-7,1246-1073), 1, new Point[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; 
 
      Point[] original = 
         { 
            new Point(81400, 11300), 
            new Point(78600, 87400), 
            new Point(14300, 115400) 
         }; 
 
      Point[] 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 
      Point[] transformed = CoreUtilities.GetRegistrationMarksCenterMass(image, detected); 
      // Find transformation parameters 
      TransformationParameters parameters = CoreUtilities.GetTransformationParameters(image, original, transformed); 
      // Apply transformatin 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); 
   } 
 
   RasterCodecs.Shutdown(); 
}

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also