图像处理简介

目录

基本术语

1 .图像(image)

1.1 像素(Pixel)

1.2 颜色深度(Color Depth)

1.3 分辨率(Resolution)

1.4 像素宽高比(Pixel Aspect Ratio)

1.5 帧率(FPS)

1.6 码率(BR)

 1.  恒定码率(CBR)

2. 可变码率(VBR)

1.7 扫描

 1.隔行扫描(Interlaced)

2.逐行扫描

2. 颜色空间

2.1 采样方式

2.2.  YUV422采样的储存格式

                     1. YUYV格式

2. UYVY格式

3. YUV422P格式

   2.3   YUV420采样的储存格式

          1. YV12,YU12格式

        2. NV12,NV21格式

       2.4 总结

3.消除冗余

3.1怎么消除冗余


基本术语

1 .图像(image)

       可以将图像视为一个三维矩阵,分别为红色平面,绿色平面,和蓝色平面。我们把这个矩阵里的每一个点称为像素。像素的色彩由三原色的强度表示,例如一个红色像素是由强度为0的绿色,强度为0的蓝色和强度最大的红色组成。

1.1 像素(Pixel)

        像素是图像中的物理点,他是屏幕上表示图片的最小可控元素。例如上述中的各个分量表示的强度点,即为一个像素值。

1.2 颜色深度(Color Depth)

存储颜色的强度,需要占用一定大小的数据空间,这个大小被称为颜色深度,用于指示单个像素颜色的位数。假如每个颜色平面的强度占用8bit(0-255),那么颜色深度就是24bit,这样可以显示2的24次方种不同的颜色。

1.3 分辨率(Resolution)

        一张图片的像素的数量。通常表示为:widthxheight;

1.4 像素宽高比(Pixel Aspect Ratio)

        像素宽高比,也叫PAR,是一个数学比率,用于描述图像中像素的宽度和高度的比值。

1.5 帧率(FPS)

        将单位时间内连续切换n个视频画面,叫做帧率,其中n即为帧率。

1.6 码率(BR)

播放一段视频每秒所需的是数据量叫做比特率,即码率(BitRate)

              其计算公式为:Bitrate=width x height * bits_per_pixel *fps;

                           

       例如,一段视频每秒30帧,每个像素24bit,分辨率为480x240。如果我们不做压缩,他将需要82.944Mbps的带宽。

 1.  恒定码率(CBR)

         当比特率几乎恒定时称为恒定比特率(constant bitrate即 CBR)。

         以恒定的1.2Mbps码率播放如下内容:

2. 可变码率(VBR)

        当比特率可变时,称为可变比特率(Variable Bitrate即VBR),比如可变码率播放如下内容:

        前面连续黑帧率的时候,较低码率为200Kbps,后面实际的信息量的内容,以较高的码率2.4Mbps呈现,这样可以有效的优化带宽,并能够较好的呈现有价值的信息。

1.7 扫描

在传送图像的时候,将每一帧图像分解为像素,之后一个一个像素,一行一行顺序传送的方式就叫做扫描。

 1.隔行扫描(Interlaced)

在早期,工程师们想出了一项技术能将视频的感官帧率加倍而没有消耗额外带宽。这项技术被称为隔行扫描,总体来说,他在一个时间点发送一个画面用于填充屏幕的一半,而下一个时间点发送画面用于填充屏幕的另一半。

原理就是将一帧的这一幅画面分为两个场来扫描。先扫描奇数行得到第一场,然后扫描偶数行得到第二场。两个场加起来组成完整的画面。快速播放的时候由于视觉暂留效应,人眼不会注意到两场只有一半的扫描行,而会看到完整的一帧。

2.逐行扫描

在带宽充裕的今天,基本上都使用了逐行,按照每行来一次绘制。

2. 颜色空间

    一般来说,我们最熟悉的颜色空间是由RGB三基色组成的颜色空间,还有一种模型是将亮度,颜色分离开的,他被称为YCbCr,这种颜色模型使用Y来表示亮度,还有两个颜色通道:Cb(蓝色色度)和Cr(红色色度)。YCbCr可以由RGB转换得来,也可以转换回RGB。通过公式可以相互转换。

RGB ->YUV:

Y=0.299R+0.587G+0.114B

Cb=0.564(B-Y)

Cr=0.713(R-Y)

YUV->RGB:

R=Y + 1.402Cr

G=Y-0.344Cb – 0.714Cr

B=Y + 1.772Cb

2.1 采样方式

         主流的采样方式由三种,

                YUV4:4:4 每一个Y对应一组UV分量

                YUV4:2:2 每两个Y共用一组UV分量

                YUV4:2:0, 每四个Y共用一组UV分量

2.2.  YUV422采样的储存格式

                     1. YUYV格式

       从内存分布图可以看出,相邻的两个Y共用相邻的两个UV,比如坐标(0,0),与坐标(0,1)其中的像素点为Y0U0V0,Y1U0V0,其中他们UV分量是同一个值。那么相对于RGB88,存储数据量少多少呢?

       RGB888 size = 10*5(R) + 10*5(G) + 10*5(B) = 150byte

       YUYV size = 10*5(Y) + 10/2*5(U) + 10/2*5(V) =100byte  

也就是说YUYV的储存数据量是RGB888的数据量的2/3。但是显示效果几乎是一样的。

                    

2. UYVY格式

        与YUYV不同的是UV分量的排列顺序不同而已。

                    

3. YUV422P格式

YUV422P是一种平面模式,也就是说他们的YUV数据存储不是交错存储,而是先存储所有的Y分量,然后储存所有的U(Cb)分量,最后储存所有的V(Cr)分量.

每个分量的起始地址计算:

Y分量的地址:也就是内存的基地址

