ImageProcess Archive

C#实现验证码中粘连字符分割(一)

验证码中粘连字符分割有助于Tessract识别此类验证码,本文分享的分割算法可以成功分割较简单的粘连字符。在此分享实现思路以及相关代码,期望能抛砖引玉。

C#实现灰度图像”伪彩色”处理_局部彩色化

将彩色图像转换为灰度图像是一个不可逆的过程,灰度图像不可能变换为原来的彩色图像。而某些场合需要将灰度图像转变为彩色图像,伪彩色处理主要是把黑白的灰度图像或者多波段图像转换为彩色图像的技术过程,其目的是提高图像内容的可辨识度。本文实现的是将灰度图像的某个坐标范围变换为指定颜色,并非真正意义上的伪彩色。

C#实现图像骨架提取zhang-Suen算法

图像骨架是一种图像对象结构的表示方法,Zhang-Suen算法是由Zhang T Y在1984年提出的一种并行模板匹配骨架提取算法.该算法是一种基于删除的骨架提取算法。OpenCV中貌似没有类似功能的函数,但Github上有一个名为cuda-fingerprinting的项目(感谢原作者)包含了该算法,我将相关代码提取出来,做了一些简单的改动,将其封装成一个轻量级的可为字符或图像瘦身的类,这里分享给大家。

C#中cvFindContours与cvDrawContours使用方法

cvFindContours可以从二值图像中检索轮廓,并返回检测到的轮廓的个数,cvDrawContours则可用于绘制cvFindContours函数所找到的轮廓。这两个函数均为OPENCV图像处理库中的函数,我们在C#中要借助于EMGU,通过CvInvoke来调用这两个函数。斗胆借用人气王----挖掘机的肖像来演示这两个函数的效果,见下图。

用LockBits方法访问图像数据

位图类包含LockBits和相应的UnlockBits方法,我们可以使用这个方法在内存中指定一片区域来存储位图的像素数据,可以直接访问这块内存并对位图中的像素数据进行修改。LockBits返回BitmapData类,这个类描述了位图在指定内存中存储数据的布局与位置。

分割粘粘字符的滴水算法的CSharp代码

本文的代码仅实现了向下滴落的滴水算法本身,不含起始滴落点的计算,而实际上起始滴落点的确定才是分割粘粘字符的关键点。关于滴水算法滴落起始点的文献将在下一篇文章中与大家分享。

Emgu CV 角点检测

点是是图像中的特殊位置,是常用且非常实用的一类特征,而点的局部特征也可以叫做“关键特征点”(keypoint feature),或“角点”(conrner)。本文在C#中使用emgu cv中的cvGoodFeaturesToTrack与cvCornerHarris​验证了Shi-Tomasi角点与Harris角点,十分有趣哦,上图先。

C#实现图像竖直投影

近期的学习重点的是如何让Tesseract识别粘连倾斜的字符(如下图所示),把这种图片直接丢给Tesseract肯定是不行的,我需要先将图片中的字符分开,然后再将倾斜的字符摆正,然后才可以给Tesseract呈上。那么现在第一个问题来了,怎样才能正确的将粘连字符分割呢?相关参考资料显示,通过竖直投影直方图的投影极小值,再辅以滴水算法的起始滴落点即可实现正确率较高的分割。

Sauvola 实现图像二值化

Sauvola 算法作为局部二值化算法,更加注重图像的局部特征,初次听闻Sauvola算法是在《基于背景估计和边缘检测的文档图像二值化》一文中,据说该算法是最好的二值化算法之一。为了更好的实现图像二值化,近期我孜孜不倦的在github中查找相关源码与文献。功夫不负有心人,我终于在github中找到了可用的Sauvola算法的源代码,并成功进行了实验验证。

图像二值化效果对比_emgucv/大津法/迭代法

图像二值化应该可以提高Tessnet对图像的识别率,因此我尝试先对一些模糊化的图像进行二值化,期望二值化后的图片黑白分明,前景完整清晰,以协助Tessnet更好的辨识图片中的内容。本文对比了大津法,迭代法,emgucv的cvSmooth,cvThreshold,cvCanny等方法二值化的效果,先看验证图。
Fork me on GitHub