几种不同的彩色图像转灰度方法
来源:互联网 发布:暴漫淘宝 编辑:程序博客网 时间:2024/06/06 05:14
最近在分析几个开源图像处理程序时,发现了几种不同的彩色图像转灰度方法,方法都很简单,也非常容易理解,但是效果还是有明显不同。在介绍计算方法前,先要说说亮度(lightness)与照度(luminosity)的区别。亮度(lightness),指的是人在看到光源时,眼睛感觉到的光亮度。照度(luminosity),指的是光源照射到物体上,单位被照射面积上的光通量。可以说,亮度是物体反射光到眼里的强弱,是人的一种主观感觉;而照度是光源照在物体上的强弱,是一种客观的物理量。同样的光源、同样的距离照在白纸和黑纸上,亮度不同,照度相同。下面是简单代码示例:
1. 基于均值的方法:
uchar *pSrcImg = src.data;for (int i = 0; i < src.rows; i++){for (int j = 0; j < src.cols; j++, pSrcImg += 3){double average = (pSrcImg[0] + pSrcImg[1] + pSrcImg[2]) / 3;pSrcImg[0] = (uchar)MIN(255, average);pSrcImg[1] = (uchar)MIN(255, average);pSrcImg[2] = (uchar)MIN(255, average);}}
2. 基于亮度的方法:
uchar *pSrcImg = src.data;for (int i = 0; i < src.rows; i++){for (int j = 0; j < src.cols; j++, pSrcImg += 3){uchar max_val = MAX(pSrcImg[0], pSrcImg[1]);max_val = MAX(max_val, pSrcImg[2]);uchar min_val = MIN(pSrcImg[0], pSrcImg[1]);min_val = MIN(min_val, pSrcImg[2]);double lightness = (max_val + min_val) / 2;pSrcImg[0] = (uchar)MIN(255, lightness);pSrcImg[1] = (uchar)MIN(255, lightness);pSrcImg[2] = (uchar)MIN(255, lightness);}}
3. 基于照度的方法:
// HDTV with BT.709uchar *pSrcImg = src.data;for (int i = 0; i < src.rows; i++){for (int j = 0; j < src.cols; j++, pSrcImg += 3){double luminosity = pSrcImg[0] * 0.0722 + pSrcImg[1] * 0.7152 + pSrcImg[2] * 0.2126;pSrcImg[0] = (uchar)MIN(255, luminosity);pSrcImg[1] = (uchar)MIN(255, luminosity);pSrcImg[2] = (uchar)MIN(255, luminosity);}}
// SDTV with BT.601uchar *pSrcImg = src3.data;for (int i = 0; i < src.rows; i++){for (int j = 0; j < src.cols; j++, pSrcImg += 3){double luminosity = pSrcImg[0] * 0.114 + pSrcImg[1] * 0.587 + pSrcImg[2] * 0.299;pSrcImg[0] = (uchar)MIN(255, luminosity);pSrcImg[1] = (uchar)MIN(255, luminosity);pSrcImg[2] = (uchar)MIN(255, luminosity);}}下面是上述几种转换方法的效果图:
0 0
- 几种不同的彩色图像转灰度方法
- MATLAB几种 彩色图像to灰度图像 的方法
- 彩色图像转灰度图像
- OpenCV遍历彩色图像、灰度图像的像素值方法
- 彩色图像转灰度图
- 灰度图像转伪彩色
- 图像由彩色图转化为灰度图的三种方法
- 灰度图像转彩色图像 gray2rgb
- pytorch 彩色图像转灰度图像
- 彩色图像->灰度图像:
- 灰度图像彩色图像
- 彩色图像的灰度化处理
- 灰度图像的伪彩色处理
- 彩色图像的灰度化处理
- 灰度图像的伪彩色处理
- 彩色图像转灰度图公式
- 实验一彩色图像转灰度
- JAVA实现彩色图像转灰度
- 高校小型团队开发项目流程
- 【VBA】EXCEL通过VBA生成SQL,自动生成创建表结构SQL
- 四种开源日志收集系统对比【flume、kafka、chukwa、scribe】
- mahout实现基于用户的Mahout推荐程序
- [Java]读取文件方法大全
- 几种不同的彩色图像转灰度方法
- 管道模式——pipeline与valve
- android 选项卡TabHost
- Count Primes
- 压缩感知重构算法之压缩采样匹配追踪(CoSaMP)
- flash as3读取xml
- 打开网页时,发生了什么
- 第55题 Unique Binary Search Trees II
- mybatis知识总结(二)框架分析