opencv-python图像增强十五:高级滤镜实现

文章目录

  • 前言
  • 二、鲜食滤镜
  • 三、巧克力滤镜
  • 三,冷艳滤镜:


前言

在之前两个滤镜文章中介绍了六种简单的滤镜实现,它们大多都是由一个单独函数实现的接下来介绍五种结合了之前图像增强文章提的的算法的复合滤镜。本案例中的算法来自于文章一,文章二,文章三,感兴趣的小伙伴可以看看。

二、鲜食滤镜

鲜食滤镜是一种图像处理技术,旨在提升食物照片的吸引力,通过增强色彩饱和度和对比度,提高亮度并减少阴影,以及锐化处理来使食物色彩鲜艳、质感清晰;同时,它还会调整色调以增加暖意,去除背景杂色,优化食物细节,并通过调整高光和阴影来模仿新鲜食物的自然光泽,从而使食物看起来更加诱人和新鲜。
算法实现:
图像锐化增强食物对比度,图像阴影区域减弱提升暗部细节,饱和度提升提亮食物颜色
算法实现:

import cv2
import numpy as npdef shadow(input_image, light):# 将输入图像转换为浮点类型并归一化,便于后续处理f = input_image.astype(np.float32) / 255.0# 使用OpenCV将归一化的图像转换为灰度图gray = cv2.cvtColor(f, cv2.COLOR_BGR2GRAY)# 计算灰度图的平方,用以确定阴影区域thresh = (1.0 - gray) ** 2# 计算阴影区域的平均值,用作后续的阈值t = np.mean(thresh)# 创建一个掩码,标记阴影区域(高于平均值的区域)mask = np.where(thresh >= t, 255, 0).astype(np.uint8)# 设置校正参数max_val = 4  # 最大校正范围bright = light / 100.0 / max_val  # 计算校正强度mid = 1.0 + max_val * bright  # 计算中间值# 创建两个过渡矩阵,用于调整图像的亮度和对比度midrate = np.where(mask == 255, mid, ((mid - 1.0) / t * thresh) + 1.0)brightrate = np.where(mask == 255, bright, (1.0 / t * thresh) * bright)# 使用指数函数调整图像亮度,并通过掩码实现平滑过渡result = np.clip(pow(f, 1.0 / midrate[:, :, np.newaxis]), 0.0, 1.0)# 根据计算出的亮度率调整图像,限制值在0到1之间result = np.clip(result * (1.0 / (1 - brightrate[:, :, np.newaxis])), 0.0, 1.0) * 255# 将结果转换为8位无符号整型,以便显示和保存result = result.astype(np.uint8)return resultdef Saturation(rgb_img, increment):# 将输入图像转换为浮点数,并归一化到0-1范围img = rgb_img.astype(np.float64) / 255.0# 计算每个像素的最小值,即HSL颜色空间中的亮度最低的部分img_min = img.min(axis=2)# 计算每个像素的最大值,即HSL颜色空间中的亮度最高的部分img_max = img.max(axis=2)# 计算饱和度(delta)和亮度(value)的中间值delta = (img_max - img_min)value = (img_max + img_min)# 计算HSL颜色空间中的亮度LL = value / 2.0# 根据亮度L计算饱和度s的两个可能值s1 = delta / (value + 1e-8)  # 防止除以0的情况,添加一个很小的数s2 = delta / (2 - value + 1e-8)# 根据亮度L选择饱和度s的正确值s = np.where(L < 0.5, s1, s2)# 计算增量调整后的饱和度,如果饱和度加上增量大于1,则保持原饱和度,否则用1减去增量temp = increment + salpha = np.where(temp > 1, s, 1 - increment)# 计算调整后的alpha值alpha = 1 / alpha - 1# 对RGB图像的每个通道进行调整,以改变饱和度for i in range(3):img[:, :, i] += (img[:, :, i] - L) * alpha# 确保调整后的RGB值在0到1之间,如果超出这个范围,则将其限制在这个范围内img = np.clip(img, 0, 1)# 返回调整后的图像return imgdef laplacian_sharpening(image, kernel_size=3, scale=0.03, delta=0):"""Apply Laplacian sharpening to an image.Parameters:image: The input image in BGR format.kernel_size: The size of the Laplacian kernel (must be 1, 3, 5, or 7).scale: The optional scale factor for the computed Laplacian values.delta: The optional delta value added to the results prior to storing them.Returns:The sharpened image."""# Check if kernel size is validif kernel_size not in [1, 3, 5, 7]:raise ValueError("Kernel size must be 1, 3, 5, or 7.")# Convert the image to grayscalegray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# Compute the Laplacian of the imagelaplacian = cv2.Laplacian(gray_image, cv2.CV_64F, ksize=kernel_size, scale=scale, delta=delta)# Convert Laplacian image to 8-bitlaplacian_8u = cv2.convertScaleAbs(laplacian)# Convert the 8-bit Laplacian image to BGRlaplacian_8u_bgr = cv2.cvtColor(laplacian_8u, cv2.COLOR_GRAY2BGR)# Add the Laplacian image to the original imagesharpened_image = cv2.addWeighted(image, 1, laplacian_8u_bgr, 1.5, 0)return sharpened_imageimg = cv2.imread(r"D:\AI_tool\GFPGAN-master\1.jpg")
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)
lap=laplacian_sharpening(img)
shd=shadow(lap,-10)
sat=Saturation(shd,0.3)
cv2.imshow("img",img)
cv2.imshow("sat",sat)cv2.waitKey(0)

