android中使用OpenCV之?dāng)?shù)學(xué)形態(tài)學(xué)

數(shù)學(xué)形態(tài)學(xué)是由一組形態(tài)學(xué)的代數(shù)運算子組成的,其常見的運算有膨脹(或擴張)厅贪、腐蝕(或侵蝕)蠢护、開啟、閉合养涮、梯度葵硕、黑帽、頂帽以及擊中擊不中變換等贯吓。我在這兒主要介紹以上8種運算在OpenCV中的使用懈凹。
OpenCV中形態(tài)數(shù)學(xué)的算子實現(xiàn)方法為:morphologyEx()

 /**
     * 形態(tài)學(xué)濾波函數(shù) morphologyEx()
     * 參數(shù)1:輸入的圖片
     * 參數(shù)2;輸出的圖片
     * 參數(shù)3:形態(tài)學(xué)運算的類型    MORPH_ERODE  //腐蝕
     *                        MORPH_DILATE//膨脹
     *                        MORPH_OPEN  開運算
     *                        MORPH_CLOSE 閉運算
     *                        MORPH_GRADIENT 梯度運算
     *                        MORPH_TOPHAT //頂帽
     *                        MORPH_BLACKHAT //黑帽
     *                        MORPH_HITMISS//擊中擊不中變換 
     * 參數(shù)4:核心悄谐,當(dāng)這個值為NULL時介评,默認(rèn)為3*3的核
     * 參數(shù)5:錨點
     * 參數(shù)6:迭代次數(shù)
     * 參數(shù)7:邊界模式
     * 參數(shù)8:邊界值為常數(shù)時,會有默認(rèn)值
     */
CV_EXPORTS_W 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() );

膨脹

膨脹:參照核爬舰,求局部最大值们陆,因此亮度高的地方會擴大。具體介紹參考:這里寫鏈接內(nèi)容

Mat img(h,w,CV_8UC4,pixels);
//核心
Mat coreMat = getStructuringElement(MORPH_RECT,Size(10,10));
//膨脹運算
morphologyEx(img,img,MORPH_DILATE,coreMat);

這里寫圖片描述

腐蝕

腐蝕:參照核情屹, 求局部最小值坪仇,因此暗的地方會越來越大。具體介紹參考:這里寫鏈接內(nèi)容

Mat img(h,w,CV_8UC4,pixels);
//核心
Mat coreMat = getStructuringElement(MORPH_RECT,Size(10,10));
//腐蝕運算
morphologyEx(img,img,MORPH_ERODE,coreMat);

這里寫圖片描述

開運算

開運算:先腐蝕后膨脹垃你,消除小物體椅文,在纖細(xì)點分離物體,平滑較大物體的邊界惜颇,操作的同時原圖大小改變不明顯皆刺。

Mat img(h,w,CV_8UC4,pixels);
//核心
Mat coreMat = getStructuringElement(MORPH_RECT,Size(10,10));
//開運算
morphologyEx(img,img,MORPH_OPEN,coreMat);

這里寫圖片描述

閉運算

閉運算:先膨脹后腐蝕,消除小型黑洞凌摄,是圖像更新鮮活明亮羡蛾。

Mat img(h,w,CV_8UC4,pixels);
//核心
Mat coreMat = getStructuringElement(MORPH_RECT,Size(10,10));
//閉運算
morphologyEx(img,img,MORPH_CLOSE,coreMat);

這里寫圖片描述

梯度

形態(tài)學(xué)梯度:膨脹圖與腐蝕圖之差(dilate- erode), 可以保留物體的邊緣輪廓锨亏。

    Mat img(h,w,CV_8UC4,pixels);
    vector<Mat> outchannl;
    //顏色分離
    split(img,outchannl);
    Mat out3img;
    //顏色形態(tài)轉(zhuǎn)換
    cvtColor(img,out3img,COLOR_BGRA2BGR);
    //核
    Mat coreMat = getStructuringElement(MORPH_RECT,Size(10,10));
    //形態(tài)學(xué)梯度運算
    morphologyEx(out3img,out3img,MORPH_GRADIENT,coreMat);
    uchar * ptr = img.ptr(0);
    uchar *out = out3img.ptr(0);
    //只取BGR
    for (int i = 0; i < h * w; ++i) {
        ptr[4*i+0] = out[3*i+0];
        ptr[4*i+1] = out[3*i+1];
        ptr[4*i+2] = out[3*i+2];
    }

這里寫圖片描述

頂帽

頂帽:原圖和開運算之差痴怨,做背景提燃逡蟆(有大背景或者微小物體有規(guī)律的時候)。

    Mat img(h,w,CV_8UC4,pixels);
    vector<Mat> outchannl;
    //顏色分離
    split(img,outchannl);
    Mat out3img;
    //顏色形態(tài)轉(zhuǎn)換
    cvtColor(img,out3img,COLOR_BGRA2BGR);
    //核
    Mat coreMat = getStructuringElement(MORPH_RECT,Size(10,10));
    //頂帽運算
    morphologyEx(out3img,out3img,MORPH_TOPHAT,coreMat);
    uchar * ptr = img.ptr(0);
    uchar *out = out3img.ptr(0);
    //只取BGR
    for (int i = 0; i < h * w; ++i) {
        ptr[4*i+0] = out[3*i+0];
        ptr[4*i+1] = out[3*i+1];
        ptr[4*i+2] = out[3*i+2];
    }

