白色背景上的边缘检测白色文档

我正在开发一个Android应用程序,用于检测不同的文档。我在白色背景上对白色文档的边缘检测进行了部分处理。该应用程序仅在存在人造光的情况下才能正常工作,但在自然光(早晨)以横向方式进入文档(白色背景上的白色)的情况下,永远无法识别。

在不同的手机和不同的相机之间也会出现相同的问题。例如,它可以与Samsung S10一起使用,而不能与Xiaomi MiA1一起使用。

这是一个真正的原因:

Real Cause Image

在早上进行检测,这是我得到的图像:

After medianBlur and threshold Image

我尝试了此解决方案,但正如之前所说,它仅在某些条件下有效。

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,11);
    Imgproc.threshold(mGrayMat,dst,5,255,THRESH_BINARY_INV);
}
else {
    // Dark background
    Imgproc.cvtColor(mat,Imgproc.COLOR_BGR2GRAY,4);
    Imgproc.threshold(mGrayMat,150,THRESH_BINARY + THRESH_OTSU);
}

有人遇到过类似的问题吗?如何实现更通用的实现?如何改善图像捕获或操作?

谢谢。

z4704958123 回答:白色背景上的边缘检测白色文档

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3145377.html

大家都在问