使用AVX / SSE的BMP重叠

问题描述

我正在使用32位BMP,即每个像素为4个字节:ALPHA,BLUE,GREED,RED-每个像素需要1个字节。我需要从一个图像读取图像,从另一个图像读取像素,并使用alpha混合创建一个新像素。为此,我必须使用float。使用Intel Intrinsics做到最好的方法是什么?

换句话说,我需要使用AVX / SSE重写此代码。

// reading pixel1 and pixel2

float alpha_factor = (float)(pixel2.alpha)*(1.0f/255.0f);

uint8_t blue = (float)pixel1.blue*(1.0f - alpha_factor) + (float)pixel2.blue*alpha_factor;

uint8_t green = (float)pixel1.green*(1.0f - alpha_factor) + (float)pixel2.green*alpha_factor;

uint8_t red = (float)pixel1.red*(1.0f - alpha_factor) + (float)pixel2.red*alpha_factor;

uint8_t alpha = (float)pixel1.alpha*(1.0f - alpha_factor) + (float)pixel2.alpha*alpha_factor;

问题是将1字节整数乘以xmm / ymm中的float。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...