基于SVM多分类的玻璃纤维断开位置识别算法研究

【信息科学与工程学】【物理/化学和工程技术】第七十五篇 电气工程 系列三 电机学01 至此,总条目达到163 条磁路与电磁场数值方法(131–134)特殊运行状态(135–139)实验技术与标准设计细节(144–149)动态过程(150–154)至此,总条目达到213 条,全面覆盖《电机学》教材及其在电动汽车、工业机器人、家用电器、轨道交通、航空航天、船舶推进、新能源(飞轮储能、波浪发电)​ 等领域的应用,以及先进控制算法(MTPA、弱磁、MPC、EKF、三环PID)​ 和仿真技术(联合仿真、遗传算法优化、HIL)。每条均包含逐步推理的数学方程式和详细推导,可直接用于教学、科研和工程参考。 阅读详情

选题意义背景

玻璃纤维作为一种新型复合材料,具有重量轻、强度高、耐腐蚀、绝缘性能好等诸多优良特性,在航空航天、汽车制造、建筑工程、电子电器等领域得到广泛应用 ,随着全球制造业转型升级和环保意识的提高,玻璃纤维及复合材料行业保持稳定增长态势,市场规模持续扩大,在玻璃纤维缠绕过程中,需要将多根玻璃纤维按照预定的角度和张力缠绕在芯模上,形成均匀、致密的复合材料层。缠绕工艺的质量直接影响最终产品的强度、耐压性能和使用寿命,因此在缠绕过程中对玻璃纤维状态的实时监控至关重要。
在这里插入图片描述

在玻璃纤维缠绕生产过程中,由于机械摩擦、张力变化、材料缺陷等原因,玻璃纤维可能发生断裂。一旦发生断纱,若不能及时检测并处理,会导致以下问题:

  • 缠绕产品质量下降,出现局部强度不足
  • 断纱头可能混入其他纤维中,造成更多纤维断裂
  • 影响生产效率,增加人工检查和修复成本
  • 严重情况下可能导致设备损坏或安全事故

随着计算机视觉算法的不断优化和硬件设备性能的提升,机器视觉在纺织、电子、汽车等行业的应用深度和广度不断拓展。特别是在需要高精度、高速检测的场景下,机器视觉技术展现出明显的优势。

数据集

数据获取

本项目的数据集主要通过搭建的实验平台采集获取。为了真实模拟玻璃纤维缠绕机的工作环境,我们构建了一个包含浸胶槽、工业相机、28根玻璃纤维、计算机和控制设备的实验系统。数据采集过程如下:

  1. 设备准备:在实验平台上安装两台工业相机 ,配备25mm焦距镜头和HDL3系列条形光源,确保图像采集质量。
  2. 正常状态数据采集:启动缠绕机,使28根玻璃纤维以1m/s的速度正常运行,通过两台相机分别采集玻璃纤维正常状态下的图像数据。每台相机采集10000张图像,总计20000张正常状态图像。
  3. 断纱状态数据采集:模拟不同断纱情况,分别制造单根断纱(如第1根、第5根、第12根等)和多根断纱(如第1根和第24根同时断开)的场景,每种场景下每台相机采集5000张图像。

数据格式

采集的图像数据具有以下特点:

  • 图像格式:采用工业相机标准的BMP格式,确保图像质量和处理便捷性
  • 图像分辨率:原始图像分辨率为2048×1088像素
  • ROI区域:经过分析,确定有效的感兴趣区域(ROI)为1600×100像素的矩形区域,该区域能够完整包含所有28根玻璃纤维

数据分割

为了验证模型的泛化能力,我们将采集的数据按照以下比例进行分割:

  • 训练集:70%的图像数据,用于SVM模型的训练
  • 验证集:15%的图像数据,用于训练过程中的模型参数调整和验证
  • 测试集:15%的图像数据,用于最终评估模型性能

数据分割时采用分层抽样的方法,确保每个类别的数据在训练集、验证集和测试集中的比例保持一致,避免数据分布不平衡导致的模型偏差。

数据预处理

