gpt4 book ai didi

image-processing - 如何在 Assembly 中转置图像?

转载 作者:行者123 更新时间:2023-12-04 15:37:43 25 4
gpt4 key购买 nike

我正在做一个项目,我需要根据图像的行和列计算一些东西。获取图像行的位很容易。但是,要获取每一列的位,我需要转置图像,使列变为行。

我使用 BMP 图片作为输入。 BMP图片中有多少行X列?如果可能的话,我也想查看伪代码或其他内容。

最佳答案

听起来您想要执行与旋转略有不同的矩阵转置。在旋转中,行可能会变成列,但行或列将根据旋转方向以相反的顺序排列。换位保持行和列的原始顺序。

我认为使用正确的算法比使用汇编还是仅使用 C 重要得多。旋转 90 度或换位实际上归结为只是移动内存。如果您使用这样的简单算法,需要考虑的最重要的事情是缓存未命中的影响:

for(int x=0; x<width; x++)
{
for(y=0; y<height; y++)
out[x][y] = in[y][x];
}

这将导致大量缓存未命中,因为您在内存中经常跳来跳去。使用基于块的方法更有效。谷歌的“缓存高效矩阵转置”。

您可能会有所收获的一个地方是使用 SSE 指令一次移动多个数据。这些可用汇编语言和 C 语言。另请查看 this link .大约一半他们有一个关于计算快速矩阵转置的部分。

编辑:
我刚刚看到你的评论,你是在为一个汇编类(class)做这件事,所以你可能会忽略我说的大部分内容。我假设您在使用汇编后希望获得最佳性能。

关于image-processing - 如何在 Assembly 中转置图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2884304/

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