1. 程式人生 > >數字影象處理筆記(十二):影象分割演算法

數字影象處理筆記(十二):影象分割演算法

1 - 引言

在影象識別中,如果可以將影象感興趣的物體或區別分割出來,無疑可以增加我們影象識別的準確率,傳統的數字影象處理中的分割方法多數基於灰度值的兩個基本性質

  • 不連續性
    以灰度突變為基礎分割一副影象,比如影象的邊緣
  • 相似性
    根據一組預定義的準則將一副影象分割為相似的區域。閾值處理、區域生長、區域分裂和區域聚合都是這類方法的例子。
    邊緣檢測演算法中我們學習瞭如何利用不連續性來分割影象。
    本文將從相似性這個角度,學習使用閾值處理、基於區域、和基於形態學的分水嶺分割影象

2 - 閾值處理

由於閾值處理直觀、實現簡單且計算速度快,因此影象閾值處理在影象分割應用中處於核心地位

2.1 - 基礎知識

下圖灰度直方圖對應影象f(x,y),然後f(x,y)>T的任何點(x,y)稱為一個物件點;否則將該點稱為背景點。分割後的影象g(x,y):
g ( x , y )

= { 1 f (
x , y ) > T
0 f ( x , y ) T
g(x,y)=\begin{cases} 1 & f(x,y)>T \\ 0& f(x,y)\leq T \end{cases}

當T時一個適用於整個影象的常數時,該公式給出的處理稱為全域性閾值處理。

在這裡插入圖片描述

但是要求兩個以上閾值的分割問題很難解決(通常是不可能的),而較好的結果通常可以用其他方法得到。

我們可以很自然的得出灰度閾值的成功與否直接關係到可區分的直方圖模式的谷的寬度和深度,而影響波谷特性的關鍵因素是:

  1. 波峰間的間隔(波峰離的越遠,分離這些模式的機會越好)
  2. 影象中的噪聲內容(模式隨噪聲的增加而展寬)
  3. 物體和背景的相對尺寸
  4. 光源的均勻性
  5. 影象反射特性的均勻性

2.2 - 基本的全域性閾值處理

在大多數應用中,通常影象之間有較大的變化,即使全域性閾是一種合適的方法,對每一幅影象有能力自動估計閾值的演算法也是需要的。下面的迭代演算法可以用於這一目的:

  1. 為全域性閾值T選擇一個初始估計值
  2. 利用T分割影象。這將產生兩組畫素: G 1 G_1 由灰度值大於T的所有畫素組成, G 2 G_2 由所有小於等於T的畫素組成。
  3. G 1 G_1 G 2 G_2 的畫素分別計算平均灰度值(均值) m 1 m_1 m 2 m_2
  4. 計算一個新的閾值: T = 1 2 ( m 1 + m 2 ) T = \frac{1}{2}(m_1+m_2)
  5. 重複步驟2到步驟4,直到連續迭代中的T值間的差小於一個預定義的引數 Δ T \Delta T 為止
    在這裡插入圖片描述

2.3 - 用Otsu方法的最佳全域性閾值處理

閾值處理可視為一種統計決策理論問題,其目的是在把畫素分配給兩個或多組(也稱分類)的過程中引入的平均誤差最小。Otsu方法(Otsu[1979])是另一種有吸引力的方案。

Otsu方法有一個重要的特性,即它完全以在一幅影象的直方圖上執行計算為基礎。

一幅影象有MxN個畫素,L個不同的灰度級, n i n_i 表示灰度級為i的畫素個數。那麼影象中畫素總數MN為 M N = n 0 + n 1 + + n L 1 MN=n_0+n_1+\dots+n_{L-1}

歸一化的直方圖 p i = n i / M N p_i=n_i/MN ,由此有
i = 0 L 1 p i = 1 , p i 0 \sum_{i=0}^{L-1}p_i=1, p_i \geq 0

現在,我們假設選擇一個閾值 T ( k ) = k , 0 < k < L 1 T(k)=k, 0< k < L-1 ,並使用它把輸入影象閾值化處理為兩類 C 1 C_1 C 2 C_2 ,其中, C 1 C_1 由影象中灰度值在範圍[0,k]內的所有畫素組成, C 2 C_2 由灰度值在範圍[k+1,L-1]內的所有畫素組成。用該閾值,畫素被分到類 C 1 C_1 中的概率 P 1 ( k ) P_1(k) 由如下的積累和給出:
P 1 ( k ) = i = 0 k p i P_1(k)=\sum_{i=0}^k p_i

因此分配到 C 1 C_1 的畫素的平均灰度值為:
m 1 ( k ) = i = 0 k i P ( i / C 1 ) m_1(k)=\sum_{i=0}^kiP(i/C_1)
= i = 0 k i P ( C 1 / i ) P ( i ) / P ( C 1 ) =\sum_{i=0}^kiP(C_1/i)P(i)/P(C_1)
= 1 P 1 ( k ) i = 0 k i P ( i ) =\frac{1}{P_1(k)}\sum_{i=0}^kiP(i)

第二行來自貝葉斯公式:
P ( A / B ) = P ( B / A ) P ( A ) / P ( B ) P(A/B)=P(B/A)P(A)/P(B)

類似的我們也可以得到 C 2 C_2 的畫素平均灰度值

然後我們可以得到整個影象的平均灰度值

相關推薦

數字影象處理筆記影象分割演算法

1 - 引言 在影象識別中,如果可以將影象感興趣的物體或區別分割出來,無疑可以增加我們影象識別的準確率,傳統的數字影象處理中的分割方法多數基於灰度值的兩個基本性質 不連續性 以灰度突變為基礎分割一副影象,比如影象的邊緣 相似性 根據一組預定義的準則將一副影象分割為相似的

數字影象處理筆記邊緣檢測演算法

1 - 引言 在影象識別中,如果可以將影象感興趣的物體或區別分割出來,無疑可以增加我們影象識別的準確率,傳統的數字影象處理中的分割方法多數基於灰度值的兩個基本性質 不連續性、 以灰度突變為基礎分割一副影象,比如影象的邊緣 相似性 根據一組預定義的準則將一副影象分割為相似

機器學習筆記TensorFlow實戰四影象識別與卷積神經網路

1 - 卷積神經網路常用結構 1.1 - 卷積層 我們先來介紹卷積層的結構以及其前向傳播的演算法。 一個卷積層模組,包含以下幾個子模組: 使用0擴充邊界(padding) 卷積視窗過濾器(filter) 前向卷積 反向卷積(可選) 1.1

機器學習筆記TensorFlow實現四影象識別與卷積神經網路

1 - 卷積神經網路常用結構 1.1 - 卷積層 我們先來介紹卷積層的結構以及其前向傳播的演算法。 一個卷積層模組,包含以下幾個子模組: 使用0擴充邊界(padding) 卷積視窗過濾器(filter) 前向卷積 反向卷積(可選) 1.1.2 - 邊界填充

Python+Selenium筆記數據驅動測試

name excel表格 assm ddt table clear div 讀取數據 郵箱 (一) 前言 通過使用數據驅動測試,實現對輸入值和預期結果的參數化。(例如:輸入數據和預期結果可以直接讀取Excel文檔的數據) (二) ddt 使用ddt執行數據驅動測試,

Python3學習筆記閉包

ram 類型 trac 就是 不能 ast 兩種 作用 ror 閉包定義: 在一個外函數中定義了一個內函數,內函數裏引用了外函數的臨時變量,並且外函數的返回值是內函數的引用。這樣就構成了一個閉包。 我們先來看一個簡單的函數: def outer(a): b

javaweb學習筆記JSP2

jsp(2) 目錄 jsp(2) 1.Jsp指令 1.1 include指令 1.2 page指令 1.3 taglib指令 2. Jsp的隱式物件 2.1 out物件 2.2 pageContext物件 1.J

學習筆記推薦系統-隱語義模型

#程式碼摘自唐宇迪《推薦系統》視訊課程,資料集來自http://pan.baidu.com/s/1eS5VZ8Y中的“ml-1m"資料 from collections import deque from six import next import readers import tensor

Cris 的Python筆記面向物件其他細節語法

文章目錄 1、類屬性,例項屬性,例項方法,類方法,靜態方法 2、垃圾回收和特殊/魔術方法 1、類屬性,例項屬性,例項方法,類方法,靜態方法 class A(object): '''

Python學習筆記lambda表示式與函數語言程式設計

以Mark Lutz著的《Python學習手冊》為教程,每天花1個小時左右時間學習,爭取兩週完成。 --- 寫在前面的話 2013-7-22 21:00 學習筆記 1,lambda的一般形式是關鍵字lambda後面跟一個或多個引數,緊跟一個冒號,以後是一個表示

機器學習筆記聚類

目錄 1)Unsupervised learning introduction 2)K-means algorithm 3)Optimization objective 4)Random initialization 5)Choosing the number of clus

Python3《機器學習實戰》學習筆記線性迴歸提高篇之樂高玩具套件二手價預測

一、前言 本篇文章講解線性迴歸的縮減方法,嶺迴歸以及逐步線性迴歸,同時熟悉sklearn的嶺迴歸使用方法,對樂高玩具套件的二手價格做出預測。 二、嶺迴歸 如果資料的特徵比樣本點還多應該怎麼辦?很顯然,此時我們不能再使用上文的方法進行計算了,因為矩陣X不是滿秩矩

各種音視訊編解碼學習詳解之 編解碼學習筆記其他編解碼M-JPEG,Motion JPEG 2000,DivX

    最近在研究音視訊編解碼這一塊兒,看到@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,非常感謝,佩服的五體投地。奈何大神這邊文章太長,在這裡我把它分解成很多小的篇幅,方便閱讀。大神部落格傳送門:https://www.cnblogs.com/skyofbitbi

cortex_m3_stm32嵌入式學習筆記TFTLCD顯示深入庫函式

寫點比較常用的顯示函式。 首先顯示一張靜止的畫面,上面顯示字串(目前還不會顯示漢字) 只需要自己編寫主函式,將別人例程裡的lcd.c,lcd.h等相關標頭檔案加到工程即可 #include "led.h" #include "delay.h" #include "sys.

Unity Shader入門精要筆記紋理屬性

本系列文章由Aimar_Johnny編寫,歡迎轉載,轉載請標明出處,謝謝。 http://blog.csdn.net/lzhq1982/article/details/75045358 紋理從廣義上講不是一個普通的圖片,我們今後會遇到各種功能性紋理,比如法線紋理,立方體紋

pytorch學習筆記詳解 Module 類

Module 是 pytorch 提供的一個基類,每次我們要 搭建 自己的神經網路的時候都要繼承這個類,繼承這個類會使得我們 搭建網路的過程變得異常簡單。 本文主要關注 Module 類的內部是怎麼樣

Docker學習筆記Docker Swarm

1. 什麼是Docker Swarm? 容器叢集管理工具。 通過docker swarm可以將多臺機器連線在一起,通過swarm的排程可以服務的多臺機器的部署,服務的伸縮。 2. Docker Swarm 使用入門 1)節點初始化(manager節點) dock

計算機圖形學 學習筆記顏色模型,簡單 / 增量 光照模型

接下來將介紹真實感圖形學的內容。 真實感圖形學包括:顏色模型,簡單光照模型,增量光照模型,區域性光照模型和投射模型,整體光照模型,紋理對映和陰影處理。 真實感圖形學 真實感圖形學研究的是什麼?簡單來說,就是希望用計算機生成像照相機拍的照片一樣逼真地

OpenCV2學習筆記Kalman濾波演算法

在視訊跟蹤處理中,預測目標運動軌跡是一項基本任務。目標運動狀態估計的目的有三個:一是對目標過去的狀態進行平滑;二是對目標現在的運動狀態進行濾波;三是對目標未來的運動狀態進行預測。物體的運動狀態一般包括目標位置、速度、加速度等。著名的Kalman濾波技術就是其中一

數字影象處理筆記形態學影象處理

1 - 引言 數學形態學的語言是集合論,利用集合論知識我們可以實現影象 腐蝕、膨脹 開操作、筆操作 下面就讓我們學習一下這些基於形態學的影象處理 2 - 腐蝕和膨脹 膨脹與腐蝕能實現多種多樣的功能,主要如下: 消除噪聲 分割(isolat