在使用图像数据进行模型训练和测试之前,需要进行一系列预处理操作,主要包括:
在这里插入图片描述

  1. ROI提取:从原始图像中裁剪出1600×100像素的感兴趣区域,只保留包含玻璃纤维的部分,减少数据量和计算复杂度。

  2. 图像滤波:采用中值滤波(核大小为7)对图像进行去噪处理,有效去除图像中的椒盐噪声,同时保持玻璃纤维边缘的清晰度。

  3. 图像二值化:使用全局阈值法(阈值设为90)将灰度图像转换为二值图像,突出玻璃纤维轮廓,抑制背景干扰。

  4. 形态学操作:对二值图像先进行开操作,再进行闭操作,去除小的噪声点和孔洞,使玻璃纤维轮廓更加连续和清晰。

  5. 边缘检测:使用Canny算子进行边缘检测,提取玻璃纤维的边缘轮廓。

  6. 轮廓提取:使用OpenCV的findContours函数 提取玻璃纤维的外部轮廓,并根据轮廓像素点个数(阈值170)过滤掉噪声轮廓。

  7. 特征提取:计算每个玻璃纤维轮廓的质心坐标,作为SVM多分类模型的输入特征。

通过这些预处理操作,不仅提高了图像质量,还提取了有效的特征信息,为后续的断纱检测和位置识别奠定了基础。

功能模块

图像采集模块

图像采集模块是整个断纱检测系统的基础,负责实时采集玻璃纤维的图像数据。该模块主要由工业相机、镜头、光源和图像传输接口组成:

  • 采用双相机布局,在浸胶槽上方安装两台工业相机,确保能够完整覆盖所有28根玻璃纤维
  • 通过条形光源提供均匀照明,减少阴影和反光对图像质量的影响
  • 使用高速数据传输接口,确保图像能够实时传输到上位机进行处理

图像处理

图像处理模块是断纱检测系统的核心,负责对采集到的图像进行一系列处理,提取玻璃纤维的轮廓特征,为断纱检测和位置识别提供基础:

  • 采用经典的图像处理流程:ROI提取→滤波→二值化→形态学操作→边缘检测→轮廓提取
  • 通过比较不同图像处理方法和参数的效果,选择最优的处理参数组合
  • 基于轮廓像素点个数的阈值判断法,实现对断纱的初步检测

**实现过程**:

断纱识别与位置定位

断纱识别与位置定位模块负责根据处理后的图像信息,判断玻璃纤维是否断开,并精确定位断开的玻璃纤维位置。该模块采用SVM多分类算法实现:

  • 以玻璃纤维轮廓质心坐标作为SVM模型的输入特征
  • 采用SVM"一对一"多分类策略,将28类问题转化为多个二分类问题
  • 通过投票机制确定最终的分类结果,实现对断纱位置的精确定位
  1. 特征提取:

    • 计算每个玻璃纤维轮廓的质心坐标(xa, ya)作为特征向量
    • 质心坐标能够准确反映玻璃纤维的位置信息
  2. SVM模型训练:

    • 构建28个类别的训练数据集,每个类别包含多个质心坐标样本
    • 采用"一对一"多分类策略,构建28×27/2=378个二分类器
    • 使用线性核函数(LINEAR)训练SVM模型,设置惩罚参数C=1
    • 通过实验确定最优迭代次数为600
  3. 断纱检测与位置识别:

    • 在测试阶段,对实时采集的图像进行处理,提取玻璃纤维轮廓并计算质心
    • 将质心坐标输入训练好的SVM模型,通过投票机制确定每个质心对应的玻璃纤维位置
    • 比较识别出的玻璃纤维根数与预设根数(28根),判断是否发生断纱
    • 通过分析缺失的类别标签,确定具体的断纱位置

算法理论

图像处理

图像处理是断纱检测系统的基础,涉及多个经典的图像处理算法。下面详细介绍本系统中使用的主要图像处理算法原理。

** 图像滤波算法**

图像滤波是预处理的关键步骤,用于去除噪声并增强有用信息。本系统比较了四种常用的滤波算法:

  1. 均值滤波:

    • 原理:用像素点周围邻域像素的平均值代替该像素值
    • 优点:算法简单,计算速度快
    • 缺点:容易模糊图像边缘,对椒盐噪声效果不佳
  2. 高斯滤波:

    • 原理:使用高斯函数生成的权重矩阵对图像进行卷积操作
    • 优点:对高斯噪声有良好的抑制效果
    • 缺点:计算复杂度较高,仍会模糊边缘
  3. 中值滤波:

    • 原理:用像素点周围邻域像素的中值代替该像素值
    • 优点:能够有效去除椒盐噪声,同时保持边缘清晰
    • 缺点:对某些类型的噪声效果有限

图像二值化是将灰度图像转换为二值图像的过程,用于突出目标物体并抑制背景。本系统采用全局阈值法进行二值化,选择一个全局阈值T,将灰度值大于T的像素设为255(白色),小于等于T的像素设为0(黑色)

  • 阈值选择:通过大量实验,确定最佳阈值为90
  • 效果:在该阈值下,玻璃纤维轮廓清晰可见,背景得到有效抑制

形态学操作是基于形状的图像处理技术,用于修改目标物体的形状和结构。本系统使用开操作和闭操作组合:

  1. 开操作:

    • 定义:先腐蚀后膨胀的操作
    • 作用:去除小的噪声点,断开物体之间的细连接
    • 参数:使用3×3的矩形结构元素
      在这里插入图片描述
  2. 闭操作:

    • 定义:先膨胀后腐蚀的操作
    • 作用:填充物体内部的小空洞,连接物体之间的细小间隙
    • 参数:使用3×3的矩形结构元素

通过先开后闭的形态学操作,玻璃纤维的轮廓更加连续和完整,有利于后续的边缘检测和轮廓提取。

边缘检测是提取目标物体边界的重要步骤。本系统比较了四种常用的边缘检测算子:

  1. Sobel算子:

    • 原理:使用两个3×3的卷积核分别计算图像在x和y方向的梯度
    • 优点:对噪声具有一定的抑制能力
    • 缺点:边缘定位精度一般
  2. Scharr算子:

    • 原理:Sobel算子的改进版本,使用更大的权重系数
    • 优点:边缘检测效果更精确
    • 缺点:计算复杂度略有增加
  3. Laplacian算子:

    • 原理:使用二阶导数计算图像的边缘
    • 优点:对边缘的定位更准确
    • 缺点:对噪声敏感
  4. Canny算子:

    • 原理:采用多阶段算法,包括高斯滤波、梯度计算、非极大值抑制和双阈值检测
    • 优点:边缘检测效果最佳,能够检测到连续、完整的边缘
    • 缺点:参数设置较为复杂

通过实验比较,本系统选择Canny算子进行边缘检测,设置低阈值150,高阈值255,核大小5,能够提取出最清晰、完整的玻璃纤维边缘。

SVM多分类

支持向量机(SVM)是一种强大的机器学习算法,在分类问题中表现优异。本系统采用SVM"一对一"多分类算法实现玻璃纤维断开位置的识别。SVM二分类的基本思想是通过寻找一个最优超平面,将不同类别的数据分隔开来。
在这里插入图片描述

  1. 线性可分情况:

    • 对于线性可分的数据,存在一个超平面能够将正负样本完全分开
    • 最优超平面是指能够使两类样本到超平面的最小距离(间隔)最大化的超平面
  2. 线性不可分情况:

    • 当数据线性不可分时,引入松弛变量ξ和惩罚参数C
    • 优化目标:最小化(1/2)||w||² + CΣξi,其中C控制对误分类样本的惩罚程度

断纱检测

断纱检测是本系统的核心功能,基于轮廓分析和SVM分类实现。

  1. 基于轮廓像素点个数的断纱检测:

    • 原理:当玻璃纤维断开时,断口部分的轮廓像素点个数会显著减少
    • 阈值设置:通过大量实验,确定轮廓像素点个数阈值为170
    • 检测逻辑:当轮廓像素点个数小于170时,认为该轮廓为噪声,将其过滤掉
  2. 基于SVM分类的断纱位置识别:

    • 正常情况下,系统应该识别出28根玻璃纤维
    • 当某根玻璃纤维断开时,其对应的轮廓被过滤,导致识别出的玻璃纤维根数减少
    • 通过比较识别出的玻璃纤维根数与预设根数(28根),判断是否发生断纱
    • 通过分析缺失的类别标签,确定具体的断纱位置
  3. 断纱检测流程:

    • 实时采集玻璃纤维图像
    • 进行图像处理,提取轮廓
    • 计算轮廓质心坐标,输入SVM模型进行分类
    • 统计识别出的玻璃纤维根数和位置
    • 判断是否发生断纱,并确定断纱位置
    • 发送断纱信息到报警系统

核心代码

图像处理

璃纤维图像的完整处理流程,包括ROI提取、中值滤波、二值化、形态学操作、边缘检测、轮廓提取和质心计算。

  1. ROI提取:通过定义矩形区域,从原始图像中裁剪出包含所有玻璃纤维的感兴趣区域,减少数据处理量。

  2. 中值滤波:使用核大小为7的中值滤波器对图像进行去噪,有效去除椒盐噪声的同时保持边缘清晰。

  3. 全局阈值二值化:将灰度图像转换为二值图像,阈值设为90,使玻璃纤维轮廓与背景形成鲜明对比。

  4. 形态学操作:通过先开后闭的形态学操作,去除小噪声点并填充小空洞,使玻璃纤维轮廓更加连续完整。

  5. 边缘处理:将二值图像的第一行和最后一行设为黑色,避免边缘效应带来的干扰。

  6. Canny边缘检测:提取玻璃纤维的边缘轮廓,设置合适的阈值参数以获得清晰的边缘。

  7. 轮廓提取与过滤:使用RETR_EXTERNAL模式提取外部轮廓,并根据轮廓像素点个数(阈值170)过滤掉噪声轮廓。

  8. 质心计算:对每个有效轮廓,计算其质心坐标,作为SVM分类的特征向量。

  9. 结果可视化:在原始图像上绘制处理结果,包括轮廓和质心标记,便于直观观察。本部分代码实现了对玻璃纤维图像的预处理和特征提取,是断纱检测的基础。

