我在Python中使用我的卷积算法,我注意到在沿着原始数组滑动过滤器并更新其中的条目时,结果显得非常模糊:
然而,如果我创建了一个全新的数组,那么它的水平与原始数据类似。
我的愚蠢问题 - 后者是编写此算法的正确方法(我猜测它是什么)?在前者中丢失了什么 - 或者更确切地说,有一种方法可以编写这个算法,这样我就不必初始化另一个整个数组并吞噬内存,而是将结果存储在原始数组中。 ..?
答案 0 :(得分:4)
您应该使用第二个数组来存储结果。否则,您将大部分计算基于已更改的像素,而不是基于图像中的原始像素。这就是为什么你的第一个例子变化超出预期的原因。
从技术上讲,可以通过使用线程在没有第二个数组的情况下执行此操作。你需要拥有与像素一样多的线程。然后每个线程计算一个像素并将其存储回图像中。但是,这将比仅使用第二个数组占用更多内存,并且您必须仔细同步事物以避免修改计算所需的像素。而且,它会变慢。