形態學基本操作 OpenCV07

2021-10-05 01:40:25 字數 2855 閱讀 4065

數學形態學是數學形態學影象處理的基本理論。其基本的運算包括:二值腐蝕和膨脹、二值開閉運算、骨架抽取、極限腐蝕

擊中擊不中變換、形態學梯度、top-hat變換、顆粒分析、流域變換、灰值腐蝕和膨脹 灰值開閉運算、灰值形態學梯度

最基本的形態學操作為 膨脹(dilate)和腐蝕(erode)

膨脹就是求區域性最大值的操作,會使影象中的高亮區域逐漸增長(變得更白)

腐蝕就是求區域性最小值的操作,影象的高亮區域會逐漸減少

一般使用getstructingelement這個函式 配合相關api使用

getstructingelement函式會返回指定形狀和尺寸的結構元素(核心矩陣)

第乙個引數表示核心的形狀

矩形:morph_rect

交叉形:morph_cross

橢圓形:morph_ellipse

第二個第三個引數分別是核心的尺寸和錨點的位置

一般在呼叫dilate或者erode函式之前先定義乙個mat型別的物件

來獲取getstructingelement的返回值 

對於錨點的位置,預設值point(-1,-1)即為中心點

mat element;

element = getstructuringelement(morph_rect, size(3, 3));

dilate(img1, img2, element); //膨脹

imshow("dilate img", img2);

erode(img1, outimg, element); //腐蝕

imshow("erode img", outimg);

接下來介紹的函式是morphologyex函式

他利用基本的膨脹和腐蝕技術,來執行更加高階的形態學變換 

morphologyex

第三個引數int型別的op表示形態**算的型別

morph_open  --開運算

morph_close --閉運算

morph_gradient --形態學梯度

morph_tophat  --頂帽

morph_blackhat  --黑帽

morph_erode    --腐蝕

morph_dilate   --膨脹

第四個引數 kernel 核心

同樣借助於getstructingelement

第五個引數是錨點的位置 point(-1,-1)表示正中

第六個引數表示函式迭代的次數 可能一次效果並不明顯

開運算

其實就是先腐蝕後膨脹的過程(先變黑在變白)

開運算可以消除小的物體,在纖細處分離物體,

並且在平滑 較大物體的邊界的同時不明顯改變其面積

就是影象中有一些坑坑窪窪白色區塊,可以有效去除掉。

mat openimg;

morphologyex(img1, openimg, morph_open, element);

imshow("open img", openimg);

閉運算

其實就是先膨脹後腐蝕的過程(先變白後變黑)

閉運算可以排除小型黑洞(黑色區域)

mat closeimg;

morphologyex(img1, closeimg, morph_close, element);

imshow("close img", closeimg);

形態學梯度

形態學梯度是膨脹圖與腐蝕圖之差

對二值影象進行這一操作的時候可以將團塊(blob)的邊緣突出出來。

我們可以利用形態學梯度保留物體的邊緣

mat gradientimg;

morphologyex(img1, gradientimg, morph_gradient, element);

imshow("gradient img", gradientimg);

頂帽

是 原影象與開運算操作的影象 之差

因為開運算帶來的結果是放大了裂縫或者區域性低亮度的區域。

從原圖減去開運算後的圖,得到的效果圖突出了比原圖輪廓周圍的區域更明亮的區域

且這一操作與選擇的核的大小相關

頂帽運算往往用來分離比鄰近點亮一些的斑點。

在一幅影象具有大幅的背景,而微小物品比較有規律的情況下,可以使用頂帽進行背景提取

mat tophatimg;

morphologyex(img1, tophatimg, morph_tophat, element);

imshow("tophat img", tophatimg);

黑帽

是 原影象與閉運算操作的影象 之差

黑帽運算後的效果圖突出了比原圖輪廓周圍區域更暗的區域

且這一操作與選擇的核的大小相關

黑帽運算用來分離比鄰近點暗一些的斑塊,效果圖有著非常完美的輪廓。

mat blackhatimg;

morphologyex(img1, blackhatimg, morph_blackhat, element);

imshow("blackhat img", blackhatimg);

opencv 形態學操作

include include includeusing namespace std using namespace cv 開操作 先腐蝕後膨脹 作用 能夠去掉一些小的物件,保留大的物件 閉操作 先膨脹後腐蝕 作用 將小洞給填充上 形態學梯度 膨脹減去腐蝕 作用 求出邊緣 頂帽變換 原影象與開操作之...

opencv形態學操作

1.腐蝕和膨脹都是相對高亮部分的操作 2.開運算 先腐蝕後膨脹 把細微連在一起的兩塊目標分開了,消除暗背景下的較亮區域。閉運算,閉運算是對影象先膨脹後腐蝕 看上去將兩個細微連線的圖塊封閉在一起,閉運算可以用來消除噪音。因為先高亮部分膨脹抵消了小的黑點,大的黑點經過接下來的腐蝕又再次還原回去,小的黑點...

OpenCV3形態學基本操作

mat src 輸入影象 mat dest 輸出影象 int opt cv mop open 開操作 cv mop close 閉操作 cv mop gradient 梯度操作,膨脹減去腐蝕 cv mop tophat 頂帽,原圖 開操作 cv mop blackhat 黑帽,原圖 閉操作 形態學操...