如何使用16位灰度图像值

nickshen 2002-04-12 02:25:48
我想得到灰度图像的灰度值,不管图像是彩色还是灰色的,全部转化成灰度的,使用下面的方法,转换成位深8位的灰度图像,后来发觉8位太浅,想用16位的,可是发觉它的值总在0到256之间,请问是什么原因。
picture.pixelformat:=pf8bit;
...
......
for i:=0 to PictureHeight-1 do
begin
for j:=0 to PictureWidth-1 do
begin
Color:= ColorToRGB(Watermark.canvas.Pixels[j,i]);
B:=(Color and $FF0000) shr 16;
G:=(Color and $FF00) shr 8;
R:=(Color and $FF);
GrayPixels[i,j]:=R*0.3 + G*0.59 + B*0.11;
end;
end;
后来我改成pf16bit,发觉不行,GrayPixels[x,y]总在256以内,是不是计算公式不对,还是什么原因。
...全文
178 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathe 2002-04-15
  • 打赏
  • 举报
回复
得不到,除非你自己拉伸;其实256就够人眼分辨了,不知道你要做什么!
nickshen 2002-04-12
  • 打赏
  • 举报
回复
如果我想得到灰度值最大65536的值,可以把pixelformat设成pf16bit,然后用上面的公式转化吗,我想得到更精确的灰度值。
pathe 2002-04-12
  • 打赏
  • 举报
回复
目前常用的灰度图象,其灰度值当然是在256以内的呀,这不是什么错误。
24bit真彩色图也采用的是24bit灰度值,他分为RGB三个颜色通道,每个通道都是
256级灰度值,有什么问题吗?
实际上当r = g = b时,看起来就是灰的。

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