OpenCV iOS 中的形態學變換(11)

2021-09-11 17:16:41 字數 1969 閱讀 7942

形態學的高階形態往往是建立在腐蝕和膨脹這兩個基本操作之上,關於腐蝕和膨脹請參考opencv中的腐蝕和膨脹(9)

使用opencv中函式morphologyex進行形態學操作

(1)開運算 (opening)

(2)閉運算 (closing)

(3)形態梯度 (morphological gradient)

(4)頂帽 (top hat)

(5)黑帽(black hat)

開運算(opening)

開運算是通過先對影象腐蝕再膨脹實現的

能夠排除小團塊的物體(假設物體背景明亮)

閉運算(closing)

閉運算是通過先對影象膨脹後再腐蝕實現的

能夠排除小型黑洞(黑色區域)

形態梯度(morphological gradient)

膨脹圖與腐蝕圖只差

頂帽(top hat)

原影象與開運算結果的圖只差

黑帽(black hat)

閉運算結果圖與原影象只差

函式morphologyex引數介紹

void morphologyex( inputarray src,// 預處理影象

outputarray dst,// 處理結果影象

int op,// 需要執行的形態學操作

inputarray kernel,                  

point anchor = point(-1,-1),

int iterations =1,

int bordertype = border_constant,

const scalar& bordervalue = morphologydefaultbordervalue()

op 有六種形式 (2--6)

opening:morph_open: 2 // 開運算

closing:morph_close: 3 // 閉運算

gradient:morph_gradient: 4 // 形態梯度

top hat:morph_tophat: 5 // 頂帽

black hat:morph_blackhat: 6 // 黑帽

**

- (void)initmat break;

case 1: break;

case 2: break;

- (void)morphologyex {

// 由於 morph_x的取值範圍是: 2,3,4,5 和 6

mat element = getstructuringelement(morph_elem, cv::size(2 * morph_size + 1, 2 * morph_size + 1), cv::point(morph_size, morph_size));

/// 執行指定形態學操作

morphologyex(m_src, m_dst, morph_operator, element);

_im**iew2.image = mattouiimage(m_dst);//morph_operator

建立公共變數

mat m_src, m_dst;

int morph_elem = 0;

int morph_size = 0;

int morph_operator = 0;

呼叫

[self initmat];

[self createslider];

[self createimageview];

參考資料

opencv for ios 學習筆記(十)—— 形態學變換

更多形態學變換

形態學重建

在形態學梯度影象的基礎上,利用形態學的開閉重建運算對梯度影象進行重建,在保留重要區域倫敦的同時去除細節和雜訊。分水嶺變換存在過分割現象,原因在於檢測的區域性極值過多,造成極值過多的原因在於影象中的非規則灰度擾動和雜訊。對於好的分水嶺影象分割方法,不僅能消除過分割現象,而且應保證分割後的區域倫敦邊緣具...

形態學濾波

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的結構元素,掃瞄影象的每乙個畫素 用結構元...