Leadtools.ImageProcessing.Core Namespace > CoreUtilities Class : GetTransformationParameters Method |
public static TransformationParameters GetTransformationParameters( RasterImage image, LeadPoint[] referencePoints, LeadPoint[] transformedPoints )
'Declaration Public Shared Function GetTransformationParameters( _ ByVal image As RasterImage, _ ByVal referencePoints() As LeadPoint, _ ByVal transformedPoints() As LeadPoint _ ) As TransformationParameters
'Usage Dim image As RasterImage Dim referencePoints() As LeadPoint Dim transformedPoints() As LeadPoint Dim value As TransformationParameters value = CoreUtilities.GetTransformationParameters(image, referencePoints, transformedPoints)
public static TransformationParameters GetTransformationParameters( RasterImage image, LeadPoint[] referencePoints, LeadPoint[] transformedPoints )
+ (LTTransformationParameters*)getTransformationParameters:(LTRasterImage*)image referencePoints:(NSArray*)referencePoints transformedPoints:(NSArray*)transformedPoints error:(NSError**)outError;
public static TransformationParameters getTransformationParameters( RasterImage image, LeadPoint[] referencePoints, LeadPoint[] transformedPoints )
function Leadtools.ImageProcessing.Core.CoreUtilities.GetTransformationParameters( image , referencePoints , transformedPoints )
public: static TransformationParameters GetTransformationParameters( RasterImage^ image, array<LeadPoint>^ referencePoints, array<LeadPoint>^ transformedPoints )
Imports Leadtools Imports Leadtools.Codecs Imports Leadtools.ImageProcessing.Core Public Sub GetTransformationParametersExample() Dim codecs As New RasterCodecs() codecs.ThrowExceptionsOnInvalidImages = True Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg")) ' Prepare the command Dim rmData(2) As SearchRegistrationMarksCommandData ' Mark1 rmData(0) = New SearchRegistrationMarksCommandData rmData(0).Rectangle = New LeadRect(680, 20, 941 - 680, 218 - 20) Dim pt0(0) As LeadPoint rmData(0).MarkDetectedPoints = pt0 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) Dim pt1(0) As LeadPoint rmData(1).MarkDetectedPoints = pt1 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 rmData(2).Rectangle = New LeadRect(7, 1073, 298 - 7, 1246 - 1073) Dim pt2(0) As LeadPoint rmData(2).MarkDetectedPoints = pt2 rmData(2).Width = 31 rmData(2).Height = 29 rmData(2).Type = RegistrationMarkCommandType.TShape rmData(2).MinimumScale = 90 rmData(2).MaximumScale = 110 rmData(2).SearchMarkCount = 1 Dim command1 As New SearchRegistrationMarksCommand(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 = _ { _ New LeadPoint(81400, 11300), _ New LeadPoint(78600, 87400), _ New LeadPoint(14300, 115400) _ } Dim detected() As LeadPoint = _ { _ rmData(0).MarkDetectedPoints(0), _ rmData(1).MarkDetectedPoints(0), _ rmData(2).MarkDetectedPoints(0) _ } ' Find center of mass for detected registration marks in the transformed image Dim transformed() As LeadPoint = CoreUtilities.GetRegistrationMarksCenterMass(leadImage, detected) ' Find transformation parameters Dim parameters As TransformationParameters = CoreUtilities.GetTransformationParameters(leadImage, original, transformed) ' Apply transformatin parameters to correct the image Dim applyCommand As New ApplyTransformationParametersCommand(parameters.XTranslation, parameters.YTranslation, parameters.Angle, parameters.XScale, parameters.YScale, ApplyTransformationParametersCommandFlags.Normal) applyCommand.Run(leadImage) 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 GetTransformationParametersExample() { // Load an image RasterCodecs codecs = new RasterCodecs(); codecs.ThrowExceptionsOnInvalidImages = true; RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg")); // Prepare the command 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(); rmData[2].Rectangle = new LeadRect(7, 1073, 298 - 7, 1246 - 1073); rmData[2].MarkDetectedPoints = new LeadPoint[1]; rmData[2].Width = 31; rmData[2].Height = 29; rmData[2].Type = RegistrationMarkCommandType.TShape; rmData[2].MinimumScale = 90; rmData[2].MaximumScale = 110; rmData[2].SearchMarkCount = 1; SearchRegistrationMarksCommand command1 = new SearchRegistrationMarksCommand(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(parameters.XTranslation, parameters.YTranslation, parameters.Angle, parameters.XScale, parameters.YScale, ApplyTransformationParametersCommandFlags.Normal); applyCommand.Run(image); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; }
// // public async Task GetTransformationParametersExample() // { // // 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 // SearchRegistrationMarksCommandData[] rmData = new SearchRegistrationMarksCommandData[3]; // //Mark1 // rmData[0] = new SearchRegistrationMarksCommandData(); // rmData[0].Rectangle = LeadRectHelper.Create(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(); // rmData[2].Rectangle = LeadRectHelper.Create(7, 1073, 298 - 7, 1246 - 1073); // rmData[2].MarkDetectedPoints = new LeadPoint[1]; // rmData[2].Width = 31; // rmData[2].Height = 29; // rmData[2].Type = RegistrationMarkCommandType.TShape; // rmData[2].MinimumScale = 90; // rmData[2].MaximumScale = 110; // rmData[2].SearchMarkCount = 1; // SearchRegistrationMarksCommand command1 = new SearchRegistrationMarksCommand(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 transformation parameters to correct the image // ApplyTransformationParametersCommand applyCommand = new ApplyTransformationParametersCommand(parameters.XTranslation, parameters.YTranslation, parameters.Angle, parameters.XScale, parameters.YScale, ApplyTransformationParametersCommandFlags.Normal); // applyCommand.Run(image); // } //
using Leadtools; using Leadtools.Codecs; using Leadtools.ImageProcessing.Core; public async Task GetTransformationParametersExample() { // 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 SearchRegistrationMarksCommandData[] rmData = new SearchRegistrationMarksCommandData[3]; //Mark1 rmData[0] = new SearchRegistrationMarksCommandData(); rmData[0].Rectangle = LeadRectHelper.Create(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(); rmData[2].Rectangle = LeadRectHelper.Create(7, 1073, 298 - 7, 1246 - 1073); rmData[2].MarkDetectedPoints = new LeadPoint[1]; rmData[2].Width = 31; rmData[2].Height = 29; rmData[2].Type = RegistrationMarkCommandType.TShape; rmData[2].MinimumScale = 90; rmData[2].MaximumScale = 110; rmData[2].SearchMarkCount = 1; SearchRegistrationMarksCommand command1 = new SearchRegistrationMarksCommand(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 transformation parameters to correct the image ApplyTransformationParametersCommand applyCommand = new ApplyTransformationParametersCommand(parameters.XTranslation, parameters.YTranslation, parameters.Angle, parameters.XScale, parameters.YScale, ApplyTransformationParametersCommandFlags.Normal); applyCommand.Run(image); }
CoreUtilities Class
CoreUtilities Members
Detecting Registration Marks
Leadtools.ImageProcessing.Effects.CombineCommand
Leadtools.ImageProcessing.RotateCommand
Leadtools.ImageProcessing.SizeCommand
Leadtools.ImageProcessing.ResizeCommand
IsRegistrationMark Method
SearchRegistrationMarksCommand Class
GetRegistrationMarksCenterMass Method