springjunqing 发表于 2010-3-2 21:44

MATLB关于指纹图像二值化阈值

出现死循环,不知是哪出错了,怎样修改WHILE语句
I=imread('L2.BMP');
=size(I);
for i=1+8:1:W-8
    for j=1+8:1:H-8
      Block=I(i-8:i+8,j-8:j+8);%%%%%%%%%%%%%%%%%%%分成17*17的平滑窗口
       T=mean2(Block);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%求块均值
       while 6,
            Nh=sum(sum(histc(Block,T:256)));%%%%%%%%统计灰度值大于T的像素点数
            Nl=17*17-Nh;%%%%%%%%%%%%%%%%%%%%%%%%%%%%统计灰度值小于T的像素点数
            if abs(Nh-Nl)<=17*1.7
               break;
               elseif Nh>Nl
                      T=T+1;
               elseif Nh<Nl
                      T=T-1;
            end
       end
       if I(i,j)>=T
          I1(i,j)=255;
          elseI1(i,j)=0;
       end
    end
end
figure,imshow(I1),title('binary image ');

高手帮帮忙,不胜感激!!!!!

ChaChing 发表于 2010-3-2 23:42

设个断点看看那里出现死循环!? 明显应该是while与if(break)无法配合
至于该怎改, 个人水平有限, 并不了解其中逻辑, 同待高人路过!

tuoniao992002 发表于 2010-3-22 20:44

回复 楼主 springjunqing 的帖子

”while 6“这个条件是什么意思都看不懂

ChaChing 发表于 2010-3-22 21:09

回复 板凳 tuoniao992002 的帖子

while 6等同while 1, 即无限回圈
页: [1]
查看完整版本: MATLB关于指纹图像二值化阈值