<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1519字,需瀏覽 4分鐘

           ·

          2021-12-29 09:01

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

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

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

          ?

          泛洪填充算法


          通常泛洪填充需要從一個點開始,這個點可以隨機(jī)選擇的一點,但是一定要在填充區(qū)域內(nèi)部,然后它就會進(jìn)行四鄰域或者把鄰域?qū)ふ覍χ車袼赝瓿商畛洌钡接龅礁付S機(jī)點像素值不同的像素為止,也可以認(rèn)為是到達(dá)了區(qū)域邊界。通過鄰域像素尋找實現(xiàn)填充速度比較慢、不是泛洪填充好的實現(xiàn)方式,最常見與快速的泛紅實現(xiàn)是基于掃描線算法的,步驟如下:


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


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


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


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


          圖示如下:

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


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


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


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


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


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


          應(yīng)用場景一:

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

          運行顯示原圖如下:


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


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


          應(yīng)用場景二:


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


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



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

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

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

          交流群


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


          瀏覽 30
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久人人操 | 亚洲高清成人电影 | 日本天堂视频 | 操逼在线网站观看 | 麻豆人妻精品无码区 |