图像处理简介

news2025/1/23 13:42:07

目录

基本术语

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.coloradmin.cn/o/965879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Stable Diffusion的AIGC服饰穿搭实践

本文主要介绍了基于Stable Diffusion技术的虚拟穿搭试衣的研究探索工作。文章展示了使用LoRA、ControlNet、Inpainting、SAM等工具的方法和处理流程,并陈述了部分目前的实践结果。通过阅读这篇文章,读者可以了解到如何运用Stable Diffusion进行实际操作&…

ScreenToGif-动图制作软件实用操作

ScreenToGif官网:ScreenToGif ⭕第一步:启动页面 ⭕第二步:选项 🥝录像机-捕获频率选择手动-播放延迟1000ms(可以任意) ⭕第三步:录像机开始录屏 🥝我们调整录屏的大小后,打开画图&#xff0c…

HK1 RBOX X4,Vontar X4,S905 X4 刷 ATV

准备工作 需要HK1 RBOX X4一个(内存版本不限 通刷),机顶盒电源,USB双公线一条(可以使用两个usb数据线剪开后相同颜色对接使用,最好使用电烙铁焊接一下更稳定),安装 INTEL CPU 运行 w…

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN) 来源: KDD’2023Google Research 文章目录 Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)长尾问题分析CDNItem Memorization and General…

【算法】leetcode 105 从前序与中序遍历序列构造二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7] Output: [3,9,20,null,null,15,7]示例 2: Input: pr…

可控生成之GLIGEN原理

🤗关注公众号 funNLPer 快乐白嫖🤗 论文:GLIGEN: Open-Set Grounded Text-to-Image Generation 代码:gligen/GLIGEN 项目地址:GLIGEN demo地址:gligen demo 文章目录 1. 动机2. 模型结构及原理2.1 输入处理2.1.1 Caption Tokens2.1.2 Grounding Tokens2.2 Gated Sel…

应急三维电子沙盘数字孪生系统

一、简介应急三维电子沙盘数字孪生系统是一种基于虚拟现实技术和数字孪生技术的应急管理工具。它通过将真实世界的地理环境与虚拟世界的模拟环境相结合,实现了对应急场景的模拟、分析和决策支持。该系统主要由三维电子沙盘和数字孪生模型两部分组成。三维电子沙盘是…

ROS-5.自定义topic消息格式

自定义topic消息格式 1. 定义消息1.1. 定义msg文件1.2. 在package.xml中添加功能包依赖1.3. 在CMakeList.txt添加编译选项1.4. 编译 2.定义发布者和订阅者2.1 定义发布者2.2. 定义订阅者2.3. 修改CMakeList.txt2.4 编译 3. 使用消息3.1 启动ros主程序3.2. 启动发布者3.3 启动订…

处理时延降低24倍,联通云粒数据引擎优化实践

*作者:郑扬勇,云粒星河数据中台产品负责人 云粒智慧科技有限公司成立于 2018 年 6 月,是中国联通集团混改以来成立的首家合资公司,是中国智慧城市数智化建设者。一直以来,云粒智慧以数字化、智能化、集约化产品为核心&…

[杂谈]-2023年实现M2M的技术有哪些?

2023年实现M2M的技术有哪些? 文章目录 2023年实现M2M的技术有哪些?1、寻找连接2、M2M与IoT3、流行的 M2M 协议 在当今的数字世界中,机器对机器 (M2M) 正在迅速成为标准。 M2M 包括使联网设备能够交换数据或信息的任何技术。 它可以是有线或无…

关于已经安装了TorchCRF,导入时却提示“ModuleNotFoundError: No module named ‘torchcrf‘”的解决办法

应用python时,想导入torchcrf库 from torchcrf import CRF 但系统提示:ModuleNotFoundError: No module named torchcrf 在命令提示符里输入“pip list”检查已安装库,发现torchcrf已经安装 搞了半天,发现是大小写的问题&#x…

2023.9 - java - 浅拷贝

与 js的浅拷贝不同: 在 JavaScript 中, Object.assign() 或 spread 运算符等方法可以实现浅拷贝,但只针对对象的第一层属性进行复制。如果一个对象只包含基本数据类型的属性,那么对浅拷贝出来的对象进行修改不会影响原始对象&…

Spring IOC的理解

总: 控制反转(IOC):理论思想,传统java开发模式,对象是由使用者来进行管理,有了spring后,可以交给spring来帮我们进行管理。依赖注入(DI):把对应的…

React笔记(四)类组件(2)

一、类组件的props属性 组件中的数据,除了组件内部的状态使用state之外,状态也可以来自组件的外部,外部的状态使用类组件实例上另外一个属性来表示props 1、基本的使用 在components下创建UserInfo组件 import React, { Component } from…

OpenCV基本操(IO操作,读取、显示、保存)

图像的IO操作,读取和保存方法 1.1 API cv.imread()参数: 要读取的图像 读取图像的方式: cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的图像的透明度都将被忽略。这是默认参数 标志: 1 cv.IMREAD*GRAYSCALE :以…

【进阶之路】pytest自动化测试框架从0-1精通实战

前言 1、运行方式 命令行模式: pytest -s login.py主函数模式: if __name__ __main__:pytest.main(["-s", "login.py"])pytest.ini运行: 在 pytest.ini 文件中配置 pytest 的运行参数。 注意点: 位置&…

车载监管模块项目需求分析报告

目录 1 文档说明.......................................................................................... 4 2 参考文件.......................................................................................... 4 3 概述.......................................…

真机安装Linux Centos7

准备工具: 8G左右U盘最新版UltraISOCentOS7光盘镜像 操作步骤 下载镜像 地址:http://isoredirect.centos.org/centos/7/isos/x86_64/ 安装刻录工具UltraISO,刻录镜像到U盘 ① 选择ISO镜像文件 ② 写入磁盘镜像,在这里选择你的U盘…

NLP(六十七)BERT模型训练后动态量化(PTDQ)

本文将会介绍BERT模型训练后动态量化(Post Training Dynamic Quantization,PTDQ)。 量化 在深度学习中,量化(Quantization)指的是使用更少的bit来存储原本以浮点数存储的tensor,以及使用更少的…

C#知识点、常见面试题

相关源码 https://github.com/JackYan666/CSharpCode/blob/main/CSharpCode.cs 0.简要概括 1.删除集合元素 1.For循环删除集合元素:从后面往前删除 从前往后删,有可能不能完全删除 #region 01.For循环删除集合元素void Test01_ForDelListElement(){//错误代码 虽然可以跑…