news 2026/4/16 18:49:46

基于MATLAB的图像处理实践:当工业零件遇上非均匀光照

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于MATLAB的图像处理实践:当工业零件遇上非均匀光照

标题:基于matlab的图像处理实践 关键词:otsu 非均匀照度 光照补偿 log函数和gamma函数 Dice和Hausdorff测度 工件有孔,无孔进行分类 中心点标记 描述:主要是使用图像处理算法处理非均匀光照图像,进行光照模型补偿,展示图像灰度直方图,并对图像进行阈值分割,展示二值图。 之后对工件的有孔和无孔进行标记和使用不同颜色对工件分类,并计算出各个工件的中心位置。

在金属加工车间里,我们常会遇到这样的场景:零件表面的反光让质检摄像头拍出明暗不均的图像。就像这张铝制工件的现场图,左侧的顶灯在零件表面形成明显的光斑,直接使用Otsu阈值分割会把阴影区域误判为孔洞。今天咱们用MATLAB拆解这个棘手问题。

光照补偿的左右互搏

面对非均匀光照,先祭出直方图均衡化:

`matlab

img = imread('workpiece.jpg');

img_eq = histeq(img);

imshowpair(img, img_eq, 'montage');

`

但发现高光区域细节反而丢失。改用对数变换试试:

`matlab

c = 0.6;

log_trans = c * log(1 + double(img));

`

此时阴影细节浮现了,但整体对比度下降。这时gamma校正杀出重围:

`matlab

gamma = 2.5;

img_gamma = imadjust(img,[],[],1/gamma);

`

通过滑动gamma值观察效果,发现当gamma=1.8时,能同时保留高光和阴影的纹理特征。这种参数调优过程就像老中医把脉,需要结合具体场景反复尝试。

阈值分割的攻防战

补偿后的图像灰度直方图呈现双峰特征,但右侧峰明显比左侧"肥胖"。直接全局阈值分割:

`matlab

thresh = graythresh(img_gamma);

bw = imbinarize(img_gamma, thresh);

`

结果在明暗交界处产生锯齿状边缘。改用局部自适应阈值:

`matlab

bw = imbinarize(img_gamma, 'adaptive','Sensitivity',0.4);

`

参数Sensitivity调到0.35时,边缘平滑度显著提升。这里有个经验:当处理金属反光表面,Sensitivity取值建议在[0.3,0.45]区间滑动测试。

孔洞侦探的形态学工具箱

对于孔洞检测,先进行形态学开运算去除噪点:

`matlab

se = strel('disk',3);

bw_clean = imopen(bw,se);

`

之后用孔洞填充技术反推孔洞位置:

`matlab

bwfilled = imfill(bwclean,'holes');

holes = bwfilled & ~bwclean;

`

这里有个坑:当工件本身存在凹陷结构时,需要结合区域面积阈值过滤假孔洞。我们通过统计连通区域面积,设定当孔洞面积在[15,200]像素区间时才视为有效孔。

让零件自己说话的标记术

最后的可视化环节充满趣味:

`matlab

stats = regionprops(bw_clean,'Centroid','Area');

for k = 1:length(stats)

if holes_flag(k) % 孔洞标记判断

text(stats(k).Centroid(1), stats(k).Centroid(2),...

'○','Color','r','FontSize',14)

else

plot(stats(k).Centroid(1), stats(k).Centroid(2),...

'g+','MarkerSize',12)

end

end

`

用Dice系数评估分割结果时发现,当Hausdorff距离控制在3个像素以内,人眼几乎无法分辨差异。这种量化评估方法让算法优化有了明确的方向标。

整个处理流程跑下来,最大的感悟是:图像处理就像在光与影之间走钢丝,既要用数学工具建立模型,又要保持对物理世界的敬畏。当看到那些精确标定的中心点坐标在屏幕上闪烁时,仿佛听见了工业零件在数字世界的呢喃低语。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 17:55:07

腾讯地图TMap标记反显,新增标记

功能: 1. 根据省市区获取对于的经纬度,设置为地图的center 2. 如果传入了经纬度,则在地图中反显 3. 根据输入内容,调用接口,获取关联关键字的地址列表,点击列表项后,根据地址经纬度,…

作者头像 李华
网站建设 2026/4/16 15:31:25

Java毕设项目推荐-基于springboot的物流管理系统库存货物、分类信息、货物入库、货物出库、车辆分类、车辆、订单中心、车辆路线【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/15 21:57:17

Vue.js从入门到精通:核心技术全解析与实战指南(2025版)

作为前端三大框架之一,Vue.js以其“渐进式框架”特性、简洁的API设计和强大的生态系统,成为前端开发的主流选择。本文基于Vue 3(Composition API)展开,从环境搭建、核心语法、组件化开发,到状态管理、路由配…

作者头像 李华
网站建设 2026/4/16 18:46:25

城市仿真软件:CityEngine_(2).城市建模基础

城市建模基础 在城市仿真软件CityEngine中,城市建模是一项核心任务。它涉及到将现实世界中的城市结构、建筑物、道路和其他地理元素以数字形式在软件中表示出来。本节将详细介绍城市建模的基本原理和内容,帮助您掌握如何在CityEngine中创建和管理城市模型…

作者头像 李华
网站建设 2026/4/15 11:22:17

4大AI视频工具推荐,到底哪个生成效果更好?

现如今,各行各业的内容生产已经进入以图片为主、视频为王的多媒体时代。随着短视频行业的蓬勃发展,自媒体行业逐渐成为越来越多年轻人追捧的赛道。在短视频行业中,如何制作视频、保持稳定的更新节奏对账号流量至关重要。从2024年开始&#xf…

作者头像 李华
网站建设 2026/4/15 11:21:38

如何使用 IDEA自带的数据库工具导出 pgsql 的DDL

此时会有很多 alter table xxx owner to postgres;的语句,此时,需要,将他们移动到一行,然后替换到所有 第一步,将换行变成一行第二步,把包含 owner to postgres;的所有行替换为空行

作者头像 李华