Как я могу улучшить обнаружение текстовой области из набора удостоверений личности? - PullRequest
0 голосов
/ 22 мая 2019

Моя цель - извлечь тип удостоверения личности и имя владельца удостоверения личности, отсканировав изображение удостоверения личности с помощью Emgu CV. Прямо сейчас я пытаюсь обнаружить текстовые области на отсканированном изображении.

Как видно из моих изображений ниже, некоторые нетекстовые файлы обнаруживаются.

Как мне избавиться от обнаружения нетекстовых файлов? Может ли быть какой-то другой способ сделать это? Или есть какие-то изменения или дополнения в коде, которые я мог бы сделать?

private static List<Rectangle> GetTextArea(Mat image)
{
    double scale = 1.5;
    CvInvoke.Resize(image, image, Size.Empty, scale, scale);
    List<Rectangle> contour = new List<Rectangle>();
    using (Mat gray = new Mat())
    using (Mat threshold = new Mat())
    using (Mat dilate = new Mat())
    using (Mat hierarchy = new Mat())
    {
        CvInvoke.CvtColor(image, gray, ColorConversion.Bgr2Gray);
        CvInvoke.EqualizeHist(gray, gray);
        CvInvoke.Threshold(gray, threshold, 75, 255, ThresholdType.BinaryInv);
        using (Mat kernel = CvInvoke.GetStructuringElement(ElementShape.Rectangle, new Size(21, 3), new Point(-1, -1)))
        {
            CvInvoke.MorphologyEx(threshold, dilate, MorphOp.Close, kernel, new Point(-1, -1), 1, BorderType.Constant, new MCvScalar());
        }
        VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
        CvInvoke.FindContours(dilate, contours, hierarchy, RetrType.External, ChainApproxMethod.ChainApproxNone);
        for (int i = 0; i < contours.Size; i++)
        {
            Rectangle rectangle = CvInvoke.BoundingRectangle(contours[i]);
            if (rectangle.Width > rectangle.Height && rectangle.Height < 80 && rectangle.Height > 10)
            {
                contour.Add(rectangle);
            }
        }
    }

    return contour;
}

Вот imgur альбом оригинальных изображений и обнаружение текстовой области, которые я пытался.

...