前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >视频处理之灰度图

视频处理之灰度图

作者头像
瓜大三哥
发布2020-06-09 11:28:17
2K0
发布2020-06-09 11:28:17
举报
文章被收录于专栏:瓜大三哥

灰度图概念

灰度图 ,Gray Scale Image 或是Grey Scale Image,又称灰阶图。把白色与黑色之间按对数关系分为若干等级,称为灰度。8位像素灰度分为256阶。用灰度表示的图像称作灰度图。除了常见的卫星图像、航空照片外,许多地球物理观测数据也以灰度表示。除了常见的卫星图像、航空照片外,许多地球物理观测数据也以灰度表示。以位场图像为例,把位场表示为灰度图,需要将位场观测值灰度量化,即将场的变化范围转换成256阶的灰度范围。由于位场的动态变化范围非常大,磁场可达数万个纳特,重力场也可能在数百个重力单位内变化,所以在显示为图像前通常需要对位场观测值进行拉伸或压缩。

灰度图计算

将彩色图像转换为灰度图像的方法有两种:

  • 第一种方法是令RGB三个分量的数值相等。输出后便可以得到灰度图像。
  • 第二种方法是将RGB转换为YCbCr格式,将Y分量提取出来,YCbCr格式中的Y分量表示的是图像的亮度,所以只输出Y分量,得到图像就是灰度图像。

本文采用第二种方法,采用xilinx FPGA提供的IP。

算法基础

官方给的RGB888转YCrCb的算法公式:

Y = 0.299R + 0.587G + 0.114B

Cb = 0.568(B-Y) + 128 = -0.172R -0.339G + 0.511B + 128

Cr = 0.713(R -Y) + 128 = 0.511R - 0.428G - 0.083B + 128

矩阵表示如下

整数算法

在实际应用时,希望避免低速的浮点运算,所以需要整数算法。

注意到系数都是3位精度,我们可以将它们缩放1000倍来实现整数运算算法:

Y = (R299 + G587 + B*114 + 500) / 1000。

RGB一般是8位精度,现在缩放1000倍,所以上面的运算是32位整型的运算。注意后面那个除法是整数除法,所以需要加上500来实现四舍五入。

就是由于该算法需要32位运算,所以该公式的另一个变种很流行(只扩大100倍):

Y = (R30 + G59 + B*11 + 50) / 100。

FPGA实现算法

上面的整数算法已经很快了,但是有一点仍制约速度,就是最后的那个除法。FPGA实现出发很消耗资源很且很慢,移位比除法快多了,所以可以将系数缩放成2的整数幂。由于FPGA实现小数无法计算,所以进行变换(将小数扩大256,最后结果再除以256),公式如下

Y = ((77R + 150G + 29*B)>>8)

Cb = ((-43B - 85G + 128*B)>>8) + 128

Cr = ((128R - 107G - 21*B)>>8) + 128

灰度图实现

matlab实现结果

代码语言:javascript
复制
X=imread(I); %读入图片

I=mat2gray(X);%将数值矩阵X转换为灰度图像

figure,imshow(I); %显示转换后的灰度图像

FPGA实现

如果你对实现过程感兴趣,可以参考链接,网友们都写的很好,小编会后面出一个各种视频格式转换的通用模块,敬请关注。

使用IP如下图所示,支持AXI Stream接口(根据视频的分辨率进行配置即可)。

RGB2YCrcb IP硬件位置

实现结果如下图

参考链接

https://blog.csdn.net/dengxf01/article/details/53287227

https://www.cnblogs.com/huangwei0521/p/12382238.html

https://www.cnblogs.com/ninghechuan/p/6978104.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 灰度图概念
  • 灰度图计算
    • 算法基础
      • 整数算法
        • FPGA实现算法
        • 灰度图实现
          • matlab实现结果
            • FPGA实现
            • 参考链接
            相关产品与服务
            灰盒安全测试
            腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档