Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 鱼眼修正公式,需要解释吗_Image Processing_Webgl_Fisheye - Fatal编程技术网

Image processing 鱼眼修正公式,需要解释吗

Image processing 鱼眼修正公式,需要解释吗,image-processing,webgl,fisheye,Image Processing,Webgl,Fisheye,经过广泛的搜索,我还没有找到一个像样的解释公式WebGL鱼眼图像校正。一个Shadertoy at显示一个公式 uv=m+normalize(d)*atan(r*-power*10.0)*bind/atan(-power*bind*10.0) 这被字面上描述为“奇怪的公式”。它在某种程度上遵循了保罗·伯克(Paul Burke)关于镜头畸变校正的工作,但我看不出两者之间的联系。在我的应用程序中,公式归结为(值通过我的镜头和网络摄像头手动调整): 其中,r是像素到图像中心的距离,d是该方向上的单位

经过广泛的搜索,我还没有找到一个像样的解释公式WebGL鱼眼图像校正。一个Shadertoy at显示一个公式

uv=m+normalize(d)*atan(r*-power*10.0)*bind/atan(-power*bind*10.0)

这被字面上描述为“奇怪的公式”。它在某种程度上遵循了保罗·伯克(Paul Burke)关于镜头畸变校正的工作,但我看不出两者之间的联系。在我的应用程序中,公式归结为(值通过我的镜头和网络摄像头手动调整):

其中,r是像素到图像中心的距离,d是该方向上的单位向量,中心点是图像的中心。我不明白反正切怎么能直接和坐标系联系起来,有人能帮我弄到吗?我确实知道,公式中带弧切线的部分是计算像素到图像中心的距离,但我不知道是如何计算的


谢谢

好的,经过一些搜索和询问之后,我明白了公式中发生了什么。下图为图表和基本公式:]。由于xy的位置是已知的——它是纹理上的目标位置,我们计算鱼眼图像上的xy源像素。R是鱼眼图像半径。我们可以根据我们想要达到的最大视角来替换所需的d值(因为切线函数在90度时变为无穷大,tan(B)=1/d,最好取一个合理的值)。 转换完成后,我们可以:

xy= atan(xy'/d)* 2R/pi
这是理论上正确的等距投影公式,我们假设是在透镜中进行的。我在原始帖子中引用的公式有一些其他的东西,而不是2R/pi,它仍然有效,因为透镜中存在缺陷-它很可能有一些我们永远不会知道的奇怪函数,它作为近似值工作


在这里,我希望这是可以理解的,如果有任何问题,我很乐意回答:)

添加可视化设置的图像。。。鱼眼校正通常会变换fragmets/几何体,以便与摄影机的垂直距离与深度坐标匹配。在某些情况下,它是通过乘以
cos
得到的;在另一些情况下,它是
tan
或其他公式,所有这些都取决于您查看的内容和方式(投影类型和查看的几何体以及与相机的距离)。。。
xy= atan(xy'/d)* 2R/pi