Click or drag to resize
XDL

XDMBandAffineTransform Class

XDMBandAffineTransform 클래스는 영상을 Affine 변환 수행한다.
Inheritance Hierarchy
SystemObject
  Pixoneer.NXDL.NRSXDMBand
    Pixoneer.NXDL.NRSXDMBandAffineTransform

Namespace: Pixoneer.NXDL.NRS
Assembly: NXDLrs (in NXDLrs.dll) Version: 2.0.3.38
Syntax
C#
public class XDMBandAffineTransform : XDMBand

The XDMBandAffineTransform type exposes the following members.

Constructors
 NameDescription
Public methodXDMBandAffineTransform XDMBandAffineTransform 클래스의 기본 생성자로서, 멤버변수에 대하여 초기화를 수행한다.
Top
Methods
 NameDescription
Public methodGetInputParam영상 Affine 변환 처리를 위한 입력 파라미터를 얻는다.
Public methodGetWarpCoeffDst2Src 출력 영상에서 입력 영상으로의 Affine 변환식 계수를 가져온다.
Public methodGetWarpCoeffSrc2Dst 입력 영상에서 출력 영상으로의 Affine 변환식 계수를 가져온다.
Public methodSetInputParam영상 Affine 변환 처리를 위한 입력 파라미터를 설정한다.
Top
Example
입력 영상을 Affine 변환 처리를 한다. 영상처리 후 생기는 빈 공간을 -9999로 채우며, 중심좌표를 설정하지 않았기 때문에 영상 중심좌표는 Width/2, Height/2가 된다.
C#
using Pixoneer.NXDL;
using Pixoneer.NXDL.NRS;
using Pixoneer.NXDL.NIO;

// IO initialize to load image file
XRasterIO RasterIO = new XRasterIO();
String strError = "";
if (RasterIO.Initialize(out strError) == false)
{
    return;
}

// Image load
String strFilePathLoad = "D:\\Sample\\IKONOS.xdm";
XRSLoadFile xrsFileInput = RasterIO.LoadFile(strFilePathLoad, out strError, false, eIOCreateXLDMode.All_NoMsg);

// Set input param
XBandParamAffineTransform InputParam = new XBandParamAffineTransform();
InputParam.SrcBand = xrsFileInput.GetBandAt(0);
InputParam.RotateAngle = XAngle.FromDegree(45);
InputParam.Scale = new XVertex2d(2.0, 2.0);
InputParam.Offset = new XVertex2d(10, 10);
InputParam.BlankValue = -9999;


// Create New process band and set input param
XDMBandAffineTransform bandProcess = new XDMBandAffineTransform();
if (!bandProcess.SetInputParam(ref InputParam))
{
    return;
}

// create XRSSaveFile to save realtime band(XDMBandXXXX)
// load another file to protect thread lock(it is stable and faster).
XRSLoadFile fileLoad = RasterIO.LoadFile(strFilePathLoad, out strError, false, eIOCreateXLDMode.All_NoMsg);
XRSSaveFile fileSave = new XRSSaveFile();
for (int i = 0; i < fileLoad.NumBand; i++)
{
    XDMBand bandRaw = fileLoad.GetBandAt(i);
    XBandParamAffineTransform param = new XBandParamAffineTransform(ref InputParam);
    param.SrcBand = bandRaw;

    XDMBandAffineTransform bandTmp = new XDMBandAffineTransform();
    bandTmp.BandName = bandRaw.BandName;
    bandTmp.SetInputParam(ref param);

    XDMBand bandCast = (XDMBand)bandTmp;

    fileSave.AddBand(ref bandCast);
}

// Save output file
XThread thd = null;
String strFilePathSave = "D:\\Sample\\Out_AffineTransform.xdm";
if (!RasterIO.Export(ref fileSave, strFilePathSave, "XDM", out strError, thd))
{
    return;
}
See Also