Math 使用真实世界测量值调整图像大小

Math 使用真实世界测量值调整图像大小,math,image-processing,Math,Image Processing,我正在开发一个地板设计应用程序,用户可以在其中导入地板纹理,该应用程序会将纹理放置到房间图像上。 我已经成功地转换了地板图像的透视图,使其与房间图像相匹配——多亏了这一点,但我现在仍然坚持缩放地板图像以匹配房间图像的尺寸。 我知道木地板的真实尺寸(每个木板177mm x 1220mm),我知道房间图像中物体的高度(水槽附近白色瓷砖的高度为240mm),我知道相机和白色瓷砖之间的距离(大约2500mm)。房间图像大小为2592x1936,楼层图像大小为1430x1220。 这张房间的照片是用一台i

我正在开发一个地板设计应用程序,用户可以在其中导入地板纹理,该应用程序会将纹理放置到房间图像上。 我已经成功地转换了地板图像的透视图,使其与房间图像相匹配——多亏了这一点,但我现在仍然坚持缩放地板图像以匹配房间图像的尺寸。 我知道木地板的真实尺寸(每个木板177mm x 1220mm),我知道房间图像中物体的高度(水槽附近白色瓷砖的高度为240mm),我知道相机和白色瓷砖之间的距离(大约2500mm)。房间图像大小为2592x1936,楼层图像大小为1430x1220。 这张房间的照片是用一台iPad air摄像头拍摄的,我似乎找不到任何关于焦距和传感器尺寸的信息,最近的一张是3.3焦距和3.6毫米传感器高度(这可能是我出错的地方)

我试着用这个等式

我在等式中插入的数字, 2662=(3.3240x1936)/(160x3.6) 然后我试图计算出地板图像中木板的物体高度, (3.3 x 1220 x 1936)/(2662 x 3.6)=813像素 然后,我将图像高度除以对象高度,得到一个比率=2.38。
此图像与地板图像的比例为2.38,但不太正确。

我知道我在某个地方出错了,或者完全走错了方向,希望有人能给我指出正确的方向。
谢谢

我会延长瓷砖的线条,直到它们接触到后墙与地板的边缘。使用此技术,可以将墙平面中的长度转换为楼板平面中的相等长度。所以在这一点上,你所要做的就是沿着一条线匹配长度,即木板之间的长度和转移点之间的长度。但是你必须以一种投射一致的方式来做。投影测量最通用的工具是交叉比。在Math SE中描述了一个非常类似于这里的应用程序。如果你的消失点在墙相交的那条线上确实是无穷大(在你的设置中,这似乎是近似的情况),你可以通过一些简单的计算,但除非你能保证永远是这样,否则我不会依赖它

以上内容将帮助您仅在一个方向上调整比例。不过,与之垂直的方向仍然是开放的。在你的例子中,这就是深度方向,远离相机的方向。你们有那个方向的参考点吗?在我看来,在开窗之前,你也许可以在左边的墙上使用一块完整的瓷砖。但这取决于两堵墙之间的墙角是如何平铺的,这可能会稍微偏离

为了说明这些想法,请看上图。由于红线几乎是水平的,因此很难看到透视效果。因此,我将做另一个方向。假设墙角的瓷砖确实与墙上所有其他瓷砖的可见尺寸相同。所以你知道A1和B1之间的真实距离。沿着蓝色垂直线(在现实世界中是垂直的,不一定是图像)向下投影到A2和B2,这是左侧墙平面与楼板平面相交的位置

他们为什么在那里见面?行A1,A2是左边的所有线与后墙相交的地方。直线A2、A3是后墙与地板的交汇处。这两个平面交点实际上至少部分可见,这使得绘制直线成为可能。因此,在A2处,所有三个平面相交,并将其连接到远点F,形成第三条边,即左墙与地板相交的地方

由于线段A1、B1和A2、B2在现实世界中只是彼此垂直传输的版本,因此它们的长度相等。这种运输是沿着垂直方向的左墙进行的。现在再次运输它们,这一次是在地板平面上,沿左右方向运输。您可以使用红线来执行此操作,这些红线要么平行,要么在某个点相交(在本例中,这一点非常遥远)。这些红线A2、A3和B2、B3在现实世界中是平行的,它们的距离仍然是该瓷砖的边缘长度


现在开始测量一些东西,例如C和D之间的距离。为此,计算交叉比(F,A3;B3,C),它表示从A3到C的距离,表示为从A3到B3距离的倍数,并使用F作为无穷远处的点。对D做同样的处理,那么差值就是C到D的长度,用A3到B3距离的倍数表示。因此,在本例中,C和D之间的距离是4.42瓦边长度。缩放图像以适应此数字。

此公式仅适用于平行于相机传感器的对象长度。我会利用单应性,你可能已经有纹理。反转单应以获得从屏幕空间到纹理空间的映射。然后,可以将图像中地板上的任何线段映射到纹理坐标中的相应表示。通过将结果线段的长度与目标长度进行比较,您可以得出纹理的缩放比例。感谢@MvG,在阅读了您的有用链接后,我想我知道我需要做什么,但对于“将墙平面中的长度转换为地板平面中的等长长度”需要做什么,我有点困惑-我把线从瓷砖延伸到墙与地板的接触处,但不确定之后我会做什么?@WagglyWonga:我扩展了我的答案,添加了一个例子。希望这澄清了如何在飞机之间传输长度。谢谢,现在对我来说有意义了。不过,作为一种检查,我认为我可以测量地板与后墙接触的地板木板的宽度,并且它应该与瓷砖宽度匹配,例如瓷砖宽度为320mm,木板为177mm,瓷砖宽度(像素)为150,所以木板宽度(像素)应该在83左右,这是对的吗?@W