- Algorithm
- Incremental Method
- Simulation
- Backtracking
- Dynamic Programming
- Largest Empty Interval
- Location Allocation Problem
- Knapsack Problem
- Algorithm Analysis
- Data
- Sort
- Set
- 排序资料结构: Search Tree 系列
- Sequence 资料结构: Array / List
- 大量 Point 资料结构: k-Dimensional Tree
- Region 资料结构: Uniform Grid
- Graph
- Tree 资料结构: Heavy-Light Decomposition
- Graph Spectrum(Under Construction!)
- Tree
- Binary Tree
- Directed Acyclic Graph
- Articulation Vertex / Bridge
- Reachability
- Bipartite Graph
- Clique(Under Construction!)
- Planar Graph
- Path
- Single Source Shortest Paths: Label Correcting Algorithm
- Shortest Walk
- Cycle
- Spanning Tree
- s-t Flow
- Feasible s-t Flow
- Cut
- Matching
- T-Join
- Hamilton Circuit
- Domination
- Coloring
- Labeling
- Vector Product
- Sweep Line
- Rectangle
- Rectangle
- Polygon
- Convex Hull
- 3D Convex Hull(Under Construction!)
- Half-plane Intersection
- Voronoi Diagram
- Triangulation
- Metric
- Number
- Sequence
- Function (ℝ)
- Matrix
- Root Finding
- Linear Equations
- Functional Equation
- Optimization
- Interpolation
- Curve
- Regression
- Estimation
- Clustering
- Transformation(Under Construction!)
- Wave (ℝ)
- Representation
- Signal
- State(Under Construction!)
- Markov Chain
- System(Under Construction!)
- Markov Model
- Function
- Gray Code
- Base
- Divisor
- Prime
- Residue
- Lattice
- Series(Under Construction!)
- Average Number
- Nim
- String
- Longest Increasing Subsequence
- Longest Common Subsequence
- Approximate String Matching
- String Matching
- String Matching
- String Matching: Inverted Index
- Count Substrings
- Palindrome
- Language
- Code
- Compression
- Correction
- Encryption
- Transmission
- Data
- Text
- 2D Graphics
- Audio
- Audition(Under Construction!)
- Image
- Vision(Under Construction!)
- Model
- Motion(Under Construction!)
- Camera(Under Construction!)
- Glass(Under Construction!)
- Computer
- Physics
- Biology
- Medicine
- Finance
- Education
- Standard Library
Camera(Under Construction!)
Camera
将 3D 物体转换成 2D 图片的机制。
课程
http://stanford.edu/class/ee367/ http://cs.brown.edu/courses/csci1290/ http://franchomelendez.com/index.php/computational-photography/ http://www.computationalimaging.org/research-overview/
Camera 拍摄原理(Under Construction!)
Camera 相机
把底片直接放在景物前面,相片最后就是一片亮。古人为了解决这个问题,做了个黑箱、挖了个针孔,严格限制光线从景物到底片的行进路线。
针孔导致光线不足,相片最后就是一片阴暗。古人为了解决这个问题,弄了个凸透镜,让光线折个弯,聚集光线。
每种颜色的折射率都有些微差异,光线经过透镜就会 色散 ,相片最后就有 色差 。古人为了解决这个问题, 补了个凹透镜 ,让光线再折个弯,收束光线。
凡事有好就有坏。透镜可以聚光,却有 像差 :相片景物位移扭曲;却有 晕影 :相片中心亮、外围暗。
缺点也可以是优点。例如 鱼眼镜头 、LOMO 效果。透镜的缺陷反倒成了艺术,让许多人心嚮往之。
Depth of Field 景深
複习一下高中物理的 凸透镜成像 。不在焦距上的景物,光线到达底片就会散开,相片上的景物就会糊掉。
位于焦距上的景物是最清晰的。景物越偏离焦距,相片就越模糊。人类认为还算清晰的区间范围,称做 景深 。
调整像深,使之位于景深之内、尽量接近焦距,让相片清晰,叫做“对焦”。古人为了方便调整像深,搞了个透镜组。
Aperture 光圈、Exposure Time 曝光时间
光圈是控制进光量的装置,大致是圆的。升一档就是光圈面积变两倍(光圈直径变 sqrt(2) 倍),降一档就是光圈面积变一半(光圈直径变 1/sqrt(2) 倍)。
曝光时间是打开光圈的时间。曝光时间也可以控制进光量。升一档就是曝光时间变两倍,降一档就是曝光时间变一半。
进光量=光圈面积×曝光时间。升档相片就亮、降档相片就暗。光圈和曝光时间的档数相加一样多,那麽相片差不多一样亮。
光圈大小,影响静态景物清晰度。光圈越小,静态景物越清晰,尤其是不在景深内的景物,令人感觉景深变广。
曝光时间大小,影响动态景物清晰度。曝光时间越小,动态景物越清晰。
调配光圈和曝光时间,得到不同的视觉感受。 散景 :光圈超大,故意让静态景物不清晰,以凸显景深范围内的景物。 长曝 :曝光时间超大,故意让动态景物不清晰,产生 动态模糊 的效果。
Camera 图片处理(Under Construction!)
White Balancing
白平衡 。调整相片颜色,去除环境灯光影响,成为真实颜色。
High Dynamic Range Imaging(HDR Imaging)
高动态范围成像 。以各种曝光时间,拍摄多张相片,生成一张符合真实世界亮度的相片。相片的档案格式从 RGB 换为 RGBE ,额外以浮点数储存亮度。
一个场景当中,光线亮度经常相差好几个数量级。一张相片当中,像素数值顶多只有 0 到 255。相机拍摄的过程当中,丧失了许多亮度资讯(失真压缩),现在要尽量还原亮度资讯。
相机拍摄时,光线亮度到像素数值的转换过程,可以看作是一个函数。幸运的是,一台相机的函数是固定的──商家为了让拍摄结果稳定一致。不幸的是,每一家相机的函数都不一样,而且没有公佈函数──这是商业秘密。
我们的目标是找到反函数!不是一对一函数,没有反函数,确切的说法是反映射。
经典的演算法是选定相机、固定光圈、调整曝光时间,令让进光量屡次翻倍,各拍摄一张相片。观察各张相片的同一个像素,得知光线亮度与像素数值的对应关係。
取 n 个像素,光通量是 E₁ E₂ ... Eₙ 曝光时间一倍 1E₁ ... 1Eₙ 曝光时间两倍 2E₁ ... 2Eₙ 曝光时间四倍 4E₁ ... 4Eₙ 水平线段区间 [L₀, R₀) [L₁, R₁) ... [L₂₅₅, R₂₅₅) 其中 0 = L₀ < R₀ = L₁ < ... < R₂₅₄ = L₂₅₅ < R₂₅₅ = 10⁶ 光通量落在 [L₀, R₀) ,则像素亮度为 0 ,以此类推。 每一张相片可以列出 2n 个不等式。 比如说第一张相片,E₁的像素亮度是 20,E₂的像素亮度是 24 L₂₀ <= e₁="" <="" r₂₀="==="> L₂₀ - E₁ <= 0="" ,="" e₁="" -="" l₂₁="" <="" l₂₄="" r₂₄="==="> L₂₄ - E₂ <= 0="" 255="" ,="" e₂="" -="" l₂₅="" <="" 有 p 种曝光时间、p 张相片,得以列出="" 2np="" 个不等式="" 再加上区间="" l₀="" l₁="" ...="" l₂₅₅="" r₂₅₅="" ,一共="" 实施线性规划演算法,求可行解!="" 另外还可以设定区间长度最少是 d,="" 例如="" +="" d="" 这样,以增加可行解的鲁棒程度。="" 求出所有未知数,得到="" [l₀,="" r₀)="" [l₂₅₅,="" r₂₅₅)="" 对="" e₁...eₙ="" 的函数。="" 最后套用单调三次内插,变成一对一函数,以求出反函数,="" 就可以替图片上每个像素找到 e 了。="" pre="">
多取几个像素,就可以解方程式,得到一个大概的对应表。拍越多照、取越多像素,对应表就越准确。但是也得考量执行时间,毕竟民众希望马上拍照马上得到相片。n=14 点像素是不错的数字。
想要量测确实的彩度与亮度,可以使用 亮度仪 。只不过这裡的主角是数位相机。
Tone Mapping
色调映射 。调整相片亮度,尽量接近人眼感受,让亮处细节、暗处细节同时都能看清楚。此技术可以用在相片、液晶显示器。
人类视觉,感知的亮度范围是 10-6 ~ 106 cd/m2,横跨 12 个数量级。人眼与人脑可以迅速调节亮度,同时看清楚亮处与暗处。甚至套用 特殊视觉效果 。
一张相片,像素数值只有 0 到 255,共 256 种离散数值。相片往往是亮的地方一片亮、暗的地方一片暗。
目标是让数位相机与人眼一样。
演算法 非常多 。例如先做 HDR Imaging,再做 biliteral filter 。
High Dynamic Range Printing(HDR Printing)
高动态范围列印 。概念类似于色调映射。物理限制从 256 种像素值,变成了颜料的混色、颜料的反光率。
Autofocus
自动对焦 。目前多以物理方式处置。
Deblurring(Image Stabilization)
Focus Stacking
焦点合成。以各种焦距,拍摄多张相片,堆叠成一张清晰相片。
也可以固定焦距,以各种距离,拍摄多张相片,堆叠成一张清晰相片。
Exposure Blending
曝光合成。以各种闪光灯方位,拍摄多张相片,堆叠成一张清晰相片。
效果比 Image Sharpening 演算法还好。
Focus Sweep(Coded Aaperture)
焦点扫描 。以特殊的光圈结构,拍摄一张照片,之后可以漂亮地达成 deblurring,得到一张清晰相片。
事先量测各种光圈大小、各种景物深度、各种景物偏角,在底片上面的模糊情况(point-spread function),以便设计光圈结构。
http://franchomelendez.com/Uwr/teaching/COMPHO/_LECTURES/L7/coded_photography.html
Flutter Shutter(Coded Exposure)
颤振快门 。以特殊的曝光节奏,拍摄一张相片。之后可以漂亮地达成 motion deblurring,得到一张清晰相片。
http://stanford.edu/class/ee367/class10.pdf http://cs.brown.edu/courses/csci1290/lectures/29.pdf
相机的数学知识:Fourier Optics
http://web.stanford.edu/class/ee368/Handouts/Lectures/2015_Autumn/8-LinearProcessingFiltering_16x9.pdf page 67-71
Camera 光场处理(Under Construction)
Light-Field
光场 。三维空间的每个地点、每种方向,各有一个光线颜色值。空气所在之处通常是透明、不存在数值。
Light-Field Camera
光场相机 。有如方格马赛克的玻璃窗,每一格都可以看到全景,但是视角略有不同。
设置大量底片,底片位置略有差异。同时拍摄大量相片,之后可以重新对焦,得到各种焦距的相片。
http://stanford.edu/class/ee367/class9.pdf
Light-Field Transport
http://www.cs.columbia.edu/CAVE/projects/lightfield_transfer/
Camera 模型处理(Under Construction!)
概论
物体分解成点的观点之下 camera calibration 1. 一台相机不动,给定很多的物体的表面座标,拍一张相片,算相机的位置、焦距、方向。 ( 上古时代 ) cemera calibration 2. 一台相机不动,给定平坦物体的表面座标,物体移动,各拍一张相片,算上述东东。 ( http://research.microsoft.com/en-us/um/people/zhang/Calib/ 十几年前) camera tracking 3. 一台相机一直动,想做是多台相机,各拍一张相片,算每个相机的位置、焦距、方向。 ( voodoo / 新版的 blender 有这功能 ) ( http://www.csie.ntu.edu.tw/~cyy/courses/vfx/14spring/assignments/proj3/MatchMove_2014.pdf ) structure from motion 4. 承上,找到所有物体的 3d 座标 point cloud to mesh 5. 承上,物体 3d 座标重新拼成 MESH。 match move 6. 一台相机一直动,把东西塞进去场景裡面。 augmented reality 7. 承上,塞进去的东西可以跟场景互动,例如碰撞侦测之类的。
相机的数学知识:Projective Geometry
一台相机。请读者非常熟悉 计算几何观点 与 线性代数观点 的二维几何变换。
点是过原点直线,点的座标是过原点直线的方向向量。直线是过原点平面,直线的座标是过原点平面的法向量。两点外积得连线,是两条过原点直线的方向向量的外积,得两线形成之平面的法向量。两线外积得交点,是两个过原点平面的法向量的外积,得平面相交之直线的方向向量。
线 ax+by+c=0 ---> (a,b,c) 三个座标值一齐乘上任意倍率,仍等价 点(x,y) ---> (x,y,1) 三个座标值一齐乘上任意倍率,仍等价 点 p 在线 l 上 ---> p dot l = 0 线 l 穿过点 p ---> l dot p = 0 两线交点 ---> l1 cross l2 两点连线 ---> p1 cross p2 两线平行 ---> l1 cross l2 = (a,b,0)
相机的数学知识:Epipolar Geometry
两台相机。 主题曲 。
拍摄多张相片,源自各种方位。找到各图片的对应线、对应座标。
使用 Image Feature Matching ,撷取图片特徵。
相机的数学知识:Trifocal Tensor
三台相机。三点定位。杨戬。
相机的数学知识:Homogeneous Transformation
Camera Calibration(Camera Resection)
校准 。拍摄多张相片,源自各种方位。求出相机参数,例如焦距、曲率。另外求出相机相对于物体的位置,例如平移、旋转。
Image Registration
配准 。拍摄多张相片,源自各种方位。找到每张相片的对应特徵,将特徵座标整合到世界座标系,得到点云。
Image Alignment
对齐 。拍摄多张相片,源自各种方位。相片实施三维几何变换,整合到世界座标系。可以进一步制造 矫正 、 变形 的效果。
Image Stitching(Image Mosaicing)(Panorama)
缝合 。拍摄多张相片,源自各种方位。衔接成一张宽广相片,称作 环景照 。经典范例是 谷歌街景 。 这裡有作品 。
一、座标系转换。例如球面、圆柱等。
二、每张相片因光线角度导致的色彩差异。
Panorama Warping
http://kaiminghe.com/sig13/index.html deformation error http://ralph.cs.cf.ac.uk/papers/Geometry/Resizing.pdf line segment detection http://www.ipol.im/pub/art/2012/gjmr-lsd/ 1. 四边形网格,每一格 deformation 的误差 (位移旋转缩放 ---> 四个对应点的距离相加) 2. 边缘角度的误差,每一格分开算, 变换后的网格做双线性内插以得到变换后的线段 3. regularization 4. 模仿 EM algorithm 做最佳化(因为 1.2.都是二次函数,都是凸的) 5. seam carving
Camera Tracking
追踪 。拍摄多张相片,源自各种方位。求出每张相片的相机方位,将相机方位整合到世界座标系。可以进一步制造 图片 GPS 的效果。
Scene Reconstruction(Structure From Motion)
重建。拍摄大量相片(甚至影片),源自各种方位。建立模型。
Scene Compositing(Match Move)
合成。拍摄大量相片(甚至影片),源自各种方位。将多馀物品塞入场景,配合相机方位。
Camera 绘图处理(Under Construction!)
Intrinsic Image
真相。去除光线影响,还原物体的真实颜色。
Image-based Modeling
拍摄相片,建立模型。可以想成是 3D Graphics 的反运算。
平面变立体、2D 变 3D。根据像素颜色,推论模型形状。像素值,是素材与光线的综合结果。去除素材影响,则得光线。再从光线强度,推估光线入射角,得到表面法向量。
这件事听起来很蠢。想要建立模型,直接使用侦测模型的器材即可,何必使用相机?原因是几乎人人随身携带智慧型手机,那上面装著计算机和相机;但是不是人人都有深度感测仪。
Shape From Shading:拍摄一张相片。 Photometric Stereo:拍摄多张相片,相机固定方位,光源源自各种方位。 View Synthesis:拍摄多张相片,相机源自各种方位。
http://www.cs.berkeley.edu/~barron/BarronMalikCVPR2012.pdf
Image-based Lighting
打光。拍摄多张相片,源自各种方位。侦测光源与光强,然后重新打光。
拍摄金属球 :相机对准金属球中心,拍摄金属球的半面。根据相片的金属球的半面的表面亮度,运用光线入射角等于折射角的原理,推测半个环境的光源与光强。调整相机方位(例如水平周转一圈),以各种方位拍摄,得到整个环境的光源与光强。
拍摄平面镜 :相机拍摄平坦的反光物体,以各种方位拍摄(例如直线平移),推测光源与光强。
拍摄场景:建立模型,运用 Graphics 领域的光线追踪演算法,推测光源与光强。
Image-based Rendering
渲染 。拍摄多张相片,源自各种方位。绘制模型。
Image-based Texturing
贴材质 。在模型上贴材质。
Camera 拍摄处理(Under Construction!)
Demosaicing
http://www.cambridgeincolour.com/tutorials/RAW-file-format.htm
数位相机的感光元件,有 RGB 三种,分别侦测红光、绿光、蓝光的强度,得到 0 到 255 的整数。
感光元件宛如方格棋盘,紧密地排列在平面上,不能互相重叠。最常见的排法叫做 Bayer arrangement:
将三种感光元件分开来看,有很多漏洞。demosaicing就是指填补这些漏洞的数值。演算法非常多,例如线性内插、中位数。
最后将三个方格棋盘叠起来,每个方格都有 RGB 值,一个方格对应一个像素,形成彩色相片。
目前正在研发新型态的感光元件,可以同时侦测 RGB。不久之后的将来应该就不需要 demosaicing了。
Noise Reduction(Denoising)
去除杂讯 。像素的数值不由自主改变了,变得跟真正的数值不一样,就是误差。
误差源自摄影器材先天限制、周遭环境不够理想,原因很多。例如灯光昏暗时,相片上面多出许多莫名其妙的颜色。
不同的误差有不同的解决方式,见招拆招。例如 salt-and-pepper noise,可以取邻近像素的中位数;例如 quantization noise,可以使用线性内插。更複杂的演算法例如 biliteral filter 和 non-local means 。
Distortion Reduction(Aberration Reduction)
去除失真 。失真是指图片改变了,不符真实情况。
失真的原因非常多,例如方才提到的杂讯:像素数值改变了。此处讨论像差:像素位置改变了。
当透镜表面不完美、光线介质不均匀,影像将扭曲。
http://www.cs.cmu.edu/~ILIM/projects/IM/globalopt/research_globalopt.html http://www.cs.cmu.edu/~ILIM/projects/IM/water/research_water.html http://www.cs.cmu.edu/~ILIM/projects/IM/document_rectification/document_rectification.html
Image Fusion
融合 。拍摄多张相片,融合成一张清晰相片。
Image Reconstruction
重建 。撷取的资料需后制。例如核磁共振扫描,一条射线得到一群像素的加权平均值。须从一条条射线的投影数值,还原成一个个像素数值。Radon transform。
iterative method :其实就是 optimization 。穷举物体的模样,模拟投影结果,令误差最小。缺点是速度慢。
back projection:针对一个像素,穷举穿过它的所有射线,计算平均值。缺点是模糊化。
Fourier slicing :二维平面,时域当中一群平行射线得到的一维数据,对应频域当中穿过原点的一条直线。穷举各种射线角度,尽量填满频域,最后再逆向傅立叶转换。缺点是中心密外围疏,而且必需克服格点问题。
Photon Camera
Camera 运镜技巧(Under Construction!)
视觉错觉
http://en.wikipedia.org/wiki/Anamorphosis
http://www.kongregate.com/games/tobeglad/evo-explores
厂下广卞廿士十一卉半与本二上旦上二本与半卉一十士廿卞广下厂下广卞廿士十一卉半 与本二上旦上二本与半卉一十士廿卞广下厂下广卞廿士十一卉半与本二上旦上二本与半 卉一十士廿卞广下厂下广卞廿士十一卉半与本二上旦上二本与半卉一十士廿卞广下厂下
Camera Control
http://www.amazon.com/dp/0123116341
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论