如何利用Matlab实现二值化其中最关键的阈值怎样提取啊

如何利用Matlab实现二值化其中最关键的阈值怎样提取啊,第1张

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算法自动阈值分割具体怎么 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10208135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存