Fix spatial denoising

main
Haohua-Lyu 3 years ago
parent 50a4ffeb3e
commit 71e5f22972

@ -355,7 +355,7 @@ namespace hdrplus
std::vector<cv::Mat> merge::spatial_denoise(std::vector<cv::Mat> tiles, int num_alts, std::vector<float> noise_variance, float spatial_factor) { std::vector<cv::Mat> merge::spatial_denoise(std::vector<cv::Mat> tiles, int num_alts, std::vector<float> noise_variance, float spatial_factor) {
double spatial_noise_scaling = (TILE_SIZE * TILE_SIZE * (1.0 / 16)) * spatial_factor; double spatial_noise_scaling = ((1.0 / 16)) * spatial_factor;
// Calculate |w| using ifftshift // Calculate |w| using ifftshift
cv::Mat row_distances = cv::Mat::zeros(1, TILE_SIZE, CV_32F); cv::Mat row_distances = cv::Mat::zeros(1, TILE_SIZE, CV_32F);
@ -372,7 +372,7 @@ namespace hdrplus
// Loop through all tiles // Loop through all tiles
for (int i = 0; i < tiles.size(); ++i) { for (int i = 0; i < tiles.size(); ++i) {
cv::Mat tile = tiles[i]; cv::Mat tile = tiles[i];
float coeff = noise_variance[i] / num_alts * spatial_noise_scaling; float coeff = noise_variance[i] / (num_alts + 1) * spatial_noise_scaling;
// Calculate absolute difference // Calculate absolute difference
cv::Mat complexMats[2]; cv::Mat complexMats[2];
@ -386,7 +386,6 @@ namespace hdrplus
cv::merge(std::vector<cv::Mat>{scale, scale}, scale); cv::merge(std::vector<cv::Mat>{scale, scale}, scale);
denoised.push_back(tile.mul(scale)); denoised.push_back(tile.mul(scale));
} }
return denoised; return denoised;
} }

Loading…
Cancel
Save