原图:
在这里插入图片描述
效果:
在这里插入图片描述

三、巧克力滤镜

巧克力滤镜是一种图像处理效果,它通过增加棕色调、降低亮度并轻微增加对比度,使照片呈现出类似巧克力的温暖和浓郁感,常用于增强食物、饮品以及某些场景的视觉效果,使其显得更加诱人和舒适。
算法实现:
首先增强巧克力对比度与亮度,在对增强后的图像进行锐化以及阴影处理,最后提升巧克力颜色的饱和度让其更有食欲:

import cv2
import numpy as npdef shadow(input_image, light):# 将输入图像转换为浮点类型并归一化,便于后续处理f = input_image.astype(np.float32) / 255.0# 使用OpenCV将归一化的图像转换为灰度图gray = cv2.cvtColor(f, cv2.COLOR_BGR2GRAY)# 计算灰度图的平方,用以确定阴影区域thresh = (1.0 - gray) ** 2# 计算阴影区域的平均值,用作后续的阈值t = np.mean(thresh)# 创建一个掩码,标记阴影区域(高于平均值的区域)mask = np.where(thresh >= t, 255, 0).astype(np.uint8)# 设置校正参数max_val = 4  # 最大校正范围bright = light / 100.0 / max_val  # 计算校正强度mid = 1.0 + max_val * bright  # 计算中间值# 创建两个过渡矩阵,用于调整图像的亮度和对比度midrate = np.where(mask == 255, mid, ((mid - 1.0) / t * thresh) + 1.0)brightrate = np.where(mask == 255, bright, (1.0 / t * thresh) * bright)# 使用指数函数调整图像亮度,并通过掩码实现平滑过渡result = np.clip(pow(f, 1.0 / midrate[:, :, np.newaxis]), 0.0, 1.0)# 根据计算出的亮度率调整图像,限制值在0到1之间result = np.clip(result * (1.0 / (1 - brightrate[:, :, np.newaxis])), 0.0, 1.0) * 255# 将结果转换为8位无符号整型,以便显示和保存result = result.astype(np.uint8)return resultdef Saturation(rgb_img, increment):# 将输入图像转换为浮点数,并归一化到0-1范围img = rgb_img.astype(np.float64) / 255.0# 计算每个像素的最小值,即HSL颜色空间中的亮度最低的部分img_min = img.min(axis=2)# 计算每个像素的最大值,即HSL颜色空间中的亮度最高的部分img_max = img.max(axis=2)# 计算饱和度(delta)和亮度(value)的中间值delta = (img_max - img_min)value = (img_max + img_min)# 计算HSL颜色空间中的亮度LL = value / 2.0# 根据亮度L计算饱和度s的两个可能值s1 = delta / (value + 1e-8)  # 防止除以0的情况,添加一个很小的数s2 = delta / (2 - value + 1e-8)# 根据亮度L选择饱和度s的正确值s = np.where(L < 0.5, s1, s2)# 计算增量调整后的饱和度,如果饱和度加上增量大于1,则保持原饱和度,否则用1减去增量temp = increment + salpha = np.where(temp > 1, s, 1 - increment)# 计算调整后的alpha值alpha = 1 / alpha - 1# 对RGB图像的每个通道进行调整,以改变饱和度for i in range(3):img[:, :, i] += (img[:, :, i] - L) * alpha# 确保调整后的RGB值在0到1之间,如果超出这个范围,则将其限制在这个范围内img = np.clip(img, 0, 1)# 返回调整后的图像return imgdef laplacian_sharpening(image, kernel_size=3, scale=0.01, delta=0):"""Apply Laplacian sharpening to an image.Parameters:image: The input image in BGR format.kernel_size: The size of the Laplacian kernel (must be 1, 3, 5, or 7).scale: The optional scale factor for the computed Laplacian values.delta: The optional delta value added to the results prior to storing them.Returns:The sharpened image."""# Check if kernel size is validif kernel_size not in [1, 3, 5, 7]:raise ValueError("Kernel size must be 1, 3, 5, or 7.")# Convert the image to grayscalegray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# Compute the Laplacian of the imagelaplacian = cv2.Laplacian(gray_image, cv2.CV_64F, ksize=kernel_size, scale=scale, delta=delta)# Convert Laplacian image to 8-bitlaplacian_8u = cv2.convertScaleAbs(laplacian)# Convert the 8-bit Laplacian image to BGRlaplacian_8u_bgr = cv2.cvtColor(laplacian_8u, cv2.COLOR_GRAY2BGR)# Add the Laplacian image to the original imagesharpened_image = cv2.addWeighted(image, 1, laplacian_8u_bgr, 1.5, 0)return sharpened_image
img = cv2.imread(r"D:\AI_tool\GFPGAN-master\2.jpg")
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)
abs = cv2.convertScaleAbs(img, alpha=1.3, beta=10)
lap=laplacian_sharpening(abs)
shd=shadow(lap,-20)
sat=Saturation(shd,0.3)
cv2.imshow("img",img)
cv2.imshow("sat",sat)cv2.waitKey(0)

