←Select platform

KeyStoneCommand Class

Summary

Performs inverse perspective transformation (keystoning) on an image.

Syntax

C#
VB
Java
Objective-C
WinRT C#
C++
@interface LTKeyStoneCommand : LTRasterCommand
public class KeyStoneCommand extends RasterCommand
function Leadtools.ImageProcessing.Core.KeyStoneCommand()

Remarks
  • The KeyStoneCommand is useful for correcting the perspective of images captured by portable devices. Frequently, images are distorted because they are projected onto a surface at an angle. Vertical lines become slanted, etc.
  • The KeyStoneCommand maps a polygon to a rectangle. The PerspectiveCommand maps a rectangle to a polygon.
  • If the input list of points that represents the polygon has more than 4 points, an Invalid Parameters Exception will be thrown.
  • This function supports 12 and 16-bit grayscale and 48 and 64-bit color images. Support for 12 and 16-bit grayscale and 48 and 64-bit color images is available in the Document/Medical Imaging toolkits.
  • This command supports signed/unsigned images.
Example

C#
VB
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Core 
 
    
Public Sub KeyStoneCommandExample() 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
   'Load an image 
   Dim image As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg")) 
 
   'Dim PolyPoints As List(Of LeadPoint) = New List(Of LeadPoint)() 
   Dim PolyPoints() As LeadPoint = New LeadPoint(4) {} 
 
   'The four corners of the polygon 
   PolyPoints(0) = New LeadPoint(94, 94) 
   PolyPoints(1) = New LeadPoint(306, 43) 
   PolyPoints(2) = New LeadPoint(318, 237) 
   PolyPoints(3) = New LeadPoint(98, 237) 
 
   'Prepare the command 
   Dim command As KeyStoneCommand = New KeyStoneCommand() 
 
   command.PolygonPoints = PolyPoints 
   'Apply  
   command.Run(image) 
 
   codecs.Save(command.TransformedBitmap, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), image.OriginalFormat, image.BitsPerPixel) 
 
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 KeyStoneCommandExample() 
{ 
    RasterCodecs codecs = new RasterCodecs(); 
    codecs.ThrowExceptionsOnInvalidImages = true; 
    //Load an image 
    RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg")); 
 
    LeadPoint[] PolyPoints = new LeadPoint[4]; 
 
    //The four corners of the polygon 
    PolyPoints[0]= new LeadPoint(94, 94); 
    PolyPoints[1]= new LeadPoint(306, 43); 
    PolyPoints[2]= new LeadPoint(318, 237); 
    PolyPoints[3]= new LeadPoint(98, 237); 
 
    //Prepare the command 
    KeyStoneCommand command = new KeyStoneCommand(); 
 
    command.PolygonPoints = PolyPoints; 
    //Apply  
    command.Run(image); 
 
    codecs.Save(command.TransformedBitmap, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), image.OriginalFormat, image.BitsPerPixel); 
} 
 
static class LEAD_VARS 
{ 
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 

Requirements

Target Platforms

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
Leadtools.ImageProcessing.Core Assembly
Click or drag to resize