【问题标题】:Counting the sum coins, using Matlab Image Processing Toolbox使用 Matlab 图像处理工具箱计算总硬币数
【发布时间】:2019-12-17 23:54:17
【问题描述】:

我正在尝试开发一个程序,该程序将找到一个圆形物体(硬币)并测量它们的大小,并据此分配值。我需要考虑拍摄特定照片的位置形式,例如角度。由于某些硬币从不同角度看起来会比其他硬币大,因此价值分配会有缺陷,因此我试图通过投影变换(投影倾斜图像)来解决它,到目前为止,我未能以某种方式投影倾斜照片产生或多或少相等的直径测量值。我的代码如下:

    I = imread('coins2.jpg');
    imshow(I);
    M = ginput(4);
    X = ginput(4);
    P = maketform('projective', M, X);
    I = imtransform(I, P, 'nearest');
    G = rgb2gray(I);
    K = medfilt2(G);
    [centers,radii] = imfindcircles(K,[90 140],'ObjectPolarity','dark','Sensitivity',0.95);
    h = viscircles(centers, radii);
    arr = [];   
       for r = 1:length(radii)
          if (radii(r)) >= 105
             arr(r) = 1;
          elseif (radii(r)) < max(radii) && radii(r) > 100
             arr(r) = 0.2;
          elseif(radii(r)) < 100 && (radii(r)) > 95
             arr(r) = 0.05;
          elseif (radii(r)) < 95 && (radii(r)) > 90
             arr(r) = 0.1;
          end       
       end
   result = sum(arr);

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    如果您可以选择检测图片中的角点(例如,矩形支架上的硬币),您可以使用这个 Matlab 文件: https://kr.mathworks.com/matlabcentral/fileexchange/35531-perspective-control-correction 手动或自动检测 4 个角以校正透视,然后您就可以像往常一样使用 imfindcircles。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      相关资源
      最近更新 更多