请各位lao帮忙看看,给出一张图片,判断该图片的字符是否有粘连性,有粘连性字符话就返回真。有相关方面的资料吗?我看网上都是对粘连字符的分割,对粘连字符判断很少,如图所示。
我觉得如果正向思考,那么必然是需要去设计这么一种算法的,但是目前我接触过的,好像还没有这类算法,如果题主去设计实现这样一个算法,我相信实现不是难题,但是我们知道一个算法的好坏,是需要“大量的样本数据“,进行不断的优化、实践才可以进化的,所以我建议题主反向思考一下吃需求的实现途径。
例如:反向思考一下,如果知道一个图片的正常结果,那么通过已有算法,去识别出图片中的字符,如果字符与知道的正常结果不一样,则认为粘连,例如:知道结果是TYPE,如果借助已有图片识别算法ocr,识别出为三个字符,或者其他,则认为粘连了
啥是粘连字符串😅😅😅
这个问题需求背景是什么,opencv重点是识别。粘不粘连可以自己算法处理。
粘连字符的分割有很多种方法:
第一种方法:利用阈值法提取联通区域,再利用形态学分离字符;
第二种方法:每个字符定义一个感兴趣区域;
第三种方法: 计算区域每列像素数目,由于不同字符之间连接部分非常狭窄,求取每列像素的全局最小值;
等等。其中第一种方法最为常见,也是本文介绍的方法。
粘连字符分割识别
本次采用halcon自带的分类器文件
一般用于识别数字和字符,以及少数特殊字符
字符库的使用望文生义即可
Document文档字符、DotPrint点阵字符、Industrial工业字符等
待识别原图
图中数字俩俩连在一起
根据直方图阈值法阈值分割结果
填充孔洞后
利用矩形元素在垂直方向开运算
此步骤为关键一步
此时已分离单个字符
利用halcon自带字符库
最终识别结果
核心程序
*(1)字符分割
*关闭更新
dev_update_window ('off')
*读取图像
read_image (Bottle, 'bottle2.png')
*获得图像大小
get_image_size (Bottle, Width, Height)
*关闭窗口
dev_close_window ()
*打开一个图像大小两倍的窗口
dev_open_window (0, 0, 2Width, 2Height, 'black', WindowHandle)
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')
dev_display (Bottle)
disp_continue_message (WindowHandle, 'black', 'true')
*全局阈值处理,获得区域
threshold (Bottle, RawSegmentation, 0, 95)
*根据形状特征填充孔洞
fill_up_shape (RawSegmentation, RemovedNoise, 'area', 1, 5)
*利用圆形结构元素执行开运算
opening_circle (RemovedNoise, ThickStructures, 2.5)
dev_display (Bottle)
*填充孔洞
fill_up (ThickStructures, Solid)
*利用矩形结构元素执行开运算。矩形宽设为1,高为7,相当于低于7的连接被截断
opening_rectangle1 (Solid, Cut, 1, 7)
*计算连通区域
connection (Cut, ConnectedPatterns)
*计算区域交集
intersection (ConnectedPatterns, ThickStructures,NumberCandidates)
*根据区域面积进行选择
select_shape (NumberCandidates, Numbers, 'area', 'and', 300, 9999)
*区域排序
sort_region (Numbers, FinalNumbers, 'first_point', 'true', 'column')
*(2)读取数字
*读取OCR分类器(多层感知器)
read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
*使用分类器进行字符分类
do_ocr_multi_class_mlp (FinalNumbers, Bottle, OCRHandle, RecNum, Confidence)
*求取字符区域中心坐标及面积
area_center (FinalNumbers, Area, Row, Column)
set_display_font (WindowHandle, 27, 'mono', 'true', 'false')
*循环显示读取得到的数字
for i := 0 to |RecNum| -1 by 1
*显示结果
disp_message (WindowHandle, RecNum[i], 'image', 80, Column[i]-3, 'green', 'false')
endfor
*清除分类器
clear_ocr_class_mlp (OCRHandle)
dev_update_window ('off')