导航:首页 > 编程语言 > otsu算法matlab代码

otsu算法matlab代码

发布时间:2023-01-15 21:25:08

⑴ MATLAB有OTSU分割图像的函数吗

有的,函数是graythresh,代码如下,coins.png是自带的图像,代码可直接调用:

I=imread('coins.png');
level=graythresh(I);
BW=im2bw(I,level);
imshow(BW)

⑵ 求一个matlab代码:使用otsu进行阈值分割,提取图中目标,背景全变为黑色或白色。

I=imread('coins.png');
figure,imshow(I);
level=graythresh(I);
BW=im2bw(I,level);
BW=imfill(BW,'holes');
figure,imshow(BW);

coins.png

⑶ MATLAB--数字图像处理 Otsu算法(双阈值)

该算法就是利用otsu算法计算出两个阈值
公式
g=w0 (u0-u)^2+w1 (u1-u) ^2+ w2*(u2-u) ^2
g最大值时,就可以选出两个阈值

求两个阈值

利用这两个阈值分割图像

主函数调用

⑷ 求一个用otsu算法的图像分割matlab程序

image_1=imread('E:\ebook\lena.bmp'); %读入图片
image_1=rgb2gray(image_1);%灰度化

[m,n]=size(image_1);%计算图片的像素点个数,行列,n是列数,Gray

num=zeros(1,256);%存放各灰度级出现的次数

p=zeros(1,256);%存放各灰度级的比率

image_1=double(image_1);%双精度化

for i=1:m
for j=1:n
num(image_1(i,j)+1)=num(image_1(i,j)+1)+1;%统计各灰度级的像素点个数
end
end

for i=1:256
p(i)=num(i)/(m*n);%计算各灰度级出现的比率
end

for i=2:256
if p(i)~=0
st=i+1;%实现寻找出现比率不为0的最小灰度值
break
end
end

for i=256:-1:1
if p(i)~=0;
nd=i-1;%实现找出出现比率不为0的最大灰度值
break
end
end

%以下程序实现利用最小方差和法找出门阈值
w=inf; th=0;

for t=st:nd%最小非零比率灰度值到最大非零比率灰度值
qt1=0; qt2=0;%前景后景像素点比率
u1=0; u2=0;%前景后景均值
v1=0; v2=0;%
for i=1:t
qt1=qt1+p(i);
end
for i=1:t
u1=u1+i*p(i)/qt1;
end
for i=1:t
v1=v1+((i-u1)^2)*p(i)/qt1;
end

for i=t+1:256
qt2=qt2+p(i);
end
for i=t+1:256
u2=u2+i*p(i)/qt2;
end
for i=t+1:256
v2=v2+((i-u2)^2)*p(i)/qt2;
end
if qt1*v1+qt2*v2<w
th=t; w=qt1*v1+qt2*v2 ;
end
end

for i=1:m
for j=1:n
if (image_1(i,j)+1>th)
image_2(i,j)=255;
else
image_2(i,j)=0;
end
end
end
image_2=uint8(image_2);%读入读出变换
figure,imshow(image_2);%显示二值化后的图片

⑸ 求MATLAB代码

我只能说,这种限定行数的东西很疼。
再说句不好听的,多一些空行,代码一行拆成两行写,多一些注释,再牛一点把一些MATLAB自带的函数用循环再实现一次,这样的话,几百行的代码肯定可以干到1200行。

⑹ 【高分】用Matlab实现中值滤波与Otsu算法

告诉你一个简单的方法
你可以edit
medfilt2
edit
graythresh
就可以得到原函数的详细编码,然后再稍微修改一下就行了呗

⑺ 用matlab求图像阈值分析程序,急啊~

我给你提供2种方法,一种是直方图阈值法一种是最大类间方差
直方图阈值法
用 MATLAB实现直方图阈值法:
I=imread(' c4.jpg ');
I1=rgb2gray(I);
figure;
subplot(2,2,1);
imshow(I1);
title(' 灰度图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
[m,n]=size(I1); %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(I1==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
subplot(2,2,2),bar(0:255,GP,'g') %绘制直方图
title('灰度直方图')
xlabel('灰度值')
ylabel(' 出现概率')
I2=im2bw(I,150/255);
subplot(2,2,3),imshow(I2);
title('阈值150的分割图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
I3=im2bw(I,200/255); %
subplot(2,2,4),imshow(I3);
title('阈值200的分割图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
自动阈值法:Otsu法
用MATLAB实现Otsu算法:
clc
clear all
I=imread(' c4.jpg ');
subplot(1,2,1),imshow(I);
title('原始图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
level=graythresh(I); %确定灰度阈值
BW=im2bw(I,level);
subplot(1,2,2),imshow(BW);
title('Otsu 法阈值分割图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系

阅读全文

与otsu算法matlab代码相关的资料

热点内容
文件夹999找不到 浏览:145
win1014393最新版本号 浏览:100
java基本类型大小 浏览:516
word2007不能插入页码 浏览:968
vb读取文件并判断 浏览:6
php图片和程序分离 浏览:412
安卓面试非计算机专业 浏览:228
u盘的光盘文件怎么驱动 浏览:34
如何锁定c盘不下文件 浏览:359
浙江推广网站建设怎么做 浏览:478
word文件只有10页怎么增加 浏览:921
itunes下载的系统在哪个文件夹 浏览:605
个性化linux全名要求 浏览:40
数据表格制图小红点如何去掉 浏览:244
查询iphone版本信息失败怎么办 浏览:978
电脑版微信下载的文件保存在哪里 浏览:367
linuxsocket转发 浏览:32
迷你兔数据恢复软件可免费恢复多少 浏览:139
编程器怎么烧录两个不同的程序 浏览:214
如何加密打包压缩文件 浏览:328

友情链接