1. 程式人生 > >目標分割——基於目標區域(一)

目標分割——基於目標區域(一)

目標分割將感興趣的區域從影象中分離並提取出來,也可看做基元檢測的一種推廣。兩類方法可用於目標分割:

  • 基於目標輪廓
    考慮目標與影象中 其他部分的界限,如果能確定目標輪廓,就可將目標與影象的其他部分分割開。在這種方法中,除了檢測出輪廓點再連線起來,還可以邊檢測輪廓點邊連線。
  • 基於目標區域
    考慮所有屬於目標區域的畫素,如果能確定出每個屬於目標的畫素就可以獲得完整的目標。通常是假設構成目標區域的畫素的灰度值大於某個特定的閾值,確定這個閾值把目標區分開。

基本閾值技術

一、原理和分類

閾值分割模型:假設影象由具有單峰灰度分佈的目標和背景,在目標和背景內部的相鄰畫素間的灰度值是高度相關的,但在目標和背景的交界處兩邊的畫素在灰度值上有很大的差別。

對一幅灰度取值在gmingmax的影象確定一個灰度閾值T(gmin<T<gmax),將影象中的每個畫素灰度值都與閾值比較:大於閾值的被歸為一類,小於閾值的被歸為另一類;由此區分出不同的區域。
如果影象中有多個灰度值不同的區域,可以選擇一系列的閾值以便使每個畫素分到合適的類別中去。多個閾值分割稱為多閾值技術,單個閾值分割稱為單閾值技術

二、全域性閾值選取

影象的灰度直方圖可以反映出影象的性質。如果選取雙峰直方圖之間的谷所對應的灰度值作為閾值可將目標和背景分開。

谷的選擇方法不同,得到的閾值也不同,下面有3種穀選取方法。

  • 極小值點閾值

    如果將直方圖的包絡看成一條曲線,則選取直方圖的谷可藉助求曲線極小值的方法(即曲線求導數)。和極小值點對應的灰度值就可作分割閾值。稱為極小值點閾值。

  • 最優閾值

  • 最大凸殘差閾值

    含有目標和背景兩類區域的影象的直方圖並不一定總是呈現雙峰形式,特別是當影象中目標和背景面積相差較大時,直方圖的一個峰會淹沒在另一個峰旁邊的緩坡裡,直方圖基本成為單峰形式。
    通過對直方圖凹度的分析,可以選擇一個閾值來分割影象。

這裡寫圖片描述

根據圖中凸殘差值最大的位置計算出最大凸殘差閾值分割影象。

三、區域性閾值選取

如果影象受到噪聲的影響,那麼影象的直方圖的峰谷可能並不明顯,那麼通過峰谷確定分割閾值不太準確。為解決這種問題,除了利用畫素自身性質外,還可以利用一些畫素鄰域的區域性性質。

  • 直方圖變換

    基本思想:利用畫素鄰域的區域性性質對影象的直方圖進行變換以得到一個新的直方圖。這裡常用的一個區域性性質是該畫素的剃度值。(可藉助梯度運算元用於畫素鄰域得到)

    這裡寫圖片描述

看上圖。

(b)是影象的邊緣的剖面圖。剖面圖被分為三部分,I,II,III。剖面的灰度直方圖如圖(a)所示(橫軸:灰度統計值,三段點畫線分別是邊緣剖面中3部分各自的統計值,實線為它們的和)。對(b)的邊緣求梯度得到(d),可見對應目標和背景的梯度值較小,而對應目標和背景過渡區的梯度值較大。統計梯度值分佈得到(c),梯度直方圖。(橫軸:梯度統計值),梯度直方圖的兩個峰分別對應目標和背景的內部以及它們之間的過渡區。變換的直方圖就是根據這些特點得到的,一般分為兩類:(1)、具有低梯度值畫素值的直方圖;(2)、具有高梯度值畫素的直方圖。

(1)、具有低梯度值畫素值的直方圖

目標和背景內部的畫素值具有較低的梯度值,而邊界具有較高的梯度值。如果設法獲得僅具有較低梯度值畫素的直方圖,那麼這個新的直方圖對應目標和背景內部點的峰應該與原直方圖類似,但因為減少了邊界點,谷應該更深。

還可以計算加權直方圖。例如,一個畫素點的梯度值為g,加權值為1/(1+g)2。這樣的話梯度值越小,權值越大,內部點權值大,邊界點權值小。效果大概如下(a)圖。(虛線:原本直方圖,實線:加權直方圖)

這裡寫圖片描述

(2)、具有高梯度值畫素的直方圖

