level = graythresh(I) 计算全局阈值(level) ,该阈值可以用在将强度图像转换为二进制图像的函数 im2bw 中。level 是在[0, 1]内归一化的强度值。这个是全局阈值的选取,matlab自带的函数。
I=imread(' c4jpg ');%读入一幅图
subplot(2,3,1);
imshow(I);
title('原始图像');
level = graythresh(I);
I1=im2bw(I,level);
subplot(2,3,2);
imshow(I1);
title('二值图像');
你说的整体阈值指的是全局阈值的意思吗?
我就这么理解了:
I=imread('tuxiangjpg');
i1=rgb2gray(I);
i2=im2bw(i1,graythresh(i1));
figure,subplot(1,3,1),imshow(I),title('原图像');
subplot(1,3,2),imshow(i1),title('灰度图');
subplot(1,3,3),imshow(i2),title('全局阈值,二值图像');
function threshold=ostu(filename);
x=imread(ff);
%figure;
%imshow(x);
[m,n]=size(x);
N=mn;
num=zeros(1,256);
p=zeros(1,256);
for i=1:m
for j=1:n
num(x(i,j)+1)=num(x(i,j)+1)+1;
end
end
for i=0:255;
p(i+1)=num(i+1)/N;
end
totalmean=0;
for i=0:255;
totalmean=totalmean+ip(i+1);
end
maxvar=0;
for k=0:255
kk=k+1;
zerosth=sum(p(1:kk));
firsth=0;
for h=0:k
firsth=firsth+hp(h+1);
end
var=totalmeanzerosth-firsth;
var=varvar;
var=var/(zerosth(1-zerosth)+001);
var=sqrt(var);
if(var>maxvar)
maxvar=var;
point=k;
end
end
threshold=point;
for i=0:255;
p(i+1)=num(i+1)/N;
end
totalmean=0;
for i=0:255;
totalmean=totalmean+ip(i+1);
end
maxvar=0;
for k=0:255
kk=k+1;
zerosth=sum(p(1:kk));
你是用什么软件对图像进行阈值处理?如果你用的是MATLAB,则可以先把真彩图转化成灰度图,再用graythresh得到大津法的阈值,最后将此阈值代入二值分割。例子如下:
I=imread('真彩图'); %读取真彩图(原图)
J=rgb2gray(I); %将原图转化成灰度图
level=graythresh(J); %计算阈值
BW=im2bw(J,level); %代入阈值进行二值分割
[r,c] = find(R == max(R(:))); 检索R中最大元素所在的位置(行标r和列标c)
thetap = theta(c(1)); theta()是自定义函数
以上就是关于如何利用Matlab实现二值化其中最关键的阈值怎样提取啊全部的内容,包括:如何利用Matlab实现二值化其中最关键的阈值怎样提取啊、如何在matlab中给图像整体阈值化、Matlab中Ostu算法自动阈值分割具体怎么 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)