1.为什么要对图像进行二值化处理
前面在使用KNN算法识别手写数字的系统中,使用的样本集(训练样本集+测试样本集)都是txt文件,里面存储的是1或0的数值,就是说我们用二维特征来表示手写数字图片信息,这样方便我们进行模式识别。这个二维特征txt文件就可以通过本章的图像二值化处理后得到。
对图像进行二值化处理,可以将多维特征转换为容易处理的二维特征,使用KNN或神经网络等方法进行学习,从而使计算机识别出正确的数字。
如前面KNN算法识别手写数字图片中数字的二值化处理后的txt文件:
00000000000001100000000000000000
00000000000011111100000000000000
00000000000111111111000000000000
00000000011111111111000000000000
00000001111111111111100000000000
00000000111111100011110000000000
00000001111110000001110000000000
00000001111110000001110000000000
00000011111100000001110000000000
00000011111100000001111000000000
00000011111100000000011100000000
00000011111100000000011100000000
00000011111000000000001110000000
00000011111000000000001110000000
00000001111100000000000111000000
00000001111100000000000111000000
00000001111100000000000111000000
00000011111000000000000111000000
00000011111000000000000111000000
00000000111100000000000011100000
00000000111100000000000111100000
00000000111100000000000111100000
00000000111100000000001111100000
00000000011110000000000111110000
00000000011111000000001111100000
00000000011111000000011111100000
00000000011111000000111111000000
00000000011111100011111111000000
00000000000111111111111110000000
00000000000111111111111100000000
00000000000011111111110000000000
00000000000000111110000000000000
2.手写数字图片资源
下面是自己手写的一个6数字图片,作为本次图片压缩的源图片,以及压缩后再进行二值化处理的使用图片。
3.图像的等比例缩小
当样本集的源图片的大小不一样时,对应后面的算法操作很是不便。所以要统一样本集中所有源图片的大小。比如对于手写数字图片,可以都压缩为32*32。
3.1图像压缩代码
# -*- coding: utf-8 -*-
""