mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
Adjust formatting on last change. Simplify GridSampler
git-svn-id: https://zxing.googlecode.com/svn/trunk@1618 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
5053864cb3
commit
aa6c437d71
|
@ -23,24 +23,6 @@ import com.google.zxing.NotFoundException;
|
|||
*/
|
||||
public final class DefaultGridSampler extends GridSampler {
|
||||
|
||||
public BitMatrix sampleGrid(BitMatrix image,
|
||||
int dimension,
|
||||
float p1ToX, float p1ToY,
|
||||
float p2ToX, float p2ToY,
|
||||
float p3ToX, float p3ToY,
|
||||
float p4ToX, float p4ToY,
|
||||
float p1FromX, float p1FromY,
|
||||
float p2FromX, float p2FromY,
|
||||
float p3FromX, float p3FromY,
|
||||
float p4FromX, float p4FromY) throws NotFoundException {
|
||||
|
||||
PerspectiveTransform transform = PerspectiveTransform.quadrilateralToQuadrilateral(
|
||||
p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY,
|
||||
p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);
|
||||
|
||||
return sampleGrid(image, dimension, dimension, transform);
|
||||
}
|
||||
|
||||
public BitMatrix sampleGrid(BitMatrix image,
|
||||
int dimensionX,
|
||||
int dimensionY,
|
||||
|
@ -61,7 +43,8 @@ return sampleGrid(image, dimensionX, dimensionY, transform);
|
|||
}
|
||||
|
||||
public BitMatrix sampleGrid(BitMatrix image,
|
||||
int dimensionX, int dimensionY,
|
||||
int dimensionX,
|
||||
int dimensionY,
|
||||
PerspectiveTransform transform) throws NotFoundException {
|
||||
BitMatrix bits = new BitMatrix(dimensionX, dimensionY);
|
||||
float[] points = new float[dimensionX << 1];
|
||||
|
|
|
@ -58,40 +58,6 @@ public abstract class GridSampler {
|
|||
return gridSampler;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Samples an image for a square matrix of bits of the given dimension. This is used to extract
|
||||
* the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode
|
||||
* may be rotated or perspective-distorted, the caller supplies four points in the source image
|
||||
* that define known points in the barcode, so that the image may be sampled appropriately.</p>
|
||||
*
|
||||
* <p>The last eight "from" parameters are four X/Y coordinate pairs of locations of points in
|
||||
* the image that define some significant points in the image to be sample. For example,
|
||||
* these may be the location of finder pattern in a QR Code.</p>
|
||||
*
|
||||
* <p>The first eight "to" parameters are four X/Y coordinate pairs measured in the destination
|
||||
* {@link BitMatrix}, from the top left, where the known points in the image given by the "from"
|
||||
* parameters map to.</p>
|
||||
*
|
||||
* <p>These 16 parameters define the transformation needed to sample the image.</p>
|
||||
*
|
||||
* @param image image to sample
|
||||
* @param dimension width/height of {@link BitMatrix} to sample from image
|
||||
* @return {@link BitMatrix} representing a grid of points sampled from the image within a region
|
||||
* defined by the "from" parameters
|
||||
* @throws NotFoundException if image can't be sampled, for example, if the transformation defined
|
||||
* by the given points is invalid or results in sampling outside the image boundaries
|
||||
*/
|
||||
public abstract BitMatrix sampleGrid(BitMatrix image,
|
||||
int dimension,
|
||||
float p1ToX, float p1ToY,
|
||||
float p2ToX, float p2ToY,
|
||||
float p3ToX, float p3ToY,
|
||||
float p4ToX, float p4ToY,
|
||||
float p1FromX, float p1FromY,
|
||||
float p2FromX, float p2FromY,
|
||||
float p3FromX, float p3FromY,
|
||||
float p4FromX, float p4FromY) throws NotFoundException;
|
||||
|
||||
/**
|
||||
* Samples an image for a rectangular matrix of bits of the given dimension.
|
||||
* @param image image to sample
|
||||
|
@ -114,12 +80,10 @@ public abstract class GridSampler {
|
|||
float p3FromX, float p3FromY,
|
||||
float p4FromX, float p4FromY) throws NotFoundException;
|
||||
|
||||
public BitMatrix sampleGrid(BitMatrix image,
|
||||
int dimension,
|
||||
PerspectiveTransform transform) throws NotFoundException {
|
||||
throw new IllegalStateException(); // Can't use UnsupportedOperationException
|
||||
}
|
||||
|
||||
public abstract BitMatrix sampleGrid(BitMatrix image,
|
||||
int dimensionX,
|
||||
int dimensionY,
|
||||
PerspectiveTransform transform) throws NotFoundException;
|
||||
|
||||
/**
|
||||
* <p>Checks a set of points that have been transformed to sample points on an image against
|
||||
|
@ -136,8 +100,7 @@ public abstract class GridSampler {
|
|||
* @param points actual points in x1,y1,...,xn,yn form
|
||||
* @throws NotFoundException if an endpoint is lies outside the image boundaries
|
||||
*/
|
||||
protected static void checkAndNudgePoints(BitMatrix image, float[] points)
|
||||
throws NotFoundException {
|
||||
protected static void checkAndNudgePoints(BitMatrix image, float[] points) throws NotFoundException {
|
||||
int width = image.getWidth();
|
||||
int height = image.getHeight();
|
||||
// Check and nudge points from start until we see some that are OK:
|
||||
|
|
|
@ -418,7 +418,6 @@ final class BitMatrixParser {
|
|||
int sizeDataRegionRow = numDataRegionsRow * dataRegionSizeRows;
|
||||
int sizeDataRegionColumn = numDataRegionsColumn * dataRegionSizeColumns;
|
||||
|
||||
// TODO(bbrown): Make this work with rectangular codes
|
||||
BitMatrix bitMatrixWithoutAlignment = new BitMatrix(sizeDataRegionColumn, sizeDataRegionRow);
|
||||
for (int dataRegionRow = 0; dataRegionRow < numDataRegionsRow; ++dataRegionRow) {
|
||||
int dataRegionRowOffset = dataRegionRow * dataRegionSizeRows;
|
||||
|
|
|
@ -283,14 +283,12 @@ public final class Detector {
|
|||
return c1;
|
||||
}
|
||||
|
||||
int l1 = Math.abs(transitionsBetween(topLeft, c1).getTransitions() - transitionsBetween(bottomRight, c1).getTransitions());
|
||||
int l2 = Math.abs(transitionsBetween(topLeft, c2).getTransitions() - transitionsBetween(bottomRight, c2).getTransitions());
|
||||
int l1 = Math.abs(transitionsBetween(topLeft, c1).getTransitions() -
|
||||
transitionsBetween(bottomRight, c1).getTransitions());
|
||||
int l2 = Math.abs(transitionsBetween(topLeft, c2).getTransitions() -
|
||||
transitionsBetween(bottomRight, c2).getTransitions());
|
||||
|
||||
if (l1 <= l2){
|
||||
return c1;
|
||||
}
|
||||
|
||||
return c2;
|
||||
return l1 <= l2 ? c1 : c2;
|
||||
}
|
||||
|
||||
private boolean isValid(ResultPoint p) {
|
||||
|
|
|
@ -377,7 +377,10 @@ public final class Detector {
|
|||
// very corners. So there is no 0.5f here; 0.0f is right.
|
||||
GridSampler sampler = GridSampler.getInstance();
|
||||
|
||||
return sampler.sampleGrid(matrix, dimension, 0.0f, // p1ToX
|
||||
return sampler.sampleGrid(
|
||||
matrix,
|
||||
dimension, dimension,
|
||||
0.0f, // p1ToX
|
||||
0.0f, // p1ToY
|
||||
dimension, // p2ToX
|
||||
0.0f, // p2ToY
|
||||
|
|
|
@ -184,7 +184,7 @@ public class Detector {
|
|||
int dimension) throws NotFoundException {
|
||||
|
||||
GridSampler sampler = GridSampler.getInstance();
|
||||
return sampler.sampleGrid(image, dimension, transform);
|
||||
return sampler.sampleGrid(image, dimension, dimension, transform);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue