局部阈值分割法matlab,求matlab图像直方图阈值分割算法(包含预处理步骤)
在此提供兩種方法,一,最大閾值分割(大律法):
I=imread('test.jpg');
subplot(1,3,1);imshow(I);title('原圖');
I1=rgb2gray(I);
subplot(1,3,2);imhist(I1);title('直方圖');
level=graythresh(I);
g=im2bw(I,level);%最佳閾值level
subplot(1,3,3);imshow(g);title('閾值分割');
%在Command窗口輸出灰度閾值
disp(strcat('graythresh 計算灰度閾值:',num2str(uint8(level*255))))
第二種:迭代求閾值
I=imread('C:test.jpg');
Zmax=max(max(I));
Zmin=min(min(I));
TK=(Zmax+Zmin)/2;%初始閾值
flag=1;
[m,n]=size(I);
while(flag)
fg=0;
bg=0;
fgsum=0;
bgsum=0;
for i=1:m
for j=1:n
tmp=I(i,j);
if(tmp>=TK)
fg=fg+1;
fgsum=fgsum+double(tmp);
else
bg=bg+1;
bgsum=bgsum+double(tmp);
end
end
end
u1=fgsum/fg;
u2=bgsum/bg;
TKTmp=uint8((u1+u2)/2);
if(TKTmp==TK)
flag=0;
else
TK=TKTmp;
end
end
disp(strcat('迭代后的閾值:',num2str(TK)));
newI=im2bw(I,double(TK)/255);
subplot(1,2,1);imshow(I);title('原圖')
subplot(1,2,2);imshow(newI);tltle('閾值分割圖');
總結
以上是生活随笔為你收集整理的局部阈值分割法matlab,求matlab图像直方图阈值分割算法(包含预处理步骤)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html 表单坐标,精美form表单cs
- 下一篇: ubuntu 截图工具的使用