Initializes a new
ApplyTransformationParametersCommand class object with default parameters.
Syntax
Visual Basic (Declaration) | |
---|
Public Function New() |
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 Basic | Copy 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")
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)
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
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
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)
Dim transformed() As Point
transformed = CoreUtilities.GetRegistrationMarksCenterMass(leadImage, detected)
Dim parameters As TransformationParameters
parameters = CoreUtilities.GetTransformationParameters(leadImage, original, transformed)
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