Score Dimensions

Image Quality

  1. Sharpness
import cv2
import numpy as np

def calculate_sharpness(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    laplacian = cv2.Laplacian(gray, cv2.CV_64F)
    laplacian_energy = np.mean(np.square(laplacian))
    return laplacian_energy

def get_sharpness_reward(sharpness):
    if sharpness < 40:
        return 0
    elif 40 <= sharpness < 60:
        return 1
    else:
        return 1.2

# Example usage
image = cv2.imread('image.jpg')
sharpness = calculate_sharpness(image)
reward = get_sharpness_reward(sharpness)
  1. Brightness
def calculate_brightness(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return np.mean(gray)

def get_brightness_reward(brightness):
    if brightness < 80 or brightness > 200:
        return 0
    elif 80 <= brightness < 100 or 180 < brightness <= 200:
        return 1
    else:
        return 1.2

# Example usage
brightness = calculate_brightness(image)
reward = get_brightness_reward(brightness)
  1. Contrast
def calculate_contrast(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return np.std(gray)

def get_contrast_reward(contrast):
    if contrast < 30:
        return 0
    elif 30 <= contrast < 50:
        return 1
    else:
        return 1.2

# Example usage
contrast = calculate_contrast(image)
reward = get_contrast_reward(contrast)
  1. Dynamic Range