這種情況只需要獲得高梯度值畫素的直方圖。這個直方圖在對應目標和背景的邊界畫素灰度級有一個峰。如上圖(b)(虛線:原直方圖,實線:新直方圖)。這個峰由邊界畫素組成,對應這個峰的灰度值就可選作分割用的閾值(原來兩峰之間的谷現在變成了峰)。

同樣的也可以採用加權直方圖。高梯度值具有較大權值。

  • 灰度-梯度散射圖

灰度-梯度散射圖:一個軸是灰度值,一個軸是梯度值,而統計是同時具有某一個灰度值和梯度值的畫素個數。

下圖中(b)是(a)灰度-梯度散射圖,其中色越淺表示滿足條件的點越多。散射圖中一般會有兩個接近灰度值軸(低梯度值)但沿灰度值軸方向又相互分開一些的大聚類,它們分別對應目標和背景內部的畫素。這兩個聚類的形狀與這些畫素的相關程度有關。如果相關性很強,或者梯度運算元對噪聲不敏感,這些聚類會很集中並且很接近灰度值軸(內部畫素梯度較小);反之,這些聚類會比較遠離灰度值軸。散射圖中還會有較少的對應目標和背景邊界上畫素的點。這些點的位置沿灰度值軸看是處於前兩個聚類的中間,但由於梯度值較大而與灰度值軸又有一定的距離。

根據以上分析,在散射圖上同時考慮灰度值和梯度值將聚類分開就可以得到分割結果。

  • 這裡寫圖片描述

    4. 動態閾值選取
    如果影象各處光照不同或對比度不同,則全域性閾值的分割效果可能並不理想,因此需要根據畫素的座標相關的一系列閾值來對影象各部分分別進行分割。這種與座標相關的閾值叫做動態閾值,或變化閾值法。
    使用動態閾值的方法步驟如下:

  • 將一幅影象分為一系列互相之間有一定重疊(如50%)的子影象;

  • 做出每個子圖的直方圖
  • 檢測各個子圖的直方圖是否為雙峰,如果是,則採取前面介紹的最優閾值法,確定一個閾值,否則就不進行處理
  • 以對直方圖為雙峰的子影象選取的閾值為基礎,通過插值得到所有子圖想的閾值
  • 通過各子影象的閾值再通過插值得到所有畫素的閾值,然後對影象進行分割。

參考

計算機視覺教程 A Course of Computer Vision 章毓晉編著

相關推薦

目標分割——基於目標區域

目標分割將感興趣的區域從影象中分離並提取出來,也可看做基元檢測的一種推廣。兩類方法可用於目標分割: 基於目標輪廓 考慮目標與影象中 其他部分的界限,如果能確定目標輪廓,就可將目標與影象的其他部分分割開。在這種方法中,除了檢測出輪廓點再連線起來,還可以邊檢測

顯著性目標檢測模型評價指標——平均絕對誤差:Mean Absolute Error(MAE)

顯著性目標檢測模型評價指標 之 平均絕對誤差(MAE)原理與實現程式碼 目錄 一、顯著性目標檢測簡介 顯著性目標(Salient Object): 當我們在看一張圖片時,注意力首先會落在我們所感興趣的物體部分。比如我們看到一張畫有羊

目標跟蹤演算法的分類

運動目標跟蹤主流演算法大致分類 主要基於兩種思路: a)不依賴於先驗知識,直接從影象序列中檢測到運動目標,並進行目標識別,最終跟蹤感興趣的運動目標; b)依賴於目標的先驗知識,首先為運動目標建模,然後在影象序列中實時找到相匹配的運動目標。  一.運動目標檢測 對於不依賴先

JVM記憶體區域—— 理論模型

引言 JVM在Java程式設計中起到了至關重要的作用,他遮蔽了底層細節,這樣只要有對應平臺的JVM版本,便可以執行自己的Java程式,從而實現了“一處編譯,到處執行”的特點。同時JVM的記憶體管理機制避免了類C語言中的delete/free操作,不容易出現記憶體洩漏和記憶體

深入理解並行程式設計-分割和同步設計

原文連結     作者:paul    譯者:謝寶友,魯陽,陳渝 在商用計算機中,多核系統已經越來越常見了,本章將描述如何設計能更好利用多核優勢的軟體。我們將介紹一些習語,或者叫“設計模式”,來幫助您權衡效能、可擴充套件性和響應時間。在上一章我們說過,您在編寫並行軟體時最重要的考慮是如何進行分

OpenCV(3.2)+Python(3.6)學習(基於官方API)

1.1 Getting Started with Images   博主最近由於專案需求,需要學習OpenCV,在檢視並試驗了幾種語言之後決定用Python作為開發語言。剛開始學習也是各種網上找資料,但是網上的資料過於雜亂,最後還是覺得官方API最全面。所

Java讀取Excel資料:基於Apache POI

