2016-08-11 7 views
-1

Ich schaute im Internet so gut wie ich hier (stackoverflow) schaute und konnte keine gute Antwort finden, wie weiß Gaußsches Rauschen Addition in meinem Qimage-Objekt zu implementieren. oder ob es eine existierende Funktion gibt, die ich benutzen kann?Weiße Gaußsche Rauschen Addition mit Qt

irgendwelche Vorschläge? Thx im Voraus

+1

Haben Sie überprüfen [diese Frage] (http://stackoverflow.com/questions/32889309/adding-gaussian-noise)? – BeyelerStudios

+1

Sie haben dies mit qt und qimage beschriftet. Darf ich fragen, was Sie im Vergleich zu anderen Containern für Pixelbilder von anderen unterscheiden? Suchst du explizit nach Teilen von qt, die das können? – Aziuth

+0

Zuerst, wenn es etwas in Qt-Tools gibt, die es tun können, wäre das wunderbar. Zweitens habe ich Lösungen gefunden, die in Sprachen, die ich nicht verstehe, so dass ich nichts von ihnen verstehen kann. –

Antwort

0

Der folgende Code hat mir geholfen, eine Menge:

#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); 
}