gpt4 book ai didi

python - 如何在opencv python中检测和删除框架形式的边框?

转载 作者:行者123 更新时间:2023-12-02 17:19:17 25 4
gpt4 key购买 nike

资料说明

  • 数据集包含图片形式(因此数据质量差异很大)
  • 所有表格都遵循相同的模板

  • 这是带有边框的表单元素的示例:
    Picture example
    目标
    检测并因此移除(大约)图像周围的矩形边框或框架。
    挑战
    由于阴影效果等原因,边框的颜色可能不统一,并且可能包含符号或被符号部分中断。并非所有图像实际上都会首先具有边框(在这种情况下,不需要删除任何东西)。
    引用
    其他人先前已在 this link 上描述了该问题。 , 并且已经在 C++ 中提供了答案。由于我的语言不流利,我需要用 Python 来做。
    引用的答案描述了以下步骤(由于我刚刚开始使用计算机视觉,我不确定它们的含义):
  • 计算图像的拉普拉斯算子
  • 计算水平和垂直投影
  • 评估双向变化
  • 找到最大峰值,在梯度图像的一侧找到。
  • 最佳答案

    1 - 您必须对存在的边界做出一些假设 - 假设它们不应超过 20 像素或图像高度/宽度的 10%。看到您的数据,您将能够做出这个假设
    现在我们将从图像中分离出这个 20 像素的边界区域并仅在其中工作。
    2 - 将图像转换为灰度,因为您的边框颜色会有所不同。在灰度上工作将使生活变得轻松。如果你能做到阈值,那就更好了。

    import cv2 
    import numpy as np
    img = cv2.imread('input.png', 0)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    3 - 由于您的图像边框可能会被符号部分打断 - 使用膨胀操作。如果有统一的边界或没有边界存在 - 什么都不会发生。如果边界存在且中断 - 扩张操作将使其统一。
    以大小为 5 的矩阵作为核
    kernel = np.ones((5,5), np.uint8)    
    img_dilated = cv2.dilate(gray, kernel, iterations=1)
    您将需要尝试
  • 内核大小
  • 迭代次数
  • 膨胀后是否需要腐 eclipse 操作。腐 eclipse 与膨胀相反

  • 4 - 现在让我们用拉普拉斯算子找出是否有任何边界。拉普拉斯算子是图像二阶空间导数的二维各向同性度量。图像的拉普拉斯算子突出显示强度快速变化的区域,因此通常用于边缘检测。
    laplacian = cv2.Laplacian(img_dilated,cv2.CV_64F)
    在图像的拉普拉斯算子中,您会看到两条线代替边框。
    注意 - 您不需要使用单独的水平和垂直 sobel 运算符。拉普拉斯算子兼顾水平和垂直。拉普拉斯算子是二阶导数,而 sobel 是一阶导数。
    5 - 现在你会想要算法来检测是否有双线。为此,我们使用霍夫变换。
    # This returns an array of r and theta values 
    lines = cv2.HoughLines(edges,1,np.pi/180, 200)

    # The below for loop runs till r and theta values
    # are in the range of the 2d array
    for r,theta in lines[0]:

    # Stores the value of cos(theta) in a
    a = np.cos(theta)

    # Stores the value of sin(theta) in b
    b = np.sin(theta)
    6 - 如果霍夫变换检测到线条(检查上面的角度 theta 与具有一定公差的预期) - 这意味着您的边界存在。从图像中删除 20 像素的边框。
    备注 - 这只是一个让您入门的伪代码。现实世界的问题需要大量的定制工作和实验。

    关于python - 如何在opencv python中检测和删除框架形式的边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63011159/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com