You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							944 B
						
					
					
				
			
		
		
	
	
							37 lines
						
					
					
						
							944 B
						
					
					
				#include "utils.h"
 | 
						|
#include <stdio.h>
 | 
						|
#include <algorithm>
 | 
						|
#include <cmath>
 | 
						|
// calculate score based on laplacians in one area
 | 
						|
uint16_t get_lapmap_one(const int16_t *lap, int x_pitch, int y_pitch) {
 | 
						|
  const int size = x_pitch * y_pitch;
 | 
						|
  // avg and max of roi
 | 
						|
  int16_t max = 0;
 | 
						|
  int sum = 0;
 | 
						|
  for (int i = 0; i < size; ++i) {
 | 
						|
    const int16_t v = lap[i % x_pitch + (i / x_pitch) * x_pitch];
 | 
						|
    sum += v;
 | 
						|
    if (v > max) max = v;
 | 
						|
  }
 | 
						|
 | 
						|
  const int16_t mean = sum / size;
 | 
						|
 | 
						|
  // var of roi
 | 
						|
  int var = 0;
 | 
						|
  for (int i = 0; i < size; ++i) {
 | 
						|
    var += std::pow(lap[i % x_pitch + (i / x_pitch) * x_pitch] - mean, 2);
 | 
						|
  }
 | 
						|
 | 
						|
  const float fvar = (float)var / size;
 | 
						|
  return std::min(5 * fvar + max, (float)65535);
 | 
						|
}
 | 
						|
 | 
						|
bool is_blur(const uint16_t *lapmap, const size_t size) {
 | 
						|
  float bad_sum = 0;
 | 
						|
  for (int i = 0; i < size; i++) {
 | 
						|
    if (lapmap[i] < LM_THRESH) {
 | 
						|
      bad_sum += 1 / (float)size;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return (bad_sum > LM_PREC_THRESH);
 | 
						|
} |