<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>

          C++ OpenCV基于距離變換與分水嶺的圖像分割

          共 3834字,需瀏覽 8分鐘

           ·

          2023-08-17 04:45

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

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

          圖像分割

          圖像分割,英文名image segmentation,就是把圖像分成若干個(gè)特定的、具有獨(dú)特性質(zhì)的區(qū)域并提出感興趣目標(biāo)的技術(shù)和過(guò)程。它是由圖像處理到圖像分析的關(guān)鍵步驟。現(xiàn)有的圖像分割方法主要分以下幾類:

          • 基于閾值的分割方法

          • 基于區(qū)域的分割方法

          • 基于邊緣的分割方法以及基于特定理論的分割方法

          從數(shù)學(xué)角度來(lái)看,圖像分割是將數(shù)字圖像劃分成互不相交的區(qū)域的過(guò)程。圖像分割的過(guò)程也是一個(gè)標(biāo)記過(guò)程,即把屬于同一區(qū)域的像索賦予相同的編號(hào)。

          • 圖像分割的目標(biāo)是將圖像中像素根據(jù)一定的規(guī)則分為若干個(gè)(N)個(gè)cluster集合,I每個(gè)集合包含一類像素。

          • 根據(jù)算法分為監(jiān)督學(xué)習(xí)算法和無(wú)監(jiān)督學(xué)習(xí)算法,圖像分割的算法多數(shù)都是無(wú)監(jiān)督學(xué)習(xí)算法。---KMeans


          距離變換與分水嶺介紹

          距離變換

          距離變換常見(jiàn)算法有兩種

          • 不斷膨脹/ 腐蝕得到

          • 基于倒角距離


          分水嶺變換

          分水嶺變換常見(jiàn)的算法

          基于浸泡理論實(shí)現(xiàn)


          相關(guān)API

                  cv::distanceTransform(

                          InputArray  src, 

                          OutputArray dst,  

                          OutputArray  labels,  

                          int  distanceType,  

                          int maskSize,  

                          int labelType = DIST_LABEL_CCOMP

                  )

          distanceType = DIST_L1/DIST_L2,

          maskSize = 3x3,最新的支持5x5,推薦3x3、

          labels離散維諾圖輸出,

          dst輸出8位或者32位的浮點(diǎn)數(shù),單一通道,大小與輸入圖像一致


                  cv::watershed(

                          InputArray image, 

                          InputOutputArray  markers

                  )


          操作步驟

          1. 將白色背景變成黑色-目的是為后面的變換做準(zhǔn)備

          2. 使用filter2D與拉普拉斯算子實(shí)現(xiàn)圖像對(duì)比度提高,sharp

          3. 轉(zhuǎn)為二值圖像通過(guò)threshold

          4. 距離變換

          5. 對(duì)距離變換結(jié)果進(jìn)行歸一化到[0~1]之間

          6. 使用閾值,再次二值化,得到標(biāo)記

          7. 腐蝕得到每個(gè)Peak - erode

          8. 發(fā)現(xiàn)輪廓 – findContours

          9. 繪制輪廓- drawContours

          10. 分水嶺變換 watershed

          11. 對(duì)每個(gè)分割區(qū)域著色輸出結(jié)果


          代碼演示

          新建一個(gè)項(xiàng)目opencv-0027,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法

          這次我們用opencv里面自帶的一張圖像來(lái)實(shí)個(gè)這個(gè)方法

          運(yùn)行顯示的圖像為


          1.將白色背景變成黑色

          我們運(yùn)行看一下

          可以看到右邊的已經(jīng)把背景都換為黑色了。


          2.使用filter2D與拉普拉斯算子實(shí)現(xiàn)圖像對(duì)比度提高,sharp

          我們?cè)龠\(yùn)行看一下,左邊的就是生成的結(jié)果圖,可以看出左邊的清晰度更高了一些


          3.轉(zhuǎn)為二值圖像通過(guò)threshold

          我們?cè)龠\(yùn)行看一下,左邊的圖像已經(jīng)讓我們轉(zhuǎn)換為二值圖像了,也比較清晰


          4.距離變換

          5.對(duì)距離變換結(jié)果進(jìn)行歸一化到[0~1]之間

          因?yàn)榫嚯x變換看不出任何效果,所以我們把4和5兩步放在一起顯示

          我們?cè)龠\(yùn)行一下看看執(zhí)行結(jié)果


          6.使用閾值,再次二值化,得到標(biāo)記

          顯示效果為


          7.腐蝕得到每個(gè)Peak

          效果不太好看,我們需要再進(jìn)行二值的腐蝕,把上面的代碼再修改一下

          我們?cè)倏匆幌逻\(yùn)行效果,可以看出來(lái)比剛才的效果好很多了


          8.標(biāo)記并且開(kāi)始查找輪廓

          這一步只是查找輪廓,我們接下來(lái)繪制查找的輪廓再一起顯示出來(lái)


          9.繪制輪廓

          上面drawContours和circle最后一個(gè)參數(shù)都是用了-1,代表著畫的輪廓里面進(jìn)行顏色填充

          我們?cè)亠@示一下看看效果

          看到好像什么也沒(méi)有,這是因?yàn)槲覀儺嫷妮喞×耍?我們改一下顯示效果

          把最后顯示cv::imshow(imgdst,makers*5000)再乘5000,重新看一下顯示效果

          這會(huì)兒就可以看到繪制的輪廓出來(lái)了


          10.分水嶺變換

          我們看看顯示的效果

          可以看出,每個(gè)輪廓都有明顯的區(qū)分開(kāi)了。


          11.對(duì)每個(gè)分割區(qū)域著色輸出結(jié)果

          然后我們?cè)龠\(yùn)行看到最后結(jié)果


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

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

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺(jué)公眾號(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、三維視覺(jué)、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  亚洲无码毛片基地 | 少妇操屄视频 | 日韩视频一区二区三区在线播放免费观看 | 黄色电影免费观看a | 啪啪网视频 |