U分量的地址: base + 10x5(Y size)

V 分量的地址: base + 10x 5(y size) + 10x5/2(U size)

   2.3   YUV420采样的储存格式

          1. YV12,YU12格式

                与YUV422P的储存格式类似,将Y,U,V分量分别打包,依次存储。

       从内存分布图可以看出,相邻的四个Y共用相邻的两个UV,比如坐标(0,0),与坐标(0,1),坐标(0,2),坐标(0,3)其中的像素点为Y0U0V0,Y1U0V0,Y2U0V0,Y2U0V0,可以看出他们UV分量是同一个值。那么相对于RGB88,存储数据量少多少呢?

       RGB888 size = 12*5(R) + 12*5(G) + 12*5(B) = 180byte

       YUYV size = 12*5(Y) + 12/4*5(U) + 12/4*5(V) =90byte 

也就是说YUYV的储存数据量是RGB888的数据量的1/2。以损失极小的失真换来一倍的带宽,这是非常划算的。

每个分量的起始地址计算:

Y分量的地址:也就是内存的基地址

U分量的地址: base + 12x5(Y size)

V 分量的地址: base + 12x 5(y size) + 10x5/4(U size)

        2. NV12,NV21格式

         是一种two-plane模式,即Y和UV分为两个平面。与yuv420p不同的是,UV(CbCr)是交错存储,而不是分为三个平面。

       2.4 总结

              YUYV:是4:2:2[Y0 U0 Y1 V0]

              YUV420:y0u0v0 y1u0v0 y2u0v0 y3u0v0

              YUV420P:Y ,U ,V三个分量都是平面格式,也就是说三个分量的内存是连续的。

              YUV420SP,Y分量是平面格式,UV是交错存储的。

3.消除冗余

        冗余信息是指一帧或者多帧之间的多余信息,比如,一帧图片内的信息,很多都是蓝色,那么是否可以考虑用一个蓝色来编码其他相同颜色的内容呢?比如:一路码流,有连续N帧的内容都是禁止或者变化不大的,那这之间的每帧信息都有大量的重复冗余信息。如果不消除冗余数据,那么数据传输和存储上来说数据量太大了,基本上目前是无法接接受的。所以呢,我们需要对视频进行压缩,进行冗余消除。

3.1怎么消除冗余

        前面说了,可以通过压缩视频连续帧数据的方式来减小带宽和储存压力,那么具体是如何有效的压缩的呢?

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库(MySQL)的存储过程

一、存储过程介绍 存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff0…

音频——I2S 右对齐模式(四)

I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S right时序图逻辑分析仪抓包 I2S right I2S 右对齐标准 也叫日本格式,sony 格式。相比于标准左对齐格式,标准右对齐的不足在于接收设备必须事先知…

53 个 CSS 特效 3(完)

53 个 CSS 特效 3(完) 前两篇地址: 53 个 CSS 特效 153 个 CSS 特效 2 这里是第 33 到 53 个,很多内容都挺重复的,所以这里解释没之前的细,如果漏了一些之前的笔记会补一下,写过的就会跳过。…

11 - 深入了解NIO的优化实现原理

Tomcat 中经常被提到的一个调优就是修改线程的 I/O 模型。Tomcat 8.5 版本之前,默认情况下使用的是 BIO 线程模型,如果在高负载、高并发的场景下,可以通过设置 NIO 线程模型,来提高系统的网络通信性能。 我们可以通过一个性能对比…

STM32+RTThread配置以太网无法ping通,无法获取动态ip的问题

记录一个非常蠢的问题,今天在移植rtthread的以太网驱动的时候出现无法获取动态ip的问题,问题如下: 设置为动态ip时不管是连接路由器还是电脑主机都无法ping通,也无法获取dns地址。 设置为静态ip时无法ping通主机。 使用wireshark…

python自动化测试-自动化基本技术原理

1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据。 掌握上面的这样的本领可不是容易的事情,必须要有扎实的计算机理论基础,才能看到深层次的本质东西。 …

YOLOv7框架解析

YOLOv7概念 YOLOv7是基于YOLO系列的目标检测算法,由Ultra-Light-Fast-Detection(ULFD)和Scaled-YOLOv4两种算法结合而来。它是一种高效、准确的目标检测算法,具有以下特点: 1. 高效:YOLOv7在保持准确率的…

kafka详解二

kafka详解二 1、 offset 1.1 offset介绍 老版本 Consumer 的位移管理是依托于 Apache ZooKeeper 的,它会自动或手动地将位移数据提交到 ZooKeeper 中保存。当 Consumer 重启后,它能自动从 ZooKeeper 中读取位移数据,从而在上次消费截止的地…

springsecurity+oauth 分布式认证授权笔记总结12

一 springsecurity实现权限认证的笔记 1.1 springsecurity的作用 springsecurity两大核心功能是认证和授权,通过usernamepasswordAuthenticationFilter进行认证;通过filtersecurityintercepter进行授权。springsecurity其实多个filter过滤链进行过滤。…

说说TIME_WAIT和CLOSE_WAIT区别

分析&回答 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接&#xf…

深度学习-4-二维目标检测-YOLOv5源码测试与训练

本文采用的YOLOv5源码是ultralytics发行版3.1 YOLOv5源码测试与训练 1.Anaconda环境配置 1.1安装Anaconda Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。 官方网址下载安装包&…

IP子网的划分

文章目录 一、子网掩码1. 产生背景2. 定义3. 分类 二、VLSM算法1. 得出下列参数2. 计算划分结果3. 举例子计算 三、常见子网划分对应关系四、练习IP编址题目需求解题1. 192.168.1.100/282. 172.16.0.58/263. 25.83.149.222/254. 100.100.243.18/205. 10.100.100.100/10 首先可以…