External denoiser based on noise estimation and moving object detection.

Improved the existing external denoiser in WebRTC: the filter strength
is adaptive based on the noise level of the whole frame and the moving
object detection result. The adaptive filter effectively removes the
artifacts in previous version, such as trailing and blockiness on moving
objects.
The external denoiser is off by default for now.

BUG=

Review URL: https://codereview.webrtc.org/1822333003

Cr-Commit-Position: refs/heads/master@{#12198}
This commit is contained in:
jackychen
2016-04-01 07:46:58 -07:00
committed by Commit bot
parent 14847d15c0
commit fa0befe13b
17 changed files with 488 additions and 122 deletions

View File

@ -22,6 +22,7 @@ VPMFramePreprocessor::VPMFramePreprocessor()
spatial_resampler_ = new VPMSimpleSpatialResampler();
ca_ = new VPMContentAnalysis(true);
vd_ = new VPMVideoDecimator();
EnableDenosing(false);
}
VPMFramePreprocessor::~VPMFramePreprocessor() {
@ -115,7 +116,8 @@ const VideoFrame* VPMFramePreprocessor::PreprocessFrame(
const VideoFrame* current_frame = &frame;
if (denoiser_) {
denoiser_->DenoiseFrame(*current_frame, &denoised_frame_);
denoiser_->DenoiseFrame(*current_frame, &denoised_frame_,
&denoised_frame_prev_, 0);
current_frame = &denoised_frame_;
}