ios – 估算拍摄物品尺寸的最佳方法是什么?

ios – 估算拍摄物品尺寸的最佳方法是什么?,第1张

概述我的应用程序应该使用欧元硬币作为参考来估计对象的长度(以毫米为单位).这是一个截图示例: 为了获得拍摄硬币的直径,我首先计算通过该形式的3个点的圆的方程 x ^ 2 y ^ 2 ax由c = 0 然后我有直径 2 * square_root((a / 2)^ 2(b / 2)^ 2 -c). 最后我可以执行以下比例来获得红笔的长度: /* length_estimated_pen (mm) : d 我的应用程序应该使用欧元硬币作为参考来估计对象的长度(以毫米为单位).这是一个截图示例:

为了获得拍摄硬币的直径,我首先计算通过该形式的3个点的圆的方程

x ^ 2 y ^ 2 ax由c = 0

然后我有直径

2 * square_root((a / 2)^ 2(b / 2)^ 2 -c).

最后我可以执行以下比例来获得红笔的长度:

/* length_estimated_pen (mm) : distance_green_pins (points) = real_diameter_coin (mm) : diameter_on_screen (points) */let distanceGreen:Double = Double(sqrt(pow(self.greenLocationA.center.x - self.greenLocationB.center.x,2.0) + pow(self.greenLocationA.center.y - self.greenLocationB.center.y,2.0)))let estimatedMeasure:Double = (distanceGreen * Double(ChosenMeter.moneyDiameter)) / diameter

在ChosenMeter.moneyDiameter中,存储所选硬币的实际直径作为参考(通过单击下面3个按钮之一).

我需要使用Double而不是CGfloat,因为this教程解决了一个线性方程组(得到a,b,c系数的圆方程)与Double一起工作.

问题是估计红笔的长度总是被高估了
 超过10毫米.
我想我应该考虑其他因素来应用校正因子或使微积分复杂化,但是哪个?你能给我一些提示吗?任何帮助对我都有用.

解决方法 >找到硬币(绿色边框矩形)

手动或通过搜索特定的颜色,图案,霍夫变换,分割……这将限制搜索后续步骤的区域
>找到边界(颜色强度明显的红边)

因此,创建一个作为硬币边界的点列表(小心阴影),只扫描足够高的强度凸起.
>计算圆心

只是所有边境点的平均值……
>测试所有边界点的最小/最大距离到中心

如果倾斜很小,那么你将有许多具有最小和最大半径的点,所以从它们中间取出.如果| max-min |非常小,然后你没有倾斜.最小/最大距离点和中心之间的线为您提供黑色基础向量.
>使用黑色基矢量进行测量

因此,选择2个点(红色线d)来测量并从它们平行于基础矢量投射绿色光线.他们的交叉点将创建2条线a,b.很容易:

> d = sqrt((a * a)(b * b))

其中a,b是以单位表示的线条的大小.你可以像以下一样获得它:

> a_size_unit = a_size_pixel * coin_r_unit / rmax_pixel
> b_size_unit = b_size_pixel * coin_r_unit / rmin_pixel

[注意]

选择此图像是为了强调歪斜,但是您应该使用几乎平行于芯片表面的平面图像以避免透视变形.这个图像不是一个很好的例子,立方体更远离相机然后硬币……

考虑到这一点,请参阅selection criteria for different projections

总结

以上是内存溢出为你收集整理的ios – 估算拍摄物品尺寸的最佳方法是什么?全部内容,希望文章能够帮你解决ios – 估算拍摄物品尺寸的最佳方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1048177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存