【问题标题】:Image preprocessing for edge detection - low quality, low contrast用于边缘检测的图像预处理 - 低质量、低对比度
【发布时间】:2019-01-20 19:25:52
【问题描述】:

我有一堆低质量、低对比度(通常也是光线不好)的岩石上的文字照片。我希望我的程序能够检测字母形状(通常非常磨损)。由于我是新手,我尝试应用 sobel / laplacian / canny 滤镜,但照片显然需要一些预处理。您能否建议我可以做些什么来获得更好的结果。我尝试在线搜索,但我发现的解决方案要么不起作用,要么对我来说听起来很神奇。

【问题讨论】:

  • 使用已知的过滤技术,恐怕这项任务几乎是不可能的。划线的地方真的很微弱,而且有很多扰动元素(孔,划痕,裂缝,随机照明......)。即使是未经训练的人也无法产生可利用的结果。
  • 我使用 RTI 成像 culturalheritageimaging.org/Technologies/RTI 处理类似这样的任务,参见例如。 youtube.com/watch?v=Hw3rbYvN0h8我当然知道这对你没有直接的帮助,很遗憾。
  • @Karolina 正如其他人所建议的那样,您的检测结果将与您的数据一样好。您可以尝试一些图像处理技术 (example here),但对于“漂白”/过度曝光的区域您不会走得太远,而且自动化感觉很棘手。我也会尝试在您的视觉允许的范围内尽可能地手动追踪字母(也许想想哪些图像特征可以让您追踪字符)?

标签: image-processing edge-detection image-preprocessing


【解决方案1】:

这个问题需要一个完整的算法。如果没有在 MATLAB/OctavePython/C++ 中使用 OpenCV 编写完整的代码,以下是我的两分钱,我将如何去做。

  1. 该图像中的文字边缘/雕刻在岩石中。我希望首先通过某种直方图均衡化来增强图像的对比度。这应该使文本更加突出。 (提示:在opencv 中查看calcHist()equalizeHist(),或在MATLAB 中查看imhist()adapthisteq()。)

  2. 我会删除图像中不必要的部分。

    1. 移除所有不是石头的东西。

      1. 因为这个会移除所有不是岩石的东西。这意味着,删除靠近顶部的图像部分,这主要是较暗的。您可以对图像进行黑白阈值处理,然后应用 Hough-Transform 来检测图像中最大的水平线或接近水平的线。
      2. 以类似的方式,我会尝试在 45° 处检测岩石边缘。
      3. 使用binary masking 删除这两行上方的所有内容。
      4. 这应该会给你留下一个裁剪的图像,类似于这个。 (提示:参见 cv2.HoughLines 解释 herehoughlines 在 Matlab 上解释 here。)

        详细说明这就是我的意思,

    2. 接下来,我将移除岩石右下角周围的那些锋利边缘。在我看来,这可以通过以下两种方式之一来完成。

      • 这些边缘看起来非常精细且锋利。这意味着,高频组件。实际上,这些似乎是整个图像中的最高频率分量。因此,您要么从MATLAB 中获取fft() 函数,要么从opencv 中获取cv2.idft,然后将图像转换到频域并移除高于某个频率阈值的所有频率分量。 (这个阈值是什么,我不能说。必须测试并查看。注意不要将阈值设置得太低,否则您也可能会失去文本的清晰度。)。从频域变换回修改后的图像。
      • 或者,更简单地说,您可以使用来自MATLABimgausfilt 或来自opencvcv2.filter2D 模糊图像。与这些功能一起使用的过滤器/内核的大小很重要。太大会丢失太多细节。
      • 这应该会平滑底部的那些锋利边缘。 (注意:图像仅用于说明目的。平滑当然会影响整个图像。因此最好将平滑保持在去除那些精细边缘的程度,这样它们就不会在边缘出现 -检测步骤。)
  3. 现在移除了图像的大部分“无趣”部分,您可以在阈值黑白图像上应用一些边缘检测算法(例如 Canny,正如您自己提到的),希望您应该有更多文本。 OpenCV 和 MATLAB 中都存在等效的边缘检测函数。

TODO:当然,文本之间的小圆圈仍然是一个问题,算法可以改进(例如匹配圆形等形状,然后)将它们也删除。此外,如何从这张图片中重建文本的损坏部分,可能更具挑战性(至少对我而言)。

  1. 最后,您可以使用一些 OCR 识别,例如使用 tesseractOpenCV,您可以尝试从处理后的图像中提取文本。

【讨论】:

  • OCR 会惨遭失败。
  • @YvesDaoust,就其本身而言,是的,OCR 不会取得太大成就。我说的是在步骤 1,2 和 3 之后对 已处理 图像使用 OCR。
  • 我也是这个意思。预处理后,OCR 将继续失败。
  • 那么您有什么建议可以解决这个问题?
  • 承认不可行。
猜你喜欢
  • 2020-12-16
  • 2020-11-18
  • 2015-04-24
  • 2019-03-14
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
相关资源
最近更新 更多