1.目的
(1)開運算
(2)閉運算
(3)形態學梯度
(4)頂帽
(5)黑帽
2.原理
(1)開運算
開運算是通過先對影象腐蝕再膨脹實現的。能夠排除小團塊物體(假設物體較背景明亮)。請看下面,左圖是原影象,右圖是採用開運算轉換之後的結果圖。 觀察發現字母拐彎處的白色空間消失。
(2)閉運算
閉運算是通過先對影象膨脹再腐蝕實現的。能夠排除小型黑洞(黑色區域)。
(3)形態梯度
膨脹圖與腐蝕圖之差,能夠保留物體的邊緣輪廓,如下所示:
(4)頂帽
原圖與開運算之差
(5)黑帽
閉運算與原圖之差
3.部分**解釋
/*
morphologyex引數解釋
src:輸入影象
dst:輸出影象
operation:形態**算型別
element:運算操作核心,由getstructuringelement獲取
*//*形態學操作morph_x的取值範圍是2-6
2:開運算
3:閉運算
4:形態梯度
5:頂帽
6:黑帽
*/morphologyex(src, dst, operation, element);
4.完整**
(1)commoninclude.h
#ifndef common_include
#define common_include
#include
#include
#include
#include
using
namespace
std;
using
namespace cv;
#endif
(2)morph.cpp
#include "commoninclude.h"
int morphology_elem = 0;
int morphology_operator = 0;
int morphology_size = 0;
//形態學操作morph_x的取值範圍是2-6
int max_elem = 2;
int max_operator = 4;
int max_kernel_size = 21;
mat src,dst;
void morphologyoperation(int, void*)
int main(int argc, char**argv)
src = imread(argv[1]);
namedwindow("morphologyoperation", cv_window_autosize);
createtrackbar("operator:\n 0: opening - 1: closing \n 2: gradient - 3: top hat \n 4: black hat", "morphologyoperation",
&morphology_operator, max_operator,
morphologyoperation);
createtrackbar("elem:\n 0:rectangle\n 1:cross\n 2:ellipse", "morphologyoperation",
&morphology_elem, max_elem,
morphologyoperation);
createtrackbar("kernel size:2*n+1","morphologyoperation",
&morphology_size, max_kernel_size,
morphologyoperation);
morphologyoperation(0,0);
waitkey(0);
return(0);
}
參考文獻1. 形態學重建
在形態學梯度影象的基礎上,利用形態學的開閉重建運算對梯度影象進行重建,在保留重要區域倫敦的同時去除細節和雜訊。分水嶺變換存在過分割現象,原因在於檢測的區域性極值過多,造成極值過多的原因在於影象中的非規則灰度擾動和雜訊。對於好的分水嶺影象分割方法,不僅能消除過分割現象,而且應保證分割後的區域倫敦邊緣具...
形態學濾波
include pch.h include include include include using namespace std using namespace cv 形態學 mat g srcimage,g dstimage int g nelementshape morph rect int ...
形態學運算元
形態學運算元的主要思想是用一定形狀的結構元素 在影象中抽取出相應的某些結構,通常可以用於影象的濾波 分割 分類等處理。形態學運算元有腐蝕 膨脹 開和閉四種。腐蝕腐蝕是一種消除邊界點,使邊界向內部收縮的過程。可以用來消除小且無意義的物體。腐蝕的演算法 用3x3的結構元素,掃瞄影象的每乙個畫素 用結構元...