IG—金字塔

import matplotlib matplotlib.use('TkAgg') # 使用交互式后端显示图像 import numpy as np import cv2 import matplotlib.pyplot as plt from scipy.ndimage import median_filter from scipy.signal import convolve2d import matplotlib.font_manager as fm # 设置中文字体(确保系统中有这些字体) try: font_path = 'C:/Windows/Fonts/msyh.ttc' # 微软雅黑路径 font_prop = fm.FontProperties(fname=font_path) plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei'] plt.rcParams['axes.unicode_minus'] = False except: print("警告: 中文显示设置失败,将使用默认字体") def B_filter(Img, tempsize, sigma0, sigma1): """双边滤波函数""" ksize = 2 * tempsize + 1 ax = np.arange(-tempsize, tempsize + 1, dtype=np.float32) xx, yy = np.meshgrid(ax, ax) gauss = np.exp(-(xx ** 2 + yy ** 2) / (2 * sigma0 ** 2)) gauss /= gauss.sum() m, n = Img.shape out = Img.copy() for i in range(tempsize, m - tempsize): for j in range(tempsize, n - tempsize): region = Img[i - tempsize:i + tempsize + 1, j - tempsize:j + tempsize + 1] temp = np.abs(region - Img[i, j]) temp = np.exp(-(temp ** 2) / (2 * sigma1 ** 2)) filter_kernel = gauss * temp filter_kernel /= filter_kernel.sum() out[i, j] = np.sum(region * filter_kernel) return out def FirstFilter(In): """初步过滤函数""" Out = In.copy() IR, IG, IB = In[:, :, 0], In[:, :, 1], In[:, :, 2] mask1 = (IR < 160 / 255) & (IG < 160 / 255) & (IB < 160 / 255) & (IR > IG) & (IG > IB) mask2 = (IR + IG) > 500 / 255 mask3 = (IR < 70 / 255) & (IG < 40 / 255) & (IB < 20 / 255) Out[mask1 | mask2 | mask3] = 0 plt.figure(figsize=(10, 6)) plt.imshow(Out) try: plt.title('非肤色初步过滤', fontproperties=font_prop) except: plt.title('Non-Skin Preliminary Filtering') plt.axis('off') plt.show() return Out def SecondFilter(In): """肤色检测函数""" IR, IG, IB = In[:, :, 0], In[:, :, 1], In[:, :, 2] height, width = IR.shape Out = np.zeros((height, width)) R = IR.flatten() G = IG.flatten() B = IB.flatten() Cg = -81.085 * R + 112 * G - 30.915 * B + 128 Cr = 112 * R - 93.786 * G - 18.214 * B + 128 mask = (Cg >= 85) & (Cg <= 135) & (Cr >= -Cg + 260) & (Cr <= -Cg + 280) Out.flat[mask] = 1 Out = median_filter(Out, size=3) plt.figure(figsize=(10, 6)) plt.imshow(Out, cmap='gray') try: plt.title('YCgCr空间范围肤色检测', fontproperties=font_prop) except: plt.title('Skin Detection in YCgCr Space') plt.axis('off') plt.show() return Out def Fuse(ImageOrigin, DBImage, SkinArea): """图像融合函数""" Skin = np.stack([SkinArea] * 3, axis=-1) Out = DBImage * Skin + ImageOrigin * (1 - Skin) plt.figure(figsize=(10, 6)) plt.imshow(Out) try: plt.title('肤色与背景图像融合', fontproperties=font_prop) except: plt.title('Skin and Background Fusion') plt.axis('off') plt.show() return Out def Sharp(In): """图像锐化函数""" In = np.clip(In, 0, 1) H = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]], dtype=np.float32) sharpened = np.zeros_like(In) for i in range(3): sharpened[:, :, i] = convolve2d(In[:, :, i], H, mode='same', boundary='symm') Out = np.clip(sharpened / 3 + In, 0, 1) plt.figure(figsize=(10, 6)) plt.imshow(Out) try: plt.title('Laplacia锐化图像(最终效果)', fontproperties=font_prop) except: plt.title('Sharpened Image (Final Effect)') plt.axis('off') plt.show() return Out if __name__ == "__main__": # 读取图像 img_path = 'C:/Users/86155/Desktop/keshe1.webp' img0 = cv2.imread(img_path) if img0 is None: print(f"错误:无法加载图像!请检查文件路径: {img_path}") exit() img0 = cv2.cvtColor(img0, cv2.COLOR_BGR2RGB) # 显示原始图像 plt.figure(figsize=(10, 6)) plt.imshow(img0) try: plt.title('原图', fontproperties=font_prop) except: plt.title('Original Image') plt.axis('off') plt.show() # 参数设置 tempsize = 5 sigma1 = 5 sigma2 = 0.08 # 图像处理流程 img = cv2.copyMakeBorder(img0, tempsize, tempsize, tempsize, tempsize, cv2.BORDER_CONSTANT, value=0) img = img.astype(np.float32) / 255.0 # 双边滤波处理 channels = [] for i in range(3): channel = img[:, :, i].copy() filtered = B_filter(channel, tempsize, sigma1, sigma2) channels.append(filtered) img1 = np.stack(channels, axis=-1) img1 = img1[tempsize:-tempsize, tempsize:-tempsize, :] # 显示滤波后图像 plt.figure(figsize=(10, 6)) plt.imshow(img1) try: plt.title('高斯滤波处理原图', fontproperties=font_prop) except: plt.title('Gaussian Filtered Image') plt.axis('off') plt.show() # 后续处理流程 img2 = img0.astype(np.float32) / 255.0 img3 = FirstFilter(img2) imgArea = SecondFilter(img3) imgFuse = Fuse(img2, img1, imgArea) imgBeautify = Sharp(imgFuse) # 最终美化处理 imgBeautify_uint8 = (np.clip(imgBeautify, 0, 1) * 255).astype(np.uint8) imgtmp = cv2.cvtColor(imgBeautify_uint8, cv2.COLOR_RGB2GRAY) imgtmp = imgtmp.astype(np.float32) / 255.0 imgMB = np.zeros_like(imgBeautify) for i in range(3): imgMB[:, :, i] = np.clip(imgBeautify[:, :, i] * 0.9 + imgtmp * 0.2, 0, 1) # 显示最终结果 plt.figure(figsize=(10, 6)) plt.imshow(imgMB) try: plt.title('最终美化效果', fontproperties=font_prop) except: plt.title('Final Beautification Result') plt.axis('off') plt.show() print("图像处理流程完成!")
06-13
一、 内容概要 本资源提供了一个完整的“金属板材压弯成型”非线性仿真案例,基于ABAQUS/Explicit或Standard求解器完成。案例精确模拟了模具(凸模、凹模)与金属板材之间的接触、压合过程,直至板材发生塑性弯曲成型。 模型特点:包含完整的模具-工件装配体,定义了刚体约束、通用接触(或面面接触)及摩擦系数。 材料定义:金属板材采用弹塑性材料模型,定义了完整的屈服强度、塑性应变等真实应力-应变数据。 关键结果:提供了成型过程中的板材应力(Mises应力)、塑性应变(PE)、厚度变化​ 云图,以及模具受力(接触力)曲线,完整再现了压弯工艺的力学状态。 二、 适用人群 CAE工程师/工艺工程师:从事钣金冲压、模具设计、金属成型工艺分析与优化的专业人员。 高校师生:学习ABAQUS非线性分析、金属塑性成形理论,或从事相关课题研究的硕士/博士生。 结构设计工程师:需要评估钣金件可制造性(DFM)或预测成型回弹的设计人员。 三、 使用场景及目标 学习目标: 掌握在ABAQUS中设置金属塑性成形仿真的全流程,包括材料定义、复杂接触设置、边界条件与载荷步。 学习如何调试和分析大变形、非线性接触问题的收敛性技巧。 理解如何通过仿真预测成型缺陷(如减薄、破裂、回弹),并与理论或实验进行对比验证。 应用价值:本案例的建模方法与分析思路可直接应用于汽车覆盖件、电器外壳、结构件等钣金产品的冲压工艺开发与模具设计优化,减少试模成本。 四、 其他说明 资源包内包含参数化的INP文件、CAE模型文件、材料数据参考及一份简要的操作要点说明文档。INP文件便于用户直接修改关键参数(如压边力、摩擦系数、行程)进行自主研究。 建议使用ABAQUS 2022或更高版本打开。显式动力学分析(如用Explicit)对计算资源有一定要求。 本案例为教学与工程参考目的提供,用户可基于此框架进行拓展,应用于V型弯曲
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值