// 图像处理核心函数
void processImage(Mat &srcImage, vector<Point2f> &centroids) {
    // 1. 提取ROI区域
    Rect roi(200, 494, 1600, 100); // ROI矩形区域:左上角坐标(200,494),宽1600,高100
    Mat roiImage = srcImage(roi).clone();
    
    // 2. 中值滤波去噪
    Mat medianImage;
    medianBlur(roiImage, medianImage, 7); // 核大小为7的中值滤波
    
    // 3. 图像二值化
    Mat binaryImage;
    threshold(medianImage, binaryImage, 90, 255, THRESH_BINARY); // 全局阈值二值化,阈值为90
    
    // 4. 形态学操作:先开后闭
    Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3)); // 3×3矩形结构元素
    Mat openImage, closeImage;
    morphologyEx(binaryImage, openImage, MORPH_OPEN, kernel); // 开操作
    morphologyEx(openImage, closeImage, MORPH_CLOSE, kernel); // 闭操作
    
    // 5. 将第一行和最后一行设为黑色,避免边缘干扰
    for (int i = 0; i < closeImage.cols; i++) {
        closeImage.at<uchar>(0, i) = 0;
        closeImage.at<uchar>(closeImage.rows - 1, i) = 0;
    }
    
    // 6. Canny边缘检测
    Mat edgeImage;
    Canny(closeImage, edgeImage, 150, 255, 5); // 低阈值150,高阈值255,核大小5
    
    // 7. 轮廓提取
    vector<vector<Point>> contours;
    vector<Vec4i> hierarchy;
    findContours(edgeImage, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
    
    // 8. 轮廓过滤与质心计算
    centroids.clear();
    for (size_t i = 0; i < contours.size(); i++) {
        // 根据轮廓像素点个数过滤噪声轮廓
        if (contours[i].size() > 170) { // 阈值设为170
            // 计算轮廓质心
            Moments mu = moments(contours[i]);
            Point2f centroid;
            centroid.x = mu.m10 / mu.m00;
            centroid.y = mu.m01 / mu.m00;
            centroids.push_back(centroid);
            
            // 在原图像上绘制轮廓和质心(可选)
            drawContours(roiImage, contours, i, Scalar(0, 255, 0), 2);
            circle(roiImage, centroid, 5, Scalar(0, 0, 255), -1);
        }
    }
    
    // 9. 将处理后的ROI图像放回原图像
    roiImage.copyTo(srcImage(roi));
}

这段代码是整个断纱检测系统的核心,通过一系列图像处理操作,将原始图像转换为可用于分类的特征向量,为后续的断纱检测和位置识别奠定基础。

SVM多分类

完整的SVM多分类器,用于玻璃纤维断开位置的识别。主要包括以下几个核心功能:

  1. SVM分类器初始化:根据玻璃纤维的总根数(默认28根),计算需要构建的二分类器数量(28×27/2=378个),并初始化相应的数据结构。

  2. 模型训练:

    • 采用"一对一"策略,为每对不同类别构建一个二分类器

    • 对于每对类别(i,j),收集这两类的训练样本(质心坐标)

    • 训练SVM模型并保存

  3. 类别预测:

    • 对每个输入的质心坐标,使用所有二分类器进行预测
    • 采用投票机制,统计每个类别的得票数
    • 得票最多的类别即为最终预测结果
  4. 断纱检测:

    • 比较预测出的玻璃纤维类别与预设的总根数(28根)
    • 找出未被预测到的类别,即为断纱位置
    • 返回所有断纱位置的列表本部分代码实现了基于SVM的玻璃纤维断开位置识别功能,是断纱定位的关键。
// SVM多分类器类
class GlassFiberSVMClassifier {
private:
    vector<Ptr<SVM>> svmClassifiers; // 存储所有二分类器
    int totalClasses; // 总类别数
    
public:
    GlassFiberSVMClassifier(int classes = 28) : totalClasses(classes) {
        // 初始化所有二分类器
        int classifierCount = totalClasses * (totalClasses - 1) / 2;
        svmClassifiers.resize(classifierCount);
    }
    
