这不完全是一个编程问题。我只是想知道你在数字图像处理中碰到的一个常见问题的解决方法。
假设你有一张几颗树的图片,比如说jpg格式。你会怎样找出每棵树的高度?该照片是你唯一的输入。
我想知道你的方法,而不是具体的代码。所以即使你的回答模糊或者不是DIP(数字图像处理)风格也无所谓。
小改正:高度不需要是树的实际高度。可以按任何比例尺度来测量。但是对于图片中所有对象应保持一致。
这不完全是一个编程问题。我只是想知道你在数字图像处理中碰到的一个常见问题的解决方法。
假设你有一张几颗树的图片,比如说jpg格式。你会怎样找出每棵树的高度?该照片是你唯一的输入。
我想知道你的方法,而不是具体的代码。所以即使你的回答模糊或者不是DIP(数字图像处理)风格也无所谓。
小改正:高度不需要是树的实际高度。可以按任何比例尺度来测量。但是对于图片中所有对象应保持一致。
将像素(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
这个领域有相当多的计算机视觉研究。假设您不知道相机的约束条件,您将不得不对场景和相机进行假设,以确定高度,直到一个比例因子。请注意,在没有相机约束或图像中的参考高度的情况下,无法区分从远处拍摄的高树木和近距离拍摄的矮树木之间的区别。Criminisi的Single View Metrology工作是一个很好的起点。
假设它们都距离相同,按比例缩放,您需要找到一个可以保证的单个测量单位。例如,如果照片中有一个人,同样的比例,并且您知道他们的确切身高为6英尺,那么您可以将其用作您的度量标准。然后,您取出它,并计算堆叠成树需要多少个。例如,如果您需要3.5个这样的人,则:
3.5 * 6 = 21
给你一棵高达21英尺的树。
如果没有一个单一的参考点,或者如果它们都在不同的比例尺上,你需要比你在那里时容易获得的更多信息。
我会依靠图像中已知尺寸的对象,例如一个人。
或者,我们可以利用EXIF数据根据相机传感器尺寸、镜头和使用的焦距反推出物体的大小。这又取决于角度。当相机垂直拍摄主题时,我们应该得到最准确的结果。
如果您的图像是3*3,并且您想找出图像的大小(即3x3..所以3x3=9),现在我们有8个像素,从0到8。因此,9/8=( ___ )KB。
如果您想找出图像的大小(以MB为单位),就像上面的例子一样,只需这样做:(9/8)/(1024)=( ---- )MB。
因此,您将获得Mb的结果。