计算图像中的模式

时间:2016-08-22 13:45:07

标签: image-processing machine-learning computer-vision pattern-recognition

我正在研究一种计算特定图像中图案(条形图)的算法。初看起来我觉得非常简单,但我很快就意识到了复杂性。 我尝试过简单的阈值处理,模板匹配(小型滑动窗口),边缘检测...... 我只有很少像这样的图像。所以我认为机器学习算法不能提供更好的结果!但我仍然需要建议。 enter image description here

2 个答案:

答案 0 :(得分:2)

我认为你的图像中有足够的数据。您只需要从图像中裁剪条形图。每张图像都会有几十个小图像。之后,您可以将所有图像调整为某个预定义的大小(例如24X24像素),使用像HOG和SVM这样的描述符进行学习。对于false,只需使用图像中的任何其他区域。

答案 1 :(得分:0)

这可能不适用于所有情况,但由于这些是圆棒,您还可以尝试使用圆检测。 matlab(find circles)和opencv(hough circle transform)都支持这种hough circle转换。一个问题是你必须稍微使用参数(matlab比open cv更简单)但几乎任何方法都是如此。

这些方法适用于较大的图像,所以我调整了你的大小。您还需要知道要查找的圆的半径。如果您的相机位置不变,这应该不会有太大变化。此代码取自我链接的matlab文档页面。它找不到所有的圈子,但有些调整可能有帮助

im = imread('http://i.stack.imgur.com/NRwUq.jpg');

%find circles doesn't work well on small images, I made the image
%three times larger, if you have larger images you should use those for
%better results
bim = imresize(im, 3*size(im));

%find and display circles
[centers, radii] = imfindcircles(bim,[8 20],'ObjectPolarity','bright',...
    'Sensitivity',0.9);
imshow(bim);
h = viscircles(centers,radii);

number_of_bars = numel(centers)

我在检测器丢失的情况下添加了绿色圆圈,而在检测不正确时添加了蓝色X.我手工完成了这些,但是红色圆圈是由matlab定位的。

enter image description here