vlambda博客
学习文章列表

【验证码识别】基于不变矩算法实现数字验证码识别附matlab代码

1 简介

网络给人们提供丰富资源和极大便利,同时,互联网的安全性问题也随之而来。验证码正是加强网络系统安全性的常用手段。不变矩方法在目标识别领域的应用较为广泛,但在验证码识别方面的应用却不多。论文以数字验证码为例,先对验证图像进行去噪、定位、归一化等预处理,然后计算待识别数字的不变矩,再进行特征匹配,得到识别结果。以Matlab软件为开发平台来进行设计实现及仿真,并构建相应的GUI界面。实验结果表明利用不变矩在识别数字验证码方面具有可行性。在教学过程中应用该成果,可以使学生强化基本理论,培养学生的创新能力和理论联系实际的能力。

【验证码识别】基于不变矩算法实现数字验证码识别附matlab代码

2 部分代码

 % 提取不变矩特征数据function res = invmoments(x)
x = double(x);[M,N,~] = size(x);[X,Y] = meshgrid(1:M, 1:N);X = X(:);Y = Y(:);x = x(:);m.m00 = sum(x);m.m10 = sum(X.*x);m.m01 = sum(Y.*x);m.m11 = sum(X.*Y.*x);m.m20 = sum(X.^2.*x);m.m02 = sum(Y.^2.*x);m.m30 = sum(X.^3.*x);m.m03 = sum(Y.^3.*x);m.m12 = sum(X.*Y.^2.*x);m.m21 = sum(X.^2.*Y.*x);xbar = m.m10/m.m00;ybar = m.m01/m.m00;e.hp11 = (m.m11 - ybar*m.m10) / m.m00^2;e.hp20 = (m.m20 - xbar*m.m10) / m.m00^2;e.hp02 = (m.m02 - ybar*m.m01) / m.m00^2;e.hp30 = (m.m30 - 3*xbar*m.m20 + 2*xbar^2*m.m10) / m.m00^2.5;e.hp03 = (m.m03 - 3*ybar*m.m02 + 2*ybar^2*m.m01) / m.m00^2.5;e.hp21 = (m.m21 - 2*xbar*m.m11 -ybar*m.m20 + 2*xbar^2*m.m01) / m.m00^2.5;e.hp12 = (m.m12 - 2*ybar*m.m11 -xbar*m.m02 + 2*ybar^2*m.m10) / m.m00^2.5;res(1) = e.hp20 + e.hp02;res(2) = (e.hp20 - e.hp02)^2 + 4*e.hp11^2;res(3) = (e.hp30 - 3*e.hp12)^2 + (3*e.hp21 - e.hp03)^2;res(4) = (e.hp30 + e.hp12)^2 + (e.hp21 + e.hp03)^2;res(5) = (e.hp30 - 3*e.hp12)*(e.hp30 + e.hp12)*... ((e.hp30 + e.hp12)^2 - 3*(e.hp21 + e.hp03)^2)+... (3*e.hp21 - e.hp03)*(e.hp21 + e.hp03)*... (3*(e.hp30 + e.hp12)^2 - (e.hp21 + e.hp03)^2);res(6) = (e.hp20 - e.hp02) * ((e.hp30 + e.hp12)^2-... (e.hp21 + e.hp03)^2)+... 4*e.hp11*(e.hp30 + e.hp12)*(e.hp21 + e.hp03);res(7) = (3*e.hp21 - e.hp03) * (e.hp30 + e.hp12) * ... ( (e.hp30 + e.hp12)^2 - 3*(e.hp21 + e.hp03)^2) +... (3*e.hp12 - e.hp30)*(e.hp21 + e.hp03)*... (3*(e.hp30 + e.hp12)^2 - (e.hp21 + e.hp03)^2);

3 仿真结果

4 参考文献

[1]赵杰. 不变矩特征在数字验证码识别中的应用[J]. 舰船电子工程, 2018, 38(6):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。