简单图像识别第一步:减色化+柱状图
这里我们进行简单的图像识别。
图像识别是识别图像中物体的类别(它属于哪个类)的任务。图像识别通常被称为Classification、Categorization、Clustering等。
一种常见的方法是通过 HOG、SIFT、SURF 等方法从图像中提取一些特征,并通过特征确定物体类别。这种方法在CNN普及之前广泛采用,但CNN可以完成从特征提取到分类等一系列任务。
这里,利用图像的颜色直方图来执行简单的图像识别。算法如下:
- 将图像
train_***.jpg
进行减色处理(取4种值)。 - 创建减色图像的直方图。直方图中,分别取四个值,但为了区分它们,、、,这样。请注意,我们还需要为每个图像保存相应的柱状图。也就是说,需要将数据储存在
database = np.zeros((10(训练数据集数), 13(RGB + class), dtype=np.int)
中。 - 将步骤2中计算得到的柱状图记为 database。
- 计算想要识别的图像
test@@@.jpg
与直方图之间的差,将差称作特征量。 - 直方图的差异的总和是最小图像是预测的类别。换句话说,它被认为与近色图像属于同一类。
- 计算将想要识别的图像(
test_@@@.jpg
)的柱状图(与train_***.jpg
的柱状图)的差,将这个差作为特征量。 - 统计柱状图的差,差最小的图像为预测的类别。换句话说,可以认为待识别图像与具有相似颜色的图像属于同一类。
在这里,实现步骤1至步骤3并可视化柱状图。
训练数据集存放在文件夹dataset
中,分为trainakahara@@@.jpg
(类别1)和trainmadara@@@.jpg
(类别2)两类,共计10张。akahara
是红腹蝾螈(Cynops pyrrhogaster),madara
是理纹欧螈(Triturus marmoratus)。
train_akahara_1.jpg:
train_akahara_2.jpg:
train_akahara_3.jpg:
train_akahara_4.jpg:
train_akahara_5.jpg:
train_madara_1.jpg
train_madara_2.jpg
train_madara_3.jpg
train_madara_4.jpg
train_madara_5.jpg
这种预先将特征量存储在数据库中的方法是第一代人工智能方法。这个想法是逻辑是,如果你预先记住整个模式,那么在识别的时候就没有问题。但是,这样做会消耗大量内存,这是一种有局限的方法。
输出 |
---|
![]() |
python实现: