【水果分级】基于图像处理技术的自动水果质量检测与分级(香蕉 苹果 橙子)附Matlab代码

发布时间:2026/6/28 1:23:19
【水果分级】基于图像处理技术的自动水果质量检测与分级(香蕉 苹果 橙子)附Matlab代码 ✅作者简介热爱科研的Matlab仿真开发者擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。完整代码获取 定制创新 论文复现私信个人信条做科研博学之、审问之、慎思之、明辨之、笃行之是为博学慎思明辨笃行。 内容介绍在食品工业中自动化视觉检测技术可实现无需人工干预的水果质量分级。本项目的目标是构建一套分析流程仅通过经典图像处理技术不使用任何机器学习方法即可对水果图像进行识别、判定其种类并根据形状和表面状况决定是否接受或拒收。我们选取了三种常见水果——橙子、苹果和香蕉。由于每种水果的形状、颜色及典型缺陷特征各不相同该分析流程需具备足够的通用性以应对所有情况。此外还需实现两项附加功能• 缺陷量化计算果实表面被瑕疵或腐烂区域覆盖的比例• 物理尺寸校准利用图像中的已知参照物如硬币或彩色标记将像素测量值转换为实际物理尺寸例如毫米直径。其中缺陷量化功能已实现但尺寸校准功能尚未完成。该分析流程可输出以下结果检测到的水果类型、二值化缺陷掩码、缺陷覆盖面积占果实总面积的百分比以及最终的接受或拒收判定结果。该算法会对输入文件夹中的所有图像进行循环处理包含四个主要阶段预处理、分割、分类和缺陷检测。 A. 预处理首先为抑制输入图像中的噪声使用标准差为1.5的高斯滤波器进行处理。随后将滤波后的图像转换为HSV和Lab色彩空间。其中Lab色彩空间图像用于分割分析HSV色彩空间图像则用于提取颜色特征以辅助缺陷检测和水果分类。 B. 水果分割由于不同水果的颜色具有特定的色调范围且腐烂水果的色调常会发生变化例如腐烂的橙子会呈现棕褐色导致其超出预期范围。因此我们采用Lab色彩空间图像的色度值作为判别依据——彩色水果的色度值较高而中性物体白色或灰色背景的色度值接近零。基于“背景为中性色、水果为有色体”的假设这一单一指标即可区分水果与背景无需知晓具体颜色。色度图被归一化至[0,1]区间并采用大津法在自动阈值的60%处设置阈值以略微偏向保留水果边界。唯一例外情况是完全黑色化的香蕉其表面几乎全黑此时水果仍可被分割黑色化边缘仍保留部分色度但由于其极低亮度系统会将其识别为形变图像并自动剔除。为解决该问题该掩模在考虑色度的基础上还纳入了亮度HSV图像中的V通道值。背景区域定义为同时满足色度中性低色度且亮度较高V0.4的像素点。第二个排除掩模用于处理由图像旋转伪影抗锯齿填充产生的黑色区域这些区域通过检测V值0.05的像素点并将其扩展5像素以消除边缘伪影来识别。随后使用形态学闭合圆盘半径r20像素对二值掩模进行清理填补果实内部的小间隙并连接相邻区域再用开孔算法圆盘半径r3像素去除孤立噪声像素并平滑轮廓。接着采用填充算法进行填充处理最终仅保留最大的连通区域。C. 茎部去除与形状分析茎部是果实表面细长的附属结构会人为降低果实的圆形度并增加偏心率因此可能影响果实分类和质量判定被标记为畸形。茎部去除采用较大形态学开孔圆盘半径r15像素直径小于30像素的区域均被消除从而剔除茎部并保留主体果实。随后利用regionprops函数在去茎部掩模上计算形状特征面积、凸面积、偏心率、圆形度。D. 果实类型分类分类过程采用决策树模型基于去茎部掩模上的三个特征参数进行判定。阈值的确定是通过对数据集中所有图像包含每种水果类型各15张图像包括腐烂和新鲜果实的特征值进行分析得出的。香蕉检测香蕉具有高度拉长的形态偏心率通常为0.90–0.97这一特征足以用于其识别。橙子检测• 小红像素比例该指标计算果实像素中HSV色相H0.08或H0.92即真红色的比例橙子的红色像素比例远低于苹果。该阈值可有效区分大多数橙子样本。⛳️ 运行结果 部分代码root_folder fruit;file_pattern fullfile(root_folder, **, *.png);image_files dir(file_pattern);jpg_files dir(fullfile(root_folder, **, *.jpg));image_files [image_files; jpg_files];if isempty(image_files)error(No image files found in the folder: %s, root_folder);endfor k 1:length(image_files)base_file_name image_files(k).name;full_file_path fullfile(image_files(k).folder, image_files(k).name);img imread(full_file_path);% Gaussian filter to reduce noiseimg_filtered imgaussfilt(img, 1.5);% HSV and Lab space conversionsimg_hsv rgb2hsv(img_filtered);img_lab rgb2lab(img_filtered); 参考文献更多免费数学建模和仿真教程关注领取

月新闻