AI笔记: 计算机视觉之图像的采集和传输、视频的压缩和显示

图像采集

1 )CCD传感器基本原理

外接光线经过镜头照射到了CCD图像传感器(由1个个的小格子组成,它的全称是电容耦合器件,每一个小方格都是一个电容,每个小方格的尺寸非常的小),由CCD图像传感器得到了相关电信号,通过图像信号处理和图像放大电路,同时配合我们的时钟同步信号产生多行数字图像,最终通过数码图像存储到存储卡上, 也可以传输到电视上观看。经过CCD将外界镜像转换成了二维的数字信号(二维矩阵), 这个二维矩阵每一个元素就是我们所说的灰度值。通常我们在图像的表示中,经常使用1个字节(8bit)来标识一个像素的灰度,一个像素的灰度值变化在0 ~ 2^8-1 即 0~255

2 ) 彩色传感器的原理

  • 精确图像的彩色信息, 目前技术上还做不到, 换句话说实际制造和技术上存在困难, 只能通过其他方式来实现
  • 彩色传感器最底层采用的和CCD是一样,每个小格子只能敏感灰度信息, 在其上面覆盖一层非常薄的膜, 使用光刻了很多小格子, 每个小格子里涂上不同的颜色, 有颜色的小格子会把对应的光线吸收, 当光通过绿色格子的时候留下的光线只有绿色, 所以可以通过红色、绿色、蓝色三个非常微小的像素来模拟一个像素, 这是彩色传感器可以产生彩色图像的原因
  • 最后在最上面还覆盖着一层薄膜, 用光刻的方法来刻出微小的透镜, 确保光线经过透镜汇聚到下面的光刻小格子上, 微透镜可以提升光的敏感和转化效率。
  • 在不同颜色的光刻小格子中,其中绿色占据一半, 红蓝占据四分之一。 不均等分配的原因是在人的视觉系统中, 绿色占据视觉感受信息的大半, 绿色可以让人可以看得更清楚。
  • 光刻小格子的格式我们可以称为贝尔格式

3 ) OpenCV的表示

  • 像素内部采用一维数组表示
  • 彩色图像表示:B1G1R1 B2G2R2 …
  • 如果一个图像的宽高是wh, 每个像素有三个通道, 那么它的大小就是3倍的wh

关键代码示例:

cvtColor(image, hsv, COLOR_BGR2HSV); // 把原始图像转化成hsv图像
split(hsv, hsvChannels); // 通过split函数把hsv三个通道分离开来
imshow("Hue", hsvChannels[0]); // 色度通道
imshow("Saturation", hsvChannels[1]); // 饱和度通道
imshow("Value", hsvChannels[2]); // 亮度通道
waitKey(); 

for(int i=0; i<3; i++) {
    uchar *p = image.ptr<uchar>(i);
    // 对每个像素位置的三个分量进行输出,
    for(int j=0; j<3; j++)
        cout << (int)p[j*3] << ',' << (int)p[j*3 + 1] << ',' << (int)p[j*3 + 2] << ';';
    cout << endl;
}
waitKey();

4 ) γ矫正

  • 人眼的视觉感应和照明值关系是非线性的(人眼对亮度的敏感度在不同的程度是不一样的, 在18%的地方人眼敏感度是50%, 当一个图像亮度是18%的时候,人的感受是50%的亮度)
  • CCD的采集后的图像进行一次γ矫正后就和我们实际看到的就几乎一致了
  • 正常图像在采集传输存储过程中,我们会进行两次γ矫正, 第一次矫正发生在传感器采集到图像, 然后把对应的图像保存的时候, 矫正值是1/2.2,保证图像在存储的时候基本按照线性方式去量化我们输入的亮度, 保证量化精度。
  • 进一步我们从图像存储到最终显示设备上, 经历了第二次γ矫正, 这次校正值是2.2, 为了让图像更符合人类的视觉特征(和人类感受一致)

5 ) 模拟、数字视频传输

  • 模拟视频传输: 采用同轴电缆等方式, 将亮度和色度分离, 在不同的频带调制后在同一信号线上传输。常用的为同轴电缆, 同轴电缆的中心导线用于传输信号,外层是金属屏蔽网
  • RGB方式:显示器, 投影
  • 数字传输(长距离):光纤高清信号,网线
  • 数字传输(短距离):USB,火线,HDMI

常用图像和视频压缩标准

1 ) 为什么要进行压缩

  • 多媒体技术所处理的对象包括图像、视频和声音等多种媒体, 它们的数据量非常大。
  • 例如: 有效尺寸为320×240的窗口中,以25帧/秒的速度播放1分钟的视频信号 (颜色数为3字节24bit), 其数据量为:320×240×3×25×60=345,600,000 B 一张600MB的光盘最多能存储不超过2分钟的视频。这些远远达不到我们的要求。
  • 带宽资源有限。
  • 压缩已经成为必须要做的事情

