[点评:彩色转灰度的算法,基本上都是一种近似算法,利用人眼的感觉来定义灰度值,没有一个正式的说法,不过已经足够了.]
亮度值 = (R*30 + G*59 + B*11 ) / 100
rgb分别对亮度值的影响是30%,59%和11%。
然后把 R,G,B都赋值为该亮度值,就可得到灰度图象。
无调色板的真彩色,直接修改数据。
有调色板的直接修改调色板中的RGB。
posted on 2004-06-24 15:52 杨老师的茅屋 阅读(1294)
评论(6) 编辑 收藏
-
Posted @ 2004-06-24 21:59
因为红绿兰对视觉的刺激程度不同,所以采用算法 R*0.3+G*0.59+B*0.11 比较好,但这不是唯一的算法,常用的还有其他三种,共四种
1. R*0.299 + G*0.587 + B*0.114
这就是你所说的算法,只是权值更精确了一些
2. R*0.45+G*0.35+B*0.20
3. max( R, G, B );
4. avg( R, G, B );
windows 中自带的画图软件就使用这种算法。
-
# **好全面。在论坛上看到有人乱说,所以在BLOG上纠正一下:)
Posted @ 2004-06-24 23:57
好
-
Posted @ 2004-07-10 23:59
那如果我的RGB是5、6、5格式
应该怎么转换呢?
-
Posted @ 2005-01-19 00:21
楼上的朋友可以看看我的blog中的文章
http://blog.csdn.net/pomelowu
-
Posted @ 2005-07-26 19:13
请问下要把转成的灰度的图像再转成彩色的,该怎么做呢?谢谢
-
Posted @ 2006-03-09 22:04
那是不可能的,颜色信息已经丢失了 - 将RGB想成3D之X,Y,Z轴,则BMP的RGB为(r,g,b)与座标(Y,Y,Y)距离最小时的Y即为灰阶值
Y = 0.29900 * R + 0.58700 * G + 0.11400 * B
整数化
Y = ( 9798*R + 19235*G + 3735*B) / 32768
RGB(Y, Y, Y)就可以了
- 另外:在win32sdk中有函数GetPixel()和SetPixel()分别用来获取或设置某一像素值.
阅读(1485) | 评论(0) | 转发(0) |