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;
直接遍历像素矩阵,设定灰度值
结果:

版权声明:本文为qq_45053161原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。