【发布时间】:2019-02-05 15:19:20
【问题描述】:
我编写了一个程序,它可以读取原始 YUV 文件并将均值为 0 的高斯噪声添加到修改后的文件中。 问题是我不知道如何在 main 函数上实现 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;
}
【问题讨论】:
-
你没有在代码中的任何地方调用
polar。 -
当前您将 OOTBALL_352x288_30_orig_01.yuv 复制到 FOOTBALL_352x288_30_orig_02.yuv 中,假设输入文件包含 int 的二进制表示)。我鼓励你不要使用 feof 而是检查
fread的结果 -
问题是我不知道在哪里以及如何调用
polar代码 -
问题是我们不知道你想做什么以及文件包含什么。还要注意您阅读 int (来自二进制)和 polar 使用 float
-
我要做的是从 YUV 视频序列中读取帧并向帧添加噪声(均值为 0 的高斯噪声)。使用来自 ftp.tnt.uni-hannover.de/pub/svc/testsequencesFOOTBALL_352x288_30_orig_01_yuv 的 YUV 序列(352x288 像素, 30Hz 帧率, 4:2:0)
标签: c video encoding frame yuv