    // 训练SVM模型
    void train(const vector<vector<Point2f>>& trainingData, const vector<int>& labels) {
        int classifierIndex = 0;
        
        // 为每对类别训练一个二分类器
        for (int i = 0; i < totalClasses; i++) {
            for (int j = i + 1; j < totalClasses; j++) {
                // 准备当前两个类别的训练数据
                Mat trainData;
                Mat trainLabels;
                
                for (size_t k = 0; k < trainingData.size(); k++) {
                    if (labels[k] == i + 1 || labels[k] == j + 1) { // 类别从1开始
                        for (const auto& point : trainingData[k]) {
                            Mat sample = (Mat_<float>(1, 2) << point.x, point.y);
                            trainData.push_back(sample);
                            trainLabels.push_back(labels[k] == i + 1 ? 1 : -1);
                        }
                    }
                }
                
                // 创建并训练SVM分类器
                Ptr<SVM> svm = SVM::create();
                svm->setType(SVM::C_SVC);
                svm->setKernel(SVM::LINEAR);
                svm->setC(1.0);
                svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 600, 1e-6));
                svm->train(trainData, ROW_SAMPLE, trainLabels);
                
                svmClassifiers[classifierIndex++] = svm;
            }
        }
    }
    
    // 预测玻璃纤维类别
    vector<int> predict(const vector<Point2f>& centroids) {
        vector<int> result;
        
        for (const auto& centroid : centroids) {
            // 创建投票数组
            vector<int> votes(totalClasses, 0);
            
            int classifierIndex = 0;
            // 对每对类别进行预测并投票
            for (int i = 0; i < totalClasses; i++) {
                for (int j = i + 1; j < totalClasses; j++) {
                    Mat sample = (Mat_<float>(1, 2) << centroid.x, centroid.y);
                    float response = svmClassifiers[classifierIndex++]->predict(sample);
                    
                    // 根据预测结果投票
                    if (response > 0) {
                        votes[i]++;
                    } else {
                        votes[j]++;
                    }
                }
            }
            
            // 找出得票最多的类别
            int maxVote = -1;
            int predictedClass = -1;
            for (int k = 0; k < totalClasses; k++) {
                if (votes[k] > maxVote) {
                    maxVote = votes[k];
                    predictedClass = k + 1; // 类别从1开始
                }
            }
            
            result.push_back(predictedClass);
        }
        
        return result;
    }
    
    // 检测断纱位置
    vector<int> detectBrokenFibers(const vector<int>& predictedClasses, int totalFibers = 28) {
        vector<bool> exist(totalFibers, false);
        vector<int> brokenFibers;
        
        // 标记已检测到的玻璃纤维
        for (int cls : predictedClasses) {
            if (cls >= 1 && cls <= totalFibers) {
                exist[cls - 1] = true;
            }
        }
        
        // 找出未检测到的玻璃纤维(断纱)
        for (int i = 0; i < totalFibers; i++) {
            if (!exist[i]) {
                brokenFibers.push_back(i + 1); // 返回断纱位置(从1开始)
            }
        }
        
        return brokenFibers;
    }
};

这段代码体现了SVM多分类在实际应用中的具体实现。通过"一对一"策略,将复杂的多分类问题转化为多个简单的二分类问题,结合投票机制确定最终分类结果,实现了对玻璃纤维断开位置的准确识别。

重难点和创新点

难点

在基于机器视觉的玻璃纤维缠绕机断纱检测系统的开发过程中,我们遇到了多个技术难点,主要包括:

  1. 复杂工业环境下的图像处理:

    • 难点:工业现场存在各种干扰因素,如光线变化、机械振动、灰尘污染等,影响图像质量
    • 解决方案:通过选择合适的光源(HDL3系列条形光源配合漫射板)提供均匀照明,使用中值滤波有效去除噪声,结合形态学操作增强玻璃纤维轮廓,提高图像处理的鲁棒性
  2. 多根玻璃纤维的同时检测:

    • 难点:系统需要同时检测28根密集排列的玻璃纤维,纤维之间间距小,容易产生粘连和误判
    • 解决方案:通过精确设置ROI区域(1600×100像素),结合Canny边缘检测和轮廓提取算法,能够有效区分相邻的玻璃纤维;通过轮廓像素点个数阈值(170)过滤噪声,提高检测准确性
  3. 断纱位置的精确定位:

    • 难点:不仅需要检测是否发生断纱,还需要精确定位具体是哪根玻璃纤维断开
    • 解决方案:提出了基于SVM多分类的断纱位置识别方法,以玻璃纤维轮廓质心坐标为特征,通过"一对一"多分类策略和投票机制,实现了对28根玻璃纤维位置的准确识别。

