开始写算法咯
一开始肯定是从简单的开始,那就从彩图转灰度,以及单独显示红绿蓝三通道图像吧。
彩图转灰的原理
这是一个很有名的心理学公式:Gray = 0.2989*R + 0.5870*G + 0.1140*B。但是浮点型运算很占时间,所以我们该怎么优化呢?大体思路是把浮点型运算转换为整型运算,再把整型运算转换为位移运算。那么我们很自然的想到:Gray=(2989*R+5870*G+1140*B)/1000;但是1000不是2的整数次方,不好进行位移。为了方便位移,我们应该乘以2的整数次幂,
所以我们取2的8次方幂,来看一看:
0.2989*2^8=76.5814;
0.5870*2^8=150.272;
0.1140*2^8=29.184;这就是很通用的彩图转灰度的公式 Gray = (R*76 + G*150 + B*30) >> 8;我也是采用的这个方法。
上代码
老规矩现在vs下面测试一下,看看有没有bug以及速度如何.
结果如下: