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 I';我正在尝试在ASM中垂直翻转图像_Image Processing_Assembly_Arm - Fatal编程技术网

Image processing I';我正在尝试在ASM中垂直翻转图像

Image processing I';我正在尝试在ASM中垂直翻转图像,image-processing,assembly,arm,Image Processing,Assembly,Arm,我尝试使用以下代码垂直翻转图像: flipV: ldr r0, =pic2 ldr r7, =#0x06800000 ;vram ldr r1, =#0x18000 ;point do last byte ldr r6, =#0x18000 ;counter mov r5,#0 loop: ldr r4,[r0,r5] str r4,[r7,r1] add r5,r5,#1 sub r1, r1,#1 subs r6, r6,#1 bne loop bx lr 他获取最后一

我尝试使用以下代码垂直翻转图像:

flipV:

ldr r0, =pic2 
ldr r7, =#0x06800000 ;vram

ldr r1, =#0x18000 ;point do last byte
ldr r6, =#0x18000 ;counter
mov r5,#0

loop:

ldr r4,[r0,r5]
str r4,[r7,r1]

add r5,r5,#1
sub r1, r1,#1

subs r6, r6,#1
bne loop
bx    lr
他获取最后一个字节并与first交换,最后一个-1与first+1交换,依此类推

我得到了翻转图像,但它被扭曲了。前


您的代码一次加载并存储4个字节。假设一个像素实际上是4字节,请尝试:

flipV:

ldr r0, =pic2
ldr r7, =#0x06800000 ;vram

ldr r1, =#0x17ffc ;point to last pixel
ldr r6, =#0x18000 ;counter
mov r5, #0

loop:

ldr r4, [r0, r5]
str r4, [r7, r1]

add r5, r5, #4
sub r1, r1, #4

subs r6, r6, #4
bne loop
bx lr

此外,这不是垂直翻转,而是图像的180度旋转。

根据输出文件的外观,我将假设图像每像素存储1字节,RGB平面单独存储

一次加载和存储4个字节,当您反转图像中32位字的顺序时,您没有反转字中字节的顺序,这会导致失真,失真发生在4像素宽的频带中

这意味着像素按以下顺序开始:

ABCD EFGH IJKL MNOP
MNOP IJKL EFGH ABCD
PONM LKJI HGFE DCBA
但最终的顺序是:

ABCD EFGH IJKL MNOP
MNOP IJKL EFGH ABCD
PONM LKJI HGFE DCBA
但您希望它们按以下顺序排列:

ABCD EFGH IJKL MNOP
MNOP IJKL EFGH ABCD
PONM LKJI HGFE DCBA
在存储以下内容之前,请尝试使用
rev
操作码反转字节顺序:

ldr r4, [r0, r5]
rev r4, r4
str r4, [r7, r1]
您还需要根据Scott的回答每次递增/递减4