Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何在汇编中转置图像?_Image Processing_Assembly_X86_Masm - Fatal编程技术网

Image processing 如何在汇编中转置图像?

Image processing 如何在汇编中转置图像?,image-processing,assembly,x86,masm,Image Processing,Assembly,X86,Masm,我正在做一个项目,我需要根据图像的行和列计算一些东西。很容易获取图像行的位。然而,为了获取每列的位,我需要对图像进行转置,使列变成行 我正在使用BMP图片作为输入。BMP图片中有多少行X列?如果可能的话,我也希望看到伪代码或其他东西。不同。BMP可以有任何大小(上限),也可以有不同的格式(32位RBG、24位RBG、16位调色板、8位调色板、1位单色),等等 与大多数其他问题一样,最好先用您选择的高级语言编写解决方案,然后根据需要将部分或全部转换为ASM 但是,是的,对于这个任务来说,最简单的形

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


我正在使用BMP图片作为输入。BMP图片中有多少行X列?如果可能的话,我也希望看到伪代码或其他东西。

不同。BMP可以有任何大小(上限),也可以有不同的格式(32位RBG、24位RBG、16位调色板、8位调色板、1位单色),等等

与大多数其他问题一样,最好先用您选择的高级语言编写解决方案,然后根据需要将部分或全部转换为ASM


但是,是的,对于这个任务来说,最简单的形式是32位RGB格式,以90度的倍数旋转就像旋转一个二维数组。

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

我认为使用正确的算法比使用汇编或C更重要。旋转90度或换位实际上归结为移动内存。要考虑的最大问题是缓存错误的影响,如果你使用这样一个幼稚的算法:

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

对于(int x=0;xSo,我很好奇,你为什么要在汇编中做这样的事情?因为这是我在汇编中学习的一门课程的一个项目;)你应该在这样的问题中添加家庭作业标签,但这似乎很合理,因为这是一个高层次的问题,而且你没有要求我们为你做家庭作业。@WhirlWind是的。我想加上这个标签,但我不是在问这个项目的任何问题。非常感谢Jason。我编辑了我的问题,并将旋转改为换位。我也同意效率。我看看能找到什么,谢谢你。我有一个分辨率为256x256、分辨率为96 dpi的BMP,位深度为24。我如何知道图片的RGB格式?是位深吗?是的。24位=r8,g8,b8。这样的BMP不支持透明AFAIK,这就是为什么它是24位而不是32位的原因。这是一个24位的RGB。