gpt4 book ai didi

assembly - 膨胀或腐 eclipse 算法是否可以不使用单独的数组?

转载 作者:行者123 更新时间:2023-12-02 17:58:18 25 4
gpt4 key购买 nike

我有一个作业,要为膨胀和腐 eclipse 函数编写内联 x86 汇编代码。我的问题是我们没有得到一个单独的数组,并且无法触及程序的非 asm 部分。所以我需要找到一种方法来改变原始图像而不将其复制到其他地方。但如果我这样做,该过程就会受到影响,因为后面的像素会考虑其相邻像素的更改值而不是原始像素,并且整个图像会变成黑色或白色。

以下是其中一项功能。我这样写是为了让我提到的限制很清楚,而不是因为我希望有人为我写它。我无法在 asm block 内初始化一个单独的数组,并且其余代码也没有给我一个数组。

void dilation(int image_size, int filter_size, short* image_org) {
__asm {
MOV EBX, image_org
//I can only write code in here
}
}

编辑:我认为我应该将每个像素的新值插入堆栈,只有在完成整个图像的遍历后,才将它们放回数组中。

最佳答案

通过保留要修改的几个像素,您可以轻松地进行 3x1 扩张。

假设三个连续的像素值 A、B、C。假设您已经修改了 A,并且正在忙于扩大 B(即您将用 max(A, B, C) 替换 B)。您可以使用操作顺序

SavedA= SavedB
SavedB= B
B= max(SavedA, SavedB, C)

从左到右循环。 (我将行中第一个和最后一个像素的处理留给您作为练习。)

您可以将其推广到 1x3 膨胀,并通过连续应用 3x1 和 1x3 来推广到 3x3 膨胀。与侵 eclipse 类似。

对于 (2n+1)x1,重复 n 次。

这也适用于灰度图像。您还可以适应打包的二进制格式。

关于assembly - 膨胀或腐 eclipse 算法是否可以不使用单独的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75121918/

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