回答

1

對於一個簡單的類似,你可以運行一箇中值過濾器和ocr。

對於圖像中的每個像素,中值濾鏡將查看其周圍的區域(通常是3x3或5x5像素區域),以確定該區域的像素中值,並將該像素設置爲該中值。在相同顏色的塊中不會發生任何事情,整個區域與所考慮的像素顏色相同,因此中間值i與當前值相同(或者至少幾乎相同,允許輕微的顏色變化)。另一方面,噪聲像素,即具有不同顏色的區域的單個像素將簡單地消失,因爲該區域的中值將是噪聲像素周圍的所有像素的顏色

至於ocr或光學字符識別,我只是使用現有的程序/庫,在Matlab中編寫ocr算法當然是可以的,但是要比在一個小時內編寫一個簡單的算法更大的練習,你首先需要閱讀ocr技術和算法。

+0

你能詳細一點嗎? – user198729 2010-04-14 15:11:30

+0

我已經擴大了答案 – wich 2010-04-15 08:35:12

+0

@wich - 我通常在Mathematica-land中閒逛,但遇到你的答案,同時拖動Matlab的東西(試圖學習......)無論如何,遵循你的中值濾波器建議,Mathematica的內置函數,在OCR似乎工作:'TextRecognize @ MedianFilter [Binarize [image,.55],1]'。以爲我會分享。 :) – telefunkenvf14 2011-09-03 00:20:10

5

簡單的回答:NO PE

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 
+0

我試圖在MATLAB中實現一個非常簡單的ocr .. – user198729 2010-04-14 15:07:35

+0

然後你可能想看看我喜歡的靈感 - 在Matlab中沒有內置的ocr。 – Jonas 2010-04-14 15:28:55

+0

你知道如何在圖像上運行中值濾鏡嗎? – user198729 2010-04-14 15:30:34

0
  1. 清理圖像
  2. 分隔每個字符劃分爲不同的圖像
  3. 將每個字符與一個se參考符號
  4. 的最佳匹配t爲最有可能的原始字符
-1

您可諮詢this post。我用成功的方法成功破解了一個更簡單的驗證碼。

+0

鏈接不可用 – 2016-08-31 18:27:21