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_Camera_Camera Calibration - Fatal编程技术网

Image processing 摄像机标定与图像处理

Image processing 摄像机标定与图像处理,image-processing,camera,camera-calibration,Image Processing,Camera,Camera Calibration,我想请你澄清一下这些问题 1.如果我将相机校准到特定分辨率(例如640x360),我可以将其用于其他分辨率(如1024x768)吗 2.我还想知道一个像素在我的图像中包含多少厘米。它因系统而异,我如何找到它?。此外,它的形状也不是强制性的正方形。所以我必须找到它的长度和宽度。我该怎么做 我使用的是罗技c170,这是一个低速凸轮。当我试图测量图像中的距离并将其与实时距离进行比较时,是否可以得到8毫米左右的误差 EDIT1: 由于1毫米内的像素数是传感器宽度/图像宽度,这是密度的倒数,我可以计算a_

我想请你澄清一下这些问题

1.如果我将相机校准到特定分辨率(例如640x360),我可以将其用于其他分辨率(如1024x768)吗

2.我还想知道一个像素在我的图像中包含多少厘米。它因系统而异,我如何找到它?。此外,它的形状也不是强制性的正方形。所以我必须找到它的长度和宽度。我该怎么做

  • 我使用的是罗技c170,这是一个低速凸轮。当我试图测量图像中的距离并将其与实时距离进行比较时,是否可以得到8毫米左右的误差
  • EDIT1: 由于1毫米内的像素数是传感器宽度/图像宽度,这是密度的倒数,我可以计算a_x/f并找到倒数,对吗


    @马洛尔

    Intrinsic parameters of left camera:
    
    Focal Length:          fc_left = [ 1442.67707   1457.17435 ] ± [ 18.12442   19.46439 ]
    Principal point:       cc_left = [ 497.66112   291.77311 ] ± [ 42.37874   31.97065 ]
    Skew:             alpha_c_left = [ 0.00000 ] ± [ 0.00000  ]   => angle of pixel axes = 90.00000 ± 0.00000 degrees
    Distortion:            kc_left = [ 0.02924   -0.65151   -0.01104   -0.01342  0.00000 ] ± [ 0.16553   1.57119   0.00913   0.01306  0.00000 ]
    
    
    Intrinsic parameters of right camera:
    
    Focal Length:          fc_right = [ 1443.32678   1458.82558 ] ± [ 25.55850   26.08659 ]
    Principal point:       cc_right = [ 567.11672   258.09152 ] ± [ 20.46962   17.87495 ]
    Skew:             alpha_c_right = [ 0.00000 ] ± [ 0.00000  ]   => angle of pixel axes = 90.00000 ± 0.00000 degrees
    Distortion:            kc_right = [ -0.58576   21.53289   -0.02278   0.00845  0.00000 ] ± [ 0.28148   9.37092   0.00787   0.00847  0.00000 ]
    
    
    Extrinsic parameters (position of right camera wrt left camera):
    
    Rotation vector:             om = [ -0.04239   0.02401  -0.00677 ]
    Translation vector:           T = [ 71.66430   -0.79025  -8.76546 ]
    
  • 如果你的意思是:我已经用一组分辨率为X的图像校准了我的相机,所以我得到了校准矩阵K,我可以用这个矩阵来校准不同分辨率Y的图像吗?直接回答是“否”,您不能,因为校准矩阵K的形式为:
  • 其中a_x=x方向mm上像素的焦距*密度,a_y=y方向mm上像素的焦距*密度(通常这些密度相等),c_x=图像平面到x方向主点的平移(类似c_y)。输出校准矩阵K时,您将看到如下内容:

    K = [a_x, 0, 320;
         0, a_y, 180;
         0,  0,    1]
    
    是的,你可以看到c_x=320=640/2和c_y=180=360/2。因此,校准矩阵与图像分辨率相关,因此在不更改矩阵K的情况下,无法将其直接用于任何其他分辨率

    2.必须将传感器尺寸除以图像尺寸,即

    图像传感器是由感光材料制成的微小平面,它可以吸收相机设备中的光线。通常,您可以在相机手册中找到此类信息,搜索传感器尺寸

    编辑:如果您在相机手册中找不到传感器尺寸,网络摄像机的正常行为是什么,您可以尝试执行以下操作:校准给定矩阵K的相机。值a_x和a_y包含此类信息。因为我们说的是a_x=f*密度,所以如果你知道焦距(你知道-它是2.3mm-请看),那么你可以找到密度=a_x/f。我们知道密度等于图像宽度/传感器宽度,所以最后我们得到了传感器宽度=图像宽度/密度=图像宽度*f/a\x。传感器的高度也有类似的想法

    EDIT2:例如,如果您得到:

    Focal Length:          fc_left = [ 1442.67707   1457.17435 ] ± [ 18.12442   19.46439 ]
    

    我们有a_x=1442.67707。根据我们的结论,如果我们假设图像大小为640 x 320,则传感器宽度=640*2.3/1442.67707=1,02 mm

    这个问题似乎离题了,因为它是关于图像处理,而不是编程。我以为这个网站不仅仅是关于编程的。此外,我需要在我的程序中使用上述数据,因此了解这些数据的人可以帮助我解决这个问题。你可能会得到更好的答案,这是关于DSP和图像处理的问题。StackOverflow更适用于特定的编程问题,一般来说,它涉及实际代码。哦!我很抱歉。我不知道!谢谢…没问题-祝你快乐!这真的很有帮助!谢谢!!但是我找不到罗技c170网络摄像头的传感器尺寸。嘿!!谢谢…但这里我有一个有趣的立体视觉。我有两个校准矩阵,我应该用哪一个?下面是我对左右两侧相机的校准结果。我举了一个例子来澄清一个问题。我明白了!解释得很好。我一直在寻找不同来源的答案,你的答案真的很棒!谢谢。你们有图像处理的教程吗?我是这里的初学者,想了解更多。
    k_x = 1 / c_x = sensor_size_width / image_size_width. 
    k_y = 1 / c_y
    
    Focal Length:          fc_left = [ 1442.67707   1457.17435 ] ± [ 18.12442   19.46439 ]