阈值分割之大津法OTSU
閾值分割之大津法OTSU
- 介紹
- 原理
- 代碼實(shí)現(xiàn)以及講解
- 總結(jié)
介紹
大津法是一種用來確定圖像二值化分割閾值的算法,由日本學(xué)者大津與1979年提出,因此被命名為大津法。論文名: N. Otsu, “A threshold selection method from gray-level his-tograms,” IEEE Transactions on Systems, Man and Cybernetics, vol. 9,no. 1, pp. 62–66, 1979.
原理
??網(wǎng)上對大津法的原理講解已經(jīng)很多了,這里就不再復(fù)制粘貼了,說說我的個(gè)人理解,不對之處還望指證。大津法的本質(zhì)就是找到某個(gè)灰度值為閾值的時(shí)候(尋找的方法是遍歷0-255),基于這個(gè)閾值得到兩個(gè)類,計(jì)算兩個(gè)類的類間方差,差值越大那就說明此時(shí)選取的閾值是最佳閾值。這么說好像不夠直觀,還是得貼公式。
??設(shè)輸入圖像大小為m行n列(圖像類型為灰度圖),假設(shè)此時(shí)選定的閾值為T,則灰度值小于T的像素點(diǎn)個(gè)數(shù)為num0,大于T的像素點(diǎn)個(gè)數(shù)為num1。
那么可以計(jì)算小于閾值T的像素在整幅圖的占比為:
μ=w0?μ0+w1?μ1\mu =w0*\mu0+w1*\mu1 μ=w0?μ0+w1?μ1
其中μ0,μ1\mu0,\mu1μ0,μ1分別是指兩個(gè)類分別的平均灰度值(灰度值總和除以像素點(diǎn)個(gè)數(shù))。
此時(shí)可求得類間方差,計(jì)算方法為:
σ2=w0?(μ0?μ)+w1?(μ1?μ)\sigma^2=w_0*(\mu0-\mu)+w_1*(\mu1-\mu) σ2=w0??(μ0?μ)+w1??(μ1?μ)
聯(lián)立后化簡可以得到:
σ2=w0?w1(μ0?μ1)\sigma^2=w_0*w_1(\mu0-\mu1) σ2=w0??w1?(μ0?μ1)
當(dāng)取閾值T使得當(dāng)前σ2\sigma^2σ2值最大時(shí),為最佳閾值,這是它的計(jì)算方式,一般也稱為最大類間方差法。下面簡單實(shí)用python版opencv實(shí)現(xiàn)一下,并說一下我在運(yùn)用過程中得出的該方法的適用場景。
代碼實(shí)現(xiàn)以及講解
import cv2 as cv from matplotlib import pyplot as plt#讀取圖片,我這里原圖是灰度圖,如果不是的話imread第二個(gè)參數(shù)選為0(-1,原圖,0單通道,1三通道) #或者img = cv.cvtColor(img, cv.COLOR_BGR2GRAY) #如果讀入圖像有噪聲,可以考慮使用濾波器過濾一下 img = cv.imread('test0.img',-1)#返回分割的閾值以及分割后的二值化圖像。0,255是返回二值化圖的值,大于閾值為255,小于閾值為0 thre_value,thre_img=cv.threshold(img,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)#我們可以看一下灰度直方圖,與輸出的閾值對比觀察一下 titles = ['Original','Histogram','Ostu_Binary'] images= [img,0,thre_img] for i in range(1):#原圖plt.subplot(1,3,i+1)plt.imshow(images[i])plt.title(titles[i])#灰度直方圖plt.subplot(1,3,i+2)#先把圖像壓成一維,然后統(tǒng)計(jì)每個(gè)像素值個(gè)數(shù)plt.hist(images[i].ravel())plt.title(titles[i+1])plt.xticks([]),plt.yticks([])#二值化圖plt.subplot(1,3,i+3)plt.imshow(images[i+2])plt.title(titles[i+2]) plt.show()總結(jié)
??根據(jù)我的實(shí)際使用經(jīng)驗(yàn)來看,OTSU在前背景比例特別懸殊的時(shí)候效果十分不理想,并不好用,比如說如果你想去除腦CT的顱骨,這個(gè)方法并不適用,往往找到的值會是腦實(shí)質(zhì)區(qū)域的某個(gè)像素值。但是在目標(biāo)區(qū)域和背景的比例相近時(shí),效果是客觀的。
總結(jié)
以上是生活随笔為你收集整理的阈值分割之大津法OTSU的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DSP技术-2-DSP的C语言同主机C语
- 下一篇: 睡眠分期中的各种特征