MATLAB R2021a 图像处理之旅 --- 2

上文介绍了MATLAB R2021a中图像工具包及图片导入和基本的处理操作,MATLAB R2021a 图像处理之旅 — 1。接下来我们来看看图像处理技术中图像分割相关的操作。

3 图像分割

图像分割是很多高阶图像效果中的基础处理步骤,如车道线的识别,前景人物识别,后景背景替换等等应用。

3.1 图像二值化

//载入图片
img = imread("IMG_001.jpg");
gs = im2gray(img);
gsAdj = imadjust(gs);
imshow(gsAdj);

//二值化
BW = gsAdj > (255/2);
imshow(BW);

//直接二值化的效果有时并不太好,此时我们需要看一下图像的直方图,进而确认二值化的阈值
imhist(gsAdj);
BW = gsAdj > 200;
imshow(BW);

//除了手动设定阈值,还可以根据图像自动设置阈值,需要调用imbinarize函数
BW = imbinarize(gsAdj);
imshow(BW);

//imbinarize默认是设定图像的全局阈值,可以通过传入adaptive选项使用局部阈值的方式
BWadapt = imbinarize(gsAdj,"adaptive");
imshowpair(BW,BWadapt,"montage");

//imbinarize默认背景色是偏暗的,前景色是偏亮的;如果图像与默认不符,需要调整前景色极性
BWadapt = imbinarize(gsAdj,"adaptive","ForegroundPolarity","dark");
imshowpair(gsAdj,BWadapt,"montage");

3.2 二值图像的处理

经过上述处理后,我们能通常都能得到符合要求的二值图像,接下来我们要对二值图像进行处理得到我们需要的结果。

//导入图片
I = imread("IMG_006.jpg");
gs = im2gray(I);
gsAdj = imadjust(gs);
BW = imbinarize(gsAdj,"adaptive","ForegroundPolarity","dark");
imshowpair(I,BW,"montage");
I2 = imread("IMG_005.jpg");
gs2 = im2gray(I2);
gs2Adj = imadjust(gs2);
BW2 = imbinarize(gs2Adj);
imshowpair(I2,BW2,"montage");

S = sum(BW,2);				//计算二值图每行数据之和
plot(S);					//画出S对应的数据图
S2 = sum(BW2,2);			//计算二值图每行数据之和
plot(S2);					//画出S对应的数据图

从以上结果我么可以看出,如果带文字图片的二值化数据和很容易看出规律,而一般图像则不行。但其仍会受到一些其它因素的影响,比如说噪声大,背景纹理干扰等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

年少时的棉花糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值