图像二值化-MATLAB实现

1.图像二值化代码:

A=imread('hw1.chips1.GIF');   %读取到一张图片   
%thresh = graythresh(A);     %自动确定二值化阈值
I2 = im2bw(A,120/255); %对图像二值化
figure();
subplot(1,2,1);  
imshow(A);    %显示二值化之前的图片
title('原图'); 
subplot(1,2,2);
imshow(I2);    %显示二值化之后的图片
title('二值化'); 

2.求目标和背景均值和方差

oriImg = imread('hw1.chips1.GIF');
grayImg = oriImg;
%grayImg = rgb2gray(oriImg); %转换为灰度图
grayImg = double(grayImg);
[m, n] = size(oriImg);
foreCount = 0;
foreTotal = 0;
backCount = 0;
backTotal = 0;

for x = 1:m
    for y = 1:n
        if(grayImg(x,y) >= 128)
            foreCount = foreCount + 1;
            foreTotal = foreTotal + grayImg(x,y);
        else
            backCount = backCount + 1;
            backTotal = backTotal + grayImg(x,y);
        end
    end
end

backMean = backTotal / backCount;
foreMean = foreTotal / foreCount;
backSqu = 0;
foreSqu = 0;
for x =1:m
    for y = 1:n
        if(grayImg(x,y) >= 128)
            foreSqu = foreSqu + (grayImg(x,y) - foreMean)^2;
        else
            backSqu = backSqu + (grayImg(x,y) - backMean)^2;
        end 
    end
end
backSqu = sqrt(backSqu / backTotal);
foreSqu = sqrt(foreSqu / foreTotal);

disp(strcat('背景均值', num2str(backMean)));
disp(strcat('背景标准差', num2str(backSqu)));
disp(strcat('前景均值', num2str(foreMean)));
disp(strcat('前景标准差', num2str(foreSqu)));

3.求目标和背景高斯分布(双峰直方图)

 

x = 0:0.1:256;
y1 = gaussmf(x,[backSqu^2 backMean]);
plot(x, y1);
hold on;
y2 = gaussmf(x,[foreSqu^2 foreMean]);
plot(x, y2);
title('高斯分布');

 

  • 13
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值