自動找閥值的方法 Otsu Method
假設閥值(thresholding value)為t,則影像被區分成兩群
一群是影像值小於等於t, 另一群影像值均大於t
一群是影像值小於等於t, 另一群影像值均大於t
Otsu 的方法就是求出一個閥值使得class A 與class B間有最大的群間變異數(between-class variance),也就是下式有最大值
其中pa(t) 代表影像值小於等於t 的機率
pb(t) 代表影像值大於t 的機率 由於pa(t)+pb(t)=1, 所以 pb(t)=1-pa(t)
μa(t) 代表影像灰度值小於等於t值的機率平均值(mean),μb(t) 代表影像灰度值大於t值的機率平均值。
pb(t) 代表影像值大於t 的機率 由於pa(t)+pb(t)=1, 所以 pb(t)=1-pa(t)
μa(t) 代表影像灰度值小於等於t值的機率平均值(mean),μb(t) 代表影像灰度值大於t值的機率平均值。
由於閥值一定是介於0與255之間, 所以計算256次群間變異數(t=0,t=255其實可以不用算),就可以找出最大值,也因此知道哪一個閥值使得群間變異數最大。
Otsu's method 的程式碼如下:
Otsu's method 的程式碼如下:
您好:
回覆刪除看了您的文章之後 覺得您 講解的很清楚
讓我更明白了 Otsu演算法
如果 方便的話,可不可以讓我, 請教您一問題
如何 將 Otsu 改成可以決定 雙Threshold值 呢?
能否 講解一下
謝謝 您
兩個閥值喔!
回覆刪除假設是 t1和t2, 由於0<=t1,t2<=255,
所以要計算
for t1=0 to 254
for t2 = t1+1 to 255
計算三群之間的變異數之和
end
end
看看在 什麼樣的閥值下, 三群之間的變異數之和會最大!
大概就是這樣啦!
細節再想想吧!
哈哈~~ 感謝 您的提示喔
回覆刪除我已經 寫出來了
其實就跟 取一個threshold值的 很類似
看了 您不少 影像處理相關的文章
實在是 受惠良多
感謝 您的協助 謝謝