2 ) 图像的压缩

  • 1991.3, “联合图片专家组”(JPEG, Joint Photographic Expert Group) 提出了JPEG标准草案, 1994年正式通过
  • 1991年为二值图像编码制定了JBIG标准
  • 新的JPEG版本是JPEG-LS(1999), 和JPEG2000(1999), 于1999年3月形成工作草案, 2000年正式颁布。JPEG标准主要应用于静止图像处理
  • JPEG为有损压缩,压缩率通常在1/10 ~ 1/40 (压缩后可能视觉效果更好, 滤掉一些细节信息更符合人类视觉) , 在一些场合不能使用, 如医学影像的存储和处理
  • JPEG2000支持无损压缩, 同时压缩率略高于JPEG,JPEG2000实现技术复杂,远远没有JPEG应用广泛

3 ) 视频压缩

压缩标准 时间 帧率 核心 应用
JPEG 1986 数字图像压缩编码标准 基于离散余弦变换(DCT)的编码方法 各类图像存储、显示场合
MPEG-1 1992 数字音视频压缩标准 运动补偿,DCT VCD, MP3
MPEG-2 1994 高质量音视频压缩 MPEG-1扩充 DVD, 高清电视
MPEG-4 1998 多媒体系统交互 灵活多变的视频压缩方式 (后来的h.264, h.265) 数字摄像机,监控相机
MPEG-7 2001 暂无数据 多媒体内容描述接口 暂无数据
MPEG-21 暂无数据 暂无数据 多媒体框架 暂无数据

4 ) 视频压缩的各个格式

MPEG-1

  • 1992年,“运动图片专家组”(MPEG,Moving Picture ExpertGroup)提出了“用于数字存储媒体运动图像及其伴音率为1.5Mbit/s的压缩编码”,简称为MPEG-1,1993年正式通过
  • 这个标准主要是针对当时具有这种数据传输率的CD-ROM和网络而开发的,用于在CD-ROM上存储数字影视和在网络上传输数字影视
  • 清晰度与老式模拟电视或录像带相同,352*240/288
  • 第三部分是音频标准,即著名的MP3

MPEG-2

  • MPEG-2标准从1990年开始研究,是一个直接与数字电视广播有关的高质量图像和声音编码标准,MPEG-2可以说是MPEG-1的扩充
  • MPEG-2标准兼容MPEG-1标准,适应于1.5Mbit/s ~ 80Mbit/s编码范围, 提供了对多种清晰度的数字视频的支持
  • MPEG-2声音,规定声音数据的编码和解码,是MPEG-1 Audio的扩充,支持多个声道
  • DVD和高清电视(HDTV)音视频标准即依照MPEG-2

MPEG-2分辨率级别

级别 分辨率 帧率 最大码率 应用
低(Low) 352×240/288 30P/25P 4 Mbps VCD
主(Main) 720×480/576 60I/50I 15 Mbps DVD
高 (High)1440 1440×1152 30P 60 Mbps 高清电视
1920×1080 24P/30P/ 60I 80 Mbps 全高清电视

MPEG-4

  • MPEG-4从1994年开始工作,它是为视听数据的编码和交互播放开发算法和工具,是一个数据速率很低的多媒体通信标准,也是一个框架,允许使用者自主嵌入自己的算法
  • MPEG-4的目标是要在异构网络环境下能够高度可靠地工作,并且具有很强的交互功能
  • MPEG-4允许有自己的视频压缩算法;当今流行的DIVX、MKV等格式即在此基础上改进,包含了不同类型的高效压缩方法(如h.264, h.265等)
  • 安防监控的视频传输及网络视频(电影)遵循MPEG-4,但有各类变体

显卡和参数

  • 显存:越大越好
  • 流处理器:GPU包含的小处理器
  • 位数:越大越好
  • 接口:提供对外的接口:HDMI、VGA、DVI、DP
  • 厂家:NVIDIA、AMD、INTEL

显示设备

  • 分辨率(最佳分辨率)及显示器尺寸
  • 亮度和对比度:LCD的亮度以流明/平方米(cd/m2)度量,对比度是直接反映LCD显示器能否现丰富的色阶的参数
  • 响应时间:响应时间是LCD显示器的一个重要的参数,它指的是LCD显示器对于输入信号的反应时间。
  • 坏点:如果液晶显示屏中某一个发光单元有问题就会出现总不透光、总透光、半透光等现象,这就是所谓的“坏点”

超高清清晰度电视(UHDTV)

  • 2K: 2048(1920) * 1080
  • 4K: 4096(3840) * 2160
  • 8K: 8192(7680) * 4320
发布了417 篇原创文章 · 获赞 228 · 访问量 70万+

猜你喜欢

转载自blog.csdn.net/Tyro_java/article/details/104450976