Update Sorter.py

BlurEstimatorSubprocessor now uses the full aligned image for sharpness estimation instead of the masked image
estimate_sharpness now calculates the variance of the laplacian operator. see here: https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/
This commit is contained in:
hexa6six 2019-03-12 19:27:00 +01:00 committed by GitHub
commit 3485c49e95
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -21,17 +21,8 @@ def estimate_sharpness(image):
if image.ndim == 3: if image.ndim == 3:
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
sharpness = 0 return cv2.Laplacian(image, cv2.CV_64F).var()
for y in range(height):
for x in range(width-1):
sharpness += abs( int(image[y, x]) - int(image[y, x+1]) )
for x in range(width):
for y in range(height-1):
sharpness += abs( int(image[y, x]) - int(image[y+1, x]) )
return sharpness
class BlurEstimatorSubprocessor(Subprocessor): class BlurEstimatorSubprocessor(Subprocessor):
@ -54,9 +45,6 @@ class BlurEstimatorSubprocessor(Subprocessor):
if dflimg is not None: if dflimg is not None:
image = cv2_imread( str(filepath) ) image = cv2_imread( str(filepath) )
image = ( image * \
LandmarksProcessor.get_image_hull_mask (image.shape, dflimg.get_landmarks()) \
).astype(np.uint8)
return [ str(filepath), estimate_sharpness( image ) ] return [ str(filepath), estimate_sharpness( image ) ]
else: else:
self.log_err ("%s is not a dfl image file" % (filepath.name) ) self.log_err ("%s is not a dfl image file" % (filepath.name) )