【问题标题】:Line detection against darker shades针对较暗阴影的线条检测
【发布时间】:2014-01-14 15:58:13
【问题描述】:

我想从在白纸上绘制黑色线条的图像中检测线条。 如果理想的“黑白”,使用直方图阈值就可以了。

但是,如附图所示,某些线条(例如浅红色圆圈中)的灰色比阴影(例如深红色圆圈中)浅。因此使用直方图阈值在光线之前获得了一些阴影。

有什么想法可以用一些“知识”来区分线条和阴影吗?谢谢!


编辑: 这是原始图像,因为它们是原始分辨率,所以有点小。

谢谢:-)

【问题讨论】:

  • 可以上传不带红圈的raw图片吗?
  • @lennon310 谢谢!我已经上传了。现在我在想“边缘”像素和“阴影”像素之间的一个区别可能是:这个像素的值与其邻域的中间值之间的区别。我现在正在尝试。
  • @nikie 哦!我认为我的问题与那个问题非常相似,并且该方法似乎很有帮助。非常感谢!
  • @nikie 受你answer的启发,我想我已经通过Img-medianBlur(Img)取得了更好的效果,非常感谢:-) 我还有两个小问题,1.应该将您的代码的一行更改为opened = imdilate(imerode(blue,mask),mask);,因为我们在膨胀之前进行腐蚀? 2.我了解“二进制”图像的形态学操作,但无法想象如何侵蚀/膨胀“灰色”图像(以及您答案中的“开放”模糊方法)。你能指导我一点吗?再次感谢。

标签: opencv image-processing detection


【解决方案1】:

除了腐蚀+膨胀之外,我会添加另一种使用高斯模糊的方法,供您参考:

file='http://i.stack.imgur.com/oEjtT.png';
I=imread(file);
h = fspecial('gaussian',5,4);
I1=imfilter(I,h,'replicate');
h = fspecial('gaussian',5);
I2=imfilter(I,h,'replicate');
I3=I1-I2;
I3=double(I3(:,:,1));
I3=I3.*(I3>5);
imshow(I3)

【讨论】:

  • 知道了!谢谢你的方法:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 2018-03-06
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多