Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.6.27
|
Leadtools.ImageProcessing.Core Namespace > ApplyTransformationParametersCommand Class > ApplyTransformationParametersCommand Constructor : ApplyTransformationParametersCommand Constructor() |
public ApplyTransformationParametersCommand()
'Declaration
Public Function New()
'Usage
Dim instance As New ApplyTransformationParametersCommand()
public ApplyTransformationParametersCommand()
- (instancetype)init
public ApplyTransformationParametersCommand()
function ApplyTransformationParametersCommand()
public:
ApplyTransformationParametersCommand();
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.
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
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"; }
// // public async Task ApplyTransformationParametersConstructorExample() // { // // Load an image // RasterCodecs codecs = new RasterCodecs(); // codecs.ThrowExceptionsOnInvalidImages = true; // // Load the image // string srcFileName = @"Assets\Image1.cmp"; // StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName); // RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile)); // // 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 = LeadRectHelper.Create(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, LeadRectHelper.Create(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 = // { // LeadPointHelper.Create(81400, 11300), // LeadPointHelper.Create(78600, 87400), // LeadPointHelper.Create(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 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) // { // Debug.WriteLine(exception.Message); // } // } //
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(); }
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