Следующий код помог мне много:
#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);
}
Вы проверили [этот вопрос] (http://stackoverflow.com/questions/32889309/adding-gaussian-noise)? – BeyelerStudios
Вы отметили это с помощью qt и qimage. Могу ли я спросить, что вы думаете об этом, по сравнению с другими контейнерами для пиксельных изображений? Вы явно смотрите на части qt, которые могут это сделать? – Aziuth
Сначала, если есть что-то в qt-инструментах, которые могут сделать это, что было бы замечательно. Во-вторых, я столкнулся с решениями, которые на языках, которые я не понимаю, поэтому я ничего не могу понять от них. –