✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。
✅ 专业定制毕设、代码
✅如需沟通交流,查看文章底部二维码
(1)超声C扫描图像加权灰度化与预处理流程:
从钎焊工件的超声C扫描设备中获得原始彩色图像,首先采用加权平均值法进行灰度化,权重参照人眼视觉特性设为R×0.299+G×0.587+B×0.114。灰度化后进行Otsu二值化获得初步焊合/非焊合分割,但由于图像中环流道和翅板区域的灰度存在重叠,二值图伴有噪点。使用3×3中值滤波去除孤立噪点,保持边缘的同时平滑图像。接着采用Sobel算子进行边缘检测,提取内部翅板与环形流道的边界,为后续区域分割做准备。通过最大面积搜索法从边缘图中筛选出面积最大的连通域,从而确定缺陷或非焊合区域的具体位置。经过此预处理流程,缺陷区域轮廓清晰,后续计算焊合率时的分割精度明显提高。
(2)焊合率自动计算与环形流道贯通性判定:
将预处理后的图像根据几何位置分割为内部翅板区域和外围环形流道两个部分分别处理。对内部翅板,采用加权平均算法自动核算焊合率:计算该区域内二值图中白色(焊合)像素数量占区域内总像素数的比例,即为翅板焊合率。对外围环形流道,应用形态学闭运算连接断裂边缘,再结合连通域算法判断其贯通性。若环形流道上存在一处将环截断的非焊合带,则判定为贯通性不合格。算法在50组实际工件图像上测试,翅板焊合率计算值与金相检验实测值的偏差在±3%以内,环形流道贯通性判定准确率为98%,相比传统阈值分割提升了10个百分点。
(3)缺陷识别自动化与系统集成验证:
将上述图像处理算法集成为自动检测模块,并研发了双工位超声检测系统。该模块接收超声C扫描图像后自动输出焊合率、贯通性判定结果和缺陷位置标记图。对同一批3003铝合金换热器工件同时使用本系统和HUAWEI算法(工业常用的基于深度学习的缺陷检测)进行对比检测,缺陷识别结果一致性达95.7%。系统的整体检测节拍为每工件45秒,远快于人工评判的约5分钟/件,且排除了主观误判。该系统显著提升了铝合金换热器批量生产中的质量评定效率和可靠性。
import numpy as np import cv2 def weighted_gray(img): ""加权平均值法灰度化"" gray = 0.299*img[:,:,2] + 0.587*img[:,:,1] + 0.114*img[:,:,0] return gray.astype(np.uint8) def preprocess_cscan(gray_img): # Otsu二值化 _, binary = cv2.threshold(gray_img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU) # 3x3中值滤波 filtered = cv2.medianBlur(binary, 3) # Sobel边缘检测 sobel_x = cv2.Sobel(filtered, cv2.CV_64F, 1, 0, ksize=3) sobel_y = cv2.Sobel(filtered, cv2.CV_64F, 0, 1, ksize=3) edges = np.sqrt(sobel_x**2 + sobel_y**2) edges = np.uint8(edges / edges.max() * 255) # 最大面积搜索 contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if contours: largest = max(contours, key=cv2.contourArea) mask = np.zeros_like(edges) cv2.drawContours(mask, [largest], -1, 255, -1) edges = mask return binary, filtered, edges def compute_bonding_rate(binary_region): ""计算区域焊合率"" total_pixels = binary_region.size bonded_pixels = np.count_nonzero(binary_region) return bonded_pixels / total_pixels def check_annular_flow_continuity(annular_binary): # 闭运算连接 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5)) closed = cv2.morphologyEx(annular_binary, cv2.MORPH_CLOSE, kernel) # 连通域检测 num_labels, labels, stats, _ = cv2.connectedComponentsWithStats(closed, connectivity=8) # 若连通域个数为1并且是完整的环,则贯通(简化:环状应只有1个连通域) is_continuous = (num_labels == 2) # 背景+1个连通域 return is_continuous # 系统集成接口示例 def inspect_joint(cscan_image): gray = weighted_gray(cscan_image) binary, filtered, edges = preprocess_cscan(gray) # 分割内部翅板和外环流道区域(需根据模体几何标定) fin_region = binary[100:400, 100:400] # 示例坐标 annular_region = binary[400:, :] # 示例 bond_rate = compute_bonding_rate(fin_region) continuity = check_annular_flow_continuity(annular_region) return bond_rate, continuity, edges如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