自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 【高斯函数拟合】高斯-牛顿法与梯度下降法的 Python 实现

高斯曲线拟合进阶,梯度下降法和高斯牛顿法

2025-05-17 14:57:03 876

原创 【高斯拟合】不用库手写高斯拟合算法:从最小二乘到拟合参数推导

高斯分布(正态分布)是科学计算和机器学习中最常见的函数之一,拟合一组数据为高斯曲线在信号处理、统计建模、图像处理中都有广泛应用。市面上很多工具包(如 NumPy、SciPy)都可以快速进行高斯拟合。但你有没有想过,如果,我们也可以完成一次完整的高斯拟合?本文将一步步讲解如何手写一个amusigma。

2025-05-15 23:12:05 669

原创 解决 Ubuntu 22.04 安装后启动卡死问题

通过进入恢复模式,执行文件系统检查、软件包修复和系统更新,我成功解决了 Ubuntu 22.04 安装后启动卡死的问题。这个方法简单有效,适合大多数因文件系统或软件包问题导致的启动失败情况。如果你的 Ubuntu 系统也遇到了类似问题,不妨按照以上步骤尝试修复。

2025-05-15 17:26:13 1231

原创 【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

原创 【3D点云】ICP Pipeline 总结(Iterative Closest Point)

Rt(R, t)Rt。

2025-04-21 11:26:06 856

原创 【C++】深入理解 `volatile`:作用、使用场景及与 `std::atomic` 的对比

volatile。

2025-04-19 13:22:27 645

原创 【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 787

原创 [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 800

原创 [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

原创 【硬件相关】不同传输方式8MP图像能否实现30FPS

假设传输 8MP(3840×2160)@30FPS 的图像,不同格式的数据量如下:

2025-03-28 15:19:27 322

原创 【图像基础】NV12 到底是YUV的哪一种格式?

【代码】【图像基础】NV12 到底是YUV的哪一种格式?

2025-03-27 16:53:32 889

原创 【C++】内存模型分析

constconst这里是局部const变量,它仍然存储在栈区,而不是常量区。static。

2025-03-26 21:18:17 1301

原创 【设计模式】抽象工厂模式(含与工厂方法模式的对比)

但它们的应用场景和实现方式有所不同。本文将基于 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 2238

原创 【滤波算法】卡尔曼滤波手撕版本(推导+案例解释)

卡尔曼滤波(Kalman Filter, KF)是一种递归最小均方误差估计算法,适用于线性动态系统。它分为预测(Prediction) 和更新(Update)两个阶段。其中预测也就是所谓的先验,更新实际上就是后验。先理解基础的概念,以及每一个变量的定义,理解了这些才能理解接下来的公式代表的含义:Kalman 滤波是一种递归最小均方误差(MMSE)估计算法,它能在噪声环境下从不完美的观测数据中估计系统状态。它常用于导航、信号处理、控制系统、目标跟踪等场景,尤其适用于线性动态系统。Kalman 滤波的核心是基于

2025-03-19 17:39:45 763

原创 【基础算法】协方差矩阵的计算

今天有萌新同事问我如何计算协方差矩阵,这个是非常基础的,SVD, PCA,卡尔曼滤波都要用到,很重要!这个协方差矩阵可以用于分析数据的分布形态,比如用于PCA降维,或者在卡尔曼滤波中作为误差估计矩阵。协方差矩阵(Covariance Matrix)是描述多维数据统计特性的重要工具,它揭示了数据的。,在信号处理、机器学习、卡尔曼滤波、PCA 降维等领域广泛应用。

2025-03-18 19:37:58 1924

原创 【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

原创 解决ubuntu(jetpack)系统下系统盘存储不够的

若仍有问题,可考虑扩展存储或迁移大文件到外置设备。此文件记录用户登录信息,

2025-03-12 17:13:54 438

原创 【ISP】对于ISP的关键算法补充

本篇是对于ISP的关键算法进行补充说明, 后面我们将开始逐渐深入讨论ISP的pipeline。

2025-03-11 23:46:53 696

原创 【ISP】ISP的pipeline的几种关键算法

算法主要用途关键方法RawNRRAW 降噪空域滤波、时域滤波、深度学习YUVNRYUV 降噪亮度/色度独立降噪TNR时域降噪多帧融合、运动补偿HDR MergeHDR 合成多曝光合成、AI HDR色调映射Gamma、Retinex、深度学习Demosaic去马赛克插值算法、AI 方法Sharpen图像锐化高通滤波、USM、AIDehaze去雾物理模型、深度学习。

2025-03-11 23:12:43 1238

C++线程池的封装,实现任务队列的enqueue/dequeue

1. 实现任务类封装 2. 实现线程id,对象实例的map 3. 实现任务队列的enqueue/dequeu

2024-10-20

how_to_use_simpleperf_for_cachemisses_and_cpucycles.txt

simpleperf的使用方法,主要是如何获取cachemiss和cpucyle的报告,包含火焰图

2021-06-10

cuda vscode编译配置

初学cuda,利用vscode,nvcc的编译器编译可执行文件

2023-03-01

doxygen的配置文件

当初试的时候,配置文件和头文件同一目录,而且我只有头文件

2021-07-08

extras-master-simpleperf.tar.gz

simpleperf的开源代码,里面也有分析perf.data的工具

2021-06-10

vscode 利用cmakelist 的demo工程

该工程包主要是给大家一个base,开发C++项目用的,可以作为初学者或者对于vscode以及cmakelist不熟悉的usr使用

2020-11-25

人脸样本库

主要用于机器学习,或者深度学习,作为训练样本使用的,便宜分享给大家

2018-10-10

read_binary.py

python读取二进制文件,可以读取mipi的12bit

2021-07-29

call_count.h

主要的目的是为了写一个宏函数,可以方便的插入到函数,可以获得函数被调用了几次

2021-06-25

VScode hello world

VScode 如何用camke进行编译调试的示例程序,可以作为基础的环境程序,基于VScode做C++的开发

2020-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除