OpenCV "Blured Corners"检测器 (C++)

标签 opencv image-processing detection feature-detection

我正在使用 OpenCV 3.1 和 Visual Studio C++。

目标

我想检测角点,而不是曲线、矩形或圆形。这意味着,我想找到模糊字符的位置。这里是我感兴趣的领域:

Areas of interest

红色区域具有更高的优先级,因为它们比当前 Shi-Tomasi 角检测器可以检测到的橙色区域更模糊。

我尝试过的

我测试了 Shi-Tomasi 角点检测器 - 代码放在本教程中 http://docs.opencv.org/2.4/doc/tutorials/features2d/trackingmotion/good_features_to_track/good_features_to_track.html当您有清晰的图像时,这非常适合定位带有文本的区域。我想找到使用 OpenCV 的算法,它具有相似(非常好的)性能并且可以检测模糊文本。文本过于模糊的区域(无法阅读 - 检测角落)应该被忽略。也应该忽略具有良好清晰度的区域。

这是我尝试过的示例 - 这是 Shi-Tomasi 教程的结果:

这是源图像:

Source image

这就是我得到的

Results

上图参数 minDistance=5, qualityLevel=0.01,下图 minDistance=10, qualityLevel=0.05 两张图的其余参数相同:

int blockSize = 3; bool useHarrisDetector = false; double k = 0.04;

错误的结果是它没有找到模糊文本 - 右上角或左下角的数字“195”,例如“14 毫秒”和/或“19 毫秒”。 相反,它找到了最好的锐利结果,这不是我想要的。

我相信,如果我可以使用某种内核来模糊锐利区域并锐化模糊区域,也许 Shi-Tomasi 角检测器可以找到结果。

有什么实现目标的技巧吗?

最佳答案

我能想到一些小点子,但它可能会耗尽性能。

逐个窗口(3*3 或更大以获得更好的性能)遍历您的图像窗口,并在每次迭代中执行:

  1. 模糊这个窗口。
  2. 计算模糊前后窗口之间的cv::Norm。将此值存储在每个窗口的某个位置。

这些值具有以下属性:

  1. 当模糊度高时它们就低。
  2. 当模糊度较低时它们较高

现在浏览这些值并找到符合您标准的值。

关于OpenCV "Blured Corners"检测器 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37895777/

相关文章:

c++ - 如何通过一些图像处理在带有 Windows iot 的 Raspberry pi 上显示来自相机的视频流

java - 从相机 Intent 拍摄照片并在其上覆盖另一个小图像

javascript - 您如何检测和识别 Javascript/jQuery 冲突?

javascript - 二维旋转矩形碰撞

java glReadpixels 到 OpenCV mat

python - 如何提高此图像中的 OCR 准确度?

python-3.x - python |以时间间隔从网络摄像头捕获图像

python - 如何使用 OpenCV 在包含多个图像和文本的文档中查找图像位置

python - Python 中的自适应直方图均衡化

有人可以解释一下我如何使用来自 grub 的 C 数据结构吗?我不明白 hi mem 和 lo mem