Javascript 什么';这个顺序视频帧降噪功能有什么问题?

Javascript 什么';这个顺序视频帧降噪功能有什么问题?,javascript,Javascript,其思想是通过利用序列信息来减少视频中的压缩噪声。这意味着要记录视频的过去几帧,观察每个像素与其最近的前几帧之间的差异,如果像素相似,则将其颜色与该位置的前几帧像素平均 问题是,在平均步骤中,正如您将在下面的代码和我将在下面发布的日志中看到的那样,应该将最近帧的颜色通道值相加,然后除以计数的值不是相加,而是在除以计数时减半(2,当前) 我犯了什么错误?我该如何纠正 该示例目前无法作为StackOverflow示例正常运行,因为它涉及到触发CORS错误的getImageData,我不知道有哪个视频

其思想是通过利用序列信息来减少视频中的压缩噪声。这意味着要记录视频的过去几帧,观察每个像素与其最近的前几帧之间的差异,如果像素相似,则将其颜色与该位置的前几帧像素平均

问题是,在平均步骤中,正如您将在下面的代码和我将在下面发布的日志中看到的那样,应该将最近帧的颜色通道值相加,然后除以计数的值不是相加,而是在除以计数时减半(2,当前)

我犯了什么错误?我该如何纠正


该示例目前无法作为StackOverflow示例正常运行,因为它涉及到触发CORS错误的
getImageData
,我不知道有哪个视频源会提供带有
Access Control Allow Origin“*”
头的视频


视频/画布演示1
身体{
背景:灰色;
}
#c{
位置:绝对位置;
排名:0;
底部:0;
左:0;
右:0;
不透明度:1;
}
#c2{
位置:绝对位置;
排名:0;
底部:0;
左:0;
右:0;
不透明度:0;
}
#五{
位置:绝对位置;
最高:0%;
左:0%;
不透明度:0.1;
}
设lastFrames=[];
常量编辑=(c、cw、ch、c2)=>{
让部分=0.7;
cw=数学四舍五入(cw*部分);
ch=数学四舍五入(ch*部分);
设imageData=c.getImageData(0,0,cw,ch);
lastFrames.unshift(图像数据);
lastFrames=lastFrames.slice(0,2);
设current=imageData.data;
让bufferData=[];
lastFrames.forEach(frame=>{
设data=frame.data;
对于(设i=0;i{
如果(暂停| |结束)返回false;
c、 绘图图像(v,0,0,w,h);
编辑(c、w、h、c2)
window.requestAnimationFrame(()=>{
图纸(v、c、w、h、c2);
});
}
document.addEventListener('DOMContentLoaded',function(){
var v=document.getElementById('v');
var canvas=document.getElementById('c');
var context=canvas.getContext('2d');
var canvas2=document.getElementById('c2');
var context2=canvas2.getContext('2d');
v、 addEventListener('play',function(){
var cw=v.videoWidth;
var ch=垂直高度;
控制台日志(cw、cw、ch、ch)
canvas.width=cw;
canvas.height=ch;
canvas2.width=cw;
canvas2.height=ch;
绘制(此、上下文、cw、ch、上下文2);
//反转(上下文、cw、ch);
},假);
},假);