创新点

  1. 检测方法的创新:

    • 提出了基于轮廓像素点个数的断纱检测方法,通过设置合理的阈值(170),能够有效识别运动状态下玻璃纤维的断开情况
    • 结合机器视觉技术和SVM多分类算法,实现了对多根玻璃纤维断纱的实时检测和精确定位,相比传统的机械式和传感器式检测方法,具有非接触、无损伤、精度高等优点
  2. 算法实现的创新:

    • 提出了基于轮廓质心的特征提取方法,使用零阶矩和一阶矩计算玻璃纤维轮廓质心坐标作为SVM分类特征,特征维度低(二维),计算简单,同时具有平移不变性
    • 采用SVM"一对一"多分类策略,构建378个二分类器,通过投票机制确定最终分类结果,实现了对28根玻璃纤维位置的准确识别

总结

本项目基于机器视觉技术,成功开发了一套玻璃纤维缠绕机断纱检测系统,实现了以下目标:

  1. 系统设计:根据玻璃纤维缠绕机的工作原理和断纱检测需求,设计了基于机器视觉的断纱检测方案,包括硬件选型(工业相机、镜头、光源)和软件架构设计。

  2. 图像处理:开发了完整的图像处理流程,包括ROI提取、中值滤波、二值化、形态学操作、边缘检测和轮廓提取,能够有效处理工业环境下的复杂图像。

  3. 算法实现:实现了基于SVM多分类的断纱位置识别算法,以玻璃纤维轮廓质心为特征,通过"一对一"多分类策略和投票机制,实现了对28根玻璃纤维位置的准确识别。

尽管本系统已经实现了基本功能并通过实验验证,但仍有一些方面可以进一步改进和完善:

  1. 算法优化:可以探索使用深度学习算法(如卷积神经网络)进一步提高断纱检测的准确率和鲁棒性,特别是在复杂干扰环境下

  2. 系统集成:可以将断纱检测系统与缠绕机控制系统进行深度集成,实现断纱自动停机和报警处理,提高自动化程度

  3. 界面优化:可以进一步完善上位机界面,增加更多的可视化功能和数据分析工具,提高系统的易用性和实用性

总之,基于机器视觉的玻璃纤维缠绕机断纱检测系统是一项具有重要实际应用价值的研究成果,为解决玻璃纤维缠绕过程中的断纱检测问题提供了一种有效的技术方案。随着机器视觉技术和人工智能算法的不断发展,该系统还有很大的改进和提升空间,有望在更多领域得到应用和推广。

参考文献

[1] Mortazavian S, Fatemi A. Effects of fiber orientation and anisotropy on tensile strength and elastic modulus of short fiber reinforced polymer composites[J]. Composites Part B, 2020, 193: 108051.

[2] Zhang C, Xu X, Fan C, et al. Literature Review of Machine Vision in Application Field[J]. E3S Web of Conferences, 2021, 236: 01012.

[3] Jiang T, Zhang G, Gao J. Illumination of a cylinder block transverse hole for machine vision inspection[J]. Chinese Optics, 2020, 13(6): 1232-1240.

[4] He Y, Zhang W, Li Y, et al. An approach for surface roughness measurement of helical gears based on image segmentation of region of interest[J]. Measurement, 2021, 183: 109734.

[5] Castro P S N, Borz S A. Improving the Event-Based Classification Accuracy in Pit-Drilling Operations: An Application by Neural Networks and Median Filtering of the Acceleration Input Signal Data[J]. Sensors, 2021, 21(18): 6195.

[6] Isono D, Zhang X, Cheng D, et al. Scale Adaptive Side Window Bilateral Filter[C]. International Workshop on Advanced Imaging Technology (IWAIT) 2021, 2021, 11766: 1176614.

[7] Shen G. Research on license plate recognition based on video image processing[C]. Proceedings of 2017 5th International Conference on Machinery, Materials and Computing Technology (ICMMCT 2017), 2017: 1127-1132.

[8] Said K A M, Jambek A B. Analysis of Image Processing Using Morphological Erosion and Dilation[J]. Journal of Physics: Conference Series, 2021, 2071(1): 012011.

