`

银行卡号识别(二) --- 再预处理

 
阅读更多



 上回书说道,我们对银行卡进行了一系列的预处理后,得到了下面的结果:
        
 

银行卡下半部分严重影响到了检测的效果,所以在进行机器学习前,我们还需要做一点处理,把下半部分的噪声给消除掉。

思路:首先,针对农行卡颜色的特点(目前暂时只讨论农行卡)上半部分颜色相对较浅,下半部分颜色较深,而银行卡号属深色,所以往往会出现上图所示的---下半部分大面积噪声,上半部分可能没有或者有细微的少量噪声的现象,故该图具有一定的普遍性。
           
 

 

如上图所示,实际上有效的检测区域就是上图红线之间的数字部分,其余部分均无效,于是乎,我们可以这样实现:

遍历整张二值图,统计每行的有效像素(黑色),若该行有效像素个数高于阈值则表示该行开始是有效区域,若该行有效像素个数低于阈值则表示该行无图像或者是噪声;检测到有效区域后开始,即找到了上面那条红线后,我们开始找下面那条红线的位置,若该行有效像素个数低于阈值,则表示检测到了无效区域,即检测到了下面的红线------如此一来我们便得到了有效区域的高度,我们将所有的无效区域清除即可。

关键代码实现:

IplImage *Filter(IplImage*imgSrc)

{//过滤图像

int a = 0, b = 0;//保存有效行号

int state = 0;//标志位,0则表示还未到有效行,1则表示到了有效行,2表示搜寻完毕

for (int y = 0; y < imgSrc->height; y++)

{

int count = 0;

for (int x = 0; x < imgSrc->width; x++)

{

if (cvGet2D(imgSrc, y, x).val[0] == 0)

count = count + 1;

}

if (state == 0)//还未到有效行

{

if (count >= 10)//找到了有效行

{//有效行允许十个像素点的噪声

a = y;

state = 1;

}

}

else if (state == 1)

{

if (count <= 10)//找到了有效行

{//有效行允许十个像素点的噪声

b = y;

state = 2;

}

}

}

for (int y = 0; y < imgSrc->height; y++)

{

if(y >= a && y <= b)

continue;

for (int x = 0; x < imgSrc->width; x++)

{

((uchar *)(imgSrc->imageData + y*imgSrc->widthStep))[x] = 255;

}

}

return imgSrc;

}

 

结果:

 

 

预处理到此完毕

 

 

机器学习下回分解。

<!--EndFragment-->
  • 大小: 32.9 KB
  • 大小: 32 KB
  • 大小: 20.9 KB
1
1
分享到:
评论

相关推荐

    用matlab实现银行卡卡号定位并自动切割出卡号部分

    以matlab为平台进行图像处理,预处理银行卡卡号后进行卡号定位,并自动切割出卡号部分的图像。代码注释明确,适合小白阅读。

    Python银行卡数字识别项目 (Opencv)

    1.将数字模板处理成灰度图,再进行二值处理.这样图像就变成双通道图. 2.计算模板边缘轮廓.将数字模板每个数字的轮廓计算出来. 3.画出每个数字轮廓的外接矩形。最后将其分别保存到一个字典里. 三. 数字模板处理完成,...

    基于openCV&amp;Tensorflow的银行卡号识别.zip

    ImgProc:提供图像预处理、滤波、几何变换、形态学操作、直方图计算、轮廓发现与分析等图像处理功能。 HighGui:提供图形用户界面(GUI)支持,如图像和视频的显示、用户交互(如鼠标事件处理)以及简单的窗口...

    OCR:基于OpenCV和TesseractOCRiOS的银行卡号识别.zip

    ImgProc:提供图像预处理、滤波、几何变换、形态学操作、直方图计算、轮廓发现与分析等图像处理功能。 HighGui:提供图形用户界面(GUI)支持,如图像和视频的显示、用户交互(如鼠标事件处理)以及简单的窗口...

    Opencv实战基于python,银行卡识别、全景图片拼接、OCR图片识别.zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    matlab图像处理实例ppt

    matlab零基础入门,银行卡号识别算法的研究之初步图像预处理资料,新手学习教程,学习资源

    Python基于Opencv&Yolov7的银行卡识别系统(源码&教程).zip

    丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG...

    银行智慧网点调研报告.docx

    工商银行推出的"智能网点",几乎所有的业务都可以通过智能设备自助完成,包括银行卡及密码器的申领,以及5万元以上的大额转账等业务。工商银行的智能网点依托功能丰富的自助设备,通过网点人员现场引导和远程服务相...

    aadhar-uid:从扫描的文档中提取并保护Aadhar编号

    我们经常将扫描的aadhar卡文件提交给银行,政府机关等。我们是否想知道它们如何处理aadhar卡文件? 这是关于从aadhar卡中提取相关信息-12位UID(唯一标识号/ Aadhar编号) 解决方案包括以下四个步骤: 实际扫描的...

    中国电信计费模型:数据模型

    6.2.9 预处理后计费帐务事件(Pre_Processed_Event)实体 245 6.2.10 普通源事件格式(Event_Format_Normal)实体 246 6.2.11 其它源事件格式(Event_Format_Other)实体 247 6.2.12 源事件格式(Event_Format)实体 248 6.2...

Global site tag (gtag.js) - Google Analytics