gpt4 book ai didi

c++ - 行序数据到列序数据的最快转换

转载 作者:搜寻专家 更新时间:2023-10-31 01:16:26 25 4
gpt4 key购买 nike

我有一个来自 openCV 的 IplImage,它以行顺序格式存储它的数据;

图像数据存储在一个一维数组char *data中;位置 x,y 的元素由

给出
elem(x,y) = data[y*width + x] // see note at end

我想尽快将此图像与以列顺序格式存储数据的第二种图像格式相互转换;也就是

elem(x,y) = data[x*height + y]

显然,执行此转换的一种方法是通过双 for 循环简单地逐个元素。

有没有更快的方法?


注意 openCV 爱好者,elem(x,y) 的实际位置由 data + y*widthstep + x*sizeof(element) 给出,但这给出了一般概念,对于 char data sizeof(element) = 1 我们可以让widthstep = width,所以公式是准确的

最佳答案

叫做“矩阵转置”最佳方法尽量减少缓存未命中的次数,交换小块具有一个或几个缓存槽的大小。对于多级缓存,这将变得困难。 start reading here

this one is a bit more advanced

顺便说一句,网址处理“就地”换位。创建转置拷贝会有所不同(它使用两倍的缓存槽,duh!)

关于c++ - 行序数据到列序数据的最快转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com