求matlab图像直方图阈值分割算法(包含预处理步骤)

学习 时间:2026-04-02 06:46:14 阅读:9880
求matlab图像直方图阈值分割算法(包含预处理步骤)最好是完整的算法 越详细越好

最佳回答

忧心的薯片

多情的大山

2026-04-02 06:46:14

在此提供两种方法,一,最大阈值分割(大律法):
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('阈值分割图');

最新回答共有2条回答

  • 顺心的黑猫
    回复
    2026-04-02 06:46:14

    在此提供两种方法,一,最大阈值分割(大律法):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);%最佳阈值levelsubplot(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; endenddisp(strcat('迭代后的阈值:',num2str(TK)));newI=im2bw(I,double(TK)/255);subplot(1,2,1);imshow(I);title('原图')subplot(1,2,2);imshow(newI);tltle('阈值分割图');

上一篇 解方程:5X+8(1000-X)=6950求解答过程

下一篇 化学选择第二题