簡而言之:一組基於形狀處理影象的操作。形態操作將結構元素應用於輸入影象並生成輸出影象。
最基本的形態作用是:侵蝕和擴張。它們有廣泛的用途,即:
消除噪音
隔離單個元素並連線影象中的不同元素。
查詢影象中的強度凸點或孔
我們將簡要解釋膨脹和侵蝕,使用以下影象作為示例:
該操作包括將影象與某些核心(b)進行卷積,其可以具有任何形狀或尺寸,通常為正方形或圓形。ab
核心具有定義的錨點,通常是核心的中心。b
當核心在影象上掃瞄時,我們計算由b重疊的最大畫素值,並用該最大值替換錨點位置中的影象畫素。您可以推斷,這種最大化的操作會使影象中的亮區「增長」(因此稱為擴張)。以上圖為例。應用擴張我們可以得到:bb
背景(明亮)擴大了字母的黑色地區。
為了更好地把握想法並避免可能的混亂,在另乙個例子中,我們已經將原始影象倒過來,如白色的物件現在是這個字母。我們已經執行了兩個具有大小的矩形結構元素的擴張3x3。
左圖:原圖反轉,右圖:產生擴張
膨脹使物體變白。
這個操作是擴張的姊妹。它計算給定核心區域的區域性最小值。
當核心在影象上掃瞄時,我們計算由重疊的最小畫素值,並用該最小值替換錨點下的影象畫素。bb
對於擴張的例子,我們可以將侵蝕運算元應用於原始影象(如上所示)。您可以在下面的結果中看到,影象的明亮區域(背景,顯然)變得更薄,而黑暗區域(「寫作」)變得更大。
以相似的方式,通過對反轉的原始影象(具有尺寸的矩形結構元素的兩次侵蝕)施加侵蝕操作來產生相應的影象3x3:
左圖:原圖反轉,右圖:造成侵蝕
侵蝕使物體變白。
**實現:
#include #include using namespace cv;
mat src, dst;
char output_win = "output image";
int element_size = 3;
int max_size = 21;
void callback_demo(int, void*);
int main(int argc, char** argv)
namedwindow("input image", cv_window_autosize);
imshow("input image", src);
namedwindow(output_win, cv_window_autosize);
createtrackbar("element size :", output_win, &element_size, max_size, callback_demo);
callback_demo(0, 0);
waitkey(0);
return 0;
}void callback_demo(int, void*)
OpenCV 膨脹與腐蝕
include include include using namespace cv using namespace std int element size 3 int max size 21 mat src,dst void callback demo int,void int main int...
Open Cv 膨脹與腐蝕
影象形態學1 膨脹 dilate 與腐蝕 是灰度與二值影象處理中的重要手段 數學集合論和拓撲集合的基礎上發展起來 膨脹 dilate 與腐蝕 erode 最值濾波 3 3模板?膨脹 3 3模板中的最大值替換中心畫素 腐蝕 3 3模板中的最小值替換中心畫素 膨脹的作用 物件大小增加乙個畫素 3x3 平...
OpenCV 膨脹與腐蝕
全域性變數宣告 mat g srcimage,g dstimage int g ntrackbarnumber 0 0表示腐蝕erode,1表示膨脹dilate int g nkernelsize 3 核大小 全域性函式宣告 void on trackbarnumberchange int,void...