背景检测具有与背景相同颜色的字体

时间:2013-09-07 13:14:13

标签: opencv image-processing detection feature-detection

好的,这是问题: 我的图像如下(所以,这是红色背景上的白色图。这个图里面有两条细红线)

in_image

我希望收到以下图片(删除红色背景,但图中没有两条红线)

enter image description here

我正在尝试使用OpenCV中的convexHull,但显然这种方法仅适用于凸起的数字。我觉得卷积可能对此有所帮助,但还没有真正的想法......

感谢您的任何建议!

3 个答案:

答案 0 :(得分: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();

输出:

ouput example

答案 1 :(得分:0)

建议:: :)

答案 2 :(得分:0)

他 - 他看起来像圆形的卷积,直径稍大(例如8个像素)比线厚度工作! 所以,算法将如下所示:

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