用图像处理的方法破解数独.docx
- 文档编号:24448949
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:11
- 大小:828.54KB
用图像处理的方法破解数独.docx
《用图像处理的方法破解数独.docx》由会员分享,可在线阅读,更多相关《用图像处理的方法破解数独.docx(11页珍藏版)》请在冰豆网上搜索。
用图像处理的方法破解数独
数独破解
记得小时候玩过数独游戏,每次一玩总是好几个小时。
最近在学直线检测,所以就像用图像识别的知识解决这个问题,后来发现直线检测并不能产生自己想要的结果,就采用另外一种方法分割数字。
一.数独游戏规则
数独游戏在9x9的方格内进行,我们称之为“大九宫格”(红线表示区域),大九宫格格又分为3x3的小方格,每个小方格被称为“小九宫格”(蓝色线表示区域),小九宫格中为为9个“数字格”,下图中暗红色所示区域:
数独游戏首先从已经填入数字的格子开始:
游戏的目的是根据下列规则,
1.用1至9之间的数字填满空格,一个格子只能填入一个数字:
2.每个数字在每一行只能出现一次:
允许
不允许
3.每个数字在每一列只能出现一次:
允许
不允许
4.每个数字在每一区只能出现一次:
允许
不允许
-总结这些规则,即每个数字在每一行、每一列和每一区只能出现一次。
二.程序简介
1.为识别数独中的数字,我们做如下合理的假设,
1.我们假设,拍摄到的图片中数独部分占据图像的大部分
2.数独大九宫格的外边缘,和小九宫格的边缘比里面的数字格分界线线要粗
如下图为在一幅报纸上拍摄到的数独,我们将以它来说明我们的识别过程。
2.简单介绍下程序的执行过程,和产生的效果,
1.对图像滤波和阈值化处理
2.利用漫水填充提取数独中的大九宫格
3.提取有畸变的大九宫格的外边缘,并找出四个角点。
3.利用四个角点将有畸变的大九宫格进行畸变矫正(透视变换)效果图为下图右侧
4.提取小九宫格,下图左侧为原始的小九宫格,中间为提取的轮廓采用漫水填充并提取角点的图,右侧为畸变矫正后的图
若直接直接分割,可以看到下图中,提取的数字特征不准确,会提取失败
5.找到小数字格中的小正方形并检测小正方形中白色像素点,并以此作为漫水填充的起点
6对小九宫格中数字进行精确提取
6训练数字分类器并识别提取后的数字
7使用迭代算法将数独解出来
三.流程图
下面是程序的流程图(略简单,visio可以查看)
四.程序截图
具体代码大约太长,只是列出类的头文件中函数声明部分和主函数,具体函数实现这里因篇幅原因即不列出
主函数
Digitrecognizer.h类为
训练SVM分类器的类,(SVM分类器所采用的训练字符集为手写数字字符集)
Precess.h
这个类中主要提取大九宫格和小九宫格
Sudoku.h
这个类作用主要将提取的未破解的数独破解出来(类为网上下载的,非自己编写)
具体可以参考博客:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 处理 方法 破解