【问题标题】:White gaussian noise addition using Qt使用 Qt 添加高斯白噪声
【发布时间】:2016-08-11 07:31:40
【问题描述】:

我查看了互联网以及查看了此处 (stackoverflow),但找不到关于如何在我的 qimage 对象中添加高斯白噪声的好答案。或者是否有我可以使用的现有功能?

有什么建议吗? 提前谢谢

【问题讨论】:

  • 你检查this question了吗?
  • 你用 qt 和 qimage 标记了这个。请问您认为这些与其他像素图像容器相比有什么不同?您是否正在明确寻找可以做到这一点的 qt 部分?
  • 首先,如果 qt 工具中有一些东西可以做到这一点,那就太好了。其次,我遇到了一些我不懂的语言的解决方案,所以我无法理解它们的任何内容。

标签: c++ qt gaussian qimage gaussianblur


【解决方案1】:

以下代码对我帮助很大:

#include <stdlib.h>
#include <math.h>
#include <time.h>


float gauss_rand(float mean,float stdev)

{
int i;
const int ORDER=2*12; /* 12,24,36 etc. due to del^2/12 */
const double dev_norm=1.4142136; /* sqrt(ORDER/12) */
double rndno;

rndno=-(ORDER>>1);
for(i=0;i<ORDER;i++) {

    rndno+=(double)(rand()/(RAND_MAX+1.0));
}

rndno*=stdev/dev_norm;
rndno+=mean;
return((float)rndno);
}

void add_gaussian_noise(float **orig,int Ni,int Nj,float **noisy,float mean,float stdev)

{
        int i,j;
        static int kilroy=0;
    unsigned int seed;

    if(!kilroy) {
        kilroy=1;

    seed=(unsigned)time( NULL );

    // uncomment for the same noise process
//  seed=0;
    srand(seed);
}

for(i=0;i<Ni;i++)
    for(j=0;j<Nj;j++)
        noisy[i][j]=orig[i][j]+gauss_rand(mean,stdev);
}

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 2015-02-04
    • 2013-10-14
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    相关资源
    最近更新 更多