/// <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); }
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}"); }