欲观原文,请君移步​mp.weixin.qq.com

灰度图概念

灰度图 ,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实现结果

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

matlab将图片转换为灰度图_视频处理之灰度图相关推荐

  1. 24位深的bmp图片转换为16位深RGB565格式的bmp图片源码

    /**24位深的bmp图片转换为16位深RGB565格式的bmp图片**/ #include <iostream> #include <stdio.h> #include &l ...

  2. matlab怎么画二维热力图_[原创]Day3.箱线图和热力图的绘制

    使用Matplotlib和Seaborn进行绘制箱线图和热力图. 箱线图 箱线图(boxplot)又称盒式图,可以显示数据的分散情况,由五个数值点组成:最大值(max)-上界.最小值(min)-下界. ...

  3. python可以p图_用Python来P图!简直耍开PS几条街!

    写在前面 PS作为世界四大发明之一可以说被广大网友用到了极致,只有你想不到的没有我P不了的,任何正经的图片在都可以变成搞笑图片(比如下图)当然也可以用ps做一点正经的事情. 作为一个爱折腾的程序猿能用 ...

  4. java 鱼刺图_使用java实现鱼刺图

    刚毕业了,这是毕业设计的java web项目中的一个功能,使用鱼刺图进行辅助管理,在做的过程中,没有找到国内有公开的研究资料,不管是哪一种语言,所以就自己做了一个java的鱼刺图生成插件,虽然毕业设计 ...

  5. 如何用视频制作动图? 视频转gif动图怎么做?

    gif动图由于它的表现形式深受大众的喜爱.当我们想要自己制作的gif动图的时候应该怎么办呢?制作动图的方法有很多种,其中视频转gif是比较常见的制作gif动图的一种,而且制作过程非常的简单.只需要使用 ...

  6. 视频怎么转化为gif动图?视频如何做成gif图?

    为什么现在很多人都喜欢使用gif动态图,因为它抓住了每段视频的精华,很多视频都不如gif图传播度高,那么在网上看到喜欢的视频,如果想把视频转换成gif图(https://www.gif.cn)怎么办? ...

  7. 上证指数30年k线图_上证指数历史k线图_k线图24种经典图解

    上证指数季度k线图 400x296 - 90KB - JPEG 戴若顾比:上证指数寻找新的支撑_股市及时雨 550x341 - 25KB - JPEG 上证综指周K线图 300x232 - 16KB ...

  8. python画美图_学会这些Python美图技巧,就等着女朋友夸你吧

    一.前言 Python中有许多用于图像处理的库,像是Pillow,或者是OpenCV.而很多时候感觉学完了这些图像处理模块没有什么用,其实只是你不知道怎么用罢了.今天就给大家带了一些美图技巧,让你的图 ...

  9. ggplot2组合图_组合多个ggplot2图以用于科学出版物

    ggplot2组合图 The ggplot2 is one of the popular plotting libraries that one could leverage to get beaut ...

最新文章

  1. 绘制简单的正太分布图
  2. CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
  3. 处理unsigned相减错误(BIGINT UNSIGNED value is out of range)
  4. linux下camera驱动分析_《Linux设备驱动程序》(五)——字符设备驱动(下)
  5. 安卓2.3刷机包_红米K20Pro 安卓Q刷机包下载+刷机教程
  6. SpringCloud Greenwich(七)集成dubbo先启动消费者(check=false),然后启动提供者无法自动发现注册
  7. 洛谷 P1141 01迷宫(dfs)
  8. es6 Trait修饰器
  9. 图像识别 RGB HSV
  10. 空间说说秒赞java_人生靠反省,Java靠泛型
  11. java类路径定制_设置Java类路径的注意事项
  12. 力控组态软件 mysql_组态软件国内那家做的好?推荐几个比较一下
  13. 汤小丹计算机操作系统慕课版课后题答案第三章:处理机调度与死锁
  14. C# 项目实战(经典)
  15. SXF-2021软测实习生笔试
  16. 科技类外包人员考核评价规则
  17. ckeditor5-vue自定义图片上传函数
  18. 不应该只做你喜欢的事,而是去做让自己更伟大的事
  19. 简单实用!一文掌握效度分析所有知识点!
  20. win7系统如何关闭广告弹窗操作方法教学

热门文章

  1. 笔记本电脑滑条无法连接synaptics定点装置驱动程序
  2. pyaudio与优美的声音
  3. 如果函数是可以遗传的
  4. 史上最大的实体关系抽取数据集!清华大学自然语言处理团队发布 FewRel...
  5. RabbitMQ中RPC的实现及其通信机制
  6. memcached 系列2:memcached实例(转载)
  7. 网路游侠:某厂家新发布的数据销毁工具
  8. 2、Reactive Extensions for .NET(译)
  9. What is Gensim?
  10. 如何批量创建网页的快捷方式