目的:利用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 膨脹又叫逆腐蝕。先腐蝕後膨脹,可用於降噪。我們把先腐蝕後膨脹的操作合併為開運...