如何使用OpenCL处理GPU内存中总大小过大的图像
How to deal with images that are too large in total for the GPU memory using OpenCL
因此,在OpenCL中编写一个内核非常容易,它可以获取一些输入Image3D和输出Image3D,并对它们进行一些处理。只要所有的输入和输出图像都适合GPU内存,这就很容易。当然,通常情况并非如此,因为随着分辨率的提高,Image3D的大小增长得相当快。因此,假设内核需要4个输入图像和3个输出图像,那么在适合GPU的块中处理它们的最佳选项是什么。是否有一种形式的自动流/缓冲?
这里最好的意思是:1)速度快,2)用户编写的代码少(两者的良好组合)
您可以像解决2D图像一样解决3D图像的问题:使用瓦片。Photoshop在你没有足够的RAM来处理大图像时就这么做了;它会从磁盘中引入瓦片,对其进行处理,然后写出结果。在图像上迭代。对于3D,您可以使用适合GPU进行处理的3D瓦片(小立方体)。
Tile引擎可以是简单的,也可以是复杂的,这取决于要进行的图像处理的类型。此外,一些算法(如递归高斯模糊)需要访问所有源像素,因此您可能需要存储中间结果,加载更多的瓦片,并运行更多的内核来处理瓦片集。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用std::vector的OpenCL矩阵乘法
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 如何将图像数据从搜索窗口中移动到本地存储器OpenCL
- 使用 OpenCL 进行图像卷积中的参数大小无效
- 图像如何在OpenCl内核中起作用
- 如何使用OpenCL处理GPU内存中总大小过大的图像
- 为什么我的 OpenCL 3D 图像查找不起作用?
- 如何将图像从全局内存复制到openCL的本地内存