效果:
在这里插入图片描述
在这里插入图片描述

三,冷艳滤镜:

人物冷艳滤镜是一种图像处理效果,它通过降低色调的温度,增加蓝色的分量,同时减少红色和绿色,使得人物肤色和整体画面呈现出一种冷静、高傲的美感。这种滤镜通常用于肖像摄影,能够营造出一种距离感、神秘感和高级感,让人物显得更加清冷、优雅,适合表现人物的独特气质和深邃眼神。
算法实现:
先调节色温让颜色偏冷,在对人物进行锐化与对比度增强提升人像细节,降低图像阴影并修正人物颜色

import cv2
import numpy as npdef create_lut(level):# 创建一个查找表(LUT),范围从0到255lut = np.arange(256, dtype=np.uint8)# 更复杂的颜色映射,这里使用简单的线性映射作为示例# 实际上,可以在这里使用更复杂的非线性映射for i in range(256):if i + level > 255:lut[i] = 255elif i + level < 0:lut[i] = 0else:lut[i] = i + levelreturn lutdef apply_lut(image, lut):# 使用OpenCV的LUT函数应用查找表return cv2.LUT(image, lut)def color_temperature(input, n):result = input.copy()level = n // 2# 创建查找表并应用它到RGB通道lut_r = create_lut(level)lut_g = create_lut(level)lut_b = create_lut(-level)result[:, :, 2] = apply_lut(result[:, :, 2], lut_r)  # R通道result[:, :, 1] = apply_lut(result[:, :, 1], lut_g)  # G通道result[:, :, 0] = apply_lut(result[:, :, 0], lut_b)  # B通道return resultdef shadow(input_image, light):# 将输入图像转换为浮点类型并归一化,便于后续处理f = input_image.astype(np.float32) / 255.0# 使用OpenCV将归一化的图像转换为灰度图gray = cv2.cvtColor(f, cv2.COLOR_BGR2GRAY)# 计算灰度图的平方,用以确定阴影区域thresh = (1.0 - gray) ** 2# 计算阴影区域的平均值,用作后续的阈值t = np.mean(thresh)# 创建一个掩码,标记阴影区域(高于平均值的区域)mask = np.where(thresh >= t, 255, 0).astype(np.uint8)# 设置校正参数max_val = 4  # 最大校正范围bright = light / 100.0 / max_val  # 计算校正强度mid = 1.0 + max_val * bright  # 计算中间值# 创建两个过渡矩阵,用于调整图像的亮度和对比度midrate = np.where(mask == 255, mid, ((mid - 1.0) / t * thresh) + 1.0)brightrate = np.where(mask == 255, bright, (1.0 / t * thresh) * bright)# 使用指数函数调整图像亮度,并通过掩码实现平滑过渡result = np.clip(pow(f, 1.0 / midrate[:, :, np.newaxis]), 0.0, 1.0)# 根据计算出的亮度率调整图像,限制值在0到1之间result = np.clip(result * (1.0 / (1 - brightrate[:, :, np.newaxis])), 0.0, 1.0) * 255# 将结果转换为8位无符号整型,以便显示和保存result = result.astype(np.uint8)return resultdef Saturation(rgb_img, increment):# 将输入图像转换为浮点数,并归一化到0-1范围img = rgb_img.astype(np.float64) / 255.0# 计算每个像素的最小值,即HSL颜色空间中的亮度最低的部分img_min = img.min(axis=2)# 计算每个像素的最大值,即HSL颜色空间中的亮度最高的部分img_max = img.max(axis=2)# 计算饱和度(delta)和亮度(value)的中间值delta = (img_max - img_min)value = (img_max + img_min)# 计算HSL颜色空间中的亮度LL = value / 2.0# 根据亮度L计算饱和度s的两个可能值s1 = delta / (value + 1e-8)  # 防止除以0的情况,添加一个很小的数s2 = delta / (2 - value + 1e-8)# 根据亮度L选择饱和度s的正确值s = np.where(L < 0.5, s1, s2)# 计算增量调整后的饱和度,如果饱和度加上增量大于1,则保持原饱和度,否则用1减去增量temp = increment + salpha = np.where(temp > 1, s, 1 - increment)# 计算调整后的alpha值alpha = 1 / alpha - 1# 对RGB图像的每个通道进行调整,以改变饱和度for i in range(3):img[:, :, i] += (img[:, :, i] - L) * alpha# 确保调整后的RGB值在0到1之间,如果超出这个范围,则将其限制在这个范围内img = np.clip(img, 0, 1)# 返回调整后的图像return imgdef laplacian_sharpening(image, kernel_size=3, scale=0.05, delta=0):"""Apply Laplacian sharpening to an image.Parameters:image: The input image in BGR format.kernel_size: The size of the Laplacian kernel (must be 1, 3, 5, or 7).scale: The optional scale factor for the computed Laplacian values.delta: The optional delta value added to the results prior to storing them.Returns:The sharpened image."""# Check if kernel size is validif kernel_size not in [1, 3, 5, 7]:raise ValueError("Kernel size must be 1, 3, 5, or 7.")# Convert the image to grayscalegray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# Compute the Laplacian of the imagelaplacian = cv2.Laplacian(gray_image, cv2.CV_64F, ksize=kernel_size, scale=scale, delta=delta)# Convert Laplacian image to 8-bitlaplacian_8u = cv2.convertScaleAbs(laplacian)# Convert the 8-bit Laplacian image to BGRlaplacian_8u_bgr = cv2.cvtColor(laplacian_8u, cv2.COLOR_GRAY2BGR)# Add the Laplacian image to the original imagesharpened_image = cv2.addWeighted(image, 1, laplacian_8u_bgr, 1.5, 0)return sharpened_imageimg = cv2.imread(r"D:\AI_tool\GFPGAN-master\273813a415dbe086179ec092b693e8bb.jpg")
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)
col=color_temperature(img,-20)
abs = cv2.convertScaleAbs(col, alpha=1.1, beta=-10)lap=laplacian_sharpening(abs)
shd=shadow(lap,-20)
sat=Saturation(shd,0.1)cv2.imshow("img",img)
cv2.imshow("sat",shd)
cv2.waitKey(0)

