计算机视觉与计算摄影相关资源及高斯随机噪声生成算法
1. 高斯随机噪声生成算法
在计算机视觉和相关领域中,常常需要生成高斯随机噪声。下面是一个使用Box - Muller变换的C语言算法来生成高斯随机噪声:
double urand()
{
return ((double) rand()) / ((double) RAND_MAX);
}
void grand(double& g1, double& g2)
{
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif // M_PI
double n1 = urand();
double n2 = urand();
double x1 = n1 + (n1 == 0); /* guard against log(0) */
double sqlogn1 = sqrt(-2.0 * log (x1));
double angl = (2.0 * M_PI) * n2;
g1 = sqlogn1 * cos(angl);
g2 = sqlogn1 * sin(angl);
}
该算法分为两个函数:
- urand() :该函数用于生成一个范围在[0, 1]之间的随机浮点数。它通过将 rand() 函数的返回值转换为 double 类型,并除以 RAND_MAX 来实现。
超级会员免费看
订阅专栏 解锁全文
14万+

被折叠的 条评论
为什么被折叠?



