【发布时间】:2015-06-26 08:46:39
【问题描述】:
我的问题是使用拖车背面的图像自动查找和计算卡车中的木材。我试图使用 MATLAB Image Toolbox 解决这个问题。所以,这是我的代码。
function [ centers, rads, metrics ] = TimberFind( img )
minrad = 20;
maxrad = 110;
Hsens = .93;
CannySens = .20;
img_gray = rgb2gray(img);
PSF = fspecial('gaussian', 5, 0.5);
img_gray = imfilter(img_gray, PSF, 'symmetric', 'conv');
img_gray = imadjust(img_gray);
PSF=fspecial('gaussian', 10, 1);
Blurred = imfilter(img_gray, PSF, 'symmetric', 'conv');
cont = imsubtract(img_gray, Blurred);
preprocessed = imadd(img_gray, 3*cont);
bin = edge(preprocessed, 'canny', CannySens);
[cen, r, m] = imfindcircles(bin, [minrad maxrad],'Sensitivity', Hsens);
end
但是结果不是很好。您可以看到the full data 设置或以下示例:
所以,如果我让 Canny 和 imfindcircles 算法足够灵敏以检测所有木材,就会发现一些多余的结果。我有一个想法来解决这个问题,从大图像中剪下每一块木材,然后构造一些获得的小图片的全局标准,并在上面尝试一些机器学习算法。但我认为这种方式相当困难,所以也许有人可以提出其他建议?在使用 Canny 运算符之前,也许有更好的方法来对图像进行预处理?如果你知道如何让它变得更好,请告诉我。谢谢!
【问题讨论】:
-
你可以发布原始图像,即没有红色圆圈吗?
-
好的,我把它们放到云端了。
-
如果您看到错误检测,其中一些很容易使用后处理删除。例如,错误检测的外观与您发现的其他圈子不同。
-
是的,我确实做到了。我还尝试使用亮度和纹理参数删除错误结果,但图片不同(白天/夜晚,夏季/冬季),因此我无法通过使用某些阈值删除错误检测来正确解决问题。我想到了机器学习。
标签: matlab image-processing machine-learning