日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阈值分割之大津法OTSU

發(fā)布時(shí)間:2024/8/1 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阈值分割之大津法OTSU 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

閾值分割之大津法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的像素在整幅圖的占比為:

w_0 = num0/m*n 同理可得大于閾值T的像素占比: w_1 = num1/m*n w_0+w_1=m*n 此時(shí)可以求此閾值下圖像的平均灰度:

μ=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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。