Обнаружение краев белого документа на белом фоне - PullRequest
0 голосов
/ 07 ноября 2019

Я разрабатываю приложение для Android, которое занимается обнаружением различных документов. Мне удалось частично поработать с распознаванием краев белого документа на белом фоне. Приложение работает хорошо только при наличии искусственного света, но с естественным светом (утром), который поступает в боковом направлении, документ (белый на белом фоне) никогда не идентифицируется.

Появляется та же проблемамежду разными телефонами и разными камерами. Например, он работает с Samsung S10 и не работает с Xiaomi MiA1.

Это реальная причина:

Изображение реальной причины

Делая обнаружение утром, это изображение, которое я получаю:

После medianBlur и порогового изображения.

avgCorner - это переменная, в которой я сохраняю цвет фона для использования различных порогов.

if (avgCorner >= THRESHOLD) {
    // White document on white background
    Imgproc.cvtColor(mat, mGrayMat, Imgproc.COLOR_BGR2HSV, 4);
    List<Mat> mats = new ArrayList<>();
    Core.split(mGrayMat, mats);
    mGrayMat = mats.get(1);
    Imgproc.medianBlur(mGrayMat, mGrayMat, 11);
    Imgproc.threshold(mGrayMat, dst, 5, 255, THRESH_BINARY_INV);
}
else {
    // Dark background
    Imgproc.cvtColor(mat, mGrayMat, Imgproc.COLOR_BGR2GRAY, 4);
    Imgproc.threshold(mGrayMat, dst, 150, 255, THRESH_BINARY + THRESH_OTSU);
}

Кто-нибудь сталкивался с подобной проблемой? Как может быть возможна более общая реализация? Как я могу улучшить захват изображения или манипулирование?

Заранее спасибо.

...