最大熵方法的指纹二值化(Matlab源程序)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for i=t+wk.baidu.com:1:255 R1=gl(i+1)/P1; if R1~=0 E1=E1-R1*log(R1); end end end n(t+1)=E0+E1; end n temp=n(1); for i=1:256 if n(i)>temp temp=n(i); T=i; end end T final=ones(h,w); %image2=ones(m,l); %按照最大熵得出的阈值进行分割 for i=1:h for j=1:w if origin(i,j)<=T final(i,j)=0; end end end subplot(1,2,2); imshow(final); toc
function shang(X) %最大熵方法 tic origin=imread(X); %origin=rgb2gray(origin1); subplot(1,2,1); imshow(origin); times=zeros(1,256); im=imfinfo(X); w=im.Width; h=im.Height; %统计各灰度出现的次数,存储在一维数组 for i=1:h for j=1:w temp=double(origin(i,j)); times(temp+1)=times(temp+1)+1; end end %计算各灰度出现的概率,存储在一维数组 for i=1:1:256 gl(i)=times(i)/(w*h); end %t 是分割阈值,计算出最大熵 for t=0:1:255 E0=0; E1=0; P0=0; for i=0:1:t P0=P0+gl(i+1); end P1=1-P0; if P0~=0 for i=0:1:t R0=gl(i+1)/P0; if R0~=0 E0=E0-R0*log(R0); end end end if P1~=0