• interview review


    M:

    1. gamma correction

    人眼和相机对强度的变化敏感程序不一样, 人对暗部更敏感.

    上面一条人眼觉得是均匀, 下面一条是相机真实的均匀.
    在这里插入图片描述
    在这里插入图片描述
    人眼觉得的中间值 在相机中是21.8%, 为了让灰度的分布更符合人眼, 我们需要对图片进行gamma校正, 使得各用128个数字来表示相机真实世界中21.8%为界线的两个部分, 这时的gamma对亮度进行调节使得暗位细节更多了, 亮位细节变少了, 更符合人眼特征, 但是储存在图片中就是灰度值 变大了, 所以当我们显示在屏幕上时, 需要对这个灰度值还原到真实的灰度值.

    所以gamma 编码是让更多数字来表达暗部(结果就是数字表达的值是符合人眼的均匀值,但是大于真实灰度值, 比如128表示21.8的强度), 而gamma解码是把这个数字还原到真实的灰度值(把128还原成21.8)

    1. intrinsic matrix
      [ f x s c x 0 f y c y 0 0 1 ]
      [fxscx0fycy001]" role="presentation" style="position: relative;">[fxscx0fycy001]
      fx00sfy0cxcy1

    ( c x , c y ) (c_x, c_y) (cx,cy): camera center in pixels
    ( f x , f y ) (f_x, f_y) (fx,fy): focal length in pixels
    在这里插入图片描述

    X Z = u f x \frac{X}{Z} = \frac{u}{f_x} ZX=fxu
    其中 f x = f p x f_x = \frac{f}{p_x} fx=pxf, f f f 是focal length in world unites (millimeters), p x p_x px像素宽度, 通过胶片宽度除以像素X方向的个数得到.

    下面来看skew

    s = f x t a n α s = f_x tan \alpha s=fxtanα

    假设每 p y p_y py p x p_x px上面的偏移是 b b b
    那么 t a n α = b p x p y tan \alpha = \frac{bp_x}{p_y} tanα=pybpx
    在这里插入图片描述

    那么 [ f x s c x 0 f y c y 0 0 1 ] ∗ [ X Z Y Z 1 ]

    [fxscx0fycy001]" role="presentation" style="position: relative;">[fxscx0fycy001]
    *
    [XZYZ1]" role="presentation" style="position: relative;">[XZYZ1]
    fx00sfy0cxcy1 ZXZY1

    第一行可得 f x ∗ X Z + s ∗ Y Z + c x = f x ∗ X Z + f x t a n α ∗ Y Z + c x f_x * \frac{X}{Z} +s * \frac{Y}{Z} + c_x = f_x * \frac{X}{Z} + f_x tan \alpha * \frac{Y}{Z} + c_x fxZX+sZY+cx=fxZX+fxtanαZY+cx

    这里 f x t a n α ∗ Y Z f_x tan \alpha * \frac{Y}{Z} fxtanαZY有两种理解方式, 第一种是通过 t a n α ∗ Y tan \alpha *Y tanαY将在世界坐标系中将 Y Y Y转成 X X X方向的偏移 b X bX bX, 然后将这个偏移通过乘以 f x z \frac{f_x}{z} zfx转成x方向的像素偏移

    第二种是 f x t a n α ∗ Y Z = f p x ∗ b p x p y ∗ Y Z = b f y ∗ Y Z f_x tan \alpha * \frac{Y}{Z} = \frac{f}{p_x}*\frac{bp_x}{p_y} * \frac{Y}{Z} = bf_y*\frac{Y}{Z} fxtanαZY=pxfpybpxZY=bfyZY 先算在y方向有多少像素, 再乘以 b b b得到偏移

    第二行注意如果有skew, 那么 f y f_y fy得用 f y c o s α \frac{f_y}{cos\alpha} cosαfy代替, 因为y轴变斜了, 相应也变长了

    https://towardsdatascience.com/camera-calibration-fda5beb373c3

    https://towardsdatascience.com/what-are-intrinsic-and-extrinsic-camera-parameters-in-computer-vision-7071b72fb8ec

  • 相关阅读:
    怎么简单实现菜单拖拽排序的功能
    k8s使用nfs配置StorageClass,配置完成后,创建pvc一直为pending的状态。
    使用爬虫代码获得深度学习目标检测或者语义分割中的图片。
    高薪程序员&面试题精讲系列139之你熟悉分布式事务吗--上篇?有哪些分布式事务实现方案?
    【【萌新的STM32的学习--非正点原子视频的中断设计思路】】
    WARNING: inbound connection timed out (ORA-3136)
    SuperMap GIS管线数据处理Q&A
    “拨”取数字的典例:N位水仙花数判断及水仙花数变种
    CSS3 做一个旋转的立体3D正方形 动效核心【前端就业课 第二阶段】CSS 零基础到实战(07)
    论文阅读:Denoising Diffusion Probabilistic Models
  • 原文地址:https://blog.csdn.net/seamanj/article/details/134473675