测试效果
在一张超市小票上提取点阵数字
处理步骤解析
首先读取两张图,一张是小票的图片,一张是静脉的图片
为了让点阵数字提取更加困难,我们将两张图片合成到一起
read_image (ImageNoise, 'angio-part')
crop_part (ImageNoise, ImagePart, 0, 0, Width, Height)
mult_image (Image, ImagePart, ImageResult, 0.015, 0)
接着进入正题
执行我们的dot滤波
* Use dots_image to enhance the dot print.
dots_image (ImageResult, DotImage, 5, 'dark', 2)
threshold (DotImage, Region, 80, 255)
接着开始二值化,并创建自定义形状的滤波核区域来进行闭运算
closing_rectangle1 (Region, RegionClosing1, 1, 5)
closing_rectangle1 (RegionClosing1, RegionClosing2, 5, 1)
gen_rectangle2 (Rectangle, 10, 10, rad(45), 3, 0)
closing (RegionClosing2, Rectangle, RegionClosing3)
gen_rectangle2 (Rectangle, 10, 10, rad(135), 3, 0)
closing (RegionClosing3, Rectangle, RegionClosing4)
connection (RegionClosing4, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','height'], 'and', [100,20], [700,40])
执行闭运算之后的区域如下图所示
接着进行我们的连通域分析,通过拆散这些不联通的区域并设定面积和高度条件进行筛选
筛选得到以下区域
到现在 目标已经完成一大半了
我们现在经过闭运算之后已经把原来的点阵区域连接起来了,
这个不是我们想要的效果
所以我们拿着现在连在一起的区域和之前二值化出来的区域进行交集计算
得到下图