【问题标题】:background detection having font with same color as background背景检测具有与背景颜色相同的字体
【发布时间】:2013-09-07 13:14:13
【问题描述】:

我有如下图像(所以,这是红底白字。这个图里面有两条细红线)

我想收到下面的图片(去除红色背景,但不是图中的两条红线)

我正在尝试使用 OpenCV 的 convexHull,但显然这种方法仅适用于凸图。我觉得卷积在这里可能会有所帮助,但还没有真正的想法。

【问题讨论】:

    标签: opencv image-processing detection feature-detection


    【解决方案1】:

    Dilate 和 Erode 应该适用于您的示例:

    Mat image = imread("image1.jpg");   
    
    int erosion_size = 5;
    int dilation_size = 6;
    
    int threshold_value = 200;
    
    Mat mask;
    cvtColor( image, mask, CV_BGR2GRAY );
    
    //BINARY THRESHOLDING
    threshold( mask, mask, threshold_value, 255, 0);
    
    Mat erosion_element = getStructuringElement(MORPH_RECT, Size( 2*erosion_size + 1, 2*erosion_size+1 ), Point( erosion_size, erosion_size ) );
    
    Mat dilation_element = getStructuringElement(MORPH_RECT, Size( 2*dilation_size + 1, 2*dilation_size+1 ), Point( dilation_size, dilation_size ) );
    
    dilate(mask, mask, erosion_element);
    erode(mask, mask, dilation_element);
    
    Mat target;
    image.copyTo(target, mask);
    
    imshow("hello",target);
    
    waitKey();
    

    输出:

    【讨论】:

      【解决方案2】:

      建议::)

      【讨论】:

      • berak,从 (0,0) 点用黑色填充填充也会用黑色填充红线 :) 请注意,这些红线没有被图左侧背景中的任何像素分隔。
      • 啊好的。对不起。完全倒退了。我应该删除它吗?
      • np,你可以把它留作历史 :) 无论如何,谢谢你的时间!
      【解决方案3】:

      嘿嘿,它看起来像是直径比线粗略大(例如 8 像素)的圆的卷积! 因此,算法将如下所示:

      1. 与直径略大于直线的圆进行卷积 厚度
      2. 归一化卷积,你对值感兴趣 大于 0.95-0.97
      3. 对于卷积函数上的每个点 (值大于 0.95-0.97)你应该全部归零 R=diameter/2 范围内的邻域

      【讨论】:

        猜你喜欢
        • 2014-04-10
        • 2014-11-14
        • 2014-09-24
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多