Optimization 如何使用SSE2/SSE3/SSE4处理24位3通道彩色图像?
我刚开始使用SS2优化图像处理,但对于3通道24位彩色图像没有任何概念。 我的pix数据由BGR BGR BGR安排,unsigned char 8-bi,那么如果我想用SSE2/SSE3/SSE4的指令C/C++fun实现Color2Gray,我该怎么做?我的pix数据是否需要对齐(4/8/16)? 我读过一篇文章: 但它是ARGB 4通道32位彩色的,每次都精确地处理4色pix数据。 谢谢Optimization 如何使用SSE2/SSE3/SSE4处理24位3通道彩色图像?,optimization,opencv,image-processing,instructions,sse2,Optimization,Opencv,Image Processing,Instructions,Sse2,我刚开始使用SS2优化图像处理,但对于3通道24位彩色图像没有任何概念。 我的pix数据由BGR BGR BGR安排,unsigned char 8-bi,那么如果我想用SSE2/SSE3/SSE4的指令C/C++fun实现Color2Gray,我该怎么做?我的pix数据是否需要对齐(4/8/16)? 我读过一篇文章: 但它是ARGB 4通道32位彩色的,每次都精确地处理4色pix数据。 谢谢 //Assume the original pixel: unsigned char* p
//Assume the original pixel:
unsigned char* pDataColor=(unsigned char*)malloc(src.width*src.height*3);//3
//init pDataColor every pix val
// The dst pixel:
unsigned char* pDataGray=(unsigned char*)malloc(src.width*src.height*1);//1
//RGB->Gray:Y=0.212671*R+0.715160*G+0.072169*B以下是您问题的一些答案:
- 了解如何使用SSE2指令C/C++函数。这些参考资料可能会有所帮助。
- 对于对齐:是的,需要16字节对齐。当使用SSE2固有函数(SSE2/SSE3/SSE4指令C和C++函数)进行内存访问时,您应该确保内存地址是16字节对齐。如果使用MSVC,则必须使用GCC,否则将使用GCC。
- 需要对齐的原因如下:
- 对于3通道RGB转换,我不是图像处理专家,因此不能给出建议。还有一些开源图像处理库可能已经包含了您想要的代码