use*_*942 5 opengl image-processing glsl
我注册了着色器课程,对计算机视觉和图像处理感兴趣。我想知道如何将 GLSL 着色器知识与图像处理相结合?如果我使用 GLSL 实现图像处理算法,我会得到什么?
第一个明显的答案是你获得了并行性。现在,为什么使用 GLSL 而不是更灵活的 CUDA?GLSL 不要求您拥有 NVIDIA 显卡,因此它是一种更加便携的解决方案(不过您仍然可以选择 OpenCL)。
通过并行性你能得到什么?大多数时候,您可以独立处理像素。例如,增加图像的对比度通常需要循环所有像素并对像素值应用仿射变换。如果每个像素都由单独的线程处理,那么您不再需要执行此循环:您只需对四边形进行评估,然后应用一个像素着色器来读取当前光栅化点处的纹理,然后输出到渲染目标(或屏幕)转换后的像素值。
缺点是您的数据需要驻留在 GPU 上:您需要将所有图像传输到 GPU,这可能需要一些时间,并且可能会使通过并行化获得的加速变得毫无用处。因此,当要进行的操作是计算密集型时,或者当整个管道可以保留在 GPU 上时(例如,如果目标是仅在屏幕上显示修改后的图像,则可以节省将图像传回CPU)。