消除噪聲;
分割出獨立的圖像元素,在圖像中連接相鄰的元素;
尋找圖像中明顯的極大值或極小值區;
求出圖像的梯度;
註:
腐蝕和膨脹是對像素值大的部分而言的,即高亮白部分而不是黑色部分;
膨脹是圖像中的高亮部分進行膨脹,領域擴張,效果圖擁有比原圖更大的高亮區域;
腐蝕是圖像中的高亮部分被腐蝕掉,領域縮減,效果圖擁有比原圖更小的高亮區域;
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函數利用基本的膨脹和腐蝕技術,來執行更加高級形態學變換,
如開閉運算,形態學梯度,“頂帽”、“黑帽”等等。