基于hu不变矩的图像检索技术_用机器学习的分类算法识别象棋棋子——兼论旋转不变性...

本文介绍了基于Hu不变矩的图像检索技术,结合机器学习分类算法来识别象棋棋子。通过采集样本并训练模型,实现在棋子随机旋转10次的情况下,仍能取得99%的识别准确率。
摘要由CSDN通过智能技术生成

1. 前言

文本识别早已经不是问题了,不过却不能直接应用于象棋棋子的识别,因为棋盘上的棋子是随机摆放上去的,不能保证棋子上的文字总是保持一个固定的角度。识别棋子的关键是找到具有“旋转不变性”的特征——无论棋子旋转多少度,其特征总是稳定的。

2. 图像的矩特征

矩是概率与统计中的一个概念,是随机变量的一种数字特征。如果把二维灰度图像视为有质量的平板,像素的灰度值p代表平板的密度,那么灰度图像就可以用二维灰度密度函数 p=f(x,y) 来表示。通过计算图像的零阶矩、一阶矩、二阶矩、三阶矩,即可获得被称为不变矩的七个高度浓缩的图像特征。不变矩具有平移、灰度、尺度、旋转不变性。 以下代码给出了计算图像不变矩的函数,基于OpenCV提供的两个函数实现,返回包含七个高度浓缩的图像特征的数组。因为图像不变矩的动态范围过大,默认返回的是不变矩的对数。
import cv2
import numpy as np

def humoments(img_gray, log=True):
    """返回图像7个不变矩"""

    hu = cv2.HuMoments(cv2.moments(img_gray))[:,0]
    if log:
        hu = np.log(np.abs(hu))

    return hu
以下面四个角度的棋子“车”为例,不管角度如何,它们的不变矩具有很强的相关性。
8f4634b878bc4a353de360e99cde0f5c.png
-6.979, -21.904, -29.739, -28.555, -57.703, -39.707, -60.654
-6.945, -21.576, -29.658, -28.057, -57.050, -38.891, -57.633
-6.925, -21.083, -28.879, -27.764, -56.091, -38.464, -58.305
-6.978, -21.966, -29.773, -28.337, -57.442, -39.753, -58.575

3. 采集样本

选择不同角度、光照条件,对棋子拍照,不同照片上的棋子尽可能保持相同的尺寸。使用圆检测技术找到棋子,裁切、高斯模
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值