图像分割I
為什么要圖像分割?
目標
目標:將圖像劃分為不同區(qū)域
?i=1NRi=R,Ri∩Rj=?\bigcup_{i=1}^NR_i = R,R_i\cap R_j = \varnothing i=1?N?Ri?=R,Ri?∩Rj?=?
應(yīng)用:醫(yī)學(xué)圖像分割、工件表面缺陷檢測、實例分割、字符識別
圖像分割方法:
圖像標記:為像素f(x,y)f(x,y)f(x,y)打上準確的離散化標簽g(x,y)g(x,y)g(x,y)。4-連通域和8-連通域?qū)Υ驑撕灥呐袛鄻藴什灰粯印?/p>
總結(jié):
基于灰度直方圖的閾值分割
目標:
灰度閾值分割
- 假設(shè):圖像中的目標區(qū)和背景區(qū)之間或不同目標區(qū)之間,灰度存在明顯差異
- 凡是灰度值包含于z的像素都變成某一灰度值,其他變成另一個灰度值,則該圖像就以z為界被分成兩個區(qū)域
- 如果=1和=0,分割后的圖像為二值圖像
自動閾值分割
- 自動確定最佳閾值,使背景和目標之間的差異最大
大津(Otsu)算法原理I:
- 根據(jù)統(tǒng)計分析理論,最佳閾值確定的最佳二分類應(yīng)使類內(nèi)方差最小,等同于類間方差最大
- 大津算法基本思想:確定使灰度直方圖類間方差最大的最佳閾值
- 假設(shè)灰度直方圖已經(jīng)歸一化,即
pi=niN,∑pi=1p_i = \frac{n_i}{N}, \sum p_i = 1 pi?=Nni??,∑pi?=1
大津(Otsu)算法原理II:
- 假設(shè)閾值T將像素灰度劃分為兩類:C0C_0C0?和C1C_1C1?,則每一類出現(xiàn)的概率:
ω0=∑i=1Tpi,ω1=∑i=T+1Npi=1?ω0\omega_0 = \sum_{i=1}^{T}p_i,\omega_1 = \sum_{i = T+1}^Np_i = 1-\omega_0 ω0?=i=1∑T?pi?,ω1?=i=T+1∑N?pi?=1?ω0? - 每類的平均灰度級:
μ0=∑i=1Tipi/ω0=μ0ˊω0,μ1=∑i=T+1Nipi/ω1=μ1ˊω1=μ?μ0ˊ1?ω0\mu_0 = \sum_{i=1}^Tip_i/\omega_0= \frac{\acute{\mu_0}}{\omega_0},\mu_1 = \sum_{i=T+1}^Nip_i/\omega_1= \frac{\acute{\mu_1}}{\omega_1} = \frac{\mu-\acute{\mu_0}}{1-\omega_0} μ0?=i=1∑T?ipi?/ω0?=ω0?μ0?ˊ??,μ1?=i=T+1∑N?ipi?/ω1?=ω1?μ1?ˊ??=1?ω0?μ?μ0?ˊ??
其中μ=∑i=1Nipi\mu = \sum_{i=1}^Nip_iμ=∑i=1N?ipi?。顯然有ω0μ0+ω1μ1=μ\omega_0\mu_0+\omega_1\mu_1=\muω0?μ0?+ω1?μ1?=μ
大津算法原理III:
- 兩類類內(nèi)方差:
σ02=∑i=1T(i?μ0)2pi/ω0,σ12=∑i=T+1N(i?μ1)2pi/ω1\sigma_0^2 = \sum_{i=1}^T(i-\mu_0)^2p_i/\omega_0,\sigma_1^2 = \sum_{i=T+1}^N(i-\mu_1)^2p_i/\omega_1 σ02?=i=1∑T?(i?μ0?)2pi?/ω0?,σ12?=i=T+1∑N?(i?μ1?)2pi?/ω1? - 對應(yīng)的類間方差:
σB2=ω0(μ0?μ)2+ω1(μ1?μ)2=ω0ω1(μ1?μ0)2\sigma_B^2 = \omega_0(\mu_0-\mu)^2 + \omega_1(\mu_1-\mu)^2=\omega_0\omega_1(\mu_1-\mu_0)^2 σB2?=ω0?(μ0??μ)2+ω1?(μ1??μ)2=ω0?ω1?(μ1??μ0?)2
大津算法原理IV:
- 顯然,ωB\omega_BωB?是關(guān)于最佳閾值T的隱函數(shù),應(yīng)選取T:
T=argmaxσB2,1<=T<LT = ar gmax\sigma_B^2,1<=T<L T=argmaxσB2?,1<=T<L - 算法實現(xiàn):遍歷灰度取值,使σB2\sigma_B^2σB2?最大
總結(jié)
灰度閾值分割實戰(zhàn)演練
目標:
基于邊緣輪廓的分割
- 可以在邊緣檢測的基礎(chǔ)上,基于閉合邊緣構(gòu)建分割后的結(jié)果
- 該算法基于Suzuki,S.“Topological structural analysis of digitized binary images by border following.”
相關(guān)函數(shù)
- 找到目標輪廓
實例:
要求:檢測圖中的米粒
算法步驟:
由于沒有進行前處理,右下角出現(xiàn)漏點。
局部閾值分割實戰(zhàn)演練
目標:
全局閾值法的問題:背景存在光照不均時,分割效果變差
局部閾值法
將原圖片劃分區(qū)域,分別看但各區(qū)域內(nèi)灰度值極值的差值,對大于一定值的區(qū)域單獨進行大津算法分割。
多閾值分割原理
對比:類間方差(二類):
σB2=ω0(μ0?μ)2+ω1(μ1?μ)2=ω0ω1(μ1?μ0)2\sigma_B^2 = \omega_0(\mu_0 - \mu)^2 + \omega_1(\mu_1 - \mu)^2 = \omega_0\omega_1(\mu_1 - \mu_0)^2 σB2?=ω0?(μ0??μ)2+ω1?(μ1??μ)2=ω0?ω1?(μ1??μ0?)2
類間方差(多類):
σB2=∑k=1Kωk(μk?μ)2\sigma_B^2 = \sum_{k=1}^K\omega_k(\mu_k-\mu)^2 σB2?=k=1∑K?ωk?(μk??μ)2
其中∑k=1Kωk=1\sum_{k=1}^K\omega_k = 1∑k=1K?ωk?=1。
選擇最優(yōu)閾值T1,......,TkT_1,......,T_kT1?,......,Tk?:
(T1,......,Tk)=argmaxσB2(T1,......,Tk),1<=T1<...<Tk<L(T_1,......,T_k) = argmax \sigma_B^2(T_1,......,T_k),1<=T_1<...<T_k<L (T1?,......,Tk?)=argmaxσB2?(T1?,......,Tk?),1<=T1?<...<Tk?<L
圖像差別可通過峰值信噪比(PSNR)評價:
定義均方誤差:
MSE=1mn∑x=0m?1∑y=0n?1∥f(x,y)?g(x,y)∥2MSE = \frac{1}{mn}\sum_{x=0}^{m-1}\sum_{y=0}^{n-1}\|f(x,y)-g(x,y)\|^2 MSE=mn1?x=0∑m?1?y=0∑n?1?∥f(x,y)?g(x,y)∥2
原圖像和處理后圖像逐像素作差的平方和除以圖像像素數(shù)
定義PSNR:
PSNR=10?log10(fMAX2MSE)=20?log10(fMAX2MSE),fMAX對應(yīng)最大灰度值PSNR = 10\cdot log_{10}(\frac{f_{MAX}^2}{MSE}) = 20\cdot log_{10}(\frac{f_{MAX}^2}{\sqrt{MSE}}),f_{MAX}對應(yīng)最大灰度值 PSNR=10?log10?(MSEfMAX2??)=20?log10?(MSE?fMAX2??),fMAX?對應(yīng)最大灰度值
總結(jié):
總結(jié)
- 上一篇: (含Python源码)Python实现K
- 下一篇: 散列表(字典)