小编Vla*_*mir的帖子

如何使用MATLAB在卡车中找到木材?

我的问题是使用拖车后部的图像自动查找和计算卡车中的木材.我试图使用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
Run Code Online (Sandbox Code Playgroud)

但结果并不是很好.您可以看到完整的数据集或以下示例: 第一个输入图像 第一个输出图像

因此,如果我使Canny和imfindcircles算法足够灵敏地检测所有木材,那么会发现一些过量的反应.我有一个想法,就是从大图像中删除每个木材,然后构建一些获得小图片的全局标准,并尝试一些机器学习算法来解决这个问题.但我认为这种方式相当困难,所以也许有人可以提出其他建议吗?也许有更好的方法在使用Canny运算符之前对图像进行预处理?如果你有任何想法如何做到更好,请告诉我.谢谢!

matlab machine-learning image-processing

10
推荐指数
1
解决办法
221
查看次数