首页 > 代码库 > opencv mser算法框出图片文字区域
opencv mser算法框出图片文字区域
MSER(Maximally Stable Extrernal Regions)是区域检测中影响最大的算法
1. 原理
MSER基于分水岭的概念:对图像进行二值化,二值化阈值取[0, 255],这样二值化图像就经历一个从全黑到全白的过程(就像水位不断上升的俯瞰图)。在这个过程中,有些连通区域面积随阈值上升的变化很小,这种区域就叫MSER。
,其中Qi表示第i个连通区域的面积,Δ表示微小的阈值变化(注水),当vi小于给定阈值时认为该区域为MSER。
显然,这样检测得到的MSER内部灰度值是小于边界的,想象一副黑色背景白色区域的图片,显然这个区域是检测不到的。因此对原图进行一次MSER检测后需要将其反转,再做一次MSER检测,两次操作又称MSER+和MSER-
2. 算法步骤
从上节可以看到,MSER的基本思路很简单,但编码实现是很需要算法和编程技巧的
以下算法步骤基于改进的分水岭算法:注水的地方固定,只有当该处的沟壑水漫出来后才能注入到另一个沟壑
此外,为方便编程,面积变化的计算方式也从双边改为单边检测,即
import sys sys.path.append(‘/usr/local/lib/python2.7/dist-packages/‘) from PIL import Image import numpy as np import cv2 import matplotlib.pyplot as plt img = cv2.imread(‘img/origin2/31.jpg‘) mser = cv2.MSER_create(_min_area=300) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) regions, boxes = mser.detectRegions(gray) for box in boxes: x, y, w, h = box cv2.rectangle(img, (x,y),(x+w, y+h), (255, 0, 0), 2) plt.imshow(img,‘brg‘) plt.show()
opencv mser算法框出图片文字区域
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。