OpenGL ES 上的图像几何重新映射
Posted
技术标签:
【中文标题】OpenGL ES 上的图像几何重新映射【英文标题】:Image Geometrical remapping on OpenGL ES 【发布时间】:2014-11-07 12:31:54 【问题描述】:我有一个在 PC 上运行并使用 OpenCV 重映射的算法。它很慢,我需要在嵌入式系统上运行它(例如这样的设备:http://www.hardkernel.com/main/products/prdt_info.php
它有 OpenGL 3.0,我想知道是否可以在 OpenGL 着色器中编写代码来进行重新映射(OpenCV 重新映射)。
我有另一个具有 OpenGL 2.0 的设备,该设备可以进行着色器编程吗?
在哪里可以了解 OpenGL 中的着色器编程?
我正在使用 Linux。
编辑 1
代码在PC上运行大约需要1分钟,在嵌入式系统上大约需要2个小时!
我需要在嵌入式系统上运行它,因此我认为使用 OpenGL 或 OpenCL(开发板有 OpenCL 1.1 驱动程序)。
什么是最好的选择?我可以使用 OpenGL 2 或 OpenGL3 吗?
【问题讨论】:
【参考方案1】:具有良好显卡(与 OpenCV 兼容)的 PC 比 Odroid 或 Banana Pi 等小型嵌入式 PC 快得多。我的意思是这些平台上的计算功率/价格或计算功率/能量较低。
如果你的算法很慢:
您确定您的图形驱动程序已正确配置为支持 OpenCV? 尝试改进您的算法。在当前的 PC 上,使用 OpenCL 很容易获得 1TFLOP,因此如果您的程序确实需要更多,您应该考虑计算机云等。检查您是否配置了适当的缓冲区类型等。OpenGL 3 允许通用着色器,但 OpenGL 2 非常不同,要使您的算法兼容一定更难或不可能。
要学习 OpenGL/GLSL,要非常小心,因为大多数页面都学习坏/旧代码。 我推荐你一本好书,比如:http://www.amazon.com/OpenGL-Shading-Language-Cookbook-Edition/dp/1782167021/ref=dp_ob_title_bk
编辑 1
OpenGL 3+ 或 OpenGL ES 3+ 具有通用着色器,可用于快速计算。所以是的,你会得到性能提升。但是这些平台上的显卡非常小/慢(通常少于 10 个内核)。不要期望在此 ODROID 上获得与在具有 500-2000 个 GPU 内核的 PC 上相同的 1 分钟结果。
OpenGL 2 有固定的管道,很难用于并行计算。
如果你真的需要使用嵌入式平台,也许你可以使用它们的云?
【讨论】:
谢谢。我可能会让它有点混乱。请查看我编辑的问题。 谢谢。在 PC 上,我没有使用 OpenGL,而只是在 CPU 上进行处理。我想在这些设备上使用 OprnGL 或 OpenCL 来进行快速处理并将处理减少到可比较的程度。 120 分钟到 1 分钟差别很大!你检查过这段时间丢失在哪里了吗?内存访问(缓存或分配)、S.O.等 主要在opencv的remap函数中以上是关于OpenGL ES 上的图像几何重新映射的主要内容,如果未能解决你的问题,请参考以下文章