S0.2 灰度图
来源:互联网 发布:jo malone推荐知乎 编辑:程序博客网 时间:2024/05/18 01:13
- 灰度图定义
- 灰度图优点
- RGB转灰度算法OpenCV3
- 量化
- 算法公式
- OpenCV自带函数实现
灰度图定义
对于单色(灰度)图像而言,每个像素的亮度用一个数值来表示,通常数值范围在0到255之间,0表示黑、255表示白,其它值表示处于黑白之间的灰度。
灰度图优点
我们在进行很多图像的操作时,如果是彩色的 256 色图,由于图象处理后有可能会产生不属于这 256 种颜色的新颜色。
RGB转灰度算法(OpenCV3)
量化
我们知道,自然界中的所有颜色都可以由红、绿、蓝(R,G,B)组合而成。有的颜色有红色成分多一些,如深红;有的有红色成分少一些,如浅红。针对有红色成分的多少,可以分成 0 到 255 共 256 个等级,0 级表示不含红色成分;255 级表示 有 100%的红色成分。 同样,绿色和蓝色也被分成 256 级。这种分级概念称为量化。
算法公式
灰度图是指只含亮度信息,不含色彩信息的图象,就象我们平时看到的黑白照片:亮度由暗到明,变化是连续的。因此,要表示灰度图,就需要把亮度值进行量化。通常划分成0到255共256个级别,其中0最暗(全黑),255最亮(全白)。在表示颜色的方法中,除了RGB外,还有一种叫YUV的表示方法,应用也很多。电视信号中用的就是一种类似于YUV的颜色表示方法。在这种表示方法中,Y分量的物理含义就是亮度,Y分量包含了灰度图的所有信息,只用Y分量就能完全能够表示出一幅灰度图来。
从 RGB 到 YUV 空间的 Y 转换,有一个很著名的公式:
Y = R*0.299 + G*0.587 + B*0.114
我们进行优化变为整数算法:
Y = (R*299 + G*587 + B*114 + 500) / 1000
OpenCV3代码:
#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<iostream>using namespace std;using namespace cv;void main(){ Mat srcImage = imread("Lena.jpg"); Mat dstImage; dstImage = srcImage.clone(); int rowNumber = srcImage.rows; int colNumber = srcImage.cols * srcImage.channels(); imshow("old", srcImage); for (int i = 0; i < rowNumber; i++) { uchar* data = dstImage.ptr<uchar>(i); for (int j = 0; j < colNumber; j+=3) { data[j] =(data[j] * 299 + data[j + 1] * 587 + data[j + 2] * 114 + 500) / 1000; data[j + 1] = data[j+2] = data[j]; } } imshow("new", dstImage); waitKey(0);}
效果图:
OpenCV自带函数实现
#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<opencv2/imgproc/imgproc.hpp>using namespace std;using namespace cv;int main(){ Mat srcImage = imread("images/Lena.jpg"); Mat dstImage1 = imread("images/Lena.jpg", 0);//法一 Mat dstImage2; cvtColor(srcImage, dstImage2, CV_RGB2GRAY);//把图片转化为灰度图,法二 imshow("old", srcImage); imshow("new1", dstImage1); imshow("new2", dstImage2); waitKey(10000); return 0;}
阅读全文
0 0
- S0.2 灰度图
- 灰度图
- 灰度图
- 灰度图
- 灰度图
- S0.1 调色板
- S0.4 二值图
- S0.3 直方图
- tiff灰度图转换bmp灰度图
- 灰度图转换
- BMP转灰度图
- BMP转灰度图
- bmp转灰度图
- Qt生成灰度图
- RGB转灰度图
- Qt生成灰度图
- 图像转灰度图
- UIImage转为灰度图
- Engine-字符串
- 读java编程建议--笔记一
- 计蒜客 2017 NOIP 提高组模拟赛(一)Day2
- Java连接redis小程序
- 如何用Tensorflow训练模型成pb文件(一)——基于原始图片的读取
- S0.2 灰度图
- GCtf2017---Forbidden(山路十八弯各种要求报文格式+加解密)
- webWorker初识
- 利用PYTHON快速统计数字|单词在文本中出现的次数
- 历史的碎片,一页页飘落,好事者拣起自己中意的那页--马云的早年故事
- 深入理解Java虚拟机--上
- 里面的div怎么撑开外面的div,让高度自适应
- java多线程学习笔记(三)
- C语言简单通讯录模板