灰度图像找到最佳阈值转换为二值图像的MATLAB程序

灰度图像找到最佳阈值转换为二值图像的MATLAB程序,第1张

%采用迭代运算,计算图像的最佳阈值

%a为原始图像,图像大小为[width,height]

%迭代计算最佳阈值T

% output 是输出的结果图像

value=255/2; %设定初始迭代阈值T0

old=0; % 前一次迭代计算得到的阈值

%1 迭代运算过程,计算最佳分割阈值。

while(abs(value-old)>01)

%阈值分割就是将像素分割成两类,现用 sum1和 sum2计算两类的和,n和m 用来计数。

% 下面是这些变量的初始化过程

old=value;

sum1=0

n=0;

sum2=0;

m=0;

% 迭代分类过程

for i=1:width

for j=1:height

if a(i,j)<value

sum1=sum1+a(i,j);

n=n+1;

else

sum2=sum2+a(i,j);

m=m+1;

end

end

end

%计算新的分割阈值T

value=(sum1/n+sum2/m)/2;

end

% 2 用得到的最终阈值对图像二值化。

output=a;

for i=1:width

for j=1:height

if a(i,j)<value

output(i,j)=0; %output是二值化的结果

end

end

end

代码写错了

%% 迭代阈值选择法二值化图像与Otsu阈值选择法二值化图像比较

clc;

clear all;

close all;

f=imread('8_256_lenabmp','bmp');

subplot(2,2,1);

subimage(f);title('原始图像');

f=double(f);

T=(min(f(:))+max(f(:)))/2;

done=false;

i=0;

while ~done

r1=find(f<=T);

r2=find(f>T);

Tnew=(mean(f(r1))+mean(f(r2)))/2;

done=abs(Tnew-T)<1;

T=Tnew;

i=i+1;

end

f(r1)=0;

f(r2)=1;

subplot(2,2,2);

subimage(f);title('迭代阈值二值化图像图像');

f=imread('8_256_lenabmp','bmp');

subplot(2,2,3);

subimage(f);title('原始图像');

T=graythresh(f);

g=im2bw(f,T);

subplot(2,2,4);

subimage(g);title('Otsu方法二值化图像');

以上就是关于灰度图像找到最佳阈值转换为二值图像的MATLAB程序全部的内容,包括:灰度图像找到最佳阈值转换为二值图像的MATLAB程序、图像分割matlab程序,运行后,分割结果为全黑,阈值th显示128,这是什么情况请求解答、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9515199.html

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

发表评论

登录后才能评论

评论列表(0条)

保存