灰度图片二值化matlab

rge图片灰度化之后,往往存在灰度值比较近的情况。根据自己的需求将灰度值调到两个极端值,也叫做阈值处理。

本文的阈值是自定义的,建立在已经读取到灰度图片灰度值的基础之上。

存在获取灰度图片最佳阈值的算法——大津法,也叫最大类间方差法,被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。

H = imread('test.png');
I = rgb2gray(H);            % 灰度化

方法1:

matlab内置函数imagesc,可以根据自定义的阈值将首尾两端的值映射到一致的值。

这是matlab提供的示例:

C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
clims = [4 18];
imagesc(C,clims)
colorbar

小于4的像素块被统一映射到4,大于18的像素块被统一映射到18

采用这种方法调试灰度地图:

imagesc(I, [219, 220]);            % 读取图片灰度知道海域的灰度值是218,只需要将海域和其他障碍物区分即可
colormap(gray);
colorbar;

原图:

简单二值化:

这里存在的问题是,可行区域和障碍物的灰度值相差不大,不能真正做到二值化

而且,可行区域被设置成黑色,障碍物被设置成白色,不能随意设置。


方法2:

[m, n] = size(I);                        % 获取灰度值矩阵的行列
for i = 1:m
    for j = 1:n
        if I(i, j) == 218                % 已知可行海域灰度值为218
            I(i, j) = 255                % 可行区域设置成白色
        else
            I(i, j) = 0                  % 其他障碍物设置成黑色
        end
    end
end
imshow(I);
colorbar;

直接遍历像素矩阵,设定灰度值

结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值