效果:

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/408695.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt-PLC可视化编辑器

qt-PLC可视化编辑器 一、演示效果二、核心代码三、下载链接 一、演示效果 二、核心代码 #include "diagramitem.h" #include "arrow.h"#include <QDebug> #include <QGraphicsScene> #include <QGraphicsSceneContextMenuEvent> #includ…

[000-01-018].第3节:Linux环境下ElasticSearch环境搭建

我的后端学习笔记大纲 我的ElasticSearch学习大纲 1.Linux系统搭建ES环境&#xff1a; 1.1.单机版&#xff1a; a.安装ES-7.8版本 1.下载ES: 2.上传与解压&#xff1a;将下载的tar包上传到服务器software目录下&#xff0c;然后解压缩&#xff1a;tar -zxvf elasticsearch-7…

人工智能算法工程师(中级)课程21-深度学习中各种优化器算法的应用与实践、代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程21-深度学习中各种优化器算法的应用与实践、代码详解。本文将介绍PyTorch框架下的几种优化器&#xff0c;展示如何使用PyTorch中的优化器&#xff0c;我们将使用MNIST数据集和一个简单…

增材制造(3D打印):为何备受制造业瞩目?

在科技浪潮的推动下&#xff0c;增材制造——即3D打印技术&#xff0c;正逐步成为制造业领域的璀璨新星&#xff0c;吸引了航空航天、汽车、家电、电子等众多行业的目光。那么&#xff0c;是什么让3D打印技术如此引人注目并广泛应用于制造领域&#xff1f;其背后的核心优势又是…

