我使用Python,并且有一个数据集,其中包含一些图像,并且练习中显示的内容如下:
现在,如何确定图像的亮度/饱和度是较高/较低?
答案 0 :(得分:2)
一个简单的想法是计算HSV color space中的饱和度和值(亮度)通道的均值。然后,只需为两个值设置一些阈值即可区分这两个类。
这里的Lenna具有高亮度和低饱和度:
这里的Lenna具有低亮度和高饱和度:
一些代码段可以使用OpenCV来完成上述任务:
import cv2
# Read images
img_hv_ls = cv2.imread('Lenna_high_brightness_low_saturation.png')
img_lv_hs = cv2.imread('Lenna_low_brightness_high_saturation.png')
# Calculate means in HSV color space
mean_hv_ls = cv2.mean(cv2.cvtColor(img_hv_ls, cv2.COLOR_BGR2HSV))
mean_lv_hs = cv2.mean(cv2.cvtColor(img_lv_hs, cv2.COLOR_BGR2HSV))
# Put information on images
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(img_hv_ls, 'Mean brightness: ' + '{:.4f}'.format(mean_hv_ls[2]/255), (10, 30), font, 1, (0, 0, 0), 1)
cv2.putText(img_hv_ls, 'Mean saturation: ' + '{:.4f}'.format(mean_hv_ls[1]/255), (10, 60), font, 1, (0, 0, 0), 1)
cv2.putText(img_lv_hs, 'Mean brightness: ' + '{:.4f}'.format(mean_lv_hs[2]/255), (10, 30), font, 1, (255, 255, 255), 1)
cv2.putText(img_lv_hs, 'Mean saturation: ' + '{:.4f}'.format(mean_lv_hs[1]/255), (10, 60), font, 1, (255, 255, 255), 1)
cv2.imshow('High brightness, low saturation', img_hv_ls)
cv2.imshow('Low brightness, high saturation', img_lv_hs)
cv2.waitKey(0)
cv2.destroyAllWindows()
那将是输出:
现在,检查图像的代表性(子)集,并从饱和度和亮度方法中得出适当的阈值,以进行实际的图像分类。
希望有帮助!