我在opencl中编写了一个正向小波变换。用opencl编写的小波变换:在图像中看到伪像
基本算法是将图像分成128x8的图块;左边的两列和右边的两列被视为边界列。
瓷砖数据被移动到本地存储器中,被转换,并且非边界列被存储在目的地中。
我在瓷砖的水平边界处看到图像伪影,我无法弄清楚是什么导致了它们。它们发生在第四和第124列,即不在边界上的第一个和最后一个偶数列。
这个项目是开源:
https://github.com/boxerab/roger
依赖关系:的Visual Studio 2012,英特尔OpenCL的SDK和OpenCV
通常,当我在OpenCL数据中看到工件时,这是由于出界限制访问问题。确保所有索引都正确完成。你正在测试CPU还是GPU?如果是GPU,请尝试使用Intel CPU,查看代码是否崩溃,这是OOB的一个好兆头。边界数的值是多少? – Austin 2014-08-27 20:09:48
谢谢,奥斯汀。我的源代码是在采样器中设置了CLK_ADDRESS_MIRRORED_REPEAT的opencl图像。所以,对于输入来说越界越好。对于本地内存和输出,我非常确定没有OOB问题,但我必须仔细检查。我已经测试了英特尔CPU和AMD GPU,并且我看到问题 – Jacko 2014-08-27 20:13:44
边界数字来自图像,但它们只是部分转换(这是一个卷积类型的问题),因此没有写入目标。 – Jacko 2014-08-27 20:15:35