资源简介
多阈值分割,图像处理,最大内间方差算法otsu的,本程序用的是三个阈值的分割,matlab编写的
代码片段和文件信息
%-----------------------------基于最大内间方差思想的多阈值图像分割算法-------------------------
tic
clc
clear all;
close all;
img = imread(‘lenna.bmp‘);
I_gray=rgb2gray(img);%将三原色彩色图像转化为灰度图像
I_double=double(I_gray); %转化为双精度,因为大多数的函数和操作都是基于double的
[widlen]=size(I_gray); %wid为行数,len为列数b
colorlevel=256; %灰度级
hist=zeros(colorlevel1); %直方图,256×1的0矩阵
threshold_num=3;%代表有三个阈值
threshould_vector=zeros(threshold_num1);%初始化一个向量数组用于存储阈值
W=zeros(threshold_num+11);%用于存储每个部分的w的值
miu=zeros(threshold_num+11);%用于存储阈值分割出来的图像各处的平均值
best_threshold=zeros(1threshold_num);%用于保存最好的阈值
% file_ceache = fopen(‘test.txt‘‘w‘);%用于存储命令行输出的数据
%计算直方图,统计灰度值的个数
for i=1:wid
for j=1:len
m=I_gray(ij)+1; %因为灰度为0-255所以+1
hist(m)=hist(m)+1;
end
end
%直方图归一化
hist=hist/(wid*len);
%miuT为总的平均灰度,hist[m]代表像素值为m的点个数
miuT=0;
for m=1:colorlevel
miuT=miuT+(m-1)*hist(m);
end
max_fangcha=0; %初始方差大小
%---------------------程序的开始-----------------------------------
for t1=1:colorlevel-2
for t2=t1+1:colorlevel-1
for t3=t2+1:colorlevel
miu=zeros(threshold_num+11);
W=zeros(threshold_num+11);
%计算第一个目标所占的比例
for m=1:t1
W(1)=W(1)+hist(m);
end
%计算第二个目标所占的比例
for m=t1+1:t2
W(2)=W(2)+hist(m);
end
%计算第三个目标所占的比例
for m=t2+1:t3
W(3)=W(3)+hist(m);
end
%计算第四个目标所占的比例
W(4)=1-W(1)-W(2)-W(3);
% fprintf(file_ceache‘%d---%d---%d目标W的值:%f%f%f%f\n‘t1t2t3W(1)W(2)W(3)W(4));
%计算目标的平均灰度
for m=1:colorlevel
if(m<=t1)
miu(1)=miu(1)+(m-1)*hist(m);
else if(m>t1&&m<=t2)
miu(2)=miu(2)+(m-1)*hist(m);
else if(m>t2&&m<=t3)
miu(3)=miu(3)+(m-1)*hist(m);
else
miu(4)=miu(4)+(m-1)*hist(m);
end
end
end
end
% fprintf(file_ceache‘%d---%d---%d中的miu的值:%f%f%f%f\n‘t1t2t3miu(1)miu(2)miu(3)miu(4));
% fclose(file_ceache);
%修改miu的值
for m=1:threshold_num+1
%由于不可避免会出现0的值,故采用下面方案处理
if W(m)==0
W(m)=0;
miu(m)=0;
else
miu(m)=miu(m)/W(m);
end
end
% fprintf(‘%d---%d---%d中的miu的值:%f%f%f%f\n‘t1t2t3miu(1)miu(2)miu(3)miu(4));
% miu=miu./W;
%计算方差
fangcha(t1t2t3)=0;
for i=1:threshold_num+1
fangcha(t1t2t3)=fangcha(t1t2t3)+W(i)*((miu(i)-miuT).^2);
end
if(fangcha(t1t2t3)>max_fangcha)
max_fangcha=fangcha(t1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 786486 2009-11-03 15:15 阈值分割\lenna.bmp
文件 4704 2018-03-08 11:56 阈值分割\multi_Otsu.m
目录 0 2018-03-16 11:22 阈值分割
----------- --------- ---------- ----- ----
791190 3
- 上一篇:多阈值算法分割算法
- 下一篇:matlab万年历制作
相关资源
- 基于遗传算法的图像分割毕业论文
- 基于标记的分水岭分割实现
- 基于区域生长法的图像分割matlab程序
- 图像分割-分水岭算法MATLAB代码
- LCE OCE GCEmatlab代码用于图像分割精度评
- Matlab基于阈值的图像分割直方图算法
- 图像分割分水岭算法MATLAB源代码
- 利用聚类技术实现纹理图像分割
- 区域生长图像分割-MATLAB程序,注释比
- matlab图像分割垂直投影代码
- MATLAB图像分割提取算法源代码车牌识
- MATLAB 代码 基于C-V模型的水平集图像分
- 水平集的图像分割
- 彩色图像分割——matlab实现FCM算法
- 图像分割灰度图 matlab
- 数字图像处理图像分割matlab算法代码
- 细胞图像分割源代码
- 图像分割 CV模型的MATLAB源代码
- 图像分割matlab程序
- 区域生长分割matlab实现
- Matlab指纹图像分割实验报告
- 遗传算法图像分割Matlab编写
- 图像分割算法 GVF snake matlab编写程序
- 模糊C均值聚类图像分割算法matlab实现
- 神经网络 图像分割
- 基于直方图的阈值分割的matlab实现
- 基于meanshift的图像分割matlab代码
- 道路图像分割程序
- 图像分割评价函数
- 基于灰度共生矩阵的图像分割
评论
共有 条评论