使用 SSE 指令进行快速图像操作?
我正在用 C 语言编写一个图形库,我想利用 SSE 指令来加速某些功能。我该怎么做呢?我正在使用 GCC 编译器,因此我可以依赖编译器内在函数。我还想知道是否应该改变存储图像数据的方式(目前我只是使用浮点数数组) - 我是否需要使用 float __attribute__ ((vector_size (16)) 类型的数组))
?
编辑:我感兴趣的图像处理/处理类型包括仿射变换、几何和频域滤波(傅立叶分析)
任何有关我应该如何使用 SSE 在 C 中进行图像处理的参考或提示将不胜感激。
谢谢
I am writing a graphics library in C and I would like to utilize SSE instructions to speed up some of the functions. How would I go about doing this? I am using the GCC compiler so I can rely on compiler intrinsics. I would also like to know whether I should change the way I am storing the image data (currently I am just using an array of floats) - do I need to use an array of type float __attribute__ ((vector_size (16)))
?
EDIT: the type of image manipulation/processing I am interested in include affine transformations, geometry, and frequency domain filtering (Fourier analysis)
Any references or tips on how I should go about using SSE for image manipulation in C would be much appreciated.
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我一直在 Microsoft Visual C++ 上使用 SSE 进行一些图像处理。我发现从一开始就对齐所有图像数据(在 Visual C++ 中使用 _aligned_malloc 和 _aligned_free 完成)是最简单的。不过,对齐确实很痛苦,这就是为什么我只使用 SSE 进行算术运算(加、减、点积等)。如果我必须做更复杂的事情,我通常只使用指针。
I've been working on some image processing with SSE on Microsoft Visual C++. I've found it's easiest to align all image data (in Visual C++ that's done with _aligned_malloc and _aligned_free) right from the start. Alignment is a real pain though, that's why I only used SSE for arithmetic operations (add, subtract, dot product, those kinds of things). If I had to do more complicated things I generally just used pointers.