資源簡介
用matlab實(shí)現(xiàn)自適應(yīng)圖像閾值分割(最大類間方差法)
%本程序是利用最大類間方差算法求解自適應(yīng)閾值,對(duì)圖像進(jìn)行分割

代碼片段和文件信息
%本程序是利用最大類間方差算法求解自適應(yīng)閾值,對(duì)圖像進(jìn)行分割
clear;
warning?off;
web?-browser?http://www.ilovematlab.cn/thread-10282-1-1.html
SE?=?strel(‘diamond‘4);
BW1?=?imread(‘img1.bmp‘);
BW2?=?imerode(BW1SE);
BW3?=?imdilate(BW2SE);
BW4?=?BW1-BW3;
%rgb轉(zhuǎn)灰度
if?isrgb(BW4)==1
????I_gray=rgb2gray(BW4);
else
????I_gray=BW4;
end
figureimshow(I_gray);
I_double=double(I_gray);%轉(zhuǎn)化為雙精度
[widlen]=size(I_gray);
colorlevel=256;??%灰度級(jí)
hist=zeros(colorlevel1);%直方圖
%threshold=128;?%初始閾值
%計(jì)算直方圖
for?i=1:wid
????for?j=1:len
????????m=I_gray(ij)+1;
????????hist(m)=hist(m)+1;
????end
end
hist=hist/(wid*len);%直方圖歸一化
miuT=0;
for?m=1:colorlevel
????miuT=miuT+(m-1)*hist(m);
end
xigmaB2=0;
for?mindex=1:colorlevel
????threshold=mindex-1;
????omega1=0;
????omega2=0;
????for?m=1:threshold-1
??????????omega1=omega1+hist(m);
????end
????omega2=1-omega1;
????miu1=0;
????miu2=0;
????for?m=1:colorlevel
????????if?m ???????????miu1=miu1+(m-1)*hist(m);
????????else
???????????miu2=miu2+(m-1)*hist(m);
????????end
????end
????miu1=miu1/omega1;
????miu2=miu2/omega2;
????xigmaB21=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;
????xigma(mindex)=xigmaB21;
????if?xigmaB21>xigmaB2
????????finalT=threshold;
????????xigmaB2=xigmaB21;
????end
end
fT=finalT/255?%閾值歸一化
T=graythresh(I_gray)%matlab函數(shù)求閾值
for?i=1:wid
????for?j=1:len
????????if?I_double(ij)>finalT
????????????bin(ij)=1;
????????else
????????????bin(ij)=0;
????????end
????end
end
figureimshow(bin);
figureplot(1:colorlevelxigma);
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1609??2008-05-23?18:02??tuxiangfenge.m
?????文件????????122??2008-05-14?18:20??Matlab中文論壇--助努力的人完成畢業(yè)設(shè)計(jì).url
?????文件???????3434??2008-05-15?08:26??使用幫助:新手必看.htm
-----------?---------??----------?-----??----
?????????????????5165????????????????????3
評(píng)論
共有 條評(píng)論