如何识别这个简单的验证码?

时间:2010-04-14 14:28:54

标签: matlab image-processing image-manipulation computer-vision

5 个答案:

答案 0 :(得分:5)

简单回答:NOPE

答案 1 :(得分:1)

对于像这样的简单,你可以运行中值滤波器和ocr。

对于图像中的每个像素,中值滤波器将查看其周围区域(通常为3x3或5x5像素区域),确定该区域中的中值像素值并将像素设置为该中值。在相同颜色的块中不会发生任何事情,整个区域与所考虑的像素颜色相同,因此中值i与当前值相同(或者至少几乎相同,允许轻微的颜色变化。另一方面噪声像素,即在其周围具有不同颜色区域的单个像素将简单地消失,因为该区域的中值将是噪声像素周围的所有像素的颜色。

对于ocr或光学字符识别,我只使用现有的程序/库,在Matlab中编写ocr算法肯定是可能的,但是比编写一个简单的算法要大得多。一小时。您首先需要阅读ocr技术和算法。

答案 2 :(得分:1)

非常简单:将图像读取为灰度,阈值,清理并通过ocr程序运行。

%# read the image
img = imread('http://internationalpropertiesregistry.com/Server/showFile.php?file=%2FUpload%2F02468.gif358455ebc982cb93b98a258fc4d6ee60.gif');

%# threshold
bw = img < 150; 

%# clean up
bw = bwareaopen(bw,3,4);

%# look at it - the number 8 is not so pretty, the rest looks reasonable
figure,imshow(bw)

然后,弄清楚是否有可以提供帮助的OCR程序,例如this one

更简单:

%# read the image
[img,map] = imread('http://internationalpropertiesregistry.com/Server/showFile.php?file=%2FUpload%2F02468.gif358455ebc982cb93b98a258fc4d6ee60.gif');

%# display
figure,imshow(img,map)

%# and type out the numbers. It's going to be SO much less work than writing complicated code

答案 3 :(得分:0)

  1. 清理图像
  2. 将每个角色分成不同的图像
  3. 将每个字符与一组参考字符进行比较
  4. 最佳匹配是最有可能的原始字符

答案 4 :(得分:-1)

您可以咨询this post。我用图示的方法成功地破解了一个更简单的CAPTCHA。