Example #1
0
        private static PerspectiveTransform createTransform(ResultPoint topLeft, ResultPoint topRight, ResultPoint bottomLeft, ResultPoint alignmentPattern, int dimension)
        {
            float dimMinusThree = (float)dimension - 3.5f;
            float bottomRightX;
            float bottomRightY;
            float sourceBottomRightX;
            float sourceBottomRightY;

            if (alignmentPattern != null)
            {
                bottomRightX       = alignmentPattern.X;
                bottomRightY       = alignmentPattern.Y;
                sourceBottomRightX = dimMinusThree - 3.0f;
                sourceBottomRightY = sourceBottomRightX;
            }
            else
            {
                // Don't have an alignment pattern, just make up the bottom-right point
                bottomRightX       = (topRight.X - topLeft.X) + bottomLeft.X;
                bottomRightY       = (topRight.Y - topLeft.Y) + bottomLeft.Y;
                sourceBottomRightX = dimMinusThree;
                sourceBottomRightY = dimMinusThree;
            }

            return(PerspectiveTransform.quadrilateralToQuadrilateral(3.5f, 3.5f, dimMinusThree, 3.5f, sourceBottomRightX, sourceBottomRightY, 3.5f, dimMinusThree, topLeft.X, topLeft.Y, topRight.X, topRight.Y, bottomRightX, bottomRightY, bottomLeft.X, bottomLeft.Y));
        }
Example #2
0
        /// <summary>
        /// </summary>
        /// <param name="image"></param>
        /// <param name="dimensionX"></param>
        /// <param name="dimensionY"></param>
        /// <param name="p1ToX"></param>
        /// <param name="p1ToY"></param>
        /// <param name="p2ToX"></param>
        /// <param name="p2ToY"></param>
        /// <param name="p3ToX"></param>
        /// <param name="p3ToY"></param>
        /// <param name="p4ToX"></param>
        /// <param name="p4ToY"></param>
        /// <param name="p1FromX"></param>
        /// <param name="p1FromY"></param>
        /// <param name="p2FromX"></param>
        /// <param name="p2FromY"></param>
        /// <param name="p3FromX"></param>
        /// <param name="p3FromY"></param>
        /// <param name="p4FromX"></param>
        /// <param name="p4FromY"></param>
        /// <returns></returns>
        public override BitMatrix sampleGrid(BitMatrix image, int dimensionX, int dimensionY, 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)
        {
            PerspectiveTransform transform = PerspectiveTransform.quadrilateralToQuadrilateral(
                p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY,
                p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);

            return(sampleGrid(image, dimensionX, dimensionY, transform));
        }
        public void testQuadrilateralToQuadrilateral()
        {
            PerspectiveTransform pt = PerspectiveTransform.quadrilateralToQuadrilateral(
                2.0f, 3.0f, 10.0f, 4.0f, 16.0f, 15.0f, 4.0f, 9.0f,
                103.0f, 110.0f, 300.0f, 120.0f, 290.0f, 270.0f, 150.0f, 280.0f);

            assertPointEquals(103.0f, 110.0f, 2.0f, 3.0f, pt);
            assertPointEquals(300.0f, 120.0f, 10.0f, 4.0f, pt);
            assertPointEquals(290.0f, 270.0f, 16.0f, 15.0f, pt);
            assertPointEquals(150.0f, 280.0f, 4.0f, 9.0f, pt);
            assertPointEquals(7.1516876f, -64.60185f, 0.5f, 0.5f, pt);
            assertPointEquals(328.09116f, 334.16385f, 50.0f, 50.0f, pt);
        }
Example #4
0
        private static PerspectiveTransform createTransform(ResultPoint topLeft, ResultPoint topRight, ResultPoint bottomLeft, ResultPoint alignmentPattern, int dimension)
        {
            //UPGRADE_WARNING: Data types in Visual C# might be different.  Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'"
            float dimMinusThree = (float)dimension - 3.5f;
            float bottomRightX;
            float bottomRightY;
            float sourceBottomRightX;
            float sourceBottomRightY;

            if (alignmentPattern != null)
            {
                bottomRightX       = alignmentPattern.X;
                bottomRightY       = alignmentPattern.Y;
                sourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0f;
            }
            else
            {
                // Don't have an alignment pattern, just make up the bottom-right point
                bottomRightX       = (topRight.X - topLeft.X) + bottomLeft.X;
                bottomRightY       = (topRight.Y - topLeft.Y) + bottomLeft.Y;
                sourceBottomRightX = sourceBottomRightY = dimMinusThree;
            }

            return(PerspectiveTransform.quadrilateralToQuadrilateral(
                       3.5f,
                       3.5f,
                       dimMinusThree,
                       3.5f,
                       sourceBottomRightX,
                       sourceBottomRightY,
                       3.5f,
                       dimMinusThree,
                       topLeft.X,
                       topLeft.Y,
                       topRight.X,
                       topRight.Y,
                       bottomRightX,
                       bottomRightY,
                       bottomLeft.X,
                       bottomLeft.Y));
        }