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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM