查看: 148|回复: 1|关注: 0

[已解决] 为什么在进行二值化图像时结果黑白颜色颠倒了

[复制链接]

新手

9 麦片

财富积分


050


2

主题

2

帖子

0

最佳答案
function th=thresh_md(a);
   x=imread(a);
   a=rgb2gray(x);
   subplot(211);
   imshow(a,[]);
   %[count x]=imhist(a);
   [m,n]=size(a);
   N=m*n;
   L=256;

for i=1:L
    count(i)=length(find(a==(i-1)));
    f(i)=count(i)/(N);
end

for i=1:L
    if count(i)~=0
        st=i-1;
        break;
    end
end
for i=L:-1:1
    if count(i)~=0
        nd=i-1;
        break;
    end
end
%f=count(st+1:nd+1);  %f是每个灰度出现的概率
p=st;   q=nd-st;
u=0;
for i=1:q
    u=u+f(i)*(p+i-1);  %u是像素的平均值  
    ua(i)=u;           %ua(i)是前i个像素的平均灰度值
end;

for i=1:q
    w(i)=sum(f(1:i));  %w(i)是前i个像素的累加概率
end;

w=w+0.0001;

d=(u*w-ua).^2./(w.*(1-w));
[y,tp]=max(d);  %可以取出数组的最大值及取最大值的点
th=tp+p;

for i=1:m
    for j=1:n
        if a(i,j)>th
            a(i,j)=0;
        else
            a(i,j)=255;
        end
    end
end  
subplot(212);
imshow(a,[]);


二值化.png
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

26

主题

1215

帖子

161

最佳答案
  • 关注者: 49
发表于 4 天前 | 显示全部楼层 |此回复为最佳答案
  1.   if a(i,j)>th
  2.             a(i,j)=0;
  3.         else
  4.             a(i,j)=255;
复制代码

这里写的
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

快速回复 返回顶部 返回列表