0

我尝试在一个非常嘈杂的图像中实现 OCR。数字和背景之间的对比度也很低。我尝试使用一些中值滤波器来平滑背景噪声和边缘增强方法,但没有明显的效果。有没有人有类似的任务要做?我应该使用什么过滤器?

带有背景噪音和低对比度的数字:

带有背景噪音和低对比度的数字

编辑(添加过度曝光的图片)

在此处输入图像描述 在此处输入图像描述

4

2 回答 2

0

实际上,这个共享图像的分辨率非常低(接近 190x160)。如果真实图像的分辨率高于此图像,您可以获得更好的结果。我在图像上尝试了一些代码。我发现数字是“6”和“&”。

屏幕截图在这里: https ://drive.google.com/open?id=1I1s79hwcon8IdxC6peRxMbaB4I2taNFr

代码在这里:

dev_get_window (WindowHandle)
set_display_font (WindowHandle, 18, 'mono', 'true', 'false')

**reading image
read_image (Pnk9h, '/home/emin/Desktop/pNk9h.png')
get_image_size (Pnk9h, Width, Height)

**bluring image but preserve the edges
bilateral_filter (Pnk9h, Pnk9h, ImageBilateral, 9, 10, [], [])

**sharpening image
emphasize (ImageBilateral, ImageEmphasize, 7, 7, 5)

**processes about finding digits
var_threshold (ImageEmphasize, Region, 150, 150, 0.2, 2, 'dark')
var_threshold (ImageEmphasize, Region2, 150, 150, 0.2,5, 'light')
fill_up (Region, RegionFillUp)
difference (RegionFillUp, Region, RegionDifference)
opening_circle (RegionFillUp, RegionOpening, 3.5)
connection (RegionOpening, ConnectedRegions)
sort_region (ConnectedRegions, SortedRegions, 'first_point', 'true', 'column')
select_shape (SortedRegions, SelectedRegions, ['area','row','row1','row2'], 'and', [150,Height/2-20,10,0], [99999,Height/2+20,Height,Height-10])

smallest_rectangle1 (SelectedRegions, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
intersection (Rectangle, Region, RegionIntersection)
opening_circle (RegionIntersection, RegionOpening1, 2)
area_center (RegionOpening1, Area, Row, Column)
union1 (RegionOpening1, RegionUnion)

**painting image for reading robustly
paint_region (RegionUnion, ImageEmphasize, ImageResult, [0,0,0], 'fill')
complement (RegionUnion, RegionComplement)
paint_region (RegionComplement, ImageResult, ImageResult, [255,255,255], 'fill')

**reading digits
read_ocr_class_cnn ('Universal_0-9+_NoRej.occ', OCRHandle3)
do_ocr_multi_class_cnn (SelectedRegions, ImageResult, OCRHandle3, Class3, Confidence3)
dev_disp_text (Class3, 'image', Row2+10, Column2-50, 'blue', [], [])
于 2020-04-02T23:22:42.403 回答
0

如果您能够再次进行图像采集,则有几个选项:

  1. 尝试过度曝光图像,这可能对从背景中分割数字产生积极影响。我刚刚写了一篇关于它的帖子:https ://www.linkedin.com/pulse/making-overexposure-work-you-part-i-vladimir-perkovic

  2. 由于您有 Halcon 标签,我假设您可以访问 Halcon。看一下示例 ocr_embossed_photometric_stereo.hdev,它展示了如何使用来自多个方向的灯光来读取浮雕字母。

如果您必须只使用现有图像,我最好的方法是使用 Halcon 中的最大稳定极值区域(MSER):

rgb1_to_gray (Image, GrayImage)
segment_image_mser (GrayImage, MSERDark, MSERLight, 'dark', 600, 60000, 1, 'may_touch_border', 'false')

在此处输入图像描述

于 2020-01-23T14:51:38.293 回答