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 ] \begin{bmatrix}f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1\end{bmatrix} 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 ] \begin{bmatrix}f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1\end{bmatrix} *\begin{bmatrix} \frac{X}{Z} \\ \frac{Y}{Z} \\ 1 \end{bmatrix} 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/159838.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS Linux release 7.9.2009 (Core)中安装配置Tomcat

一、安装JDK 部分内容可以参考我这篇文章:Windows11与CentOS7下配置与检测JDK与Maven环境变量 中的 2.2 安装jdk-8u371-linux-x64.tar.gz和配置环境变量/etc/profile //1、安装redhat-lsb yum install -y redhat-lsb//2、查看系统版本信息 lsb_release -a //3、查…

.NET 8.0 中有哪些新的变化?

1性能提升 .NET 8在整个堆栈中带来了数千项性能改进 。默认情况下会启用一种名为动态配置文件引导优化 (PGO) 的新代码生成器,它可以根据实际使用情况优化代码,并且可以将应用程序的性能提高高达 20%。现在支持的 AVX-512 指令集能够对 512 位数据向量执…

java:springboot单元测试spring-boot-starter-test

背景 Java的单元测试可以使用多个框架,其中比较流行的包括: JUnit:JUnit是Java单元测试最常用的框架,它提供了一套丰富的API,可以方便地编写测试用例和测试套件。JUnit 5是JUnit的最新版本,引入了许多新功…

汽车ECU的虚拟化技术初探(三)--U2A虚拟化辅助功能分析1

目录 1.基本概述 1.1 U2A虚拟化辅助功能 1.2 U2A虚拟化使能和资源分配 2. U2A架构概述 3. CPU运行模式 3.1 虚拟化模式 3.2 限制运行模式 3.3 权限运行模式 3.4 CPU运行模式小结 4.小结 1.基本概述 1.1 U2A虚拟化辅助功能 在汽车ECU的虚拟化技术初探(二)-CSDN博客中…

Boolean源码解剖学

原创/朱季谦 有天突发其想,想看一下Boolean底层都做了些什么,故而去看了一番Boolean的源码,基于一些思考的基础上,输出了这篇文章。 一.类继承 Boolean的源码类定义部分如下: 1 public final class Boolean implemen…

初学Redis(Redis的启动以及字符串String)

首先使用在Windows PowerShell中输入指令来启动Redis: redis-server.exe 然后通过指令连接Redis: redis-cli 上图的127.0.0.1是计算机的回送地址 ,6379是默认端口 上述代码中创建了两个键,注意Redis中严格区分大小写&#xff0…

策略模式在数据接收和发送场景的应用(升级版)

1.背景 在数据接收和发送场景打算使用了 if else 进行判断: if("A".equals(system)){ASystem.sync("向A同步数据"); } if("B".equals(system)){BSystem.sync("向B同步数据"); } ... 非常麻烦,需求多了很臃肿&…

phpStorm Xdebug调试 加FireFox浏览器

步骤1: [Xdebug] zend_extension“D:\phpstudy_pro\Extensions\php\php5.4.45nts\ext\php_xdebug.dll” xdebug.collect_params1 xdebug.collect_return1 xdebug.remote_enableOn xdebug.remote_hostlocalhost xdebug.remote_port9001 xdebug.remote_handlerdbgp ;…

什么是Sectigo SSL证书

Sectigo SSL证书是由全球领先的网络安全公司Comodo和Symantec合并后成立的Sectigo公司所提供的一种数字证书。它能够为您的网站提供一个强大的安全套接字层(SSL)加密,确保您的网站与用户的数据传输过程中的安全性。 为什么选择Sectigo SSL证…

Django学习日志07

多表查询(跨表查询) 子查询:分步查询 链表查询:把多个有关系的表拼接成一个大表(虚拟表) inner join left join 展示左表所有数据数据,右表展示符合查询条件的数据,查询不到的用null填充 …

Flume学习笔记(2)—— Flume进阶

Flume进阶 Flume 事务 事务处理流程如下: Put doPut:将批数据先写入临时缓冲区putListdoCommit:检查channel内存队列是否足够合并。doRollback:channel内存队列空间不足,回滚数据 Take doTake:将数据取…

笔记54:门控循环单元 GRU

本地笔记地址:D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章:动手学深度学习~现代循环神经网络 a a a a a a a

802.1Qbb

[TOC] 802.1Qbb 802.1Qbb是什么? 802.1Qbb(基于优先级的流控制,PFC)是以太网数据中心中一项重要的标准,用于提供无丢包的网络环境。这项标准是IEEE 802.1Q标准的一部分,旨在解决以太网数据中心网络中的拥…

基于共生生物算法优化概率神经网络PNN的分类预测 - 附代码

基于共生生物算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于共生生物算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于共生生物优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

C++语言的由来与发展历程

C语言的由来与发展历程可以追溯到1978年,当时美国电话电报公司(AT&T)的贝尔实验室发明了C语言,以满足UNIX操作系统的开发需求。在C语言的基础上,Bjarne Stroustrup于1983年创立了C编程语言,作为C语言的…

Linux 安装多版本 JDK 详细过程

背景说明 服务器已安装jdk1.8,但随着spring全家桶的升级换代,已不满足使用,先要用高版本jdk,暂时不想卸载旧的版本,故安装两个版本,jdk1.8和jdk17,jdk1.8的已经安装过了,所以此次只安装jdk17,以及配置jdk切…

homeassiant主题

下载主题 https://github.com/maartenpaauw/home-assistant-community-themes.git 使用file editor到homeassiant路径下,新建文件夹themes文件夹,用terminal新建也可以。 使用file editor上传文件 使用Terminal解压 mkdir themes unzip home-assistan…

振弦传感器表面钢筋计与振弦采集仪形成岩土工程监测的案例

振弦传感器表面钢筋计与振弦采集仪形成岩土工程监测的案例 振弦传感器和表面钢筋计是岩土工程监测中常用的仪器设备,可用于测量结构物的振动和变形情况,以及土体的变形和应力状态等。 以下是一个振弦传感器和表面钢筋计结合使用的案例: 在一…

【Python入门五】第三方库(包)介绍

Python第三方库/包介绍 前言安装方法 2 数据分析和处理netCDF4numpyxarray 3参考 前言 Python 的库分为2类。 标准库:不需要安装,需要导入。第三库:需要安装、需要导入。 Python的标准库中提供了许多有用的模块和功能,如字符串…

OpenCV技术应用(4)— 如何改变图像的透明度

前言:Hello大家好,我是小哥谈。本节课就手把手教你如何改变图像的透明度,希望大家学习之后能够有所收获~!🌈 目录 🚀1.技术介绍 🚀2.实现代码 🚀1.技术介绍 改变图像透明度的实…