0

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

in_image

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

在此处输入图像描述

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

4

3 回答 3

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();

输出:

输出示例

于 2013-09-08T03:51:08.570 回答
0

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

  1. 与直径略大于线粗的圆卷积
  2. 归一化卷积,您对大于 0.95-0.97 的值感兴趣
  3. 对于卷积函数上的每个点(值大于 0.95-0.97),您应该将 R=diameter/2 范围内的所有邻域归零
于 2013-09-07T15:12:41.120 回答
0

建议::)

于 2013-09-07T13:23:35.610 回答