我想从图像中提取草地上的粉笔线。一个例子如下。这是我到目前为止所尝试的:
这些方法是否朝着正确的方向发展?有没有办法“标准化”色调,以便我可以应用色调过滤器?我尝试在线搜索,但是一旦你使用“线”工作,绝大多数结果都是在黑色背景上进行细线提取。
我的下一步是制作一个“自适应”色调阈值。草覆盖了大部分图像。首先找到覆盖(例如90%)值的色调范围,然后根据该范围而不是固定范围进行过滤。
更新
“自适应”阈值似乎对此图像起作用。但是当图像中有更多噪点时,它也无法正常工作。该范围基本上涵盖了所有色调值。
这是我用来计算过滤掉的色调范围的代码:
img = imread('image.jpg');
hsv = rgb2hsv(img);
h = hsv(:,:,1);
[counts, edges] = histcounts(h,360);
[maxCount, maxInd] = max(counts);
total = sum(counts);
rng = [maxInd, maxInd];
while (sum(counts(rng(1):rng(2)))/total) < 0.89
rng(1) = rng(1) - 1;
if(rng(1) < 1)
rng(1) = 360;
end
rng(2) = rng(2) + 1;
if(rng(2) > 360)
rng(1) = 1;
end
end
通过上面的图像,我得到了这个结果(我可能会添加得非常好):
但是有了更嘈杂的图像(更多阴影,棕色斑点等),我的范围几乎为0到360. Here是上述算法不起作用的示例。