public class DescribeDenseSiftAlg<D extends boofcv.struct.image.ImageGray> extends DescribeSiftCommon
Computes SIFT features in a regular grid across an entire image at a single
scale and orientation. This is more computationally efficient than the more generic DescribePointSift
algorithm because it makes strong assumptions. If given the same center point, an orientation of 0, and
sigmaToPixels is 1, they should produce the same descriptor.
Sampling is done in regular increments in a grid pattern. The example sampling points are computed such that entire area sampled starts and ends at the most extreme possible pixels. This most likely will require that the sampling period be adjusted. Multiple descriptors can overlap the same area, so pixel orientation and magnitude is just computed once and saved.
gaussianWeight, histogramBinWidth, maxDescriptorElementValue, numHistogramBins, widthGrid, widthSubregion| Constructor and Description |
|---|
DescribeDenseSiftAlg(int widthSubregion,
int widthGrid,
int numHistogramBins,
double weightingSigmaFraction,
double maxDescriptorElementValue,
double periodColumns,
double periodRows,
java.lang.Class<D> derivType)
Specifies SIFT descriptor structure and sampling frequency.
|
| Modifier and Type | Method and Description |
|---|---|
void |
computeDescriptor(int cx,
int cy,
TupleDesc_F64 desc)
Computes the descriptor centered at the specified coordinate
|
java.lang.Class<D> |
getDerivType() |
org.ddogleg.struct.FastQueue<TupleDesc_F64> |
getDescriptors() |
org.ddogleg.struct.FastQueue<georegression.struct.point.Point2D_I32> |
getLocations()
Returns where in the image it sampled the features
|
double |
getPeriodColumns() |
double |
getPeriodRows() |
void |
process()
Computes SIFT descriptors across the entire image
|
void |
setImageGradient(D derivX,
D derivY)
Sets the gradient and precomputes pixel orientation and magnitude
|
void |
setPeriodColumns(double periodColumns) |
void |
setPeriodRows(double periodRows) |
createGaussianWeightKernel, getCanonicalRadius, getDescriptorLength, normalizeDescriptor, trilinearInterpolationpublic DescribeDenseSiftAlg(int widthSubregion,
int widthGrid,
int numHistogramBins,
double weightingSigmaFraction,
double maxDescriptorElementValue,
double periodColumns,
double periodRows,
java.lang.Class<D> derivType)
widthSubregion - Width of sub-region in samples. Try 4widthGrid - Width of grid in subregions. Try 4.numHistogramBins - Number of bins in histogram. Try 8weightingSigmaFraction - Sigma for Gaussian weighting function is set to this value * region width. Try 0.5maxDescriptorElementValue - Helps with non-affine changes in lighting. See paper. Try 0.2periodColumns - Number of pixels between samples along x-axisperiodRows - Number of pixels between samples along y-axisderivType - Type of input derivative imagepublic void setImageGradient(D derivX, D derivY)
derivX - image derivative x-axisderivY - image derivative y-axispublic void process()
public void computeDescriptor(int cx,
int cy,
TupleDesc_F64 desc)
cx - center of region x-axiscy - center of region y-axisdesc - The descriptorpublic double getPeriodRows()
public void setPeriodRows(double periodRows)
public double getPeriodColumns()
public void setPeriodColumns(double periodColumns)
public org.ddogleg.struct.FastQueue<TupleDesc_F64> getDescriptors()
public org.ddogleg.struct.FastQueue<georegression.struct.point.Point2D_I32> getLocations()
public java.lang.Class<D> getDerivType()