這里寫圖片描述

黑帽

黑帽:閉運算和原圖之差腿箩,可以得到一個完美的輪廓圖豪直。

    Mat img(h,w,CV_8UC4,pixels);
    vector<Mat> outchannl;
    //顏色分離
    split(img,outchannl);
    Mat out3img;
    //顏色形態(tài)轉(zhuǎn)換
    cvtColor(img,out3img,COLOR_BGRA2BGR);
    //核
    Mat coreMat = getStructuringElement(MORPH_RECT,Size(10,10));
    //黑帽運算
    morphologyEx(out3img,out3img,MORPH_BLACKHAT,coreMat);
    uchar * ptr = img.ptr(0);
    uchar *out = out3img.ptr(0);
    //只取BGR
    for (int i = 0; i < h * w; ++i) {
        ptr[4*i+0] = out[3*i+0];
        ptr[4*i+1] = out[3*i+1];
        ptr[4*i+2] = out[3*i+2];
    }

這里寫圖片描述

擊中擊不中變換

擊中-擊不中運算常用于二值圖像,它用于基于結(jié)構(gòu)元素的配置珠移,從圖像中尋找具有某種像素排列特征的目標(biāo)弓乙,如單個像素、顆粒中交叉或縱向的特征钧惧、直角邊緣或其他用戶自定義的特征等暇韧。計算時,只有當(dāng)結(jié)構(gòu)元素與其覆蓋的圖像區(qū)域完全相同時浓瞪,中心像素的值才會被置為1懈玻,否則為0。相對于原圖直接減去腐蝕的圖像乾颁,擊中擊不中變換保留了更多的細(xì)節(jié)涂乌,邊緣也更加明顯突出赔硫。

     Mat img(h,w,CV_8UC4,pixels);
    Mat out;
    //轉(zhuǎn)換為單通道圖片
    cvtColor(img,out,COLOR_BGR2GRAY);
    //核
    Mat coreMat = getStructuringElement(MORPH_RECT,Size(10,10));
    //擊中擊不中變換運算 src.type() == CV_8UC1
    morphologyEx(out,out,MORPH_HITMISS,coreMat);

    uchar *ptr = img.ptr(0);
    uchar *outPtr = out.ptr(0);
    int size = w*h;
    for (int i = 0; i < size; ++i) {
        ptr[4*i+0] = outPtr[I];
        ptr[4*i+1] = outPtr[I];
        ptr[4*i+2] = outPtr[I];
    }

這里寫圖片描述

本文章著作版權(quán)所屬:微笑面對,請關(guān)注我的CSDN博客:博客地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舵匾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荐操,更是在濱河造成了極大的恐慌诅妹,老刑警劉巖罚勾,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吭狡,居然都是意外死亡尖殃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門划煮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來送丰,“玉大人,你說我怎么就攤上這事般此◎秸剑” “怎么了牵现?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵铐懊,是天一觀的道長。 經(jīng)常有香客問我瞎疼,道長科乎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任贼急,我火速辦了婚禮茅茂,結(jié)果婚禮上捏萍,老公的妹妹穿的比我還像新娘。我一直安慰自己空闲,他們只是感情好令杈,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碴倾,像睡著了一般逗噩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跌榔,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天异雁,我揣著相機與錄音,去河邊找鬼僧须。 笑死纲刀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的担平。 我是一名探鬼主播示绊,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼暂论!你這毒婦竟也來了耻台?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤空另,失蹤者是張志新(化名)和其女友劉穎盆耽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扼菠,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡摄杂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了循榆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片析恢。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秧饮,靈堂內(nèi)的尸體忽然破棺而出映挂,到底是詐尸還是另有隱情,我是刑警寧澤盗尸,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布柑船,位于F島的核電站,受9級特大地震影響泼各,放射性物質(zhì)發(fā)生泄漏鞍时。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逆巍。 院中可真熱鬧及塘,春花似錦、人聲如沸锐极。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灵再。三九已至味咳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間檬嘀,已是汗流浹背槽驶。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸳兽,地道東北人掂铐。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像揍异,于是被迫代替她去往敵國和親全陨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 在之前的圖像處理中我們已經(jīng)使用到了兩個最基本的圖像形態(tài)學(xué)變換:腐蝕和膨脹衷掷。但之前的文章并不主要講解圖像形態(tài)學(xué)變換辱姨,...
    HoFie閱讀 3,163評論 0 5
  • 姓名:朱睿琦 學(xué)號:15180288015 參考:http://blog.csdn.net/sn_gis/arti...
    BLASSREITER閱讀 995評論 0 0
  • 1.1 形態(tài)學(xué)概述 形態(tài)學(xué)(morphology)一詞通常表示生物學(xué)的一個分支,該分支主要研究動植物的形態(tài)和結(jié)構(gòu)戚嗅。...
    俊瑤先森閱讀 2,874評論 0 4
  • 形態(tài)學(xué)處理 數(shù)學(xué)形態(tài)學(xué)(也稱圖像代數(shù))表示以形態(tài)為基礎(chǔ)對圖像進(jìn)行分析的數(shù)學(xué)工具雨涛。他的基本O思想是用具有一定形態(tài)的結(jié)...
    木夜溯閱讀 1,850評論 0 2
  • 這篇文章總結(jié)比較全面:http://blog.csdn.net/timidsmile/article/detail...
    rogerwu1228閱讀 1,837評論 0 3