|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object Facemorph.Template
public class Template
A Template of points and lines passing through the points, used to outline the facial features
Field Summary | |
---|---|
static java.awt.Color |
lineColour
|
static java.awt.Color |
lineMouseOverColour
|
static java.awt.Color |
lineSelectedColour
|
static java.awt.Color |
pointColour
|
static java.awt.Color |
pointMouseOverColour
|
static java.awt.Color |
pointSelectedColour
|
static java.awt.Color |
rectColour
|
static java.awt.Color |
threePointColour
|
Constructor Summary | |
---|---|
Template()
Create an empty Template |
Method Summary | |
---|---|
int |
addChimeric(Template t,
float l1,
float l2,
float w)
Adds different amounts to the left and right side the points 0 and 1 are used to define the eyes, and hence the symmetry line |
void |
addContour(float x,
float y,
boolean closed)
Creates a new point and a line that starts at this point |
void |
addContour(int i,
boolean closed)
Creates a new curve starting at the point specified |
void |
addContour(int x,
int y,
boolean closed)
Creates a new point and a line that starts at this point |
boolean |
addContourPoint(float x,
float y)
Creates a new point and adds it to the end of the current contour (the most recently created) |
void |
addContourPoint(int i)
Adds the point specified to the end of the current line |
boolean |
addContourPoint(int line,
float x,
float y)
Creates a new point and adds it to the end of the current contour (the most recently created) |
boolean |
addContourPoint(int x,
int y)
Creates a new point and adds it to the end of the current contour (the most recently created) |
void |
addPoint(float x,
float y)
Adds a point to the Template |
void |
addPoint(int x,
int y)
Adds a point to the Template |
boolean |
addToAverage(Template t,
int n)
Adds the n'th template to this average |
void |
addWeighted(Template t,
Complex z)
this = this + z*t |
void |
affineFit(java.awt.geom.Point2D.Float leftEye,
java.awt.geom.Point2D.Float rightEye,
java.awt.geom.Point2D.Float mouth,
int leftIndex,
int rightIndex,
int mouthIndex)
Performs an affine (linear) operation on this Template, specified by 3 points |
float[][] |
affineFit(Template tem,
int[] normalisationPoints)
Performs an affine fit of this to Template tem using the normalisation points specified |
int |
affineFit2(java.awt.geom.Point2D.Float leftEye,
java.awt.geom.Point2D.Float rightEye,
java.awt.geom.Point2D.Float mouth,
int leftIndex,
int rightIndex,
int mouthIndex1,
int mouthIndex2)
Performs an affine fit of this template to the points given, using the midpoint of mouthIndex1 and mouthIndex2 to match to mouth point |
static Template |
autoDelineate(java.awt.Image subjectImage,
java.awt.Image averageImage,
Template averageTemplate,
java.awt.geom.Point2D.Float leftEye,
java.awt.geom.Point2D.Float rightEye,
java.awt.geom.Point2D.Float mouth,
int leftIndex,
int rightIndex,
int mouthIndex,
java.awt.image.ImageObserver ob,
PCA pca)
Automatically delineates the image given returning a Template outlining the facial features |
boolean |
autoSize(int width,
int height)
Resize the template to fit in an image of width by height with a small border |
int |
average(java.util.ArrayList<Template> t,
boolean normalise)
Constructs the average of the array of templates given |
int |
average(java.util.ArrayList<Template> t,
int normalise,
int[] normPoints)
Constructs the average of the array of templates given |
int |
average(Template[] t)
Constructs the average of the array of templates given |
int |
average(Template[] templates,
boolean normalise)
Calculates the average of the Templates |
int |
calculateAffineMatrix(java.awt.geom.Point2D.Float p1,
java.awt.geom.Point2D.Float p2,
java.awt.geom.Point2D.Float p3,
java.awt.geom.Point2D.Float q1,
java.awt.geom.Point2D.Float q2,
java.awt.geom.Point2D.Float q3,
float[][] mat)
Calcualtes the best affine transform matrix (rotation, translation, scale and shear) |
static float[][] |
calculateInverseNormalisationMatrix(double[][] R,
double[] T,
double scale)
Calculats the inverse of the normalisation matrix |
static float[][] |
calculateNormalisationMatrix(double[][] R,
double[] T,
double scale)
Calculates a 3 by 2 rigid body matrix from the rotation, translation and scale specified |
static float[][] |
calculateNormalisationMatrix(java.awt.geom.Point2D.Float p1,
java.awt.geom.Point2D.Float p2,
java.awt.geom.Point2D.Float q1,
java.awt.geom.Point2D.Float q2)
Calculates the rigid body matrix (rotation, translation and scale) given two matching point pairs |
double |
calculateRigidBodyFit(Template tmplt,
double[][] R,
double[] T)
Calculates and performs a least-square error rigid-body transform on this Template |
Template |
clone()
|
static Template |
complexAverage(java.util.ArrayList<Template> origTemplates)
Calculates the full procrustes average using complex maths |
void |
complexAverage(Template[] templates)
Calculates the full procrustes average using complex maths |
Complex |
complexDotProduct(Template t)
Complex dot product of this with t, treating (x,y) coords of each point as complex number x+iy |
FloatImage[] |
constructMultilinearFitter(int warpType,
java.awt.Image averageImage,
Template avrg,
Mask mask,
Multilinear shapeMultilinear,
Multilinear imageMultilinear,
float scale)
Constructs the data needed for fitting a multilinear AAM to an image using efficient reverse method, with linear projection model, includes colour information |
boolean |
convert(java.lang.String stringData)
Parses this Template from the text string in some suitable format |
void |
copy(Template t)
Copies the Template given into this |
boolean |
copySamples(Template t)
Make each contour have the same number of samples as Template t |
void |
deleteLine(int lineNum)
Delete a line |
void |
deletePoint(int PointNum)
Deletes the specified point from the Template |
double |
dotProduct(Template t)
Calcualtes the dot product of the templates given |
void |
draw(java.awt.Graphics g,
int x_off,
int y_off)
Draws the Template as a series of points (+) and curved lines on the Graphics provided |
void |
drawZoomed(java.awt.Graphics g,
int x_off,
int y_off,
float xs,
float ys)
Draw this Template to the Graphics provided as a series of curved lines and points (+), scaled by the amounts given |
void |
fitAAM(int warpType,
java.awt.Image subject,
java.awt.Image average,
Mask mask,
PCA pca,
PCI pci)
Fits a Template to this FloatImage using a multiscale method |
void |
fitAAMappearance(int warpType,
java.awt.Image subject,
java.awt.Image averageImg,
Mask mask,
PCA pca,
PCI pci,
float scale)
Attempt at fitting an AAM to an image using efficient reverse method, includes colour information |
void |
fitAAMbayesian(int warpType,
java.awt.Image subject,
java.awt.Image averageImg,
Mask mask,
PCA pca,
PCI pci,
float scale)
Attempt at fitting an AAM to an image using efficient reverse method, includes colour information |
void |
fitAAMforward(java.awt.Image subjectImg,
java.awt.Image averageImg,
Mask mask,
PCA pca,
PCI pci,
float scale)
Attempt at fitting an AAM to an image using inefficient, but more reliable forward method, includes colour information |
void |
fitAAMshape(int warpType,
FloatImage average,
FloatImage subject,
Template avrg,
Mask mask,
PCA pca,
float scale)
First attempt at fitting an AAM to an image, does not include colour information, not recommended to use! |
int |
fitAAMspan(int warpType,
java.awt.Image subject,
java.awt.Image averageImg,
Mask mask,
PCA pca,
PCI pci,
FloatImage[] smallPCIcomps,
float scale,
int counter)
Attempt at fitting an AAM to an image using efficient reverse method, colour information is projected out |
int |
fitAAMspanLM(int warpType,
java.awt.Image subject,
java.awt.Image averageImg,
Mask mask,
PCA pca,
PCI pci,
float scale,
int counter)
Attempt at fitting an AAM to an image using efficient reverse method, includes colour information |
void |
fitMultilinear(java.awt.Image subject,
java.awt.Image averageImage,
Template avrg,
Mask mask,
Multilinear shapeMultilinear,
Multilinear imageMultilinear,
FloatImage[] diffImg,
float scale)
Uses a multilinear fitting model to try a fit a template to the image |
void |
fitMultilinear(int warpType,
java.awt.Image subject,
java.awt.Image averageImage,
Template avrg,
Mask mask,
Multilinear shapeMultilinear,
Multilinear imageMultilinear,
float scale)
Attempt at fitting an Multilinear AAM to an image using efficient reverse method, with linear projection model, includes colour information |
void |
fitPCA(FloatImage average,
FloatImage subject,
Template avrg,
PCA pca,
int leftIndex,
int rightIndex,
int mouthIndex)
Fits a Template to this FloatImage |
boolean |
fitPCA(java.awt.Image subjectImage,
java.awt.Image averageImage,
Template averageTemplate,
java.awt.geom.Point2D.Float leftEye,
java.awt.geom.Point2D.Float rightEye,
int leftIndex,
int rightIndex,
java.awt.image.ImageObserver ob,
PCA pca)
Automatically delineates the image given using this Template to outline the facial features |
boolean |
fitPCA(java.awt.Image subjectImage,
java.awt.Image averageImage,
Template averageTemplate,
java.awt.geom.Point2D.Float leftEye,
java.awt.geom.Point2D.Float rightEye,
java.awt.geom.Point2D.Float mouth,
int leftIndex,
int rightIndex,
int mouthIndex,
java.awt.image.ImageObserver ob,
PCA pca)
Automatically delineates the image given using this Template to outline the facial features |
boolean |
fitPCAColourSegment(java.awt.Image subjectImage,
java.awt.Image averageImage,
Template averageTemplate,
java.awt.geom.Point2D.Float leftEye,
java.awt.geom.Point2D.Float rightEye,
java.awt.geom.Point2D.Float mouth,
int leftIndex,
int rightIndex,
int mouthIndex,
java.awt.image.ImageObserver ob,
PCA pca,
Mask mask)
Automatically delineates the image given using this Template to outline the facial features Tries to segment out the face from the background using colour to help |
void |
fitTensor(int warpType,
java.awt.Image subject,
java.awt.Image averageImage,
Template avrg,
Mask mask,
Tensor shapeTensor,
Tensor imageTensor,
BigMat shapeLinearModel,
BigMat shapeAverage,
BigMat imageLinearModel,
BigMat imageAverage,
float scale)
Attempt at fitting an Tensor AAM to an image using efficient reverse method, with linear projection model, includes colour information |
void |
fixDatMouth()
Checks if the usual top mouth line is swapped with the bottom mouth line, and fixes it if true. |
int |
get_x(int i)
Gets the x-coord of the ith face point |
int |
get_y(int i)
Gets the y-coord of the ith face point |
static float[][] |
getAffineMatrix(java.awt.geom.Point2D.Float[] source,
java.awt.geom.Point2D.Float[] target)
Get the affine transform matrix that map the 3 points specified in source onto 3 points target |
java.awt.Rectangle |
getBoundingBox()
Gets a bounding rectangle for the Template |
java.awt.Rectangle |
getBoundingSquare()
Gets a bounding square for the Template |
Facemorph.Contour |
getContour(int i)
Get the ith contour in this template |
java.util.Vector<Facemorph.Contour> |
getContours()
Get the list of contours through face points |
boolean |
getDrawLabels()
|
java.awt.Color |
getLineColour(int i)
Gets the colour of a line |
java.awt.Polygon |
getMask(Mask msk)
Constructs a masking polygon from this Template and Mask |
java.awt.Polygon |
getMask(Mask msk,
int xoff,
int yoff,
float zoom)
Constructs a masking polygon from this Template and Mask |
FloatImage |
getMask(Mask mask,
int w,
int h,
float min,
float max)
Constructs a FloatImage with values of 0 (masked) and max (not masked) |
FloatImage |
getMask(java.util.Vector<java.lang.Integer> maskConts,
java.util.Vector<java.lang.Integer> maskDirections,
int w,
int h,
float min,
float max)
Constructs a FloatImage with values of 0 (masked) and max (not masked) |
double[] |
getMultilinearandRBparameters(Multilinear shapeMultilinear)
Analyses this Template using a Multilinear (project out) model |
float[] |
getPCAandNormParameters(PCA pca,
Template average,
int normalisation,
int[] normPoints)
Gets the pca and normalisation parameters in a single vector |
float[] |
getPCAandRBparameters(PCA pca,
Template average)
Analyses this Template using a set of principal components |
float[] |
getPCAparameters(PCA pca,
Template average,
int leftIndex,
int rightIndex,
int mouthIndex)
Analyses this Template using a set of principal components |
java.awt.geom.Point2D.Float |
getPoint(int i)
Gets the feature point requested |
java.awt.Color |
getPointColour(int i)
Gets the colour of the point |
java.util.Vector<java.awt.geom.Point2D.Float> |
getPoints()
Gets a list of all the points in this Template as a Vector |
java.util.Vector<java.awt.geom.Point2D.Float> |
getPoints(boolean contourPoints)
Gets a Vector containing the points and samples along the lines |
java.util.ArrayList<java.awt.geom.Point2D.Float> |
getPointsInBox(float x,
float y,
float w,
float h)
Gets the points in an axis aligned rectangle |
double[] |
getTensorandRBparameters(BigMat shapeModel,
BigMat shapeAverage,
Template average,
Tensor shapeTensor)
Analyses this Template using a tensor model |
int |
hitLine(int x,
int y,
float zoom)
Returns the index if there is a line near (x,y) (+/-5 pixels) or -1 |
int |
hitPoint(int x,
int y)
Returns the index if there is a point near (x,y) (+/-5 pixels) -1 |
int |
hitZoomedPoint(int x,
int y,
float zoom)
Returns the index if there is a point near (x,y) (+/-5 pixels) -1 |
boolean |
isLineSelected(int i)
|
boolean |
isPointSelected(int i)
|
java.awt.Image |
maskImage(java.awt.Image img,
Mask mask,
java.awt.Color col,
boolean reverse)
Masks an image using the mask object specified/ |
void |
move(float x,
float y)
Shifts this by (x,y) |
void |
moveLine(int i,
float dx,
float dy)
Moves the point to the specified position |
void |
movePoint(int i,
int x,
int y)
Moves the point to the specified position |
int |
noContours()
|
void |
normalise()
Normalise the mean to zero and the magnitude to 1 |
int |
normaliseEyes(java.awt.geom.Point2D.Float leftEye,
java.awt.geom.Point2D.Float rightEye,
int leftIndex,
int rightIndex)
Normalise the rotation, translation and scale so that two specified points are in a given place |
float[][] |
normaliseEyes(Template target)
Performs 2 point normalisation using points 0 and 1 |
float[][] |
normaliseEyes(Template target,
int[] normPoints)
Performs 2 point normalisation using the points indicated in the normPoints array |
boolean |
read(java.io.DataInputStream in)
Read this Template from the DataInputStream provided |
boolean |
read(java.lang.String file)
Reads this Template from the file given |
boolean |
read(java.lang.String file,
int h)
Reads this Template from the file given |
boolean |
readASF(java.io.DataInputStream in,
int w,
int h)
Read this Template from the DataInputStream provided |
boolean |
readASF(java.lang.String file,
int w,
int h)
Reads this Template from the file given |
boolean |
readDAT(java.io.DataInputStream in,
int h)
Read a DAT format template |
boolean |
readDAT(java.lang.String file,
int h)
Reads this Template from the file given |
boolean |
readPCA(java.io.DataInputStream in,
Template average,
PCA pca,
int le,
int re,
int m)
Reads in 3 normalisation points and some PCA parameters and reconstructs the Template (I think!) |
boolean |
readPTS(java.io.DataInputStream in)
Read this Template from the DataInputStream provided |
boolean |
readPTS(java.lang.String file)
Reads this Template from the file given |
static int[] |
readSymFile(java.lang.String name)
Read a symmetry (.sym) file |
void |
recalculateContours()
Recalculates the curves through the control points after they have setLocationd. |
void |
reconstructMultilinearandRB(Multilinear shapeMultilinear,
Template average,
double[] PCAandRBparams,
boolean edgeOnly)
Builds a Template from a set of Multilinear and Rigid Body parameters and data |
void |
reconstructPCA(PCA pca,
Template average,
float[] pcaParams,
int toskip)
Reconstruct this Template from PCA data |
void |
reconstructPCA(PCA pca,
Template average,
java.awt.geom.Point2D.Float left,
java.awt.geom.Point2D.Float right,
java.awt.geom.Point2D.Float mouth,
float[] pcaParams,
int leftIndex,
int rightIndex,
int mouthIndex)
Builds a Template from a set of PCA parameters and data |
void |
reconstructPCAandNorm(PCA pca,
Template average,
float[] PCAandRBparams,
int normalisation,
int[] normPoints)
Reconstructs this Template from the PCA data using the parameters and normalisation specified |
void |
reconstructPCAandRB(PCA pca,
Template average,
float[] PCAandRBparams)
Builds a Template from a set of PCA and Rigid Body parameters and data |
void |
reconstructTensorandRB(Tensor shapeTensor,
Template average,
double[] PCAandRBparams)
Builds a Template from a set of Tensor and Rigid Body parameters and data |
void |
reflect(int[] plist,
int width)
Reflect the template using the symetry data given i.e. |
double |
rigidBodyFit(Template tmplt,
double[][] R,
double[] T)
Calculates and performs a least-square error rigid-body transform on this Template |
Template |
scale(double s)
Return a new Template as a copy of this one scaled by s |
void |
setDrawLabels(boolean drawLabels)
|
void |
setLineColour(int i,
java.awt.Color c)
Set the colour of a line |
void |
setLineSelected(int i,
boolean s)
|
void |
setLocationPoint(int i,
int x,
int y)
setLocations the point to the specified position |
void |
setPointColour(int i,
java.awt.Color c)
Set the colour of a point |
void |
setPointSelected(int i,
boolean s)
|
void |
setStandardColours()
Sets the colours to the standard |
int |
size()
Get the number of points in this Template |
Template |
subtract(Template rhs)
Creates a new template by subtracting the positions of two input templates output = this - rhs |
void |
symmetrise(Template t,
int[] plist,
int w)
Makes this template a symmetrical version of t |
java.lang.String |
toString()
Convert this Template to a textual format for writing / display |
java.lang.String |
toURLString()
Converts this Template to a String, replacing spaces with + etc |
void |
trackASM(FloatImage average,
FloatImage subject,
Template avrg,
PCA pca,
float scale,
int its,
int[] normalisePointIndex)
Fits a PCA model to an image using edge normal profiles |
void |
transform(float[][] mat)
Performs a matrix transform on this Template |
Template |
transform(Template sourceTemplate,
Template destTemplate,
double s,
float scale)
Transforms this Template using the formula this = this + s*(sourceTemplate - destTemplate) |
Template |
transform(Template sourceTemplate,
Template destTemplate,
double s,
float scale,
boolean conts)
Transforms this Template using the formula this = this + s*(sourceTemplate - destTemplate) |
Template |
transform(Template sourceTemplate,
Template destTemplate,
double s,
float scale,
boolean conts,
int normalisation,
int[] normPoints)
Transforms this Template using the formula this = this + s*(sourceTemplate - destTemplate) |
Template |
transformChimeric(Template sourceTemplate,
Template destTemplate,
float l1,
float l2,
float w)
Transforms the left and right face sides separately |
void |
unvectorise(double[] vec)
Turns an array representation back into a a template. |
double[] |
vectorise(boolean contourPoints)
Turns a template into a 1D array, used in tensor |
void |
warp(TPSWarp warp)
Warp the template with the warp given |
void |
warp(Warp warp)
Warp the template with the warp given |
static Template |
weightedAverage(java.util.List<Template> templates,
float[] weights,
int iterations)
Makes a weighted average of the templates given |
static Template |
weightedAverage(Template t1,
float w1,
Template t2,
float w2)
Makes a weighted average of the templates given |
boolean |
write(java.io.PrintStream out)
Writes this Template to file (via a PrintStream) |
boolean |
write(java.lang.String s)
Writes to the file specified |
void |
zoom(float zoomx,
float zoomy,
float crop_x,
float crop_y)
Magnify and shift this Template |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static java.awt.Color pointColour
public static java.awt.Color pointMouseOverColour
public static java.awt.Color pointSelectedColour
public static java.awt.Color lineColour
public static java.awt.Color lineMouseOverColour
public static java.awt.Color lineSelectedColour
public static java.awt.Color rectColour
public static java.awt.Color threePointColour
Constructor Detail |
---|
public Template()
Method Detail |
---|
public int size()
public java.util.Vector<Facemorph.Contour> getContours()
public boolean copySamples(Template t)
t
- The template to copy the number of samples from
public java.util.Vector<java.awt.geom.Point2D.Float> getPoints()
public java.util.Vector<java.awt.geom.Point2D.Float> getPoints(boolean contourPoints)
contourPoints
- Flag to indicate if the points along the lines should also be returned
public double[] vectorise(boolean contourPoints)
contourPoints
- flag indicating if to sample contours
public void unvectorise(double[] vec)
vec
- The array representation of the vectorpublic int get_x(int i)
i
- Index of coord to get
public int get_y(int i)
i
- Index of coord to get
public java.awt.geom.Point2D.Float getPoint(int i)
i
- The index of the feature point
public void movePoint(int i, int x, int y)
i
- The index of the point to movex
- The new x-coordy
- The new y-coordpublic void moveLine(int i, float dx, float dy)
i
- The index of the point to movedx
- The x shiftdy
- The y shiftpublic void move(float x, float y)
x
- the x displacementy
- the y displacementpublic void fixDatMouth()
public Facemorph.Contour getContour(int i)
i
- The index of the contour to get
public void addPoint(float x, float y)
x
- The x-coord of the new pointy
- The y-coord of the new pointpublic void addPoint(int x, int y)
x
- The x-coord of the new pointy
- The y-coord of the new pointpublic void deletePoint(int PointNum)
PointNum
- The index of the point to deletepublic void deleteLine(int lineNum)
lineNum
- the index of the contour to deletepublic void setLocationPoint(int i, int x, int y)
i
- The index of the point to setLocationx
- The new x-coordy
- The new y-coordpublic java.awt.Rectangle getBoundingBox()
public java.awt.Rectangle getBoundingSquare()
public java.awt.Image maskImage(java.awt.Image img, Mask mask, java.awt.Color col, boolean reverse)
img
- The image to maskmask
- The mask to usecol
- The colour to draw in the masked regionsreverse
- If true draw outside the polygon defined by the mask, otherwise draw inside
public java.awt.Polygon getMask(Mask msk)
msk
- The mask defining the lines to use in this mask
public java.awt.Polygon getMask(Mask msk, int xoff, int yoff, float zoom)
msk
- The mask defining the lines to use in this maskxoff
- the x-offsetyoff
- the y-offsetzoom
- the zoom
public int hitPoint(int x, int y)
x
- The x-coord of the test pointy
- The y-coord of the test point
public int hitLine(int x, int y, float zoom)
x
- The x-coord of the test pointy
- The y-coord of the test pointzoom
- the current zoom level
public int hitZoomedPoint(int x, int y, float zoom)
x
- The x-coord of the point to testy
- The y-coord of the point to testzoom
- The zoom factor
public java.util.ArrayList<java.awt.geom.Point2D.Float> getPointsInBox(float x, float y, float w, float h)
x
- x coord box cornery
- y coord of box cornerw
- width of boxh
- height of box
public void addContour(int x, int y, boolean closed)
x
- The x-coord of the new pointy
- The y-coord of the new pointclosed
- A flag to indicate if the contour is open or a closed looppublic void addContour(float x, float y, boolean closed)
x
- The x-coord of the new pointy
- The y-coord of the new pointclosed
- A flag to indicate if the contour is open or a closed looppublic void addContour(int i, boolean closed)
i
- The index of the start pointclosed
- Flag indicating if the curve is an open line or a closed looppublic boolean addContourPoint(int x, int y)
x
- The x-coord of the new pointy
- The y-coord of the new point
public boolean addContourPoint(float x, float y)
x
- The x-coord of the new pointy
- The y-coord of the new point
public boolean addContourPoint(int line, float x, float y)
line
- The line to add the point tox
- The x-coord of the new pointy
- The y-coord of the new point
public void addContourPoint(int i)
i
- The index of the point to connect this line to.public void copy(Template t)
t
- The Template to copypublic Template clone()
clone
in class java.lang.Object
public boolean addToAverage(Template t, int n)
t
- The Template to addn
- The number previously added to the average
public int average(Template[] templates, boolean normalise)
templates
- the templates to averagenormalise
- indicates 2 point normalisation should be used (or no normalisation)
public int average(Template[] t)
t
- the array of templates to average
public int average(java.util.ArrayList<Template> t, boolean normalise)
t
- the array of templates to averagenormalise
- indicates 2 point normalisation should be applied, other wise no normalisation
public int average(java.util.ArrayList<Template> t, int normalise, int[] normPoints)
t
- the array of templates to averagenormalise
- should be ASM.RIGID_BODY_NORMALISATION, ASM.TWO_POINT_NORMALISATION or ASM.RIGID_BODY_NORMALISATIONnormPoints
- indicates the normalisation point indices for 2 or 3 point normalisation
public static Template weightedAverage(Template t1, float w1, Template t2, float w2)
t1
- The first template to addw1
- The weight of the first template in this averaget2
- The second template to addw2
- The weight of the second template
public static Template weightedAverage(java.util.List<Template> templates, float[] weights, int iterations) throws java.lang.Exception
templates
- The list of templates to averageweights
- The weight of the each template in this averageiterations
- the number of iterations to perform, 0 mean straight average (no normalisation), 1 means normalise to first in set, N means iterate
java.lang.Exception
- if the templates are not all the same size (same number of points)public void complexAverage(Template[] templates)
templates
- the templates to averagepublic static Template complexAverage(java.util.ArrayList<Template> origTemplates)
origTemplates
- the templates to average
public void addWeighted(Template t, Complex z)
t
- the Template to add to thisz
- the weighting to multiply t by before addingpublic int addChimeric(Template t, float l1, float l2, float w)
t
- the template to addl1
- the amount to add on the (viewers) leftl2
- the amount to add on the (viewers) rightw
- the width of the smoothing band
public Complex complexDotProduct(Template t)
t
- the template to dot product with
public void normalise()
public Template subtract(Template rhs)
rhs
-
public Template scale(double s)
s
- scale factor
public double dotProduct(Template t)
t
- The template to dot product with
public Template transformChimeric(Template sourceTemplate, Template destTemplate, float l1, float l2, float w)
sourceTemplate
- the source TemplatedestTemplate
- the target Templatel1
- the amount to transform the (viewers) left sidel2
- the amount to transform the (viewers) right sidew
- the width of the smoothing band
public Template transform(Template sourceTemplate, Template destTemplate, double s, float scale)
sourceTemplate
- The source group's average TemplatedestTemplate
- The destination group's average Templates
- The size of the transform to performscale
- The amount to magnify the result by
public Template transform(Template sourceTemplate, Template destTemplate, double s, float scale, boolean conts)
sourceTemplate
- The source group's average TemplatedestTemplate
- The destination group's average Templates
- The size of the transform to performscale
- The amount to magnify the result byconts
- Flag specifying if contour samples should be recalculated
public Template transform(Template sourceTemplate, Template destTemplate, double s, float scale, boolean conts, int normalisation, int[] normPoints)
sourceTemplate
- The source group's average TemplatedestTemplate
- The destination group's average Templates
- The size of the transform to performscale
- The amount to magnify the result byconts
- Flag specifying if contour samples should be recalculatednormalisation
- indicates the kind of normalisation to use, one of ASM.RIGID_BODY_NORMALISATION, ASM.TWO_POINT_NORMALISATION, ASM.THREE_POINT_NORMALISATION or ASM.NO_NORMALISATIONnormPoints
- the normalisation points to use for ASM.TWO_POINT_NORMALISATION or ASM.THREE_POINT_NORMALISATION
public FloatImage getMask(Mask mask, int w, int h, float min, float max)
min
- The values to draw outside the masked regionsmask
- the Mask that specifies the contours and directionsw
- The width of the output mask imageh
- The height of the output mask imagemax
- The values to draw in the masked regions
public FloatImage getMask(java.util.Vector<java.lang.Integer> maskConts, java.util.Vector<java.lang.Integer> maskDirections, int w, int h, float min, float max)
min
- The values to draw outside the masked regionsmaskConts
- The contour numbers making up the boundary of this maskmaskDirections
- Flag indicating the directions in which to traverse the contoursw
- The width of the output mask imageh
- The height of the output mask imagemax
- The values to draw in the masked regions
public void draw(java.awt.Graphics g, int x_off, int y_off)
g
- The Graphics onto which this Template should be drawnx_off
- The x-offset (shifty_off
- The y-offset (shift)public void drawZoomed(java.awt.Graphics g, int x_off, int y_off, float xs, float ys)
g
- The Graphics to draw tox_off
- The x-offsety_off
- The y-offsetxs
- The x-scale factorys
- he y-scale factorpublic boolean read(java.lang.String file)
file
- The name of the file to read
public boolean readDAT(java.lang.String file, int h)
file
- The name of the file to readh
- height of the image
public boolean read(java.lang.String file, int h)
file
- The name of the file to readh
- height of the image
public boolean read(java.io.DataInputStream in)
in
- The DataInputStream to read from
public boolean readASF(java.lang.String file, int w, int h)
file
- The name of the file to readw
- width of the imageh
- height of the image
public boolean readASF(java.io.DataInputStream in, int w, int h)
in
- The DataInputStream to read fromw
- width of the imageh
- height of the image
public boolean readPTS(java.lang.String file)
file
- The name of the file to read
public boolean readPTS(java.io.DataInputStream in)
in
- The DataInputStream to read from
public java.awt.Color getPointColour(int i)
i
- the index of the point
public java.awt.Color getLineColour(int i)
i
- the index of the line
public void setPointColour(int i, java.awt.Color c)
i
- the index of the pointc
- the new colour of the pointpublic boolean isPointSelected(int i)
public void setPointSelected(int i, boolean s)
public void setLineColour(int i, java.awt.Color c)
i
- the index of the linec
- the new colour of the linepublic boolean isLineSelected(int i)
public void setLineSelected(int i, boolean s)
public int noContours()
public void setStandardColours()
public boolean readDAT(java.io.DataInputStream in, int h)
in
- the DataInputStream to read fromh
- the image height
public boolean readPCA(java.io.DataInputStream in, Template average, PCA pca, int le, int re, int m)
in
- The DataInputStream to read fromaverage
- The average Template corresponding to this PCApca
- The PCA file used to reconstruct this Templatele
- the index of the left eye (first normalisation point)re
- the index of the right eye (second normalisation point)m
- the index of the mouth (third normalisation point)
public boolean write(java.lang.String s)
s
- the name of the file to write to
public boolean write(java.io.PrintStream out)
out
- The output PrintStream
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String toURLString()
public boolean convert(java.lang.String stringData)
stringData
- The String containg the text description of this Template
public static Template autoDelineate(java.awt.Image subjectImage, java.awt.Image averageImage, Template averageTemplate, java.awt.geom.Point2D.Float leftEye, java.awt.geom.Point2D.Float rightEye, java.awt.geom.Point2D.Float mouth, int leftIndex, int rightIndex, int mouthIndex, java.awt.image.ImageObserver ob, PCA pca)
subjectImage
- The image containing the face to whose features you want to delineateaverageImage
- The average image corresponding to the PCA dataaverageTemplate
- The average Template corresponding to the PCA dataleftEye
- The position of the left eye in subjectImagerightEye
- The position of the right eye in subjectImagemouth
- The position of the mouth in subjectImageleftIndex
- The index of the left eye point in this (and the average) TemplaterightIndex
- The index of the right eye point in this (and the average) TemplatemouthIndex
- The index of the mouth point in this (and the average) Templateob
- The ImageObserver is used when finding the width and height of the imagepca
- The Principal Component Analysis data learnt from example face shapes.
public boolean fitPCA(java.awt.Image subjectImage, java.awt.Image averageImage, Template averageTemplate, java.awt.geom.Point2D.Float leftEye, java.awt.geom.Point2D.Float rightEye, java.awt.geom.Point2D.Float mouth, int leftIndex, int rightIndex, int mouthIndex, java.awt.image.ImageObserver ob, PCA pca)
subjectImage
- The image containing the face to whose features you want to delineateaverageImage
- The average image corresponding to the PCA dataaverageTemplate
- The average Template corresponding to the PCA dataleftEye
- The position of the left eye in subjectImagerightEye
- The position of the right eye in subjectImagemouth
- The position of the mouth in subjectImageleftIndex
- The index of the left eye point in this (and the average) TemplaterightIndex
- The index of the right eye point in this (and the average) TemplatemouthIndex
- The index of the mouth point in this (and the average) Templateob
- The ImageObserver is used when finding the width and height of the imagepca
- The Principal Component Analysis data learnt from example face shapes.
public int normaliseEyes(java.awt.geom.Point2D.Float leftEye, java.awt.geom.Point2D.Float rightEye, int leftIndex, int rightIndex)
leftEye
- The position of the first pointrightEye
- The position of the second pointleftIndex
- The index of the point we want positioned at leftEyerightIndex
- The index of the point we want positioned at rightEye
public boolean autoSize(int width, int height)
width
- The width of the image to fit this intoheight
- The height of the image to fit this into
public boolean fitPCAColourSegment(java.awt.Image subjectImage, java.awt.Image averageImage, Template averageTemplate, java.awt.geom.Point2D.Float leftEye, java.awt.geom.Point2D.Float rightEye, java.awt.geom.Point2D.Float mouth, int leftIndex, int rightIndex, int mouthIndex, java.awt.image.ImageObserver ob, PCA pca, Mask mask)
mouth
- The mouth pointmouthIndex
- The index of the mouth point in the templatemask
- The mask file to use to estimate face and non face pointssubjectImage
- The image containing the face to whose features you want to delineateaverageImage
- The average image corresponding to the PCA dataaverageTemplate
- The average Template corresponding to the PCA dataleftEye
- The position of the left eye in subjectImagerightEye
- The position of the right eye in subjectImageleftIndex
- The index of the left eye point in this (and the average) TemplaterightIndex
- The index of the right eye point in this (and the average) Templateob
- The ImageObserver is used when finding the width and height of the imagepca
- The Principal Component Analysis data learnt from example face shapes.
public boolean fitPCA(java.awt.Image subjectImage, java.awt.Image averageImage, Template averageTemplate, java.awt.geom.Point2D.Float leftEye, java.awt.geom.Point2D.Float rightEye, int leftIndex, int rightIndex, java.awt.image.ImageObserver ob, PCA pca)
subjectImage
- The image containing the face to whose features you want to delineateaverageImage
- The average image corresponding to the PCA dataaverageTemplate
- The average Template corresponding to the PCA dataleftEye
- The position of the left eye in subjectImagerightEye
- The position of the right eye in subjectImageleftIndex
- The index of the left eye point in this (and the average) TemplaterightIndex
- The index of the right eye point in this (and the average) Templateob
- The ImageObserver is used when finding the width and height of the imagepca
- The Principal Component Analysis data learnt from example face shapes.
public void fitPCA(FloatImage average, FloatImage subject, Template avrg, PCA pca, int leftIndex, int rightIndex, int mouthIndex)
average
- The average FloatImage corresponding to the PCA datasubject
- The subject to delineateavrg
- The average template corresponding to the PCA datapca
- The Principal Component Analysis data learnt from example face shapes.leftIndex
- the index of the left eye (first normalisation point)rightIndex
- the index of the right eye (second normalisation point)mouthIndex
- the index of the mouth (third normalisation point)public static float[][] calculateNormalisationMatrix(java.awt.geom.Point2D.Float p1, java.awt.geom.Point2D.Float p2, java.awt.geom.Point2D.Float q1, java.awt.geom.Point2D.Float q2)
p1
- the first point to setLocation fromp2
- the second point to setLocation fromq1
- the first point to setLocation toq2
- the second point to setLocation to
public static float[][] calculateNormalisationMatrix(double[][] R, double[] T, double scale)
R
- the 2 by 2 rotation matrixT
- the 2 by 1 translation vectorscale
- the scale factor
public static float[][] calculateInverseNormalisationMatrix(double[][] R, double[] T, double scale)
R
- the 2x2 rotation matrixT
- the 2x2 translation matrixscale
- the scale factor
public void trackASM(FloatImage average, FloatImage subject, Template avrg, PCA pca, float scale, int its, int[] normalisePointIndex)
average
- The average image used for edge profilessubject
- the subject image to fit toavrg
- the average shapepca
- the pca datascale
- the current scale of the searchits
- maximum number of iterations to performnormalisePointIndex
- the indexes of the normalisation pointspublic float[][] normaliseEyes(Template target)
target
- the template to normalise to
public float[][] normaliseEyes(Template target, int[] normPoints)
target
- the template to normalise tonormPoints
- the array of normalisation point indices
public float[] getPCAandRBparameters(PCA pca, Template average)
pca
- The principal componentsaverage
- The average corresponding to this PCA
public float[] getPCAandNormParameters(PCA pca, Template average, int normalisation, int[] normPoints)
pca
- the PCA data to useaverage
- the average templatenormalisation
- the normalisation to use (ASM.TWO_POINT_NORMALISATION, ASM.THREE_POINT_NORMALISATION, ASM.RIGID_BODY_NORMALISATION, or none by default)normPoints
- the normalisation points to use for 2 or 3 point normalisation
public double[] getTensorandRBparameters(BigMat shapeModel, BigMat shapeAverage, Template average, Tensor shapeTensor)
shapeModel
- Used in the linear Tensor analysisshapeAverage
- Used in the linear Tensor analysisshapeTensor
- The shape tensor, used in the ALS Tensor analysisaverage
- The average corresponding to this Tensor
public double[] getMultilinearandRBparameters(Multilinear shapeMultilinear)
shapeMultilinear
- The shape analysis model
public void reconstructPCAandRB(PCA pca, Template average, float[] PCAandRBparams)
pca
- The Principal Component Analysis data learnt from example face shapes.average
- The average of the PCA dataPCAandRBparams
- The principal component parameters with the first four giving the position of the eyespublic void reconstructPCAandNorm(PCA pca, Template average, float[] PCAandRBparams, int normalisation, int[] normPoints)
pca
- the PCA data to useaverage
- the average to usePCAandRBparams
- the model parametersnormalisation
- the type of normalisation (ASM.TWO_POINT_NORMALISATION, ASM.THREE_POINT_NORMALISATION, ASM.RIGID_BODY_NORMALISATION, or none by default)normPoints
- the normalisation points to use for 2 or 3 point normalisationpublic void reconstructPCA(PCA pca, Template average, float[] pcaParams, int toskip)
pca
- The PCA data to useaverage
- the average of the PCA modelpcaParams
- the pca parameterstoskip
- the first toskip elements from the pcaParams array are skipped (e.g. if they are normalisation parameters)public void reconstructTensorandRB(Tensor shapeTensor, Template average, double[] PCAandRBparams)
shapeTensor
- The shape Tensor to use for the reconstructionaverage
- The average of the PCA dataPCAandRBparams
- The tensor parameters with the first four giving the position of the eyespublic void reconstructMultilinearandRB(Multilinear shapeMultilinear, Template average, double[] PCAandRBparams, boolean edgeOnly)
shapeMultilinear
- The shape multilinear modeledgeOnly
- flag indicating if we only want to reconstruct from the outer edge componentsaverage
- The average of the PCA dataPCAandRBparams
- The multilinear parameters with the first four giving the position of the eyespublic void fitAAMshape(int warpType, FloatImage average, FloatImage subject, Template avrg, Mask mask, PCA pca, float scale)
warpType
- indicates the type of warp to useaverage
- The average imagesubject
- The image to fit tooavrg
- the average shapemask
- defines the face pixels within the average imagepca
- the principal component analysis of shapescale
- the scale todo this search at (should be 1!)Warp.createWarp(int, int, int, int, int, boolean)
public void fitAAM(int warpType, java.awt.Image subject, java.awt.Image average, Mask mask, PCA pca, PCI pci)
warpType
- indicates the type of warp to usemask
- defines the lines comprising the face borderpci
- the principal components of the colour image dataaverage
- The average FloatImage corresponding to the PCA datasubject
- The subject to delineatepca
- The Principal Component Analysis data learnt from example face shapes.Warp.createWarp(int, int, int, int, int, boolean)
public void fitAAMappearance(int warpType, java.awt.Image subject, java.awt.Image averageImg, Mask mask, PCA pca, PCI pci, float scale)
warpType
- indicates the type of warp to useaverageImg
- The average image datapci
- The PCI (Principal component image) datasubject
- The image to fit toomask
- defines the face pixels within the average imagepca
- the principal component analysis of shapescale
- the scale todo this search at (should be 1!)Warp.createWarp(int, int, int, int, int, boolean)
public void fitTensor(int warpType, java.awt.Image subject, java.awt.Image averageImage, Template avrg, Mask mask, Tensor shapeTensor, Tensor imageTensor, BigMat shapeLinearModel, BigMat shapeAverage, BigMat imageLinearModel, BigMat imageAverage, float scale)
warpType
- indicates the type of warp to useaverageImage
- The average image (unmasked)avrg
- The average templateshapeTensor
- The shape tensor to useimageTensor
- The image tensor to useshapeLinearModel
- The matrix that performs the shape linear analysisshapeAverage
- The average shapeimageLinearModel
- The linear model analysis matriximageAverage
- The average imagesubject
- The image to fit toomask
- defines the face pixels within the average imagescale
- the scale todo this search at (should be 1!)Warp.createWarp(int, int, int, int, int, boolean)
public void fitMultilinear(int warpType, java.awt.Image subject, java.awt.Image averageImage, Template avrg, Mask mask, Multilinear shapeMultilinear, Multilinear imageMultilinear, float scale)
warpType
- indicates the type of warp to useaverageImage
- The unmasked average imageavrg
- The shape averageshapeMultilinear
- The average TemplateimageMultilinear
- The multilinear image modelsubject
- The image to fit toomask
- defines the face pixels within the average imagescale
- the scale todo this search at (should be 1!)Warp.createWarp(int, int, int, int, int, boolean)
public FloatImage[] constructMultilinearFitter(int warpType, java.awt.Image averageImage, Template avrg, Mask mask, Multilinear shapeMultilinear, Multilinear imageMultilinear, float scale)
warpType
- indicates the type of warp to useaverageImage
- The uinmasked average imageavrg
- Te average shapeshapeMultilinear
- The multilinear shape analysis matriximageMultilinear
- The image multilinear analysis matrixmask
- defines the face pixels within the average imagescale
- the scale todo this search at (should be 1!)
Warp.createWarp(int, int, int, int, int, boolean)
public void fitMultilinear(java.awt.Image subject, java.awt.Image averageImage, Template avrg, Mask mask, Multilinear shapeMultilinear, Multilinear imageMultilinear, FloatImage[] diffImg, float scale)
subject
- The image to fit toaverageImage
- The unmasked average imageavrg
- The average shapemask
- a mask that defines the face regionshapeMultilinear
- the linear shape analysis matriximageMultilinear
- the linear image analysis matrixdiffImg
- The derivative images with repsect to the model parameters at the originscale
- The scal to do the fitting at (currently unused)public void fitAAMbayesian(int warpType, java.awt.Image subject, java.awt.Image averageImg, Mask mask, PCA pca, PCI pci, float scale)
warpType
- indicates the type of warp to useaverageImg
- The average image datapci
- The PCI (Principal component image) datasubject
- The image to fit toomask
- defines the face pixels within the average imagepca
- the principal component analysis of shapescale
- the scale todo this search at (should be 1!)Warp.createWarp(int, int, int, int, int, boolean)
public int fitAAMspan(int warpType, java.awt.Image subject, java.awt.Image averageImg, Mask mask, PCA pca, PCI pci, FloatImage[] smallPCIcomps, float scale, int counter)
warpType
- indicates the type of warp to usesmallPCIcomps
- image pca components to project outcounter
- averageImg
- The average image datapci
- The PCI (Principal component image) datasubject
- The image to fit toomask
- defines the face pixels within the average imagepca
- the principal component analysis of shapescale
- the scale todo this search at (should be 1!)
Warp.createWarp(int, int, int, int, int, boolean)
public int fitAAMspanLM(int warpType, java.awt.Image subject, java.awt.Image averageImg, Mask mask, PCA pca, PCI pci, float scale, int counter)
warpType
- indicates the type of warp to useaverageImg
- The average image datapci
- The PCI (Principal component image) datasubject
- The image to fit toomask
- defines the face pixels within the average imagepca
- the principal component analysis of shapescale
- the scale todo this search at (should be 1!)counter
- initial value for counter used in debugging
Warp.createWarp(int, int, int, int, int, boolean)
public void fitAAMforward(java.awt.Image subjectImg, java.awt.Image averageImg, Mask mask, PCA pca, PCI pci, float scale)
subjectImg
- The image to fit to.averageImg
- The average image datapci
- The PCI (Principal component image) datamask
- defines the face pixels within the average imagepca
- the principal component analysis of shapescale
- the scale todo this search at (should be 1!)public void reconstructPCA(PCA pca, Template average, java.awt.geom.Point2D.Float left, java.awt.geom.Point2D.Float right, java.awt.geom.Point2D.Float mouth, float[] pcaParams, int leftIndex, int rightIndex, int mouthIndex)
pca
- The Principal Component Analysis data learnt from example face shapes.average
- The average of the PCA dataleft
- The position of the left eye point after reconstructionright
- The position of the right eye after reconstructionmouth
- The position of the mouth after reconstructionpcaParams
- The principal component parametersleftIndex
- the index of the left eye (first normalisation point)rightIndex
- the index of the right eye (second normalisation point)mouthIndex
- the index of the mouth (third normalisation point)public float[] getPCAparameters(PCA pca, Template average, int leftIndex, int rightIndex, int mouthIndex)
pca
- The principal componentsaverage
- The average corresponding to this PCAleftIndex
- the index of the left eye (first normalisation point)rightIndex
- the index of the right eye (second normalisation point)mouthIndex
- the index of the mouth (third normalisation point)
public int calculateAffineMatrix(java.awt.geom.Point2D.Float p1, java.awt.geom.Point2D.Float p2, java.awt.geom.Point2D.Float p3, java.awt.geom.Point2D.Float q1, java.awt.geom.Point2D.Float q2, java.awt.geom.Point2D.Float q3, float[][] mat)
p1
- the first point to setLocation fromp2
- the second point to setLocation fromp3
- the third point to setLocation fromq1
- the first point to setLocation toq2
- the second point to setLocation toq3
- the third point to setLocation tomat
- The matrix to fill in
public void transform(float[][] mat)
mat
- The matrix to Transform this Template withpublic void zoom(float zoomx, float zoomy, float crop_x, float crop_y)
zoomx
- The amount to zoom in xzoomy
- The amount to zoom in ycrop_x
- The amount to shift in xcrop_y
- The amount to shift in ypublic float[][] affineFit(Template tem, int[] normalisationPoints)
tem
- The templateto fit tonormalisationPoints
- the indices of the 3 normalisation points to use
public void affineFit(java.awt.geom.Point2D.Float leftEye, java.awt.geom.Point2D.Float rightEye, java.awt.geom.Point2D.Float mouth, int leftIndex, int rightIndex, int mouthIndex)
leftEye
- The desired position of the first pointrightEye
- The desired position of the second pointmouth
- The desired position of the third pointleftIndex
- The index of the first point in this TemplaterightIndex
- The index of the second point in this TemplatemouthIndex
- The index of the third point in this Templatepublic static float[][] getAffineMatrix(java.awt.geom.Point2D.Float[] source, java.awt.geom.Point2D.Float[] target)
source
- the 3 source pointstarget
- the 3 target points
public int affineFit2(java.awt.geom.Point2D.Float leftEye, java.awt.geom.Point2D.Float rightEye, java.awt.geom.Point2D.Float mouth, int leftIndex, int rightIndex, int mouthIndex1, int mouthIndex2)
leftEye
- point to match torightEye
- point to match tomouth
- point to match toleftIndex
- index of point to shiftrightIndex
- index of point to shiftmouthIndex1
- index of point to shiftmouthIndex2
- index of point to shift
public double rigidBodyFit(Template tmplt, double[][] R, double[] T)
tmplt
- The Template to match position and scale toR
- The 2x2 rotation matrixT
- The 2x1 translation vector
public double calculateRigidBodyFit(Template tmplt, double[][] R, double[] T)
tmplt
- The Template to match position and scale toR
- The 2x2 rotation matrixT
- The 2x1 translation vector
public void warp(Warp warp)
warp
- The warp to apply to this Templatepublic void warp(TPSWarp warp)
warp
- The warp to apply to this Templatepublic void recalculateContours()
public boolean getDrawLabels()
public void setDrawLabels(boolean drawLabels)
drawLabels
- the drawLabels to setpublic static int[] readSymFile(java.lang.String name) throws java.io.FileNotFoundException, java.io.IOException
name
- the name of the file to read
java.io.FileNotFoundException
java.io.IOException
public void reflect(int[] plist, int width)
plist
- the symmetry datawidth
- the width of the image being flippedpublic void symmetrise(Template t, int[] plist, int w)
t
- the template to symmetriseplist
- the symmetry dataw
- the width of the image
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |