OpenCV";“模糊的角落”;检测器(C+;+;)

OpenCV";“模糊的角落”;检测器(C+;+;),opencv,image-processing,detection,feature-detection,Opencv,Image Processing,Detection,Feature Detection,我使用OpenCV 3.1和VisualStudioC++。 目标 我想检测角点,而不是曲线、矩形或圆。这意味着,我想找到模糊字符的位置。以下是我感兴趣的领域: 红色区域具有更高的优先级,因为它们比橙色区域更模糊,而橙色区域可以用当前的Shi-Tomasi角检测器检测到 我尝试过的 我已经测试了Shi Tomasi角检测器-代码放在本教程中,当您有清晰的图像时,它可以很好地定位带有文本的区域。我想找到使用OpenCV的算法,它具有类似(非常好)的性能,可以检测模糊文本。文本模糊过多的区域(不可

我使用OpenCV 3.1和VisualStudioC++。 目标

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

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

我尝试过的

我已经测试了Shi Tomasi角检测器-代码放在本教程中,当您有清晰的图像时,它可以很好地定位带有文本的区域。我想找到使用OpenCV的算法,它具有类似(非常好)的性能,可以检测模糊文本。文本模糊过多的区域(不可能读取-检测角点)应忽略。此外,应忽略具有良好清晰度的区域

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

这是源图像:

这就是我得到的

上部图像参数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或更大,以获得更好的性能),并在每次迭代中执行以下操作:

  • 模糊这个窗口
  • 计算模糊前和模糊后窗口之间的
    cv::Norm
    。将此值存储在每个窗口的某些位置
  • 这些值具有以下属性:

  • 当模糊度较高时,它们较低
  • 当模糊度较低时,它们较高

  • 现在检查这些值,并找到符合您标准的值。

    我可以想出一个小主意,但它可能已经耗尽了性能

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

  • 模糊这个窗口
  • 计算模糊前和模糊后窗口之间的
    cv::Norm
    。将此值存储在每个窗口的某些位置
  • 这些值具有以下属性:

  • 当模糊度较高时,它们较低
  • 当模糊度较低时,它们较高

  • 现在检查这些值并找到符合您标准的值。

    不要期望这种情况有多可靠。垃圾输入/垃圾输出原则将完全适用。不要期望这种情况有多大的可靠性。垃圾输入/垃圾输出原则将完全适用。