6 形態學處理應用(1) 切割身份證號碼

2021-09-21 02:25:06 字數 2537 閱讀 9467

目的:利用matlab將身份證號碼切割出來

效果:先把轉換為二值圖,然後利用腐蝕膨脹和影象重建,找到號碼所在位置,切割出來。

先把影象轉換為二值圖,由影象知,為了將需要區域變成白色,需要對二值圖進行取反

該步**為:

'原圖'

);觀察可知,為了利用影象重建,可以將身份證號碼所在區域利用膨脹連通到一塊

該步**為:

f1=imdilate(b,strel(

'line',20

,0))

;%利用長度為20的橫線進行膨脹

figure,imshow(f1)

,title(

'膨脹'

);

利用橫線進行腐蝕,去除不需要的連通區域

觀察膨脹後的可以發現,人物頭像所佔區域較大,而號碼所在區域特點為較長,因此可以使用橫線進行腐蝕,當橫線的長度略小於號碼的長度時,可以達到將比橫線長度小的白色區域均腐蝕掉,而較長的身份證號碼的中間的一部分會保留下來,可以再利用重建將所有號碼的部分找回。

該步新增**為:

f2=imerode(f1,strel(

'line'

,200,0

));%橫線的長度盡可能長一些,才能達到去除頭像的目的

figure,imshow(f2)

,title(

'腐蝕'

);

利用得到的小區域在上面膨脹後的圖中重建,找到所有號碼所在的連通區域

該步新增**為:

f3=imreconstruct(f2,f1)

;figure,imshow(f3)

,title(

'第一次重建'

);

利用所有號碼所在的連通區域,在二值圖重建,找出圖中身份證的號碼

該步新增**為:

f4=imreconstruct(f3,b)

;figure,imshow(f4)

,title(

'結果'

);

利用find()函式對身份證號碼進行切割

本例**為:

'原圖');

f1=imdilate(b,strel(

'line',20

,0))

;figure,imshow(f1)

,title(

'膨脹');

f2=imerode(f1,strel(

'line'

,200,0

));figure,imshow(f2)

,title(

'腐蝕');

f3=imreconstruct(f2,f1)

;figure,imshow(f3)

,title(

'第一次重建');

f4=imreconstruct(f3,b)

;figure,imshow(f4)

,title(

'結果');

[r,c]

=find(f4)

;f5=f4(

min(r)

:max

(r),

min(c)

:max

(c))

;figure,imshow(f5)

,title(

'號碼'

);

形態學處理

腐蝕,膨脹 效果就是暗的地方侵入亮的地方 使用 給乙個結構元 二維陣列 結構元中有乙個錨點,計算過程就是如果結構元對應的區域有暗的,那錨點就變為暗的 記作 import cv2 as cv import numpy as np s cv.getstructuringelement cv.morph ...

opencv 形態學處理

影象形態學中的幾個基本操作 腐蝕 膨脹 開操作 閉操作。1.1 腐蝕 結構a被結構b腐蝕的定義為,a b a b 可以理解為,移動結構b,如果結構b與結構a的交集完全屬於結構a的區域內,則儲存該位置點,所有滿足條件的點構成結構a被結構b腐蝕的結果。1.2 膨脹 結構a被結構b膨脹的定義為,a b a...

OpenCV 形態學處理

形態學主要處理二值影象 0黑1白 kernel np.ones 5 5 np.uint8 numpy庫生成1陣列,資料型別為整形 img2 cv2.erode img,kernel,iterations 迭代次數,預設為1 膨脹又叫逆腐蝕。先腐蝕後膨脹,可用於降噪。我們把先腐蝕後膨脹的操作合併為開運...