Добавьте шум к кадру, используя полярный метод в C - PullRequest
0 голосов
/ 05 февраля 2019

Я написал программу, которая может читать оригинальный YUV-файл и добавлять гауссовский шум со средним значением 0 к модифицированному.проблема в том, что я не знаю, как реализовать функцию Polar в основной функции, когда я пытался всегда генерировать ошибки.У кого-нибудь есть идеи, чтобы решить мою проблему.спасибо

void polar(double *x1, double *x2)
{
   double u, v, q, p;

   do {
      u = 2.0 * random() - 1;
      v = 2.0 * random() - 1;
      q  = u * u + v * v;
   } while (q >= 1.0 || q == 0.0);

   p = sqrt(-2 * log(q) / q);
   *x1 = u * p;
   *x2 = v * p;
}

int main(void) 
{
    FILE *fp1, *fp2;
    int a;
    double a1,a2;
    fp1= fopen("FOOTBALL_352x288_30_orig_01.yuv","rb");
    fp2= fopen("FOOTBALL_352x288_30_orig_02.yuv","wb");


    int tab[10]="";

    while(!feof(fp1))
    {
        fread(tab,sizeof(int),1,fp1);
        fwrite(tab,sizeof(int),1,fp2);
    }      

    fclose(fp1);
    fclose(fp2);

    return 0;
}

1 Ответ

0 голосов
/ 05 февраля 2019

Функция polar ожидает, что в качестве входов используется адрес двух двойников.Если вы объявили a1 и a2 для передачи в полярный режим, вы можете назвать polar (& a1, & a2) .Функция polar будет устанавливать a1 и a2 к тому времени, когда она вернется.Чтобы проверить это, попробуйте распечатать эти переменные до и после вызова функции polar .

...