public ApplyTransformationParametersCommand()
- (instancetype)init
public ApplyTransformationParametersCommand();
public:
ApplyTransformationParametersCommand();
__init__() # Default constructor
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.
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:\LEADTOOLS23\Resources\Images";
}
ApplyTransformationParametersCommand Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document