xiaoyu63 发表于 2007-5-6 14:59

急求:MATLAB实现图像分割的最佳域值分割程序

希望那位仁兄能够帮忙解决,本人感激不尽~~:handshake

风花雪月 发表于 2007-5-10 01:39

function TT=iteration(imm)   
%迭代法阈值计算
% im=imread('rice.tif');
count=imhist(imm); zl=min(min(imm)); zk=max(max(imm));
zl=double(zl); zk=double(zk); T(1)=(zl+zk)/2; T(1)=round(T(1)); % T(1)=128;
for k=1:6
    n1=sum(count(1:T(k)));%第一类中象素总数
    n2=sum(count(T(k)+1:256));%第二类中象素总数
    sum1=0; sum2=0;
    for i=1:T(k), sum1=sum1+count(i)*i; end %第一类灰度值总和
    for i=T(k)+1:256, sum2=sum2+count(i)*i; end%第二类灰度值总和
    ua1=sum1/n1;   %第一类的平均灰度值
    ua2=sum2/n2;   %第二类的平均灰度值
    T(k+1)=(ua1+ua2)/2; T(k+1)=round(T(k+1));   %四舍五入
    if T(k+1)==T(k), break; end
end
if T(k+1)==T(k), TT=T(k+1);
else TT=0;%   disp('不是双峰图像');   
end


% k=1;
% while k<=5
%   n1=sum(count(1:T(k)));%第一类中象素总数
%   n2=sum(count(T(k)+1:256));%第二类中象素总数
%   sum1=0; sum2=0;
%   for i=1:T(k), sum1=sum1+count(i)*i; end %第一类灰度值总和
%   for i=T(k)+1:256, sum2=sum2+count(i)*i; end %第二类灰度值总和
%   ua1=sum1/n1;   %第一类的平均灰度值
%   ua2=sum2/n2;   %第二类的平均灰度值
%   T(k+1)=(ua1+ua2)/2; T(k+1)=round(T(k+1));   %四舍五入
%   if T(k+1)==T(k), break; else k=k+1; end
% end
% if T(k+1)==T(k), TT=T(k+1);
% else TT=0; disp('不是双峰图像');   
% end

[ 本帖最后由 ChaChing 于 2010-1-1 22:58 编辑 ]

风花雪月 发表于 2007-5-10 01:40

function th=zbthresh(m,n,im)
% a=imread('mytu.tif');
% im=rgb2gray(a);
=size(im); u=M/m; v=N/n;
%将图像分为u×v大小的子图
f=cell(m,n);
for i=1:m, for j=1:n
   f{i,j}=im((i-1)*u+1:i*u,(j-1)*v+1:j*v);
end; end
%检测子图的直方图是否为双峰,同时求出阈值
th=zeros(m,n);
for i=1:m, for j=1:n
   th(i,j)=iteration(f{i,j});
end; end
%进行灰度插值计算(最邻近插值)
=find(th==0); k=size(I,1);
TH=zeros(m+2,n+2);   %将阈值矩阵的外边框补0
TH(2:m+1,2:n+1)=th;
for i=1:k
    T(1)=TH(I(i)+1,J(i)); T(2)=TH(I(i)+1,J(i)+2);
    T(3)=TH(I(i),J(i)+1); T(4)=TH(I(i)+2,J(i)+1);
    for j=1:4
      if T(j)~=0, TH(I(i)+1,J(i)+1)=T(j); end
    end
end
th=TH(2:m+1,2:n+1);
for i=1:m
    for j=1:n
      f{i,j}=(f{i,j}>th(i,j)); im((i-1)*u+1:i*u,(j-1)*v+1:j*v)=f{i,j};
    end
end
im=logical(im);
figure, imshow(im);

[ 本帖最后由 ChaChing 于 2010-1-1 23:03 编辑 ]

晨之若曦 发表于 2009-4-23 10:24

正好能用上,谢谢你了

luowenjie315 发表于 2009-5-4 20:47

各位大虾,能否解释一下这段程序?不是很明白,在线求解,谢谢!
好心人。。。。帮帮我。。。。。

[ 本帖最后由 ChaChing 于 2009-5-4 20:53 编辑 ]
页: [1]
查看完整版本: 急求:MATLAB实现图像分割的最佳域值分割程序