資源共享分類 |
|
微信:HuangL1121
Q Q:1224848052
團(tuán)隊(duì):嘉興麥特萊博軟件開(kāi)發(fā)工作室 地址:嘉興港區(qū)
|
|
|
通信信號(hào) |
MATLAB代做|利用大津法(Ostu)計(jì)算閾值 |
來(lái)源:本站 日期:2019/8/7 瀏覽量:255 |
|
|
功能描述:
%利用大津法(Ostu)計(jì)算閾值
%{
大津法由大津于1979年提出,對(duì)圖像Image,記t為前景與背景的分割閾值,前景點(diǎn)數(shù)占圖像
比例為w0,平均灰度為u0;背景點(diǎn)數(shù)占圖像比例為w1,平均灰度為u1。
圖像的總平均灰度為:u=w0*u0+w1*u1。從最小灰度值到最大灰度值遍歷t,
當(dāng)t使得值g=w0*(u0-u)2+w1*(u1-u)2 最大時(shí)t即為分割的最佳閾值。
對(duì)大津法可作如下理解:該式實(shí)際上就是類間方差值,閾值t分割出的前景和背景兩部分構(gòu)成
了整幅圖像,而前景取值u0,概率為 w0,背景取值u1,概率為w1,總均值為u,根據(jù)方差的
定義即得該式。因方差是灰度分布均勻性的一種度量,方差值越大,說(shuō)明構(gòu)成圖像的兩部分差
別越大, 當(dāng)部分目標(biāo)錯(cuò)分為背景或部分背景錯(cuò)分為目標(biāo)都會(huì)導(dǎo)致兩部分差別變小,因此使類
間方差最大的分割意味著錯(cuò)分概率最小。
%}
%Matlab實(shí)現(xiàn)大津法計(jì)算閥值
function threshold = otsu(grayImage)
%取出最大灰度值,max只能找到每一列的最大值
maxGrayValue = max(max(grayImage));
%取出最小灰度值
minGrayValue = min(min(grayImage));
%求初始閥值
t = double(minGrayValue:maxGrayValue);
%圖像大小
gsize = size(grayImage);
%圖像像素總個(gè)數(shù)
muxsize = gsize(1)*gsize(2);
for k = 1:length(t)
%從最小灰度值到最大值的計(jì)算方法
tk = t(1,k);
%定義前景和背景像素?cái)?shù)
iforeground = 0;
ibackground = 0;
%定義前景和背景的灰度總和
foreground = 0;
background = 0;
for i = 1:gsize(1)
for j = 1:gsize(2)
tmp = grayImage(i,j);
if(tmp >= tk)
%前景灰度值
iforeground = iforeground + 1;
foreground = foreground + double(tmp);
else
%背景灰度值
ibackground = ibackground + 1;
background = background + double(tmp);
end
end
end
w0 = iforeground / muxsize;
w1 = ibackground / muxsize;
u0 = foreground / iforeground;
u1 = background / ibackground;
t(2,k) = w0*w1*(u0-u1)*(u0-u1);
end
%遍歷后尋找grayIamge的第二行的最大值
%第二行方差的最大值,忽略NaN
omax = max(t(2,:));
%方差最大值所對(duì)應(yīng)的列號(hào),find只能檢查一行中的數(shù),或一維數(shù)組
index = find(t(2,:) >= omax);
%從第一行取出灰度值作為閥值
t = t(1,index);
threshold = t;
聯(lián)系:highspeedlogic
QQ :1224848052
微信:HuangL1121
郵箱:1224848052@qq.com
網(wǎng)站:http://www.mat7lab.com/
網(wǎng)站:http://www.hslogic.com/
微信掃一掃:
|
|
|
|
|