【MATLAB】matlab实现最大熵法图像分割程序
2023-09-14 09:05:32 时间
clear all
a=imread('moon.tif');
figure,imshow(a)
count=imhist(a);
[m,n]=size(a);
N=m*n;
L=256;
count=count/N;%%每一个像素的分布概率
count
for i=1:L
if count(i)~=0
st=i-1;
break;
end
end
st
for i=L:-1:1
if count(i)~=0
nd=i-1;
break;
end
end
nd
f=count(st+1:nd+1); %f是每个灰度出现的概率
size(f)
E=[];
for Th=st:nd-1 %%%设定初始分割阈值为Th
av1=0;
av2=0;
Pth=sum(count(1:Th+1));
%%%第一类的平均相对熵为
for i=0:Th
av1=av1-count(i+1)/Pth*log(count(i+1)/Pth+0.00001);
end
%%%第二类的平均相对熵为
for i=Th+1:L-1
av2=av2-count(i+1)/(1-Pth)*log(count(i+1)/(1-Pth)+0.00001);
end
E(Th-st+1)=av1+av2;
end
position=find(E==(max(E)));
th=st+position-1
for i=1:m
for j=1:n
if a(i,j)>th
a(i,j)=255;
else
a(i,j)=0;
end
end
end
figure,imshow(a);
相关文章
- matlab griddata nan,请教Matlab的griddata的用法
- MATLAB——axis
- Matlab GUI上位机界面实现串口通信
- matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」
- matlab中错误使用fmincon,MATLAB中fmincon 函数问题
- matlab怎么对语音信号处理,语音信号处理MATLAB程序
- 【matlab】meshgrid的使用
- matlab 插值出错,MATLAB插值问题
- matlab interp1db,matlab – Matlab interp1图出现数据偏移 – 堆栈内存溢出
- matlab中axis的使用
- matlab画图标签,Matlab绘图
- 标准粒子群算法(PSO)及其Matlab程序和常见改进算法_粒子群算法应用实例
- 遗传算法matlab程序简单实例_遗传算法的matlab实现
- zigzag扫描matlab,ZIGZAG扫描的MATLAB实现
- Matlab 直方图_matlab分析
- matlab毕业设计题目_matlab毕业设计论文带有程序
- matlab循环语句for_MATLAB以下选择语句错误的是
- 好玩的matlab程序_matlab怎么停止运行程序
- 强化学习 Q学习原理及例子(离散)附matlab程序
- MATLAB 循环语句_for循环matlab
- MATLAB循环_matlab如何循环计算
- matlab 怎么使用function,Matlab中function函数使用操作方法
- 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )
- 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )
- Linux下使用Matlab玩转编程世界。(linux下matlab)