0. bmp.GetPixel(i,j).ToArgb()==Color.Black.ToArgb() 判断像素点颜色是否为黑色。
1.这是一个C#中讲bitmap对象方法的博文:http://blog.csdn.net/yingzhaom/article/details/7743429
经过这几天的研究想总结下验证码预处理的一些方法:
验证码预处理方法主要有:
0.0 上下腐蚀: //对于斜线效果比较好,是横线用水平腐蚀,竖线用垂直腐蚀, (如何区别是横线那还是竖线)(Erode)
腐蚀应该是让验证码瘦一圈。就这么简单。
垂直腐蚀-----|像素点为黑---上白或者下白=》置为白色
else=》置为黑色
------|像素点为白---=》置为白色
水平腐蚀-----|像素点为黑---左白或者右白=》置为白色
else=》置为黑色
------|像素点为白---=》置为白色
0.1 上下膨胀:这个方法主要是加深验证码的主题内容,让主要内容更为明显 ,
//横线用水平腐蚀,竖线用垂直腐蚀, (如何区别是横线那还是竖线)(Dilate)
相应的膨胀只是让验证码胖一圈。
垂直膨胀-----|像素点为白---上黑或者下黑=》置为黑色
else=》置为白色
------|像素点为黑----》置为黑色
水平膨胀-----|像素点为白---左黑或者右黑=》置为黑色
else=》置为白色
------|像素点为黑---=》置为黑色
插一段:
先腐蚀后膨胀的过程称为开运算。它具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用。先膨胀后腐蚀的过程称为闭运算。它具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。
0.2 验证码中的骨架细化:(Thinning) (前提是二值化过得图形)(索引公式为什么? 橡皮擦数组怎么来的?--这都是算法中的,不必深究。)
细化广泛应用于图像处理与模式识别中,从细化得到的骨架不但保持了原图像的几何和拓扑特征,而且更重要的是减少了图像的冗余。
垂直细化-----|像素点为黑---上白或者下白=》通过周围8个邻居计算索引值,查橡皮擦表,判断是否可以置为白色,即删去细化了,else不处理
(垂直细化自适应横线) else=》不处理
------|像素点为白---=》不处理
水平细化-----|像素点为黑---左白或者右白=》通过周围8个邻居计算索引值,查橡皮擦表,判断是否可以置为白色,即删去细化了,else不处理
(水平细化自适应竖线) else=》不处理
------|像素点为白---=》不处理
0.3 CFS字符分割(觉得我的文章总是越写越乱,没什么结构可寻,哎。。。)
该方法针对字符间非粘连的种类比较好,对每一个黑色像素,探索他周围的8个像素点,如果又探索到黑色像素点,就以该像素点为中心,继续探索他周 围的像素点,直到检测不到黑色像素点,这样遍历每一个像素,就可以把图片划分成区域。(color filling segmentation)
0.4 竖直投影法的字符分割
该方法对于字符不黏连,且每一个竖直条上只有一个字母的线条,就是扭曲程度不大的验证码效果好,对于字符粘连大的验证码还有别方法
0.5 OpenCV是一个很常用的计算机图像处理和机器视觉库,一般用于人脸识别,跟踪移动物体等等。
0.6 越写越乱,就此打住吧,明天一大早还要不停的奋斗,好累。。。
但是!
生活还是要有梦想的!!!
加油,奋斗中的各位!!!
明天继续战斗C#,基于师兄给的代码,整合我的毕设。11点了,回宿舍睡觉!