|
|
|
@ -63,6 +63,10 @@ struct FastNlMeansMultiDenoisingInvoker { |
|
|
|
|
|
|
|
|
|
void operator() (const BlockedRange& range) const; |
|
|
|
|
|
|
|
|
|
void operator= (const FastNlMeansMultiDenoisingInvoker& invoker) { |
|
|
|
|
CV_Error(CV_StsNotImplemented, "Assigment operator is not implemented"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
int rows_; |
|
|
|
|
int cols_; |
|
|
|
@ -175,16 +179,11 @@ void FastNlMeansMultiDenoisingInvoker<T>::operator() (const BlockedRange& range) |
|
|
|
|
int row_from = range.begin(); |
|
|
|
|
int row_to = range.end() - 1; |
|
|
|
|
|
|
|
|
|
int dist_sums_array[temporal_window_size_ * search_window_size_ * search_window_size_]; |
|
|
|
|
Array3d<int> dist_sums(dist_sums_array,
|
|
|
|
|
temporal_window_size_, search_window_size_, search_window_size_); |
|
|
|
|
Array3d<int> dist_sums(temporal_window_size_, search_window_size_, search_window_size_); |
|
|
|
|
|
|
|
|
|
// for lazy calc optimization
|
|
|
|
|
int col_dist_sums_array[ |
|
|
|
|
template_window_size_ * temporal_window_size_ * search_window_size_ * search_window_size_]; |
|
|
|
|
|
|
|
|
|
Array4d<int> col_dist_sums(col_dist_sums_array,
|
|
|
|
|
template_window_size_, temporal_window_size_, search_window_size_, search_window_size_); |
|
|
|
|
Array4d<int> col_dist_sums( |
|
|
|
|
template_window_size_, temporal_window_size_, search_window_size_, search_window_size_); |
|
|
|
|
|
|
|
|
|
int first_col_num = -1; |
|
|
|
|
|
|
|
|
@ -263,7 +262,7 @@ void FastNlMeansMultiDenoisingInvoker<T>::operator() (const BlockedRange& range) |
|
|
|
|
// calc weights
|
|
|
|
|
int weights_sum = 0; |
|
|
|
|
|
|
|
|
|
int estimation[channels_count_];
|
|
|
|
|
int estimation[3];
|
|
|
|
|
for (int channel_num = 0; channel_num < channels_count_; channel_num++) { |
|
|
|
|
estimation[channel_num] = 0; |
|
|
|
|
} |
|
|
|
|