2011-04-01 179 views
5

我想刪除背景顏色以提高OCR對圖像的準確性。樣品看起來象下面這樣:刪除OCR圖像處理中的背景顏色

enter image description here

我把所有的信件後處理後的圖像中,而只是去除光紫色紋理背景。是否有可能使用Imagemagick等開源軟件將其轉換爲二進制圖像(黑/白)以實現此目標?如果背景有多種顏色會怎麼樣?解決方案是一樣的嗎?

此外,如果我還想刪除紫色字母(劇院名稱)和行以便只保留黑色字母呢?簡單的裁剪可能不起作用,因爲紫色字母也可能出現在其他地方。

我正在尋找一種解決方案,而不是像Photoshop那樣的工具。

+0

你爲什麼不上傳到一些圖像服務器的圖像,並讓我們看到了票? – 2011-04-01 00:21:53

+0

,因爲該網站阻止我上傳圖片,直到聲望達到10。:-(我會盡快將其發佈到里程碑,或者我可以給你發一封郵件。 – charles 2011-04-01 00:55:57

回答

3

您可以對圖像應用模糊處理,以便獲得幾乎清晰的背景。然後將原始圖像的每個像素的每個顏色分量除以背景上的像素的對應分量。你會得到白色背景上的文字。額外的後處理可以進一步幫助。

如果文字比背景顏色深(在每個顏色分量中),則此方法起作用。否則,您可以反轉顏色並應用此方法。

6

您可以使用GIMP(或任何其他圖像編輯工具)執行此操作。

  1. 打開圖像
  2. 轉換爲灰度
  3. 重複層
  4. 使用大內核(10×10),以在頂層
  5. 應用高斯模糊計算的頂部和底部之間的圖像差圖層
  6. 閾值圖像產生二進制圖像

圖像模糊:

enter image description here

差圖像:

enter image description here

二進制:

enter image description here

如果你正在做它作爲一個一次性的,GIMP是可能夠好了。如果你期望這麼做很多次,你可以寫一個imagemagick腳本或者使用類似Python和OpenCV的代碼來編寫你的方法。

一些問題,上述辦法:

  • 紫色文本(世紀)丟失,因爲它不是作爲對比的其他文字。你可以以你的方式圍繞它通過閾值圖像的不同部分不同,或者通過使用本地直方圖操作方法
5

以下是處理圖像的可能戰略和OCR它

的最後一步是做一個OCR。我的OCR例程非常基本,所以我相信你可能會得到更好的結果。

該代碼是Mathematica的代碼。

enter image description here

不差!

0

希望這可以幫助別人

OpenCV中使用一行代碼,你可以使用的OpenCV和python

#Load image as Grayscale 
im = cv2.imread('....../Downloads/Gd3oN.jpg',0) 
#Use Adaptivethreshold with Gaussian 
th = cv2.adaptiveThreshold(im,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2) 

這裏得到,結果如下

enter image description here

這裏的鏈接Image Thresholding

0

In Imagemagick,你可以使用-lat函數來做到這一點。

convert image.jpg -colorspace gray -negate -lat 50x50+5% -negate result.jpg 

enter image description here

convert image.jpg -colorspace HSB -channel 2 -separate +channel \ 
-white-threshold 35% \ 
-negate -lat 50x50+5% -negate \ 
-morphology erode octagon:1 result2.jpg 

enter image description here