matlab将图片转换为灰度图_视频处理之灰度图
灰度图概念
灰度图 ,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将图片转换为灰度图_视频处理之灰度图相关推荐
- 24位深的bmp图片转换为16位深RGB565格式的bmp图片源码
/**24位深的bmp图片转换为16位深RGB565格式的bmp图片**/ #include <iostream> #include <stdio.h> #include &l ...
- matlab怎么画二维热力图_[原创]Day3.箱线图和热力图的绘制
使用Matplotlib和Seaborn进行绘制箱线图和热力图. 箱线图 箱线图(boxplot)又称盒式图,可以显示数据的分散情况,由五个数值点组成:最大值(max)-上界.最小值(min)-下界. ...
- python可以p图_用Python来P图!简直耍开PS几条街!
写在前面 PS作为世界四大发明之一可以说被广大网友用到了极致,只有你想不到的没有我P不了的,任何正经的图片在都可以变成搞笑图片(比如下图)当然也可以用ps做一点正经的事情. 作为一个爱折腾的程序猿能用 ...
- java 鱼刺图_使用java实现鱼刺图
刚毕业了,这是毕业设计的java web项目中的一个功能,使用鱼刺图进行辅助管理,在做的过程中,没有找到国内有公开的研究资料,不管是哪一种语言,所以就自己做了一个java的鱼刺图生成插件,虽然毕业设计 ...
- 如何用视频制作动图? 视频转gif动图怎么做?
gif动图由于它的表现形式深受大众的喜爱.当我们想要自己制作的gif动图的时候应该怎么办呢?制作动图的方法有很多种,其中视频转gif是比较常见的制作gif动图的一种,而且制作过程非常的简单.只需要使用 ...
- 视频怎么转化为gif动图?视频如何做成gif图?
为什么现在很多人都喜欢使用gif动态图,因为它抓住了每段视频的精华,很多视频都不如gif图传播度高,那么在网上看到喜欢的视频,如果想把视频转换成gif图(https://www.gif.cn)怎么办? ...
- 上证指数30年k线图_上证指数历史k线图_k线图24种经典图解
上证指数季度k线图 400x296 - 90KB - JPEG 戴若顾比:上证指数寻找新的支撑_股市及时雨 550x341 - 25KB - JPEG 上证综指周K线图 300x232 - 16KB ...
- python画美图_学会这些Python美图技巧,就等着女朋友夸你吧
一.前言 Python中有许多用于图像处理的库,像是Pillow,或者是OpenCV.而很多时候感觉学完了这些图像处理模块没有什么用,其实只是你不知道怎么用罢了.今天就给大家带了一些美图技巧,让你的图 ...
- ggplot2组合图_组合多个ggplot2图以用于科学出版物
ggplot2组合图 The ggplot2 is one of the popular plotting libraries that one could leverage to get beaut ...
最新文章
- 绘制简单的正太分布图
- CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
- 处理unsigned相减错误(BIGINT UNSIGNED value is out of range)
- linux下camera驱动分析_《Linux设备驱动程序》(五)——字符设备驱动(下)
- 安卓2.3刷机包_红米K20Pro 安卓Q刷机包下载+刷机教程
- SpringCloud Greenwich(七)集成dubbo先启动消费者(check=false),然后启动提供者无法自动发现注册
- 洛谷 P1141 01迷宫(dfs)
- es6 Trait修饰器
- 图像识别 RGB HSV
- 空间说说秒赞java_人生靠反省,Java靠泛型
- java类路径定制_设置Java类路径的注意事项
- 力控组态软件 mysql_组态软件国内那家做的好?推荐几个比较一下
- 汤小丹计算机操作系统慕课版课后题答案第三章:处理机调度与死锁
- C# 项目实战(经典)
- SXF-2021软测实习生笔试
- 科技类外包人员考核评价规则
- ckeditor5-vue自定义图片上传函数
- 不应该只做你喜欢的事,而是去做让自己更伟大的事
- 简单实用!一文掌握效度分析所有知识点!
- win7系统如何关闭广告弹窗操作方法教学