17年6个月前IP:未同步
132858
24楼
另外这个灰度化的代码也有优化的余地,例如:
temp = (byte)(0.299 * ptr[2] + 0.587 * ptr[1] + 0.114 * ptr[0]);
这样会当成double双精度来计算,结果再转换成byte,效率比较低。
优化的方法是把0.299、0.587、0.114这些系数乘以2的N次方,比如65536,再取整来作为系数,然后以整型乘法来实现计算。当然最终的结果temp被放大了65536倍,这个除回来就是了。怎么除呢?右移16位就是了。

不过在CUDA上问题就不大,因为GPU上最多的就是单精度浮点运算单元。
+200
科创币
破93
2009/07/28
thx
评论
文号 / 132858

盖世豪杰
名片发私信
学术分 47
总主题 71 帖总回复 1158 楼拥有证书:进士 学者 机友 笔友
注册于 2006/12/29 13:30:16最后登录 2026/08/08 14:52:19
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的