【信息科学与工程学】【物理/化学科学和工程技术】知识体系87——声学基础02 应用声学 编号类型领域问题问题的数学分析参数列表及常量/常数及参数的数值范围关联知识1技术应用应用声学如何利用超声波反射测量距离?设发射脉冲与接收回波的时间差为 Δt,声速为 c,则目标距离 d = c·Δt / 2。c ≈ 340 m/s (空气中,20°C);Δt 通常为 0.1 ms ~ 100 ms;d 对应范围约 0.017 m ~ 17 m。声波传播、反射定律、压电换能器、时延估计2现象分析应用声学为什么在音乐厅中某些位置听到的声音更清晰?声压级叠加:总声压级 Lp = 10 log₁₀(Σ 10^(Lp 阅读详情

相关推荐

【信息科学与工程学】信息科学领域——第一百三十五篇 射频/天线08

编号类型领域子领域问题问题的数学分析及数值分析参数列表及数值范围/各类常量关联知识A873物理问题射频/太赫兹太赫兹脑胶质瘤边界术中识别​FEM-DEM-BEM-IEM分析太赫兹(140GHz)对"脑胶质瘤(WHO II-IV级)与正常白质"的介电差异,辅助术中边界判定(续A804癫痫+A805卒中)。 逐步推理: 1. FEM脑肿瘤:正常白质ε_r=35+8i@140G,胶质瘤IV级ε_r=45+15i(细胞密度↑+水肿),用FEM离散。 2. DEM性能:肿瘤区反射率R=0.5

weixin_49199313的博客 617

LabVIEW声学特性航空复合材料裂纹无损检测系统

摘要: 本文提出一种基于声学信号分析的航空复合材料裂纹检测技术,通过可控激励(超声/机械敲击)激发材料声学响应,结合LabVIEW平台实现多通道信号采集、自适应滤波(1000Hz-20kHz)及多维度特征提取(时域/频域/时频域)。系统采用SVM与BP神经网络融合算法,实现0.1mm级裂纹识别(定位误差≤±0.5mm),支持碳纤维、蜂窝夹层等材料的无损检测,单点检测时间≤3秒,较传统方法效率提升3-5倍。技术可应用于航空制造质检、维护检测及材料研发,未来将通过深度学习模型优化复杂缺陷识别能力。

bjcyck的博客 926

5个4000比特大状态置换算法的设计与分析

下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。

HuangJinLong2的博客 355

风电叶片损伤YOLO检测数据集(猫脸码客第229期)

长期运行中,叶片会不断受到风的作用,疲劳会导致材料的劣化和裂纹的产生,最终引起叶片的损坏。相控阵超声成像技术是一种新型超声波检测技术,配合机械装置以及软件的操作,能够同时实现 A 扫描、B 扫描和 S 扫描等二维视图,将检测对象数字化,多角度扫查,准确定位缺陷位置,并可精确测量缺陷的长度、深度及高度等信息。疲劳损伤是由于长期运行中叶片不断受到风的作用,导致材料的劣化和裂纹的产生。目视检测:目视检测是一种最直观的检测方法,检测人员通过肉眼观察风电叶片的表面,查看是否有明显的损伤或裂纹,如腐蚀、磨损、碎裂等。

猫脸码客的博客 2117

TensorRT(C++)部署 Pytorch模型

众所周知,python训练pytorch模型得到.pt模型。但在实际项目应用中,特别是嵌入式端部署时,受限于语言、硬件算力等因素,往往需要优化部署,而tensorRT是最常用的一种方式。本文以yolov5的部署为例,说明模型部署在x86架构上的电脑端的流程。(部署在Arm架构的嵌入式端的流程类似)。

女神sha手的博客 5405

光谱分布、光谱辐射通量密度与不同时间段分布光谱(图示)

1、光谱分布图 2 太阳辐射能量图 3、不同时间段的太阳分布光谱图 4、不同波长的光的能量分布主要区域 5、不同波段的使用场景

maopig的专栏 2万+

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 223

跨境电商ERP开发之Shopee开发者账号申请

引言:由于电子信息技术和经济全球化的进一步发展,电子商务在国际贸易中的影响力和关键作用日渐突显,已变成中国出口贸易的市场趋势。跨境电商未来的发展前景必定是有助于减少经济成本、推动全球贸易便利化,有助于提高国内群众福祉,有助于打造良好的营商环境,从而推动经济长期健康发展。 gitee仓库地址: https://gitee.com/naturalwish/SSERP/tree/master 以下授权教学同ShopeeOpen Platform - Developer Guide 申请流程 ..

naturalwish的专栏 3640

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 315

链接文件及功能安全:S32K3如何将FLASH驱动放到RAM里面、RAM如何实现软件复位数据不丢失操作。

在通过RTD的SDK也好MCAL也好,始终存在一个问题,生成的代码除了看门狗模块,默认都是放在flash里面,按照正常逻辑来看没啥大的问题,思考一个问题:Flash放在0x100的位置,但是此时我们要操作0x100怎么办?那肯定不允许啊,但是将flash的驱动放在RAM里面就可以避免这个问题的产生。Flash的特性:PF0能操作PF1,当然PF1也能操作PF0的,以此类推,只要不操作自身,想怎么玩都可以。这也是一个物理特性吧。

梦想技术家 2310

华为OD机试 - 报文响应时间 - 贪心算法、位运算(Python/JS/C/C++ 2024 E卷 200分)

贪心算法是在每一步选择中都做出当前最优的选择,期望通过局部最优解推导出全局最优解的算法。

学Java,找哪吒 1758

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 590

Windows Server 2019 服务器一天之中内存利用率越来越高直到死机,疑似内存泄漏

环境: 华为桌面云虚拟机 Windows Server 2019 版本1809 OS内部版本17763.107 问题描述: Windows Server 2019服务器 一天之中内存利用率越来越高直到死机,不断扩容内存从10G到16G一重启就正常然后慢慢又循环,连续几天都这样,疑似内存泄漏 内存泄漏是什么? 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 5394

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 21

YOLOv11涨点改进| SCI一区2026 |独家创新首发、特征融合改进篇|引入FAFM特征对齐融合模块,通过特征对齐和融合两个阶段,助力多模态融合小目标检测,小目标检测,SAR图像目标检测高效涨点

🔥本文提出了一种改进YOLOv11网络模型的方法,通过引入FAFM(特征对齐融合模块)来解决多模态目标检测中的特征空间错位问题。FAFM模块采用可变形卷积和内容引导注意力机制,有效实现了跨模态特征对齐与融合,充分利用了不同模态间的互补信息。该方法在保持模型轻量化的同时,显著提升了目标检测精度和鲁棒性,特别是在复杂背景和模态差异较大的场景下表现突出。文章详细介绍了FAFM模块的结构、原理、优势,并提供了完整的代码实现和模型配置方案,为多模态目标检测任务提供了实用的技术参考。

Ai缝合怪、助力小伙伴高效发论文 268

Python + OpenCV 计算视频中运动最慢小球的坐标验证码

本文提出一种基于Python和OpenCV的视频分析方法,用于检测多个运动小球中最慢运动目标的坐标。方法主要包括:1) 通过背景差分和形态学处理提取运动前景;2) 基于轮廓面积和圆形度筛选候选小球;3) 利用图像矩计算小球质心坐标;4) 通过近邻关联构建运动轨迹;5) 根据轨迹平均速度确定最慢目标。该方法能有效处理包含线条干扰和静态大圆干扰的背景,稳定输出最慢小球的中心坐标。实验结果表明,该方法能准确识别运动最慢的小球并定位其位置。

