- 博客(253)
- 资源 (8)
- 收藏
- 关注
原创 【Python】Python 装饰器的用法总结
装饰器是一个高阶函数,它接受一个函数或类作为输入,并返回一个新的函数或类,通常用于增加额外的功能。通过装饰器,我们可以在不修改原始代码的情况下扩展函数或类的行为。装饰器的核心思想是“包装”,它用来增强或修改目标函数或类的功能。装饰器是 Python 中的一项强大功能,能够让我们以非常简洁的方式在不改变原始代码的情况下增加功能。它们不仅适用于函数,也可以用于类、方法等。装饰器常常用于日志记录、缓存、权限验证等场景,在 Python 开发中十分常见。
2025-05-23 23:00:34
590
原创 【C++】尾置返回类型(Trailing Return Type)总结
尾置返回类型(Trailing Return Type)是 C++11 引入的一种函数返回类型声明方式,允许将返回类型放在函数参数列表之后,使用。这种语法在模板编程、Lambda 表达式和复杂类型推导时特别有用。作为占位符,表示返回类型稍后指定。放在参数列表后,使代码更清晰。✅ 避免类成员函数的前向声明问题。适用版本:C++11 及以上。✅ 提升复杂返回类型的可读性。
2025-05-18 23:06:04
543
原创 【高斯拟合最终篇】Levenberg-Marquardt(LM)算法
LM 算法通过阻尼因子结合高斯-牛顿法的快速收敛和梯度下降法的稳定性,是高斯函数拟合的理想选择。代码中的 LM 实现()在 7 次迭代内达到高精度,优于梯度下降法,接近高斯-牛顿法,同时更鲁棒。读者可调整或迭代次数,进一步优化性能。
2025-05-17 15:37:10
923
原创 【高斯拟合】不用库手写高斯拟合算法:从最小二乘到拟合参数推导
高斯分布(正态分布)是科学计算和机器学习中最常见的函数之一,拟合一组数据为高斯曲线在信号处理、统计建模、图像处理中都有广泛应用。市面上很多工具包(如 NumPy、SciPy)都可以快速进行高斯拟合。但你有没有想过,如果,我们也可以完成一次完整的高斯拟合?本文将一步步讲解如何手写一个amusigma。
2025-05-15 23:12:05
669
原创 解决 Ubuntu 22.04 安装后启动卡死问题
通过进入恢复模式,执行文件系统检查、软件包修复和系统更新,我成功解决了 Ubuntu 22.04 安装后启动卡死的问题。这个方法简单有效,适合大多数因文件系统或软件包问题导致的启动失败情况。如果你的 Ubuntu 系统也遇到了类似问题,不妨按照以上步骤尝试修复。
2025-05-15 17:26:13
1224
原创 【leetcode 刷题】 买卖股票的最佳时机含冷冻期
设计一个算法计算出最大利润。给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格。解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。输入: prices = [1,2,3,0,2]输入: prices = [1]
2025-04-22 22:05:24
192
原创 【leetcode 刷题】 买卖股票的最佳时机 II
解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]输入: prices = [1,2,3,0,2]动态规划, 主要是写出动态规划方程。输入: prices = [1]
2025-04-22 21:37:00
189
原创 【ISP】AWB的基本原理介绍(基于灰度像素检测)
灰度像素法是一种统计学上鲁棒、无需训练的 AWB 方法。其核心在于:通过找出图像中应为灰色却被偏色污染的区域,反推出当前光源的偏移方向,从而计算出增益进行矫正。在嵌入式设备或无校准标定条件下,非常实用。
2025-04-15 18:22:55
818
原创 【进程通信】 Linux下使用共享内存实现跨进程通信:基于C++的完整示例
我们定义了一个结构体SharedData该结构体将在共享内存中作为数据容器,用于写入和读取。共享内存提供了一种高效的进程间通信机制,但需要开发者自己管理同步问题。本文展示了如何使用shmgetshmat等函数创建和使用共享内存,并结合 POSIX 信号量实现互斥访问。同时,通过对ftok()机制的讲解,帮助理解共享内存 key 的生成原理和潜在的错误排查方向。实时通信(如传感器数据共享)大数据量传输(如图像帧、视频块)轻量级进程协作场景。
2025-04-10 11:35:52
691
原创 【C++】类型转换static_cast和dynamic_cast区别
优先使用的场景• 需要向下转型且涉及多态(基类有虚函数)• 不确定父类指针实际指向的子类类型• 需要处理交叉转换或复杂继承关系适用的场景• 已知安全的转换(如数值类型转换、向上转型)• 性能敏感且能确保类型正确性的场景在面向对象编程中,类型安全优先于性能优化。除非明确保证转换正确性,否则应避免使用进行向下转型。
2025-04-09 15:08:20
467
原创 【C++】fork + execl 入门教程:用 C++ 调用外部程序
使用forkexecl的组合方式,可以让一个进程在不影响主业务逻辑的情况下,独立运行另一个程序。隔离性强:目标程序运行在子进程中,即使崩溃也不会影响父进程。资源回收明确:通过waitpid可以及时回收子进程资源,避免僵尸进程。执行灵活:可选择不同的exec函数实现参数控制,例如execlpexecvp等。这种机制在服务端开发、任务调度、插件式程序设计等场景中广泛应用。
2025-04-09 12:52:05
479
原创 [ISP] ISP 中的 GTM 与 LTM:原理、算法与与 Gamma 校正的对比详解
GTM 指全局色调映射,它基于整幅图像的亮度信息构建一个统一的映射函数,将线性空间的图像像素映射到感知空间或显示设备的动态范围内。LTM 指局部色调映射,强调在图像不同区域采用不同的映射函数,以增强局部对比度和细节表现。LTM 是为了弥补 GTM 忽略局部结构的缺陷。模块定位优点缺点GTM全局映射快速压缩动态范围,结构简单忽略局部细节LTM局部增强提升细节,增强质感计算开销大,易出 haloGamma感知映射显示设备标准,简单快速不自适应,细节保留能力弱。
2025-04-07 17:18:36
1010
原创 【ISP】HDR技术中Sub-Pixel与DOL的对比分析
Sub-Pixel与DOL分别代表了空间域和时间域HDR技术的两种范式:•Sub-Pixel通过硬件创新实现单帧全同步,适合车载等高动态、高可靠性场景;•DOL通过时序优化实现准同步多帧融合,在成本和实时性上更具普适性。未来技术演进可能趋向空间-时间混合方案(如Sub-Pixel+多帧曝光),以平衡动态范围、噪声与运动兼容性。
2025-04-07 16:38:16
786
原创 [ISP 3A ] AE的常用算法分析
(增益、快门时间、光圈等)来确保拍摄出的图像亮度适宜的算法。AE 需要根据环境光线变化自动调整曝光,以避免过曝(图像太亮)或欠曝(图像太暗)。来补偿 Irradiance 变化,以使曝光保持在合适的水平。AE 算法的核心目标是让图像亮度(通常用。,选择适合的 AE 算法能提升图像质量。自动曝光(AE)是相机通过调节。
2025-04-02 17:41:28
922
原创 [ISP] 理解白平衡的理想色温6500K
色温是指将一个理想黑体加热到某个温度时,其发出的光颜色与某个光源的颜色相匹配时的温度。6500K 表示光源的颜色接近于黑体在 6500 开尔文(即 6500K)时发出的光。
2025-04-02 16:26:18
799
原创 [ISP] raw图常见的噪声种类以及生成原因
在ISP算法处理前,噪声是影响raw图像质量的关键因素。不同的噪声类型具有不同的分布特性。,表现为像素值突然变成极端值(0 或 255),通常是由于传输误码、传感器故障或数据丢失造成的。在实际应用中,高斯噪声通常会导致图像整体变得模糊,噪声值较大的地方可能会出现随机色斑。的离散噪声,常见于低光照成像或 X 射线成像,主要由。的随机噪声,通常由传感器热噪声或光电探测器引起。泊松噪声的随机性与图像像素值相关,某个像素。),所以明亮区域的噪声幅度比暗部更明显。的生成方式,并给出具体的模拟公式。
2025-04-02 15:34:55
1085
原创 【C++】彻底理解三大智能指针
C++ 中的智能指针是现代 C++ 编程中不可或缺的工具,目的是为了解决手动内存管理带来的问题,如内存泄漏、悬空指针等。它们通过 RAII 原理确保资源在适当时候被释放。本报告将详细探讨和的特性、用法和最佳实践,并提供示例说明。
2025-03-28 18:37:21
698
原创 【设计模式】抽象工厂模式(含与工厂方法模式的对比)
但它们的应用场景和实现方式有所不同。本文将基于 C++ 代码,分析抽象工厂模式的实现,并对比其与工厂方法模式的区别。它提供了一个接口,允许客户端通过工厂方法创建不同类型的对象,而无需关心具体实现。桌子(Desk)**两个产品接口,并为它们的不同风格(现代、维多利亚)提供具体实现。中,一个工厂负责创建一组产品(例如:现代风格的桌子 + 现代风格的椅子)。本期我们来学习一下设计模式之抽象工厂模式,在软件开发中,(现代风格 or 维多利亚风格)。交互,而不需要知道具体的工厂实现。,而不是一组相关的对象。
2025-03-26 13:21:42
1202
原创 【设计模式】工厂模式
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种方法来封装对象的创建逻辑。具体来说,它通过定义一个创建对象的接口(即工厂方法),但将具体的对象实例化工作推迟到子类中完成。这样,客户端代码可以在不知道具体类的情况下创建对象,从而实现创建与使用的分离。首先,定义一个抽象基类Vehicle,它声明了所有车辆必须实现的方法。public:// 纯虚函数,所有子类必须实现// 虚析构函数,确保正确释放资源然后,定义一个抽象工厂类,它包含一个纯虚函数,用于创建。
2025-03-25 18:01:58
916
原创 【C++】普通虚函数 vs 虚析构函数在 vtable 中的绑定方式
这篇文章可以回答两个问题: 1. 为什么析构函数需要是虚函数 2. 普通的虚函数和虚析构函数的在虚函数表的绑定方式的区别。当一个对象调用虚函数时,,vtable 会存放。
2025-03-25 14:38:26
380
原创 【设计模式】SOLID 设计原则概述
SOLID 是面向对象设计中的五大原则,不管什么面向对象的语言, 这个准则都很重要,如果你没听说过,赶紧先学一下。原则可以写出更好的代码,使系统更易扩展、维护和测试。在设计类和模块时,应尽量。,使代码更加健壮、易于测试和扩展。这样每个类的变更都不会影响其他功能,符合 SRP。,否则后期修改代码时,可能会影响其他无关功能。,避免不必要的修改。
2025-03-21 18:13:45
820
原创 【设计模式】C++ 单例模式总结与最佳实践
你的项目用的是 C++11 以上吗?,它具备线程安全性、简洁性和性能优势。是软件开发中常见的设计模式之一,主要用于。,并提供一个全局访问点。如果你还在用 C++03,那就用。C++ 单例模式有多种实现方式,对于 MFC 开发,可以用。
2025-03-21 17:39:34
583
原创 【C++高速化】流水线设计提升并发效率
流水线设计模式是一种将复杂任务分解为多个独立阶段(Stage)的架构,每个阶段负责处理任务的一部分。阶段之间通过队列(Queue)传递数据,形成一个有序的处理链。并行处理:不同阶段可以同时处理不同的数据块,从而提升整体吞吐量。模块化:每个阶段独立运行,便于开发、测试和维护。灵活性:可以根据需求动态调整阶段数量和处理逻辑。在多线程场景下,我们可以为每个阶段分配一个线程,利用时间并行来加速任务处理。通过多线程流水线设计,我们能够将复杂任务分解为多个并行执行的阶段,从而显著提升程序的处理能力和吞吐量。
2025-03-21 16:18:00
890
原创 【C++】理解 C++ 中的完美转发(Perfect Forwarding)
完美转发是指在模板函数中,将参数以其原始值类别(lvalue 或 rvalue)传递给目标函数,而不会引入额外的拷贝或类型转换。C++ 通过模板类型推导、右值引用(T&&)和的结合实现了这一功能。完美转发是 C++ 中结合模板、右值引用和引用折叠的优雅解决方案。它通过T&&和确保参数按原始值类别传递,兼顾性能和灵活性。引用折叠规则是其实现的基础,而使用场景主要集中在泛型编程、性能优化和接口设计中。理解并掌握完美转发,能显著提升代码的效率和可维护性。作为 C++ 开发者,下次编写模板函数。
2025-03-20 22:01:32
942
原创 【C++】vector的push_back和emplace_back
效率通常更高效,因为它避免了拷贝或移动。但是如果是添加的对象,还是会触发拷贝或者移动(右值)灵活性直接用构造函数参数,push_back需要现成的对象。选择建议:优先考虑,除非你已经有构造好的对象需要传入。
2025-03-20 21:56:47
2236
原创 【滤波算法】卡尔曼滤波手撕版本(推导+案例解释)
卡尔曼滤波(Kalman Filter, KF)是一种递归最小均方误差估计算法,适用于线性动态系统。它分为预测(Prediction) 和更新(Update)两个阶段。其中预测也就是所谓的先验,更新实际上就是后验。先理解基础的概念,以及每一个变量的定义,理解了这些才能理解接下来的公式代表的含义:Kalman 滤波是一种递归最小均方误差(MMSE)估计算法,它能在噪声环境下从不完美的观测数据中估计系统状态。它常用于导航、信号处理、控制系统、目标跟踪等场景,尤其适用于线性动态系统。Kalman 滤波的核心是基于
2025-03-19 17:39:45
761
原创 【基础算法】协方差矩阵的计算
今天有萌新同事问我如何计算协方差矩阵,这个是非常基础的,SVD, PCA,卡尔曼滤波都要用到,很重要!这个协方差矩阵可以用于分析数据的分布形态,比如用于PCA降维,或者在卡尔曼滤波中作为误差估计矩阵。协方差矩阵(Covariance Matrix)是描述多维数据统计特性的重要工具,它揭示了数据的。,在信号处理、机器学习、卡尔曼滤波、PCA 降维等领域广泛应用。
2025-03-18 19:37:58
1922
原创 【C++】触发移动构造函数的两种方式
这两种方式都会触发移动构造函数,但它们的工作方式略有不同。本文将深入解析这两种写法的区别,以及它们在 C++ 编译器中的具体行为。用于将对象转换为右值引用,以便调用移动构造函数(Move Constructor)。✅ 编译器优化可以消除额外的拷贝,保证两种方式都高效运行。的工作方式是非常重要的!希望这篇文章对你有所帮助!转换成右值,最终的构造方式仍由。(如果没有合适的构造函数可用)。如果你的代码涉及性能优化,了解。,只是书写方式不同。
2025-03-17 10:56:03
409
原创 【C++】vector的内存到底在哪里
我们可以高效、安全地管理动态数组,避免内存泄漏和不必要的拷贝操作。希望本文能帮助你深入理解。是 C++ 标准库中最常用的动态数组容器,它能够自动管理内存并提供高效的随机访问能力。它的头部和数据部分分别分配在栈上还是堆上?的堆内存会被正确管理。作为函数返回值时,会发生什么?和数据指针,各占 8 字节)。头部的栈上对象会被销毁,但。的头部存储位置不变。在 64 位系统下,
2025-03-17 10:49:02
1000
原创 【模型调优】手把手教你调优yolo
模型调优(Model Tuning)是指通过调整机器学习模型的参数和结构,以提高其性能和准确性的过程。在目标检测任务中,调优可以帮助模型在特定类别上达到更高的精度(如AP值),同时减少不必要的计算开销。例如,YOLO模型默认支持多类别检测,但有时我们只需要检测单一类别,并要求该类别的检测效果最佳。通过以上步骤,我们成功从YOLOv8s预训练模型中调优出一个专门检测电视的模型。利用COCO数据集提取电视类别数据,并结合Optuna进行超参数优化,最终获得了性能最佳的模型。
2025-03-14 18:53:47
1000
原创 【C++】如何高效掌握UDP数据包解析
通过确保数据布局紧凑性,再结合实现高效字节序转换,能够显著提升UDP数据包解析的可靠性与代码可维护性。此方法尤其适用于嵌入式网络协议栈、物联网设备通信等场景。完整代码示例可在实际项目中扩展,加入负载解析、多线程处理等高级特性。
2025-03-14 11:09:35
1179
原创 【ISP】ISP的pipeline的几种关键算法
算法主要用途关键方法RawNRRAW 降噪空域滤波、时域滤波、深度学习YUVNRYUV 降噪亮度/色度独立降噪TNR时域降噪多帧融合、运动补偿HDR MergeHDR 合成多曝光合成、AI HDR色调映射Gamma、Retinex、深度学习Demosaic去马赛克插值算法、AI 方法Sharpen图像锐化高通滤波、USM、AIDehaze去雾物理模型、深度学习。
2025-03-11 23:12:43
1238
how_to_use_simpleperf_for_cachemisses_and_cpucycles.txt
2021-06-10
vscode 利用cmakelist 的demo工程
2020-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人