基于CUDA的Reinhard算法研究

时间:2022-10-21 09:10:25

基于CUDA的Reinhard算法研究

摘 要:Reinhard色彩迁移算法,是计算机图像领域中的一种特殊算法,输入参考图像与目标图像,经过计算输出结果。目标图像保持原有的图像特征并附加了参考图像的色彩特征。本文的研究图像间的色彩迁移Reinhard算法,研究CUDA并行运算在Reinhard算法上面的应用。

关键词:CUDA;Reinhard色彩迁移算法;研究

DOI:10.16640/ki.37-1222/t.2016.08.133

1 色彩空间[1]

色彩空间的表达形式是多样的,不同的种类的色彩空间是相同构建的,因此不同的色彩空间之间可以经过矩阵计算进行转换。

RGB色彩空间的坐标中的三个轴线分别代表(R)红、(G)绿、(B)蓝三原色,坐标轴的原点代表黑色,RGB空间可以看成一个立方体,与原点对应的立方体的点代表白色,在RGB立方体空间中所有的点分别对应不同的颜色,混合的各个分量具有一定的相关性。

lαβ空间,降低了RGB色彩通道之间的相关性,其中l表示非彩色通道, α代表的黄-蓝通道,β表示红-绿通道。Lαβ空间可以很大程度的降低色彩通道的相关性,所以我们在进行色彩迁移的时候可以利用lαβ空间进行计算操作。

2 色彩空间的转换公式[2]

将图像从RGB空间转换到lαβ空间。

经过这三个步骤就完成了从RGB空间到lαβ空间的转换。

3 色彩迁移算法―Reinhard算法说明[2]

Reinhard算法需要在lαβ色彩空间进行计算,计算过程中匹配目标图像与参考图像当中各个颜色通道的统计信息--均值与标准差,根据计算结果改变目标图像的颜色分布并与参考图像之间的颜色分布相匹配。

假设l、a、b分别是着色图像lαβ通道原有的数据,L、A、B分别是变换后得到新的源图像lαβ通道的值,ml、ma、mb和ml’、ma’、mb’分别是着色图像和源图像的三个颜色通道的均值,nl、na、nb和nl’、na’、nb’表示它们的标准方差。公式如下:

将得到的目标图像的各个像素值由lαβ色彩空间转换到RGB色彩空间,完成这个色彩迁移的过程。

4 Reinhard算法GPU并行计算研究

Reinhard算法需要在lαβ色彩空间进行计算,计算过程中匹配目标图像与参考图像当中各个颜色通道的统计信息--均值与标准差,根据计算结果改变目标图像的颜色分布并与参考图像之间的颜色分布相匹配。在该算法中需要计算机遍历图像中每个像素点,计算出每个像素点的RGB的值,以及均值与标准差。如果只利用CPU进行运算,可能运算速度会变得很慢,如果需要CPU和GPU同时进行运算,那么运算时间会变得很快,

GPU高性能CUDA编程的时候涉及到多个线程以及线程块,多个线程可以同时进行,同时遍历计算RGB的值,最后输出结果,运算的结果比单CPU的运算效果快,这也就是图形学并行计算的优势。

5 相关试验结果

参考文献:

[1]胡国飞,傅健,彭群生.自适应颜色迁移[J].计算机学报,2004,27(09):1245-1249.

[2]钟高峰.色彩迁移算法研究[D]. 广东工业大学,2008.

作者简介:邱晓朴(1991-),河北邯郸人,研究方向:计算机应用技术。

上一篇:关不住的艺术(二) 下一篇:机电一体化系统的联合仿真技术研究