opencv mser算法框出图片文字区域

Posted 星空守望者--jkmiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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算法框出图片文字区域的主要内容,如果未能解决你的问题,请参考以下文章

mser 最大稳定极值区域(文字区域定位)算法 附完整C代码

OpenCV 例程 300篇247. 特征检测之最大稳定极值区域(MSER)

OpenCV 例程 300篇247. 特征检测之最大稳定极值区域(MSER)

MSER+NMS文本区域检测

有没有人在 OpenCV 中使用 MSER 来检测区域?

最大稳定极值区域(MSER)检测