这不完全是一个编程问题。我只是想知道你的方法对于数字图像处理中的常见问题。
假设您有jpg格式的几棵树的图像。你会如何找到这些树木的高度?照片是您唯一的输入。
我想知道你没有编码的方法。因此,如果您的答案含糊不清或非DIP-ish无关紧要。
小修正: 高度不必是树的实际高度。高度可以达到任何比例。但应该与图片中的所有对象保持一致。
答案 0 :(得分:8)
是的,这是可能的。您所描述的内容围绕着整个行业,称为Photogrammetry
答案 1 :(得分:4)
该领域有大量的计算机视觉研究。假设您不知道摄像机的限制,您必须对场景和摄像机进行假设,以确定高达比例因子的高度。请注意,如果没有相机约束或图像中的参考高度,则无法区分从远处拍摄的高大树或近距离拍摄的短树之间的区别。一个很好的开始是Criminisi的Single View Metrology工作。
答案 2 :(得分:4)
使用摄影测量法从图像中找到对象的大小很简单。 摄影测量是从照片进行测量的科学。 为此,我们需要了解两件事,
以下是步骤:
校准相机
使用openCV校准相机。您可以使用源代码中提供的OpenCV calibrate.py工具和Chessboard pattern PNG生成校准矩阵。完成摄像机校准以查找摄像机参数。我从网络摄像头拍摄了大量的棋盘照片照片(用于校准我的网络摄像头)。有关详细信息,请查看openCV camera calibration。
我们将从校准矩阵中获取f_x,f_y,c_x,c_y。
检查拍摄照片的详细信息,您将找到照片的原始分辨率(heightXwidth),在EXIF headers中可以找到焦距值(f)。这些项目可能因您的相机而异。
每毫米像素数
我们需要知道图像传感器上每毫米的像素数(px / mm)。
<强> F_X = F * m_x 强>
<强> f_y = F * m_y 强>
由于每个公式都有两个变量,我们可以求解m_x和m_y.I只需要平均f_x和f_y来得到f_xy。
<强> M = f_xy / focal_length_of_camera 强>
插入图片
插入您需要查找图像实际尺寸的图像。你应该知道物体和相机之间的距离。找到图像的尺寸(height1Xwidth1)
查找对象大小(以像素为单位)
确定对象的大小(以像素为单位)。我只是使用距离公式来查找所选行的长度。您可以采用任何其他方法。
转换分辨率较低的px / mm
pxpermm_in_lower_resolution =(width1 * m)/ width
图像传感器中对象的大小
size_of_object_in_image_sensor = object_size_in_pixels /(pxpermm_in_lower_resolution)
对象的实际大小
可以使用上述数据找到对象的实际大小,
real_size =(dist * size_of_object_in_image_sensor)/ focal_length
答案 3 :(得分:1)
假设它们距离相同,所有都可以扩展,您需要找到一个可以保证的单一测量单位。例如,如果照片中有一个人,同样的比例,并且你知道它们正好是6英尺高,那么你可以将它作为衡量标准。然后你接受它,并计算堆积多少树。例如,如果您需要此人的3.5,那么:
3.5 * 6 = 21
给你一棵21英尺高的树。
如果没有针对所有内容的单一参考点,或者如果它们都在不同的尺度上,那么您需要的信息量远远超过您在没有的情况下可以获得的信息。
答案 4 :(得分:0)
我会依赖于已知尺寸的物体出现在图片中。例如,一个男人。
或许,我们可以使用EXIF数据根据相机的传感器尺寸,镜头和使用的焦距来反向设计物体的大小。这又取决于角度。当相机垂直于拍摄对象时,我们应该获得最准确的结果。
答案 5 :(得分:-4)
如果您的图像是3 * 3并且您想要找出图像的大小(即3x3..so 3x3 = 9),现在我们有8个像素,从0到8开始。所以9/8 =(___) KB。
如果你想以MB为单位找到图像的大小,就像上面的例子一样,只需这样做(9/8)/(1024)=(----)MB ..
所以你会得到Mb的结果。