Это довольно легко сделать, если вы можете писать на Python. Вот хорошая статья об использовании пакета компьютерного зрения с открытым исходным кодом для определения общей размытости изображения:
https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/
Вот быстрый скрипт, который будет сортировать изображения в размытые каталоги / каталоги:
#
# Sorts pictures in current directory into two subdirs, blurred and ok
#
import os
import shutil
import cv2
FOCUS_THRESHOLD = 80
BLURRED_DIR = 'blurred'
OK_DIR = 'ok'
blur_count = 0
files = [f for f in os.listdir('.') if f.endswith('.jpg')]
try:
os.makedirs(BLURRED_DIR)
os.makedirs(OK_DIR)
except:
pass
for infile in files:
print('Processing file %s ...' % (infile))
cv_image = cv2.imread(infile)
# Covert to grayscale
gray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY)
# Compute the Laplacian of the image and then the focus
# measure is simply the variance of the Laplacian
variance_of_laplacian = cv2.Laplacian(gray, cv2.CV_64F).var()
# If below threshold, it's blurry
if variance_of_laplacian < FOCUS_THRESHOLD:
shutil.move(infile, BLURRED_DIR)
blur_count += 1
else:
shutil.move(infile, OK_DIR)
print('Done. Processed %d files into %d blurred, and %d ok.' % (len(files), blur_count, len(files)-blur_count))
Ваша самая сложная задача - установить Python и opencv в вашу систему. Google python3 для вашей ОС, и как установить pip вместе с ним, вы можете использовать pip3 для установки opencv. Или есть несколько предварительных сборок python + opencv. Вам не нужна новейшая версия opencv, чтобы запустить этот скрипт.
Сценарий прекрасно работает, и он измеряет общую размытость изображения. Это хорошо для большинства фотографий. Тем не менее, общее измерение изображения означает, что эти фоновые фотографии с одним лицом и боке будут помещены в размытый каталог, и вам придется отсортировать их обратно. В любом случае, вы должны пройтись по размытым фотографиям, чтобы убедиться, что там нет неуместных хранителей.
Я надеюсь, что этот скрипт ускоряет ваш рабочий процесс.
Оптимальное улучшение в этом сценарии - включить обнаружение лиц, вычислить размытость на самых больших лицах на фотографии и использовать эти значения для порога размытости, по умолчанию применяя общую размытость, если лица не обнаружены. Я оставлю это улучшение на ваше усмотрение!