matlab函数bwareaopen的详解

【bwareaopen函数介绍】

bwareaopen是Matlab的图像处理工具箱中一种常用的函数,用于删除二值图像中面积小于指定值的连通区域。它的语法格式如下:

B = bwareaopen(A, P)

其中,A是一个二值图像,P是一个正整数,表示舍去连通区域的面积大小。函数返回值B也是二值图像,表示经过处理后的结果。

【使用方法】

使用bwareaopen函数的方法十分简单,只需给出待处理的二值图像以及需要去除的连通区域面积,函数就会返回处理后的结果。

例如,下面的代码演示了如何使用bwareaopen函数对输入图像进行处理:

```

I = imread('input.png');

bw = im2bw(I); % 将灰度图像转换为二值图像

bw_clean = bwareaopen(bw, 50); % 去除面积小于50的连通区域

imshow(bw_clean);

```

这段代码首先读入了一张灰度图像,然后使用im2bw函数将其转换为二值图像。最后使用bwareaopen函数去除面积小于50的连通区域,并在屏幕上显示结果。

需要注意的是,bwareaopen函数只能去除面积小于指定值的连通区域,而不能去除其他形状的区域。如果需要去除其他形状的区域,可以考虑使用其他函数,如bwmorph函数中的bwmorph(bw,'clean')命令。

【案例说明】

下面是一个具体的案例,通过对图像进行二值化和去除小面积连通区域的处理,实现了对车牌上车牌号码的提取。

首先,我们先看一下原始输入的图像:

![车牌图像](https://img-blog.csdn.net/20170620140048352?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFzaGlvbl9zb2Z0d2FyZS9HbGFydF9uZXdfd2Vic2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)

这是一张车牌图像,我们希望从中提取出车牌号码,以便进行后续的文字识别等处理。

首先,我们将图像进行二值化处理,代码如下:

```

I = imread('car_plate.png');

[Ir, Ic] = size(I);

J = I(round(Ir/2):Ir, :, :);

Jr = imadjust(J);

Ibw = im2bw(Jr, graythresh(Jr));

imshow(Ibw);

```

这段代码首先对图像进行了裁剪,剪去了图像上半部分的区域,并使用imadjust对裁剪后的图像进行了对比度增强。最后,使用im2bw对增强后的图像进行了二值化处理,并在屏幕上显示了处理结果。

接下来,我们可以使用bwareaopen对二值化后的图像进行去除小面积连通区域的处理,代码如下:

```

Ibw_clean = bwareaopen(Ibw, 1000);

figure, imshow(Ibw_clean);

Ibw_fill = imfill(Ibw_clean, 'holes');

figure, imshow(Ibw_fill);

```

这段代码可以去除掉一些不重要的小区域,只保留大部分车牌的二值化区域。同时,使用imfill函数填充了空洞,并在屏幕上显示了处理后的结果。

最后,我们可以使用ocr函数对提取出来的车牌区域进行文字识别,从而实现对车牌号码的自动识别。代码如下:

```

results = ocr(Ibw_fill);

license_plate = results.Text

```

这里使用了Matlab提供的ocr函数,可以对英文和数字等常见字符进行识别。函数的返回值是一个包含识别结果的结构体,其中Text字段就是识别出的车牌号码。

整个处理的结果如下图所示:

![车牌提取结果](https://img-blog.csdn.net/20170620141554751?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFzaGlvbl9zb2Z0d2FyZS9HbGFydF9uZXdfd2Vic2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70) 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(71) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部