【发布时间】: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);
【问题讨论】: