图像基础知识学习笔记
前言
图像工程师相关基础性概念学习笔记,仅个人理解如有错误,望多加勘误。
提示:以下是本篇文章正文内容,下面案例可供参考
一、图像基础知识相关笔记
1、光学系统影响图像的结构主要包括什么?
镜头组,马达,滤光片,Sensor,补光灯
2、常见噪声都有什么,其分类,及特点?
【高斯噪声】:服从高斯分布(正态分布)的一类噪声,通常是因为不良照明和高温引起的传感器噪声。常见于RGB图像。
【处理方法】:均值滤波(求取模板内的像素均值代替像素值) 代数加法运算,去除噪声。
【椒盐噪声】:通常是由图像传感器,传输信道,解压处理等产生的黑白相间的亮暗点噪声(椒-黑,盐-白)常见于灰度图中
【处理方法】: 中值滤波,将模板内的像素数据,按从小到大的顺序排列,取中间的像素替换原始像素的卷积操作。注,如果数量为偶数那么中位数则是中间两数的均值。
3、光圈,快门,景深?
【光圈】:光圈是镜头中可以改变中间孔大小的机械装置。光圈越大,数字越小,景深越浅,背景越模糊;光圈越小,数字越大,景深越深,背景越清晰。
【曝光时间(快门)】:sensor积累电荷的时间,是sensor pixel 从开始曝光到电量被读出的这段时间。曝光时间越长底生成的相片越亮,相反越暗。在外界光线比较暗的情况下一般要求延长曝光时间(比如说夜景)
【曝光增益】:对sensor的输出电荷的总的放大系数,一般有数字增益和模拟增益,模拟增益引入的噪声会稍小,所以一般优先用模拟增益。
4、 ISP对应不同域的处理,有何不同?
Raw域:Raws数据,原始sensor,原始信号数据
RGB域:主要对色彩,白平衡进行调节
YUV域:主要进行边缘增强,锐化,降噪处理
5、自动曝光时, 画面欠曝通常由哪些因素引起?
1)设备曝光能力不足, 快门增益光圈走到头了;
2)目标亮度过低;
3)曝光容差过大, 曝光提前停止;
4)画面中有不感兴趣的部分亮度极大;
5) 光圈卡住
6、AE、AF、AWB各模块功能?
AE控制光圈大小,Sensor模拟增益,数字增益大小,控制最终输出信号;
AF控制镜头变倍,聚焦,控制画面对焦效果;
AWB反馈Rgain,Bgain信息供ISP中画面处理用……
7、常见测光测试模式都有哪些?
通过控制AE统计数据中分块权重来影响AE调节,常见测试模式:点测光,中心测光,平均测光,自定义区域测光等
8、AWB算法基本原理是什么
Auto White Balance,原理:
假设图像中有大面积灰色的物体(R,G,B分量相等);
AWB算法先依据一定经验知识找到该灰块,
计算灰块的RGain = G/R, Bgain = G/B;
然后再在整个图像R,B分量上分别乘以RGain,Bgain。
9、增益是什么,作用?
1)设备进入慢快门。
2)sensor中断丢失。
3)ae线程卡死
4)cpu性能不足
5)同步机制出错
10、画面过曝时, 画面统计值会怎样?
因为过曝, 所以统计值输出被限制在sensor输出的最大值, 因此统计值要小于真实值
11、锐度?
锐度(acutance)指黑白色调的边界锋利或锐利程度,即黑白边界处的对比度。高锐度的照片的黑白边界非常清晰。如下为高低锐度示意图,其中数字并不代表真实灰度。
对清晰度影响,清晰度是指细节表现。
12、 饱和度,宽动态?
(1)饱和度
指色彩的纯度,纯度越高,表现越鲜明,纯度较低,表现较黯淡。饱和度取决于彩色中的白色光含量。纯彩色光的饱和度为100%,白色光含量为0。
(2)宽动态(Dynamic Range):
图像最亮处的光亮度与最暗处的光亮度的比值。公式如下:
其中lmax为最亮处的光亮度,lmin为最暗处的光亮度。光亮度表征物体表面明亮程度的物理量,单位:坎德拉/平方米(cd/m2)或尼特(Nits)。如下图场景中最亮处光亮度为1000Nits,最暗处光亮度为0.1Nits,则这个场景的实际动态范围为80dB
13、 flicker现象的原因是什么?
(1)中国交流电,电源的频率有两种标准:50Hz(大陆)和60Hz(台湾、日本)的正弦波形
(2)由于能量在时间方向上的波形,照在sensor上就使每一个pixel产生在时间方向上的相应波形,由于CMOS sensor的曝光方式是一行一行的方式进行的,任何一个pixel的曝光时间是一样的,也就是同一行上的每个pixel的曝光开始点和曝光的时间都是一模一样的,所以同一行的所有点所接受到的能量是一样的,而在不同行之间虽然曝光时间都是一样的,但是曝光的开始点是不同的,所以不同行之间所接受到的能量是不一定相同的。
14、消除flicker现象的方法
曝光时间为工频整数倍
15、照度,低照度?
指单位面积上所接受可见光的能量,般摄像机大都在0Lux或者0.1Lux,照度值的大小是要看镜头的光圈大小(F值),F值越小所需的照度越低。
低照度摄像机最低照度的级别:
0.1Lux:暗光级
0.01Lux:月光级
0.001Lux及以下:星光级
16、光学防抖与电子防抖?
光学防抖就是在镜片组中加入防抖机构,用镜片的移动来抵消抖动;
电子防抖实际上是一种通过降低画质来补偿抖动的技术;
光学防抖比电子防抖更好
17、 CCD与CMOS的区别有?
1、灵敏度差异
由于CMOS传感器的每个象素由四个晶体管与一个感光二极管构成(含放大器与A/D转换电路),使得每个像素的感光区域远小于象素本身的表面积,像素尺寸相同,CMOS传感器的灵敏度要低于CCD传感器。
2、成本差异
CMOS传感器采用一般半导体电路最常用的CMOS工艺,可以轻易地将周边电路(如AGC、CDS、Timing generator、或DSP等)集成到传感器芯片中,因此可以节省外围芯片的成本。
CCD采用电荷传递的方式传送数据,只要其中有一个象素不能运行,就会导致一整排的数据不能传送,因此控制CCD传感器的成品率比CMOS传感器困难许多,CCD传感器的成本会高于CMOS传感器。
3、分辨率差异
CMOS传感器的每个象素都比CCD传感器复杂,其象素尺寸很难达到CCD传感器的水平,因此,当我们比较相同尺寸的CCD与CMOS传感器时,CCD传感器的分辨率通常会优于CMOS传感器的水平。
4、噪声差异
由于CMOS传感器的每个感光二极管都需搭配一个放大器,而放大器属于模拟电路,很难让每个放大器所得到的结果保持一致,因此与只有一个放大器放在芯片边缘的CCD传感器相比,CMOS传感器的噪声就会增加很多,影响图像品质。
5、功耗差异
CMOS传感器的图像采集方式为主动式,感光二极管所产生的电荷会直接由晶体管放大输出,但CCD传感器为被动式采集,需外加电压让每个象素中的电荷移动,而此外加电压通常需要达到12~18V。
因此,CCD传感器除了在电源管理电路设计上的难度更高之外(需外加 power IC),功耗远高于CMOS传感器。
18、自动对焦方法
1、主动 测距法 (玻璃穿透,结构复杂,红外光聚焦不行)
反射时间测量法:通过接受主动发射的光波或声波来测量被拍摄景物的距离,然后根据成像定律计算出像面的距离,从而调节镜头实现自动聚焦
三角测量法:光束打在被测量物体上反射回来,经过镜头成像与CCD上,由相似三角形的几何关系计算出物距,然后根据成像定律计算出像面的距离,从而调节镜头实现自动聚焦
2、被动 相检测法 (结构复杂、细节少、噪点多、对比度强(光源)、多物距、运动物体)
反差检测法:通过比较镜头连续对焦过程中sensor输出的图像清晰度评价函数值来驱动镜头到合适的对焦点
相位检测法:通过sensor相位检测器输出的相位差值来驱动镜头到合适的对焦点
3、数字图像处理法
计算对比度:通过比较镜头连续对焦过程中数字图像空域上清晰度评价函数值来驱动镜头到合适的对焦点
高频滤波:
19、SNR(信噪比)
1、定义:Signal-to-noise ratio,缩写为SNR或S/N,又称讯噪比,是科学和工程中所用的一种度量,用于比较所需信号的强度与背景噪声的强度。
定义: 为信号功率与噪声功率地比率,以分贝(dB)为单位表示。
SNR越接近于0db表示噪声越多。
2、表达式: P_s为信号功率。P_n 为噪声功率。
S N R = 10 ∗ log 10 ( P s / P n ) SNR = 10*{\log _{10}}({P_s}/{P_n}) SNR=10∗log10(Ps/Pn)
20、PSNR(峰值信噪比)
定义:Peak Signal to Noise ,是衡量图像质量的指标之一。PSNR是基于MSE(均方误差)定义,对给定一个大小为m*n的原始图像I和对其添加噪声后的噪声图像K,其MSE可定义为:
峰值信噪比
function S = PSNR(s,t)
%峰值信噪比psnr,输出峰值信噪比,也可以用psnr函数可同时输出,峰值信噪比,和信噪比
[m, n, ~]=size(s);
s = im2uint8(mat2gray(s));
t = im2uint8(mat2gray(t));
s = double(s);
t = double(t);
sd = 0;
mi = m*n*max(max(s.^2));
for u = 1:m
for v = 1:n
sd = sd+(s(u,v)-t(u,v))^2;
end
end
if sd == 0
sd = 1;
end
S = mi/sd;
S = 10*log10(S);
方式二、
function [ out ] = psnr1( X,Y )
[ m,n ] = size( X );
mse = sum(( double(X(:)) - double(Y(:)) ).^2);
mse = mse/(m*n);
out = 10*log10((255*255)/mse);
end
二、C语言相关
1.宏定义相关理解
宏定义代码如下(示例):
#include<stdio.h>
#define A 10
#define B A+20
#define C B*3
#include<iostream>
int main()
{
int ret = 4 * C;
printf("A = %d\n", A);
printf("B = %d\n", A+20);
printf("C = %d\n", A+20 * 3);
printf("ret = %d\n", 4 * A + 20 * 3);
system("pause");
return 0;
}
个人理解为先替换字符串再进行运算
##后续待更新
该处使用的url网络请求的数据。
总结
图像工程师相关基础性概念学习笔记