[Medical Image Processing] 2. Image Binary -【OTSU Algorithm Entropy Method】
#采用全局優化的策略尋找二值分割的最佳閾值#
1.OTSU Algorithm(大松算法)
1.1前述
大松算法是由一位日本學者提出來的,是一種全局自適應確定閾值的方法。大松認為,依據圖像的灰度特性,可以將圖像視為背景與目標兩部分。背景與目標之間的類間方差越大,說明構成圖像的前景、背景的長句越大。因此,大松算法又被稱為最大類間方差法。
如果背景與目標之間的類間方差越大,說明構成圖像的2部分的差別越大,當部分目標錯分為背景或者部分背景錯分為目標都會導致類間方差減小。從這個要義上,我們能夠體會到,大松算法對于“雙峰灰度圖”的分割效果應該是最好的,類間方差最大的分割法意味著錯分概率的最小。
1.2數學推導
#約定:對于圖像Img(x,y),假設前景與背景的分割閾值為T。記屬于前景的像素點占整幅圖像的比例記為Rw(white),平均灰度值記為Gw_avg;屬于背景的像素點占整幅圖像的比例記為Rb(Black),平均灰度記為Gb_avg;整幅圖像的平均灰度記為G_avg,類間方差記為Var(variance).
#假設:圖像的大小為M*N,其中,像素的灰度值小于閾值T的個數記為Nb,像素灰度大于閾值T的像素個數記為Nw。
Rw=Nw/(M*N); ?Rb=Nb/(M*N); ?Rw+Rb=1; ?Nb+Nw=M*N;
G_avg=Rw*Gw_avg+Rb*Gb_avg;
Var=Rw*(Gw_avg-G_avg)^2+Rb*(Gb_avg-G_avg)^2;
通過簡單的公式代換,類間方差也可以表示為:
Var=Rw*Rb*(Gw_avg-Gb_avg)^2;
那么,采用遍歷的方法得到使類間方差最大的閾值T即為所求。
1.3算法設計及matlab仿真
%OTSU Algorithm %step1:設定初始分割閾值T=1, %step2:利用閾值分割,形成區域R0/R1,分別計算R0的像素比例,R1的像素比例 %step3:分別計算R0區域的平均灰度值、R1區域的平均灰度值 %step4:計算目標函數,類間方差Var,并保存 %step5:如果T<256,返回step2,否則執行下一步 %step6:輸出圖像 %%%%%%%%%%%%%%%author:沈春旭 clc;clear all; I=imread('chunxu.jpg'); figure(1);imshow(I); II=rgb2gray(I); figure(2);imhist(II); II=double(II); [x,y]=size(II); sum0=0;count0=0; sum1=0;count1=0; for T=1:1:255 %遍歷分割閾值for i=1:1:xfor j=1:1:yif (II(i,j)<=T)count0=count0+1;sum0=sum0+II(i,j);endendendGb_avg=sum0/count0;Rb=count0/(x*y);count1=x*y-count0;sum1=sum(sum(II))-sum1;Gw_avg=sum1/count1;Rw=1-Rb;%計算并保存類間方差Var(T,1)=Rw*Rb*(Gw_avg-Gb_avg)^2; end %找到最大類間方差以及最佳閾值 [VarMax,Index]=max(Var); %進行閾值分割 for i=1:1:xfor j=1:1:yif ( II(i,j)>=Index ) II(i,j)=255;elseII(i,j)=0;endend end figure(3),imshow(II);
1.4算法評價
大松算法仍然無法解決“多峰灰度直方圖分布問題”。
總結
以上是生活随笔為你收集整理的[Medical Image Processing] 2. Image Binary -【OTSU Algorithm Entropy Method】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞秋2010下载又用什么样的技术
- 下一篇: 【飞秋】使用C++语言创建Silverl