Unity-可分组折叠的Editor

Unity-可分组折叠的Editor &#x1f957;功能介绍&#x1f36d;用法 &#x1f957;功能介绍 在序列化的字段上标记特性:[FoldoutGroup(“xxx”)]&#xff0c;inspector上就会被分组折叠显示。 &#xff08;没有被指定的字段自动放到Default组中&#xff09; 传送门&#x1f30…

【Python】1.基础语法(1)

文章目录 1.变量的语法1.1定义变量1.1.1硬性规则(务必遵守)1.1.2软性规则&#xff08;建议遵守&#xff09; 1.2使用变量 2.变量的类型2.1整型2.2浮点型2.3 字符串类型2.4布尔类型2.5其他类型2.6 动态类型特性 3.注释3.1 注释行3.2 文档字符串 3.3 如何批量注释3.4注释的规范 4…

深信服上半年亏损5.92亿,营收同比降低2.3亿

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

如何使用ssm实现网络安全宣传网站设计

TOC ssm177网络安全宣传网站设计jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管…

【SQL】指定日期的产品价格

目录 题目 分析 代码 题目 产品数据表: Products ------------------------ | Column Name | Type | ------------------------ | product_id | int | | new_price | int | | change_date | date | ------------------------ (product_id, chang…

九、前端中的异步方法Promise,Promise详解

文章目录 1.Promise简介什么是promise为什么使用Promisepromise中的状态 2.Promis的用法 1.Promise简介 什么是promise Promise是异步编程的一种解决方案&#xff0c;它的构造函数是同步执行的&#xff0c;then 方法是异步执行的。 为什么使用Promise 在JavaScript的世界中…

Java 入门指南:List 接口

Collection 接口提供了一系列用于操作和管理集合的方法&#xff0c;包括添加、删除、查询、遍历等。它是所有集合类的根接口&#xff0c;包括 List、Set、Queue 等。 Collection 接口常见方法 add(E element)&#xff1a;向集合中添加元素。 addAll(Collection col)&#xff1…

洛谷 P2569 [SCOI2010] 股票交易

题目来源于&#xff1a;洛谷 题目本质&#xff1a;动态规划&#xff0c;单调队列 解题思路&#xff1a; 方程f[i][j]表示第 i 天结束后&#xff0c;手里剩下 j 股的最大利润&#xff0c;则不买不卖&#xff1a;f[i][j]f[i-1][j]。 买入&#xff1a;f[i][j]max{f[i-w-1][k]k*…

vue3+ts+Go使用百度地图路书实现历史轨迹回放、轨迹回放进度、聚合点、自定义弹框和实时监控视频、多路视频轮巡播放

前言 分享一个刚做完项目集成技术&#xff0c;一个车辆行驶轨迹监控、行车视频监控、对特种车辆安全监管平台&#xff0c;今年政府单位有很多监管平台项目&#xff0c;例如&#xff1a;渣土车监控、租出车监管、危害气体运输车监管等平台&#xff0c;这些平台都有车辆行驶轨迹…

uniapp实现区域滚动、下拉刷新、上滑滚动加载更多

背景&#xff1a; 在uniapp框架中&#xff0c;有两种实现办法。第1种&#xff0c;是首先在page.json中配置页面&#xff0c;然后使用页面的生命周期函数&#xff1b;第2种&#xff0c;使用<scroll-view>组件&#xff0c;然后配置组件的相关参数&#xff0c;包括但不限于&…

Spring(一篇就懂)

Spring框架简介 Spring 是一个开源的Java企业级应用开发框架。 特点&#xff1a; 控制反转&#xff08;IoC&#xff09;&#xff1a;通过依赖注入&#xff08;DI&#xff09;减少组件间的耦合&#xff0c;由Spring容器负责对象的创建和绑定。 面向切面编程&#xff08;AOP&am…

企业高性能web服务器(nginx)

目录 Web服务器基础介绍 正常情况下的单次web服务器访问流程 Apache 经典的 Web服务端 Apache prefork 模型 Apache work模型 Apache event模型 服务端的I/O流程 服务器的I/O 磁盘I/O 网络I/O 网络I/O处理过程 I/O模型 I/O模型相关概念 同步/异步 阻塞/非阻塞 网…

面向对象06:super关键字详解

本节内容视频链接&#xff1a;面向对象10&#xff1a;Super详解_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p69&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 Java中的‌super关键字是一个特殊的引用&#xff0c;‌用于指代父类对象‌。‌在子…

鸿蒙HarmonyOS实战:IPC与RPC设备内进程通信

基本 IPC&#xff08;Inter-Process Communication&#xff09;与RPC&#xff08;Remote Procedure Call&#xff09;用于实现跨进程通信&#xff0c;不同的是前者使用Binder驱动&#xff0c;用于设备内的跨进程通信&#xff0c;后者使用软总线驱动&#xff0c;用于跨设备跨进…

学习yolo+Java+opencv简单案例(三)

主要内容&#xff1a;车牌检测识别&#xff08;什么颜色的车牌&#xff0c;车牌号&#xff09; 模型作用&#xff1a;车牌检测&#xff0c;车牌识别 文章的最后附上我的源码地址。 学习还可以参考我前两篇博客&#xff1a; 学习yoloJavaopencv简单案例&#xff08;一&#xff0…

Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门班-task2

一开始假设的模型是ybw1&#xff0c;但在可视化预测值和真实值后&#xff0c;发现数据具有规律性&#xff0c;因此换成7天 额&#xff0c;不知道为什么要在这里这样引入sigmoid函数&#xff0c;有点怪怪的&#xff0c;但确实用无限多的分段函数就能拟合很多曲线 所以这里的意…