Exemple #1
0
        /// <summary> <p>Attempts to locate an alignment pattern in a limited region of the image, which is
        /// guessed to contain it. This method uses {@link AlignmentPattern}.</p>
        /// 
        /// </summary>
        /// <param name="overallEstModuleSize">estimated module size so far
        /// </param>
        /// <param name="estAlignmentX">x coordinate of center of area probably containing alignment pattern
        /// </param>
        /// <param name="estAlignmentY">y coordinate of above
        /// </param>
        /// <param name="allowanceFactor">number of pixels in all directions to search from the center
        /// </param>
        /// <returns> {@link AlignmentPattern} if found, or null otherwise
        /// </returns>
        /// <throws>  ReaderException if an unexpected error occurs during detection </throws>
        protected internal virtual AlignmentPattern findAlignmentInRegion(float overallEstModuleSize, int estAlignmentX, int estAlignmentY, float allowanceFactor)
        {
            // Look for an alignment pattern (3 modules in size) around where it
            // should be
            //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'"
            int allowance = (int) (allowanceFactor * overallEstModuleSize);
            int alignmentAreaLeftX = System.Math.Max(0, estAlignmentX - allowance);
            int alignmentAreaRightX = System.Math.Min(image.Width - 1, estAlignmentX + allowance);
            if (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3)
            {
                throw ReaderException.Instance;
            }

            int alignmentAreaTopY = System.Math.Max(0, estAlignmentY - allowance);
            int alignmentAreaBottomY = System.Math.Min(image.Height - 1, estAlignmentY + allowance);

            AlignmentPatternFinder alignmentFinder = new AlignmentPatternFinder(image, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, resultPointCallback);
            return alignmentFinder.find();
        }
Exemple #2
0
        /// <summary> <p>Attempts to locate an alignment pattern in a limited region of the image, which is
        /// guessed to contain it. This method uses {@link AlignmentPattern}.</p>
        /// 
        /// </summary>
        /// <param name="overallEstModuleSize">estimated module size so far
        /// </param>
        /// <param name="estAlignmentX">x coordinate of center of area probably containing alignment pattern
        /// </param>
        /// <param name="estAlignmentY">y coordinate of above
        /// </param>
        /// <param name="allowanceFactor">number of pixels in all directions to search from the center
        /// </param>
        /// <returns> {@link AlignmentPattern} if found, or null otherwise
        /// </returns>
        /// <throws>  ReaderException if an unexpected error occurs during detection </throws>
        protected internal virtual AlignmentPattern findAlignmentInRegion(float overallEstModuleSize, int estAlignmentX,
                                                                          int estAlignmentY, float allowanceFactor)
        {
            // Look for an alignment pattern (3 modules in size) around where it
            // should be

            var allowance = (int) (allowanceFactor*overallEstModuleSize);
            int alignmentAreaLeftX = Math.Max(0, estAlignmentX - allowance);
            int alignmentAreaRightX = Math.Min(image.Width - 1, estAlignmentX + allowance);
            if (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize*3)
            {
                throw ReaderException.Instance;
            }

            int alignmentAreaTopY = Math.Max(0, estAlignmentY - allowance);
            int alignmentAreaBottomY = Math.Min(image.Height - 1, estAlignmentY + allowance);

            var alignmentFinder = new AlignmentPatternFinder(image, alignmentAreaLeftX, alignmentAreaTopY,
                                                             alignmentAreaRightX - alignmentAreaLeftX,
                                                             alignmentAreaBottomY - alignmentAreaTopY,
                                                             overallEstModuleSize, resultPointCallback);
            return alignmentFinder.find();
        }