当前位置:   article > 正文

CUDA编程实例:图像处理的归一化相关系数计算_图像 相关系数csdn

图像 相关系数csdn

图像处理中,我们可以通过计算两个相同大小、灰度图像的归一化相关系数判断图像的相关性大小。其取值范围在[-1,1]之间,-1表示图像不相关,1表示图像完美相关。

该方法在模板匹配中经常使用,通过计算模板图像与输入图像子集的相关性信息,判断图像中是否包含该模板,如果在某个位置处强相关,则返回匹配位置。只适合图像内容未发生旋转,形变,缩小放大等情况。即只有平移。

归一化互相关的流行源于其幅度的独立性(amplitude independence),这就意味着即使两幅图像的亮度不同,但对于其统计信息也是稳定的。

来看看公式:

\gamma(s,t) = \frac{\sum_x \sum_y[I(x,y)-\bar{I}(x,y)][T(x-s,y-t)-\bar{T}] }{\sqrt{\sum_x \sum_y[I(x,y)-\bar{I}(x,y)]^2 \sum_x \sum_y[T(x,y)-\bar{T}(x,y)]^2}}

 其中I和T,表示图像和模板,\bar{T}为模板像素的品均值,\bar{I}为图像中对应模板范围的像素的平均值。

归一化互相关计算的优化方案,为了避免平均值计算,采用加和手法预先求出统计量,一下是计算公式。

\frac{N\sum{IT}-\sum{I}\sum{T}}{\sqrt{(N\sum{I^2-(\sum{I})^2})( N\sum{T}^2-(\sum{T})^2)}}

这里使用sum(T)/N 和sum(I)/N 代替\bar{T}和\bar{I},并在分子分母同时乘N,产生一个完全使用加和来表示的系数。

所以预先要求的就是图像和模板的统计量SumI,SumT,SumIT,sumI^2,sumT^2

使用上述值计算分子分母即可。

一般情况下模板是固定的,所以可以预先计算模板的统计量和分母的子表达式。

一般采用双精度计算,此外乘以平方根的倒数,比除以平方根运算更快。

这样算法只需要计算3个值即可,SumI,SumIT,SumI^2。

在CUDA流处理器中,整数乘加运算通常使用FMA(Fused Multiply-Add)指令。FMA指令执行一个乘法操作,然后将结果与一个累加操作相结合,以单一的指令完成这两个操作。这有助于提高性能,减少指令的数量。

浮点数乘加运算也可以通过FMA指令来实现,其中操作数是浮点数。这使得在单个指令中执行乘法和加法,从而提高了执行效率。

cuda中提供了以下几种将数据复制到gpu中的方法。

1.使用全局内存或纹理内存存储图像或者模板,(较大一些)

2.使用常量内存存储模板或者其他可能的特定模板参数(可达64kb)

3.使用共享内存来保存图像和或模板值以备重用(较小)。

未完结--等后续

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/504425
推荐阅读
相关标签
  

闽ICP备14008679号