在本文中,我们将学习如何构建一个简单的模型,它使用色调饱和度值 (HSV) 颜色模型作为特征提取,opencv 进行图像处理的基础来对白天和黑夜进行分类。本教程的代码可在此处获得,https://github.com/mrsimi/cv_udacity_course/blob/master/day_night_classifier.ipynb
介绍
色调饱和度值(HSV)是RGB的替代颜色模型。色调(H)是颜色轮中的三种主色和三种次色。饱和度是颜色的纯度和强度,其越低,颜色越接近灰色。值 (V) 是指颜色的相对亮度或暗度。这些值中的每一个都有一个限制;H 从 0 到 360,S 和 V 从 0 到 100。
我们将利用颜色模型的 Value (V) 属性。决定图像亮度的图像值 (V)。这是我们要提取的特征。然后我们将设置一个阈值,可以将白天图像与夜间图像分开。
虽然我们可以设置一个特定的阈值,但我们尝试使用训练图像,通过基本推导找到一个最佳阈值。
我们将使用 opencv 库从图像中提取这些特征。
先决条件
Python
pip
opencv
numpy
matplotlib
Opencv 是一个计算机视觉包,我们将使用它来处理图像和操作它。numpy用于数值计算,matplotlib用于图像显示。
1. 导入用于测试的库和图像
我们将使用的是用于训练和测试的室外图像:https://github.com/mrsimi/cv_udacity_course/tree/master/data/day_night_images
该图像已被标注,即分类为白天和夜间图像。
from util import daynight_helper
import matplotlib.pyplot as plt
import cv2
import numpy as np
#path to the folder where the images are
training_data_path = 'data/day_night_images/training'
2. 预处理图像及其标签
我们已经指定了训练图像的路径,但原始图像有噪声并且没有很好地优化分析。
例如,图像可能具有不同的大小,或者标签可能是我们的文字。这是设计模型的第一步。数据清洗