#!/usr/bin/env python3 import cv2 import numpy as np from argparse import ArgumentParser class imgrate: def __init__(self, image=None): self.image = image def laplacian_variance(self): return cv2.Laplacian(self.image, cv2.CV_64F).var() def fdibm(self): F = np.fft.fft2(self.image) Fcentered = np.fft.fftshift(F) Fabs = np.abs(Fcentered) Fmax = Fabs.max() Th = np.count_nonzero(Fabs > Fmax/1000) return Th / (F.shape[0] * F.shape[1]) if __name__ == '__main__': ap = ArgumentParser() ap.add_argument('images', type=str, nargs='+', help='') args = ap.parse_args() image = cv2.imread(args.images[0]) grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) print(imgrate(grayscale).fdibm())