MATLAB:Image Processing Toolbox工具箱入门实战(2),2024年阿里大数据开发高级面试题分享

这篇博客介绍了MATLAB中使用Image Processing Toolbox进行图像处理,包括viscircles函数画圆,形态学操作如开闭运算、连通分量分析,以及Sobel算子进行图像锐化和去噪。通过实例展示了如何进行图像预处理,如将RGB图像转换为灰度,以及使用bwconncomp和regionprops计算区域面积并绘制直方图。博主分享了个人的大数据开发经验和学习资源,邀请读者一起加入学习圈子。
摘要由CSDN通过智能技术生成

imshow(rgb)
hBright = viscircles(centersBright, radiiBright,‘Color’,‘b’); % 蓝色画出
h = viscircles(centers,radii); % 红色画出


![](https://img-blog.csdnimg.cn/direct/270e92d7cd1745bf8020aa6533d0983c.png)


#### 3.实战项目二:图像增强(预处理)统计米粒


本案例说明如何在分析前的预处理步骤增强图像。例如校正背景亮度不均匀问题,并将图像转换为二值图像,以便于识别前景对象(单个米粒)。然后分析对象,例如计算每粒大米的面积,并计算图像中所有对象的统计量。


关于**形态学图像处理**的知识(strel腐蚀和imopen形态学开操作),可参考冈萨雷斯的数字图像处理第9章和以下资料:


[形态学运算与仿真:图像处理中形态学操作的简单解释 - 知乎 (zhihu.com)![icon-default.png?t=N7T8](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)https://zhuanlan.zhihu.com/p/628780157](https://zhuanlan.zhihu.com/p/628780157 "形态学运算与仿真:图像处理中形态学操作的简单解释 - 知乎 (zhihu.com)")


简而言之,形态学运算包括膨胀、腐蚀、开运算、闭运算等。其中:


* 膨胀操作可以将图像中的物体变大,使它更加连通;
* 腐蚀操作则可以将图像中的物体变小,使它更加细化;
* 开运算可以去除噪声,平滑图像的边缘;
* 闭运算可以填补图像中物体的孔洞。


这里应用strel腐蚀和imopen形态学开操作,目的是得到背景。


经过预处理得到图像的二值版本,然后利用bwconncomp()在二值图像中查找所有连通分量(对象)得到所有米粒的信息。最后展示了经过预处理后的图片和米粒面积的直方图:


![](https://img-blog.csdnimg.cn/direct/82d9cf0012354ea68dc81fed2b33180a.png)



I = imread(‘rice.png’);
% imshow(I)

% strel 对象表示一个平面形态学结构元素,该元素是形态学膨胀和腐蚀运算的重要部分。
se = strel(‘disk’,15);
% 开操作Open先对图像进行腐蚀操作,然后再进行膨胀操作的组合过程,可以用于消除小的物体或细节,并且可以平滑物体的边界
% 闭操作Close则相反,它是先对图像进行膨胀操作,然后再进行腐蚀操作的组合过程。可以用于填补小的空洞或裂缝,并且也可以平滑物体的边界。
% imopen执行形态学开操作,然后得到背景
background = imopen(I,se);
% imshow(background)
I2 = I - background;
% 默认情况下,imadjust 对所有像素值中最低的 1% 和最高的 1% 进行饱和处理。此运算可提高输出图像的对比度。
I3 = imadjust(I2);
bw = imbinarize(I3); % 使用 imbinarize 函数将灰度图像转换为二值图像
bw = bwareaopen(bw,50); % 使用 bwareaopen 函数去除图像中的背景噪声。
cc = bwconncomp(bw,4); % bwconncomp查找二值图像中的连通分量
% cc.NumObjects
labeled = labelmatrix(cc); % 使用 labelmatrix 根据 bwconncomp 的输出创建标签矩阵,将二进制图像中的连通分量标记为唯一的整数值。使用标签矩阵可视化不同的连通分量。
RGB_label = label2rgb(labeled,‘spring’,‘c’,‘shuffle’); % 为了更容易区分不同的连通分量,使用label2rgb将标签矩阵显示为RGB图像,并对标签的颜色随机。
% imshow(RGB_label)
graindata = regionprops(cc,‘basic’); % regionprops返回二值图像中每个8连通分量(对象)的属性集的测量值。
grain_areas = [graindata.Area];
histogram(grain_areas)
title(‘Histogram of Rice Grain Area’)


![](https://img-blog.csdni
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值