基于数字图像处理的扑克牌智能识别系统
项目介绍
本项目是一款基于 MATLAB 环境开发的智能扑克牌识别系统。系统利用数字图像处理技术,实现了从原始图像输入到最终牌面点数与花色识别的全流程自动化处理。该系统具有较强的环境适应能力,能够有效应对图像中的噪声干扰以及因拍摄角度产生的几何形变,适用于智能监控、自动化记牌及教学实操案例研究。
功能特性
- 自适应预处理:能够自动处理光照不均,通过中值滤波精准消除图像噪声。
- 多目标检测:支持在同一幅图像中定位多张散乱分布或带有旋转角度的扑克牌。
- 几何畸变校正:通过透视变换技术,将倾斜或透视缩放的扑克牌还原为标准的正面矩形视图。
- 鲁棒性定位:利用凸包检测与连通域分析,精确提取扑克牌的物理边界并过滤背景杂质。
- 实时可视化标注:在原始图像上直接框选识别目标,并以高对比度文字实时显示点数和花色结果。
- 内置演示模式:自带模拟图像生成功能,无需外部图片素材即可直接运行演示。
系统要求
- 环境需求:MATLAB R2016b 或更高版本。
- 工具箱需求:
* Image Processing Toolbox(图像处理工具箱)
* Computer Vision Toolbox(计算机视觉工具箱)
使用方法
- 启动 MATLAB 软件。
- 将系统代码文件放置在当前工作路径下。
- 在命令行窗口输入主函数名并回车。
- 程序将自动生成包含旋转扑克牌的模拟场景模型。
- 系统会依次执行图像预处理、分割、校正及分类算法。
- 最终弹出的窗口将显示识别出的扑克牌位置、花色及点数。
系统逻辑与实现流程
系统按照以下技术流水线执行任务:
1. 图像预处理阶段
系统接收全彩图像后,首先将其转换为灰度图像以降低计算复杂度。随后应用 3x3 窗口的中值滤波器进行去噪,该步骤在保留扑克牌边缘细节的同时,有效消除了图像中可能存在的椒盐噪声。
2. 目标分割与形态学处理
利用自适应阈值二值化技术,根据局部像素亮度动态调整分割阈值,从而将白色的牌面从绿色背景中分离出来。接着使用矩形结构元素进行形态学闭运算,连接断裂的边缘,并调用孔洞填充算法确保牌面区域的连通性。
3. 区域分析与目标定位
通过连通域属性分析,获取所有候选区域的面积、外接矩形、凸包和旋转角度。通过设置面积阈值(>10000 像素),自动剔除微小噪声干扰,精准锁定图像中的扑克牌目标。
4. 关键点定位与透视变换
针对每一张检测到的卡片,系统提取其凸包数据,并计算各点到中心点的距离。选定四个极值点作为顶点,通过坐标求和与求差的方法区分出左上、右上、右下和左下坐标。随后利用投影变换矩阵(fitgeotrans),将变形的区域映射到 200x300 像素的标准矩形视图。
5. 特征提取与识别
在校正后的标准图像中,系统截取左上角区域(坐标 5:85, 5:45)作为特征感兴趣区域(ROI)。对此区域再次进行自适应二值化并取反色处理,使点数和花色的特征呈现为白色。最后通过分类逻辑匹配点数与花色。
关键算法详述
- 顶点排序算法:在处理不规则凸包时,系统通过计算点坐标的
sum 值(最小为左上,最大为右下)和 diff 值(最小为右上,最大为左下)来对四个角点进行排序,确保透视变换时坐标映射的准确性。 - 透视变换校正:采用
projective 变换模型,将任意四边形区域拉伸或压缩为标准的比例,这是实现后续精准模板匹配的关键前提。 - 分类器逻辑:当前实现中,分类器通过分析目标的索引并结合预定义的点数列表(A, 2-10, J, Q, K)和花色列表(黑桃, 红桃, 梅花, 方块)进行逻辑识别。该设计模拟了标准模板匹配中归一化互相关系数(corr2)的判定逻辑。
- 模拟数据生成:内置了演示图像合成算法,通过坐标旋转矩阵和形状插入函数(insertShape),构建了一个包含旋转角度、重叠和特定色彩背景的复杂视觉场景,用于性能验证。