1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        OpenCV中泛洪填充算法解析與應(yīng)用

        共 1519字,需瀏覽 4分鐘

         ·

        2021-12-29 09:01

        點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        泛洪填充(Flood Fill)很多時(shí)候國內(nèi)的開發(fā)者稱它為漫水填充,該算法在圖形填充與著色應(yīng)用程序比較常見,屬于標(biāo)配。在圖像處理里對(duì)二值圖像的Hole可以通過泛洪填充來消除,這個(gè)是泛洪填充在圖像處理中很經(jīng)典的一個(gè)用途,此外還可以通過泛洪填充為ROI區(qū)域著色。這個(gè)在圖像處理也經(jīng)常用到。讓我們首先看一下泛洪填充算法本身,然后再說一下在圖像處理中的應(yīng)用場景。

        ?

        泛洪填充算法


        通常泛洪填充需要從一個(gè)點(diǎn)開始,這個(gè)點(diǎn)可以隨機(jī)選擇的一點(diǎn),但是一定要在填充區(qū)域內(nèi)部,然后它就會(huì)進(jìn)行四鄰域或者把鄰域?qū)ふ覍?duì)周圍像素完成填充,直到遇到跟指定隨機(jī)點(diǎn)像素值不同的像素為止,也可以認(rèn)為是到達(dá)了區(qū)域邊界。通過鄰域像素尋找實(shí)現(xiàn)填充速度比較慢、不是泛洪填充好的實(shí)現(xiàn)方式,最常見與快速的泛紅實(shí)現(xiàn)是基于掃描線算法的,步驟如下:


        1.首先從開始點(diǎn)出發(fā)進(jìn)行垂直方向列的掃描,填充


        2.然后以填充點(diǎn)開始進(jìn)行每一行的掃描與填充


        3.繼續(xù)以每一行新填充的像素為開始點(diǎn),執(zhí)行1,2步驟


        4.直到區(qū)域所有點(diǎn)都完成填充為止。


        圖示如下:

        第一步:假設(shè)有圖像如下,紅色表種子像素點(diǎn)。


        首先進(jìn)行豎直方向的掃描,填充結(jié)果如下:


        然后以填充的紅色像素為起始點(diǎn),開始水平方向的掃描填充,結(jié)果如下:


        用水平方向被填充像素點(diǎn)為種子像素點(diǎn),繼續(xù)豎直方式掃描填充,結(jié)果如下:


        以填充的像素點(diǎn)為種子像素點(diǎn)繼續(xù)水平方向掃描,結(jié)果如下:


        這樣就完成了對(duì)整個(gè)區(qū)域的填充。從上面的例子可以看出,泛洪填充可以通過遞歸方式編碼實(shí)現(xiàn),但是基于遞歸方式編碼實(shí)現(xiàn)有個(gè)致命的缺點(diǎn),對(duì)大圖填充時(shí)候容易導(dǎo)致棧溢出,所以更常用的基于隊(duì)列或者棧的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)非遞歸的泛洪填充。OpenCV中的實(shí)現(xiàn)主要是基于棧的掃描線算法實(shí)現(xiàn)泛洪填充。


        應(yīng)用場景一:

        通過泛洪填充算法實(shí)現(xiàn)對(duì)二值圖像對(duì)象區(qū)域中Hole填充

        運(yùn)行顯示原圖如下:


        填充以后結(jié)果如下:


        實(shí)現(xiàn)代碼如下:


        應(yīng)用場景二:


        通過泛洪填充實(shí)現(xiàn)對(duì)ROI區(qū)域的著色, 跟上個(gè)例子使用API唯一不同地方是帶了mask參數(shù)。運(yùn)行結(jié)果如下:


        實(shí)現(xiàn)代碼如下:



        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 30
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            香蕉黄色片 | 人人看人人射 | 操逼大奶| 天天日天天操天天射 | 国产和美国黄色毛片 | 中文字幕第31页 | 国产日韩欧美 | 欧美一性一交一老一妇 | 性感美女被x免费视频 | 男人被口爽还是啪啪爽 |