Exemple #1
0
        /// <summary>
        /// Checks required resize scaling for upcoming letters basing on the capital letter.
        /// </summary>
        /// <param name="capital">Capital letter to be checked.</param>
        /// <returns>Scaling ratio for all upcoming letters</returns>
        private float ResizeScale(ImageMatrix capital)
        {
            var   files            = DBHandle.FileRetriever.Size_All_Type_All(DATA.varyingSizeFolderNode, DATA.capitalsFolderNode);
            float heightWidthRatio = (float)capital.Height / capital.Width;
            float toRet            = 0;
            float bestAlikeRatio   = 0;

            foreach (var fileD in files)
            {
                foreach (var file in fileD.Value)
                {
                    var matrixInfo    = GetMatrixInfo(file);
                    var matrixHWRatio = matrixInfo.Item1;
                    if (InRangeFrom(matrixHWRatio, heightWidthRatio, 0.1f))
                    {
                        var alikeRatio = MatrixTools.EqualPixelRatioScaleBased(new ImageMatrix(file), capital);
                        if (alikeRatio > bestAlikeRatio)
                        {
                            bestAlikeRatio = alikeRatio;
                            toRet          = matrixInfo.Item2 / capital.Height;
                        }
                    }
                }
            }
            return(toRet);
        }
Exemple #2
0
        public void TestScaledComparison()
        {
            testName = "ScaledComparison";
            Random r = new Random();
            int    smallW = 5, smallH = 7;

            bool[][] smallMatrix = new bool[smallW][];
            for (int x = 0; x < smallW; ++x)
            {
                smallMatrix[x] = new bool[smallH];
                for (int y = 0; y < smallH; ++y)
                {
                    smallMatrix[x][y] = r.Next(2) == 1 ? true : false;
                }
            }
            ImageMatrix main   = new ImageMatrix(smallMatrix);
            ImageMatrix second = MatrixTools.Scale(main, 8, 16);
            var         r1     = MatrixTools.EqualPixelRatioScaleBased(main, second);

            TEST(r1 >= 0.99 && r1 <= 1.0, $"Comparison varying sizes is below 0.99, received ratio: {r1}");
        }