首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SSE2/SSE3/SSE4处理24位3通道彩色图像?

如何使用SSE2/SSE3/SSE4处理24位3通道彩色图像?
EN

Stack Overflow用户
提问于 2013-03-13 11:55:17
回答 2查看 3.5K关注 0票数 3

我刚开始用SS2优化图像处理,但是对于3通道24位的彩色图像还没有概念。我的像素数据由BGR ...,unsigned char 8-bi排列,所以如果我想用sse2/sse3/sse4的指令C/C++ fun来实现Color2Gray,我该怎么做?我的像素数据需要对齐(4/8/16)吗?我曾经读过一篇文章:http://supercomputingblog.com/windows/image-processing-with-sse/,但它是ARGB4通道32位色,每次精确处理4色像素数据。谢谢!

代码语言:javascript
复制
//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->灰色: Y=0.212671*R + 0.715160*G + 0.072169*B

EN

回答 2

Stack Overflow用户

发布于 2013-03-13 12:58:43

我在de-interleaving of 24-bit RGB pixels上有一些幻灯片,其中解释了如何使用SSE2和SSSE3来做这件事。

票数 8
EN

Stack Overflow用户

发布于 2013-03-13 12:29:33

以下是您问题的一些答案:

用于对齐的

  • :是的,16字节对齐是必需的。当使用SSE2内部函数( SSE2/SSE3/SSE4指令C/C++函数)进行内存访问时,应该确保内存地址是16字节对齐的。如果你使用的是MSVC,你将不得不使用,或者对于GCC,这将是 ((aligned (16)))。在这里可以找到为什么需要对齐的原因:Why does instruction/data alignment exist?

  • 用于3通道RGB转换,我不是图像处理专家,所以不能给出建议。还有一些开源图像处理库,其中可能已经包含了您想要的代码。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15376780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档