形態學主要用於二值化後的影像,根據使用者的目的,用來凸顯影像的形狀特徵,像邊界和連通區域等,同時像細化、畫素化、修剪毛刺等技術也常用於影象的預處理和後處理,形態學操作的結果除了影像本身,也和結構元素的形狀有關,結構元素和空間域操作的濾波概念類似,如以下即為乙個3×3的結構元素,我們可以自行決定大小和形狀,在實際的使用上,是以奇數的矩形如3×3、5×5、7×7較常見。
我們這邊介紹型態學裡最基本的侵蝕和膨脹,侵蝕顧名思義就是消融物體的邊界,如果物體大於結構元素,侵蝕的結果是讓物體瘦一圈,而這一圈的寬度是由結構元素大小決定的,如果物體小於結構元素,則侵蝕後物體會消失,如果物體之間有小於結構元素的細小連通,侵蝕後會**成兩個物體,opencv也提供erode()函式執行蝕刻。
對於集合i和h,假設使用h對i進行侵蝕,記作:
操作上我們把h當作結構元素,h在整個影像平面上移動,當h的原點平移到物體上某位置時,如果此時h能完全包覆於物體i中,就紀錄物體此點位置,所有這樣的畫素位置集合,即為侵蝕後的物體,h的原點位置使用者自行設計,通常都為**。
假設h長、寬皆為d,對物體(i)進行侵蝕,侵蝕後物體(i)四周皆縮水d/2的寬度。
假設h長、寬皆為d,物體高度d,侵蝕後物體成為一條線。
opencv侵蝕
erode(const mat &src, mat &dst, mat kernel, point anchor=point(-1,-1), int iterations=1)
膨脹為擴大物體的邊界,而擴大的寬度是由結構元素大小決定的,如果物體間有小於結構元素的細小間隙,膨脹能讓原本分開的物體連線起來,opencv提供dilate()函式進行膨脹。
對於集合i和h,假設使用h對i進行膨脹,記作:
操作上我們把h當作結構元素,h在整個影像平面上移動,當h的原點平移到物體上某位置時,紀錄此時h包含的所有畫素位置,所有這樣的畫素位置集合,即為膨脹後的物體,h的原點位置使用者自行設計,通常都為**。
假設h長、寬皆為d,對物體(i)進行膨脹,膨脹後物體(i)四周皆擴大d/2的寬度。
假設h長、寬皆為d,物體高度d,膨脹後物體(i)四周皆擴大d/2的寬度。
opencv膨脹
dilate(const mat &src, mat &dst, mat kernel, point anchor=point(-1,-1), int iterations=1)
opencv 得結構元素
opencv提供getstructuringelement()讓我們得到要進行侵蝕或膨脹的模板
mat getstructuringelement(int shape, size ksize, point anchor=point(-1,-1))
以下程式碼示範erode()和dilate()的使用,模板引數可輸入mat(),此時會用3×3的矩形模板,也可以用getstructuringelement()來得到想要的大小和形狀的模板,我們可以看出二值化的圖形,在進行侵蝕或膨脹後,影像變化的樣子:
#include #include using namespace cv;
int main()
**:
opencv 侵蝕和擴張
形態作業 形態操作將結構元素應用於輸入影象並生成輸出影象。最基本的形態作用是 侵蝕和擴張。消除噪音 隔離單個元素並連線影象中的不同元素。查詢影象中的強度凸點或孔 擴張 該操作包括將影象與某些核心進行卷積,其可以具有任何形狀或尺寸,通常為正方形或圓形。核心具有定義的錨點,通常是核心的中心。當核心在影象...
測地膨脹和膨脹重建 lhMorpRDilate
函式 lhmorprdilate 說明 形態學測地膨脹和膨脹重建運算 引數 src 輸入影象 msk 掩模影象 dst 輸出影象 se 結構元素 iterations測地膨脹的次數,當預設為 1時,為重建運算 原始碼 void lhmorprdilate const iplimage src,con...
人生不能膨脹
乙個擦鞋匠變為百萬富翁不能不說是個奇蹟,而又由百萬富翁淪為身無分文的窮光蛋,卻不為奇怪。人的命運有時就是一部充滿懸念的戲劇,自己的心態就是這部戲劇的導演。縣城裡有一條專業擦鞋街,這裡有30多個擦鞋匠,他們排成一排,靠擦鞋謀生。在擦鞋中我發現了乙個特別現象。擦鞋匠中有乙個小夥子,他的生意特別好,這引起...