最近在学习,利用CUDA加速图像处理方面知识.
下面主要介绍codeproject上的一个项目例子.利用cuda进行图像滤波处理.
网址:http://www.codeproject.com/Articles/206036/Image-Filters-using-CPU-and-GPU
其处理流程如下:
其中,也可以从视频文件中读取数据,进行处理.
主要类图如下所示:
ISingleImageFilter是抽象类,提供接口,SingleImageFilter实现抽象类的基类,增加一些属性成员变量.
利用虚函数实现多态,通过指向基类的指针调用不同子类的函数实现.
思考点:
1).其类体的设计,以及类之间的继承关系,比较好.
利用虚函数来实现不同的滤波操作,实现cpu,gpu,gpu上是否使用纹理等不同版本的滤波操作.
2).基于cuda的滤波实现,利用内核函数入口的指针,分离内核函数的实现,便于利用nvcc来编译内核函数.
3).基于cuda的滤波的优化扩展,只需修改其内核函数的实现,以及相应的指针即可.
4).更多滤波操作的扩展,只需继承SingleImageFilter类,并实现虚函数FilterImage(char *imageData)即可.
后期工作:
1).针对不同的滤波操作,在cuda实现,提供其优化版本.
2).新建MultiImageFilter接口,使其可以让Multi Image一起进行滤波操作.