码王吴彦祖的博客 114

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 750

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 371

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

408 算法 04|主元素与三元组最小距离:两种“扫描时做决定“的思路

2013(41) 的主元素用摩尔投票一遍选出候选,但真正的考点是"选完必须验票";2020(41) 的三元组最小距离,三指针每次只挪最小的那个,靠的是 D=2×(max−min) 这个恒等式。两套完整 C 代码加真实输出,附官方评分档位表。

m0_56226131的博客 410

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 171

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 85

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 218

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 178

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 354

SSL证书选RSA还是ECDSA:公钥算法、CA签名与兼容性怎么核对

申请SSL证书时,RSA和ECDSA该怎么选?先分清站点公钥算法、CA签名算法和TLS实际兼容性,再用隔离OpenSSL实验读取两类材料,核对申请、续期和部署交接,避免只看Signature Algorithm就选错。

谁呀!的博客 400

考拉兹猜想 - 7

本文通过引入虚数单位重构Collatz猜想的迭代逻辑,指出偶数减半与奇数“乘3加1”的过程在虚数坐标下等价于归结操作。关键在于:乘3加1使奇数跃升至偶数,随后持续减半,而虚数单位代表“无限减1”,实现无限向有限的转化。无论初始值如何,减半始终主导,最终归结为4-2-1循环。该视角消解了正向思维中的速度竞争疑虑,证明归结是必然结果。

杨铸人的博客 43
上一篇: 信息安全专业毕业设计选题不会选?255 个最新选题大全 2025-2026
下一篇: 计算机专业选题课题推荐:热门方向+ 199个高过率选题
Mini_hailang_IT
博客等级 码龄9年 5936粉丝 640原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值