前面两篇介绍了特征提取,贝叶斯分类等问题,这一篇讲解怎么测试我们的程序对不对。
代码如下:
function bayesBinaryTest(imp)
%利用贝叶斯分类器对手写图片识别
load templet; %加载汉字特征
%A = imp; %得到待识别图片
A=imread('C:UsersAdministratorDesktopBayesBinaryHandwritingRecognition_BC_20190220-master贝叶斯手写汉字识别样本集昆1.bmp');
figure(1),subplot(121),imshow(A),title(['待识别的汉字:']);
B=zeros(1,100);%创建1行100列的特征向量 其实与多少与谁是行和列没关系,也可以100行1列
[row col] = size(A); %得到待测样本的行列
cellRow = row/10; %将其降维 得到缩小100倍的特征图片
cellCol = col/10;
%disp(row);disp(col);%读取的行列数正好是图片的像素数即120行90列
%像素已经是二值化的灰度图,所以读取的像素值不是0(黑色)就是255(白色)
%A中读取和存储的是像素值,是一个120行90列的矩阵 最后将每一个12*9个方格整合成一个方格,最后的得到一个10*10的栅格
count = 0; %每1/100个格子中为0的像素点个数
currentCell = 1; %当前计算为第1个1/100格子部分
for currentRow = 0:9 for currentCol = 0:9 for i = 1:cellRow %计算每1/100部分中为0的数量for j = 1:cellColif(A(currentRow*cellRow+i,currentCol*cellCol+j)==0)count=count+1;endendendratio = count/(cellRow*cellCol); %计算1/100部分中黑色像素的占比 将每12*9个方格中的黑色像素平均到这12*9个中去,%像素会降低,所以要设定阈值,将达到一定数量黑色像素的12*9的方%格置成10*10的中的一个黑色像素点 ,如下一步B(1,currentCell) = ratio; %将每个占比统计在B特征向量中currentCell = currentCell+1; %新的1/100部分开始计算count = 0; %像素点计数置0end
end
%disp(B')%B'打印出来是一列一百行的向量
class = bayesBinary(B'); %将该特征利用贝叶斯分类器分类,返回类的个数
subplot(122),imshow(['C:UsersAdministratorDesktopBayesBinaryHandwritingRecognition_BC_20190220-master贝叶斯手写汉字识别样本集',num2str(class),'.jpg']),title(['该汉字被识别为:']);
disp(['该汉字被识别为:',pattern(class).name]);
想要识别文字,就要先把文字信息导入到程序中,老样子,还是用imread将信息读取,下面的设置B矩阵,读取文件的大小,像素的点数等等。程序里面我又增加了一些注释,更加清楚,我就不多言了。对了,应用时记得把imread里面的路径改成自己的。文字库下载的话,我资源里面有。
一起学习,共同进步。
本文发布于:2024-01-29 01:16:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170646220011671.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |