開閉操作恢復被噪聲汙染的指紋紋路
一、 目的
對被噪聲汙染的指紋進行腐蝕,膨脹,開操作,並思考怎樣能更好地修復指紋中的裂縫。
二、程式碼
先對噪聲指紋影象進行腐蝕,接著對噪聲指紋影象先後執行開操作、膨脹,最後再對開操作執行閉操作,具體實現程式碼如下:
%讀入噪聲指紋影象 img = imread('fingerprint.tif'); figure; subplot(1,3,1); imshow(img); title('噪聲指紋影象'); se = ones(3); %結構元 %腐蝕 img_erode = imerode(img,se); subplot(1,3,2); imshow(img_erode); title('腐蝕後的影象'); %對原影象進行開操作 img_open = imopen(img,se); subplot(1,3,3); imshow(img_open); title('對原影象進行開操作'); %開操作的膨脹 img_dilate = imdilate(img_open,se); figure; subplot(1,3,1); imshow(img_dilate); title('開操作的膨脹'); %開操作的閉運算 img_close = imclose(img_open,se); subplot(1,3,2); imshow(img_close); title('開操作的閉操作'); %膨脹後進行腐蝕 img_erode1 = imerode(img_dilate,se); subplot(1,3,3); imshow(img_erode1); title('膨脹後進行腐蝕');
三、結果分析
得到的結果如下:
由結果我們可以看到,腐蝕操作消除了原始影象中大部分噪聲,但同時也使指紋間產生斷裂;而對原影象進行開操作後,影象的輪廓更加平滑,且指紋外部的噪聲都被消除,雖然執行開操作之後指紋斷裂沒腐蝕操作那麼嚴重,但仍有斷裂,因此開操作之後執行了閉操作;閉操作使指紋間的斷裂連線了起來,但仍有些指紋紋路沒有完全修復;開操作之後執行膨脹操作可以使指紋間的大部分斷裂得到恢復,但紋路變粗,於是對其進行腐蝕,可以讓紋路變細。將開操作後進行閉操作得到的影象與膨脹後進行腐蝕得到的影象進行對比,我們可以發現兩者是一樣的,這也說明了閉操作就是膨脹後進行腐蝕。
以上的操作並沒有將指紋間的紋路完全恢復,這是因為在保持連續性方面沒有插入任何條件,而如果根據骨架的概念,使影象最大限度的細化、連通,且受到的腐蝕最小,可以更好地恢復指紋紋路,不過需要多次嘗試才能得到比較理想的結果。
相關推薦
開閉操作恢復被噪聲汙染的指紋紋路
一、 目的對被噪聲汙染的指紋進行腐蝕,膨脹,開操作,並思考怎樣能更好地修復指紋中的裂縫。二、程式碼先對噪聲指紋影象進行腐蝕,接著對噪聲指紋影象先後執行開操作、膨脹,最後再對開操作執行閉操作,具體實現程式碼如下:%讀入噪聲指紋影象 img = imread('fingerpri
第十九天開閉操作 提取水平、垂直線
開閉操作都是基於先腐蝕再膨脹進行運算的, kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (**, **)) 腐蝕時候將x軸設為1個畫素點,即去掉水平方向的線。豎直方向同理. 總結開操作可以刪除小的干擾塊 閉操作是先膨脹再腐蝕,參見下圖,黑色
opencv學習(二十四):開閉操作
程式碼如下: #匯入cv模組 import cv2 as cv import numpy as np #開操作,刪除小的干擾快 def open_demo(image): print(image.shape) gray = cv.cvtColor(image, cv.COLOR
opencv(10)-開閉操作+其他形態學操作
開閉操作 開操作-線的提取:對結果元素cv2.getStructuringElement的ksize進行操作,就可以提取 1.ksize = (15,1) 2.ksize=(1,15)
python實現opencv學習二十一:影象的開閉操作
作用:刪除影象的小的干擾項原始碼如下:# -*- coding=GBK -*- import cv2 as cv #影象的開閉操作 def open_image(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY
形態學開閉操作
膨脹、腐蝕、開、閉運算是數學形態學最基本的變換。本文主要針對二值影象的形態學膨脹:把二值影象各1畫素連線成分的邊界擴大一層(填充邊緣或0畫素內部的孔);腐蝕:把二值影象各1畫素連線成分的邊界點去掉從而縮小一層(可提取骨
影象形態學:腐蝕、膨脹、開操作、閉操作
今天被問到影象形態學有啥作用,啥時候用腐蝕,啥時候用膨脹,啥時候用開閉操作呢? 1. 腐蝕是一種消除邊界點,使邊界向內部收縮的過程。 可以用來消除小且無意義的物體。 腐蝕的演算法: 用3x3的結構元素,掃描影象的每一個畫素 用結構元素與其覆蓋的二值影象做“與”操作 如果都為1,結果
搬瓦工映象站bwh1.net被DNS汙染,國內打不開搬瓦工官網
今天下午(2018年10月17日),繼搬瓦工主域名bandwagonhost.com被汙染後,這個國內的映象地址bwh1.net也被牆了。那麼目前應該怎麼訪問搬瓦工官網呢? 訊息來源:搬瓦工優惠網->搬瓦工映象站bwh1.net被DNS汙染,國內打不開搬瓦工官 搬瓦工官網地址
Opencv--形態學影象處理--膨脹與腐蝕,開操作與閉操作
一、理論與概念講解——從現象到本質 1.1 形態學概述 形態學(morphology)一詞通常表示生物學的一個分支,該分支主要研究動植物的形態和結構。而我們影象處理中指的形態學,往往表示的是數學形態學。下面一起來了解數學形態學的概念。 數學形態學(M
形態學-腐蝕、膨脹、開操作、閉操作
接下來介紹影象形態學中的幾個基本操作:腐蝕、膨脹、開操作、閉操作。 1.腐蝕 結構A被結構B腐蝕的定義為, A⨀B={z|(B)z⊆A} 可以理解為,移動結構B,如果結構B與結構A的交集完全屬於結構A的區域內,則儲存該位置點,所有滿足條件的點構成結構A被
OpenCV學習筆記-形態學操作-腐蝕膨脹-開閉運算
一個可以調節引數的形態學例題,用到的自定義核函式為:IplConvKernel * cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y, int shape, int *va
形態學開操作與閉操作
//開操作 void Open(IplImage *src,IplImage *dst,IplImage *se,Position *center){ Erode(src, dst, se, center); Dilate(dst, dst, se, center); } //閉操作void Cl
關於Oracle誤操作--資料被Commit後的資料回退恢復(閃回)
今天操作Oracle資料庫時,做一個Update資料時,不小心少寫了個where,看這粗心大意的。 於是乎,把所有的員工工號都給更新成一個同一個工號了。這是一個悲催的故事。 因為工號是Check了好多次才存入資料庫,工號是唯一性的啊~~ 不過,
設計模式六大原則(6):開閉原則
思考 外部 編程人員 恰恰 單一職責 何事 適應 擴展 分享 開閉原則 定義:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。 問題由來:在軟件的生命周期內,因為變化、升級和維護等原因需要對軟件原有代碼進行修改時,可能會給舊代碼中引入錯誤,也可能會使我們不得不對
“開-閉”原則 (Open-Closed principle, OCP)
sof 般的 方法 mod 關閉 man nbsp 接口 這一 “開-閉”原則 (Open-Closed principle, OCP) 一個軟件實體應當對擴展開放,對修改關閉。 Software entities should be open for extensio
11設計模式六大原則——開閉原則
職責 art 並不是 錯誤 接口 屬於 倒置 編程 探討 定義:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。 問題由來:在軟件的生命周期內,因為變化、升級和維護等原因需要對軟件原有代碼進行修改時,可能會給舊代碼中引入錯誤,也可能會使我們不得不對整個功能進行重構,
如何恢復被電腦誤刪的文件
恢復 電腦 誤刪 文件 我們每天用電腦處理文件的時間越來越多,如何更好地管理電腦中的文件,避免出現數據丟失也越來越成為人們關註的話題。電腦上刪除的一些文件該怎麽被恢復回來呢。有些人玩電腦不小心刪除了文件不在回收站又該如何才能恢復呢? 想要恢復誤刪的文件,我們可以選擇使用迅龍數據恢復軟件進行恢復
開閉原則
通過 活性 sed 金庸 pri 歸納 pla out none 定義: 一個軟件實體如類,模塊和函數應該對擴展開放,對修改關閉。 什麽是開閉原則 開閉原則明確的告訴我們:軟件實現應該對擴展開放,對修改關閉,其含義是說一個軟件實體應該通過擴展來實現變化,而不是通過修改已有的
面向對象設計原則二:開閉原則(OCP)
name 返回 展開 打開 設計原則 data turn acl int 開閉原則(OCP)定義:對擴展開發,對修改關閉。好處: 適應性和靈活性。 穩定性和延續性。 可復用性與可維護性。 解釋說明:開閉原則指的是兩方面:對功能擴展開發,對修改進
【大話設計模式讀書筆記——開閉原則】
等等 使用方式 價值 log 變更 重用 中間 多種實現 過程 開閉原則 在面向對象編程領域中,開閉原則規定“軟件中的對象(類,模塊,函數等等)應該對於擴展是開放的,但是對於修改是封閉的”[1],這意味著一個實體是允許在不改變它的源代碼的前提下變更它的行為。該特性在產品化