Java讀取Excel資料:基於Apache POI(一) Java本身不支援直接讀取微軟的Excel表格資料。第三方的Apache提供了一個庫POI用以支援Java讀寫Excel表格資料。 首先需要到Apache官網下載POI的庫,下載連結地址:https://poi.apache.org

程式碼分割和懶載入

為什麼需要程式碼分割?簡單來說:就是讓使用者在最快的速度拿到想要獲取的內容。程式碼分割不在webpack的配置用。而是內建在webpack的方法中:1、require.ensure方法/require.include2、es5 loader spll先來說說require.e

目標分割——基於目標輪廓

目標分割將感興趣的區域從影象中分離並提取出來,也可看做基元檢測的一種推廣。兩類方法可用於目標分割: 基於目標輪廓 考慮目標與影象中 其他部分的界限,如果能確定目標輪廓,就可將目標與影象的其他部分分割開。在這種方法中,除了檢測出輪廓點再連線起來,還可以邊檢測

自動網路搜尋NAS在語義分割上的應用

【摘要】本文簡單介紹了NAS的發展現況和在語義分割中的應用,並且詳細解讀了兩篇流行的work:DARTS和Auto-DeepLab。 自動網路搜尋 多數神經網路結構都是基於一些成熟的backbone,如ResNet, MobileNet,稍作改進構建而成來完成不同任務。正因如此,深度神經網路總被詬病為blac

基於深度學習的目標檢測演算法綜述截止20180821

參考:https://zhuanlan.zhihu.com/p/40047760 目標檢測(Object Detection)是計算機視覺領域的基本任務之一,學術界已有將近二十年的研究歷史。近些年隨著深度學習技術的火熱發展,目標檢測演算法也從基於手工特徵的傳統演算法轉向了基於深度神經網路的檢測技

基於深度學習的目標檢測演算法綜述

前言 目標檢測(Object Detection)是計算機視覺領域的基本任務之一,學術界已有將近二十年的研究歷史。近些年隨著深度學習技術的火熱發展,目標檢測演算法也從基於手工特徵的傳統演算法轉向了基於深度神經網路的檢測技術。從最初2013年提出的R-CNN、OverFeat

基於樹莓派與YOLOv3模型的人體目標檢測小車

#### 專案介紹: 本科畢業選的深度學習的畢設,一開始只是學習了一下YOLOv3模型, 按照作者的指示在官網上下載下來權重,配好環境跑出來Demo,後來想著只是跑模型會不會太單薄,於是想了能不能做出來個比較實用的東西(因為模型優化做不了)。於是乎做一個可以檢測人體的可操控移動小車的想法就誕生了。

tensorflow利用預訓練模型進行目標檢測:預訓練模型的使用

err sync numpy sna sta porting trac git int32 一、運行樣例 官網鏈接:https://github.com/tensorflow/models/blob/master/research/object_detection/obje

經典論文重讀---目標檢測篇:RCNN

核心思想 Since we combine region proposals with CNNs, we call our method R-CNN: Regions with CNN features. 即將生成proposal的方法與cnn提取特徵進行結合

珍藏 | 基於深度學習的目標檢測全面梳理總結

關於作者:@李家丞 同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生。 作者個人主頁:李家丞 | 個人主頁 | 關於我 導言:目標檢測的任務表述   如何從影象中解析出可供計算機理解的資訊,是機器視覺的中心問題。深度學習模型由於其強大的表示能力,加之資料量的積累和

珍藏 | 基於深度學習的目標檢測全面梳理總結

關於作者:@李家丞 同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生。 作者個人主頁:李家丞|個人主頁|關於我 導言:目標檢測的任務表述   如何從影象中解析出可供計算機理解的資訊,是機器視覺的中心問題。深度學習模型由於其強大的表示能力,加之資料量的積累和計算力的

目標檢測——R-CNN

一 R-CNN R-CNN(R. Girshick et al., 2014)是基於region proposal方法的目標檢測算法系列開山之作,其先進行區域搜尋,然後再對候選區域進行分類。在R-CNN中,選用Selective search方法(J.R.R. Uijli

五、Java 8特性 泛型的目標型別推斷

一、前言 眾所周知,日期是商業邏輯計算一個關鍵的部分,任何企業應用程式都需要處理時間問題。應用程式需要知道當前的時間點和下一個時間點,有時它們還必須計算這兩個時間點之間的路徑。但java之前的日期做法太令人噁心了,我們先來吐槽一下。 二、吐槽java.util.Date跟

無人駕駛汽車系統入門——卡爾曼濾波與目標追蹤

前言:隨著深度學習近幾年來的突破性進展,無人駕駛汽車也在這些年開始不斷向商用化推進。很顯然,無人駕駛汽車已經不是遙不可及的“未來技術”了,未來10年