當前位置:編程學習大全網 - 腳本源碼 - 像膨脹腐蝕算法原理

像膨脹腐蝕算法原理

膨脹和腐蝕的主要用途:

消除噪聲;

分割出獨立的圖像元素,在圖像中連接相鄰的元素;

尋找圖像中明顯的極大值或極小值區;

求出圖像的梯度;

註:

腐蝕和膨脹是對像素值大的部分而言的,即高亮白部分而不是黑色部分;

膨脹是圖像中的高亮部分進行膨脹,領域擴張,效果圖擁有比原圖更大的高亮區域;

腐蝕是圖像中的高亮部分被腐蝕掉,領域縮減,效果圖擁有比原圖更小的高亮區域;

2

/9

膨脹原理:

膨脹:求局部最大值;

①定義壹個卷積核B,

核可以是任何的形狀和大小,且擁有壹個單獨定義出來的參考點-錨點(anchorpoint);

通常和為帶參考點的正方形或者圓盤,可將核稱為模板或掩膜;

②將核B與圖像A進行卷積,計算核B覆蓋區域的像素點最大值;

③將這個最大值賦值給參考點指定的像素;

因此,圖像中的高亮區域逐漸增長。

3

/9

腐蝕原理:

腐蝕:局部最小值(與膨脹相反);

①定義壹個卷積核B,

核可以是任何的形狀和大小,且擁有壹個單獨定義出來的參考點-錨點(anchorpoint);

通常和為帶參考點的正方形或者圓盤,可將核稱為模板或掩膜;

②將核B與圖像A進行卷積,計算核B覆蓋區域的像素點最小值;

③將這個最小值賦值給參考點指定的像素;

因此,圖像中的高亮區域逐漸減小。

4

/9

OpenCV中膨脹函數-dilate()

格式:

void dilate(

InputArray src,//輸入

OutputArray dst, //輸出

InputArray kernel, //核大小

Point anchor=Point(-1,-1),// 錨位置,(-1,-1)為中心

int iterations=1, //叠代次數

int borderType=BORDER_CONSTANT,//圖像邊界像素模式

const Scalar& borderValue=morphologyDefaultBorderValue()//邊界值

)

註:

關於核,壹般配合getStructuringElement()使用;

getStructuringElement():返回指定形狀和尺寸的結構元素;

格式:

getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1));

參數:

shape:表核的形狀,矩形MORPH_RECT;交叉形MORPH_CROSS;橢圓形MORPH_ELLIPSE;

ksize:核尺寸大小;

anchor:錨點的位置,錨點只影響形態學運算結果的偏移;

5

/9

OpenCV中腐蝕函數-erode()

格式:

void erode(

InputArray src,//輸入

OutputArray dst, //輸出

InputArray kernel, //核大小

Point anchor=Point(-1,-1),// 錨位置,(-1,-1)為中心

int iterations=1, //叠代次數

int borderType=BORDER_CONSTANT,//圖像邊界像素模式

const Scalar& borderValue=morphologyDefaultBorderValue()//邊界值

)

6

/9

形態學開運算:

開運算(Open Operation):先腐蝕後膨脹的過程;

功能:

消除小物體;

在纖細處分離物體;

平滑較大的邊界並不明顯改變其面積;

7

/9

形態學閉運算:

閉運算(Closing Openration),先膨脹後腐蝕;

功能:

排除小型黑洞(黑斑);

8

/9

OpenCV:morphologyEx()

功能:morphologyEx函數利用基本的膨脹和腐蝕技術,來執行更加高級形態學變換,

如開閉運算,形態學梯度,“頂帽”、“黑帽”等等。

  • 上一篇:如何設計primer-如何如何使用primerprimer設計引物
  • 下一篇:中秋怎麽畫簡單又好看
  • copyright 2024編程學習大全網