电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

去噪:用于验证码图片识别的类续(C代码)

去噪:用于验证码图片识别的类续(C代码)_第1页
1/8
去噪:用于验证码图片识别的类续(C代码)_第2页
2/8
去噪:用于验证码图片识别的类续(C代码)_第3页
3/8
去噪:用于验证码图片识别的类续(C#代码) 自从发表了用于验证码图片识别的类(C#代码)后,不断有网友下载这个类后,问如何用于一些特定的验证码。总结一下网友们的提问,很多都是不会从复杂背景中提到干净的字符图片来,这主要就是一个去噪问题,即除去图片上的背景、干扰点、干扰线等信息。这当中要用到很多图像学数学算法,首先声明,本人不是学图像学的,以下方法理论说得不对,敬请多批评指正。 1、如何设前景/背景的分界值 UnCodebase 类中有一个GetPicValidByValue( int dgGrayValue) 函数,可以得到前景的有效区域,常有人问我前景/背景的分界值 dgGrayValue 是如何确定的(常用的是灰度 128)。这个值的获取是有数学算法,叫最大类间方差法,即图像的前后景的平方差为最大时的值就是我们关心的分界值,对付如 这样较复杂的背景非常管用,下面是具体的C#代码。 /// /// 得到灰度图像前景背景的临界值 最大类间方差法,yuanbao,2007.08 /// /// 前景背景的临界值 public int GetDgGrayValue() { int[] pixelNum = new int[256]; //图象直方图,共 256 个点 int n, n1, n2; int total; //total 为总和,累计值 double m1, m2, sum, csum, fmax, sb; //sb 为类间方差,fmax 存储最大方差值 int k, t, q; int threshValue = 1; // 阈值 int step = 1; //生成直方图 for (int i =0; i < bmpobj.Width ; i++) { for (int j = 0; j < bmpobj.Height; j++) { //返回各个点的颜色,以 RGB 表示 pixelNum[bmpobj.GetPixel(i,j).R]++; //相应的直方图加 1 } } //直方图平滑化 for (k = 0; k <= 255; k++) { total = 0; for (t = -2; t <= 2; t++) //与附近2 个灰度做平滑化,t 值应取较小的值 { q = k + t; if (q < 0) //越界处理 q = 0; if (q > 255) q = 255; total = total + pixelNum[q]; //total 为总和,累计值 } pixelNum[k] = (int)((float)total / 5.0 + 0.5); //平滑化,左边2 个+中间1 个+右边2 个灰度,共5 个,所以总和除以5,后面加0.5 是用修正值 } //求阈值 sum = csum = 0.0; n = 0; //计算总的图象的点数和质量矩,为后面的计算做准备 for (k = 0; k <= 255; k++) { sum += (double)k * (d...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

去噪:用于验证码图片识别的类续(C代码)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部