量化补偿与量化压缩

  学习博客:http://lhtao31.blog.163.com/blog/static/2972647020103814044158/

  最近在学习调试摄像头,配置OV7670摄像头采集到的数据是RGB565,移植别人的代码,从ZYNQ移植到Basys3,VGA输出引脚需要又RGB565转到RGB444,我采用分别取RGB565三分量高位的方法,最终显示输出,视频图像会变得更模糊,这是由于在转换的时候去掉低位会损失精度。而OV7670的图像采集效果也是不怎么样,所以后面会尝试配置OV7725,追求完美,达到更好的显示效果。查询了很多资料后,知道了这是什么原因,下面我自己查阅的资料整理一下,以后查询起来方便。

1 /* vga_red   <= frame_pixel[15:11];
2 vga_green <= frame_pixel[10:5];
3 vga_blue  <= frame_pixel[4:0]; */
4 vga_red   <= frame_pixel[15:12];
5 vga_green <= frame_pixel[10:7];
6 vga_blue  <= frame_pixel[4:1];

量化压缩与量化补偿

量化压缩

24bit RGB888 -> 16bit RGB565 的转换

24ibt RGB888 {R7 R6 R5 R4 R3 R2 R1 R0} {G7 G6 G5 G4 G3 G2 G1 G0} {B7 B6 B5 B4 B3 B2 B1 B0}

16bit RGB565 {R7 R6 R5 R4 R3} {G7 G6 G5 G4 G3 G2} {B7 B6 B5 B4 B3}

量化位数从8bit到5bit或6bit,取原8bit的高位,量化上做了压缩,却损失了精度。

量化补偿

16bit RGB565 -> 24bit RGB888 的转换

16bit RGB565 {R4 R3 R2 R1 R0}{G5 G4 G3 G2 G1 G0}{B4 B3 B2 B1 B0}

24ibt RGB888 {R4 R3 R2 R1 R0 0 0 0 }{G5 G4 G3 G2 G1 G0 0 0 }{B4 B3 B2 B1 B0 0 0 0}

24ibt RGB888 {R4 R3 R2 R1 R0 R2 R1 R0}{ G5 G4 G3 G2 G1 G0 G1 G0}{ B4 B3 B2 B1 B0 B2 B1 B0}

第二行的 24bit RGB888 数据为转换后,未进行补偿的数据,在精度上会有损失

 24bit RGB888 数据为经过量化补偿的数据,对低位做了量化补偿

总结

量化压缩的方法:三个字——取高位

量化补偿的方法

  1. 将原数据填充至高位

  2. 对于低位,用原始数据的低位进行补偿

  3. 如果仍然有未填充的位,继续使用原始数据的低位进行循环补偿

循环补偿的概念

8bit RGB332 -> 24bit RGB888 的转换

8bit RGB332{ R2 R1 R0} { G2 G1 G0} { B1 B0}

24bit RGB888 { R2 R1 R0 0 0 0 0 0 }{ G2 G1 G0 0 0 0 0 0} { B1 B0 0 0 0 0 0 0}

24bit RGB888 { R2 R1 R0 R2 R1 R0 0 0 }{ G2 G1 G0 G2 G1 G0 0 0 }{ B1 B0 B1 B0 0 0 0 0}

24bit RGB888 { R2 R1 R0 R2 R1 R0 R2 R1} { G2 G1 G0 G2 G1 G0 G2 G1} { B1 B0 B1 B0 B1 B0 0 0}

24bit RGB888 { R2 R1 R0 R2 R1 R0 R2 R1 }{ G2 G1 G0 G2 G1 G0 G2 G1 }{ B1 B0 B1 B0 B1 B0 B1 B0}

从如上转化可以看出,B分量进行了四轮补偿

  进行这样的补偿,在做色彩格式转化的时候,能够明显的改善色彩效果,减少精度上的损失。

  有时候,回过头来,会感谢自己,当初苦逼写的这些博客没白写!

  记得之前玩过两周Arduino,调试出了,实时采集重力传感器的数据到贝壳物联显示,还好我及时做了一些笔记,以至于现在想用Arduino+FPGA做个项目的时候,很快就能上手调试了,所以,很感谢自己当时苦逼的写博客做笔记!

转载请注明出处:NingHeChuan(宁河川)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能

如何在Python中从零开始实现随机森林

决策树可能会受到高度变异的影响,使得结果对所使用的特定测试数据而言变得脆弱。

1.3K8
来自专栏数据科学与人工智能

【数据挖掘】详细解释数据挖掘中的 10 大算法(下)

上一篇中作者解释了 C4.5算法、K 均值聚类算法、支持向量机、Apriori 关联算法、EM 算法,下篇继续解释 PageRank 算法、AdaBoost 迭...

2576
来自专栏机器学习算法原理与实践

强化学习(一)模型基础

    从今天开始整理强化学习领域的知识,主要参考的资料是Sutton的强化学习书和UCL强化学习的课程。这个系列大概准备写10到20篇,希望写完后自己的强化学...

882
来自专栏人工智能

机器学习,Hello World from Javascript!

导语 JavaScript 适合做机器学习吗?这是一个问号。但每一位开发者都应该了解机器学习解决问题的思维和方法,并思考:它将会给我们的工作带来什么?同样,算法...

1925
来自专栏鹅厂优文

AI从入门到放弃:CNN的导火索,用MLP做图像分类识别?

图片标题会显示Accuracy(准确度),准确度的计算公式是: 识别正确图片数/图片总数。

3419
来自专栏一棹烟波

全景图转小行星视角投影原理详解

全景图是2:1比例的图片,一般是多张图像拼接而成。全景图2:1的比例可以很方便的映射到球面,而球坐标可以很方便的实现各种有趣的投影。比如小行星,水晶球,局部透视...

482
来自专栏来自地球男人的部落格

浅谈Attention-based Model【原理篇】

计划分为三个部分: 浅谈Attention-based Model【原理篇】(你在这里) 浅谈Attention-based Model【源码篇】 ...

2885
来自专栏量化投资与机器学习

深度学习Matlab工具箱代码注释之cnnapplygrads.m

%%========================================================================= %...

17710
来自专栏AI研习社

基于 Tensorflow eager 的文本生成,注意力,图像注释的完整代码

我总是发现生成和序列模型令人着迷:他们提出的问题与我们刚开始学习机器学习时常遇到的问题不同。当我第一次开始学习ML时,我学了分类和回归(和大多数人一样)。这些帮...

932
来自专栏Ldpe2G的个人博客

图像素描风格生成

论文链接:Combining Sketch and Tone for Pencil Drawing Production

2527

扫码关注云+社区