自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(239)
  • 资源 (8)
  • 收藏
  • 关注

原创 [ISP] ISP 中的 GTM 与 LTM:原理、算法与与 Gamma 校正的对比详解

GTM 指全局色调映射,它基于整幅图像的亮度信息构建一个统一的映射函数,将线性空间的图像像素映射到感知空间或显示设备的动态范围内。LTM 指局部色调映射,强调在图像不同区域采用不同的映射函数,以增强局部对比度和细节表现。LTM 是为了弥补 GTM 忽略局部结构的缺陷。模块定位优点缺点GTM全局映射快速压缩动态范围,结构简单忽略局部细节LTM局部增强提升细节,增强质感计算开销大,易出 haloGamma感知映射显示设备标准,简单快速不自适应,细节保留能力弱。

2025-04-07 17:18:36 248

原创 【ISP】HDR技术中Sub-Pixel与DOL的对比分析

Sub-Pixel与DOL分别代表了空间域和时间域HDR技术的两种范式:•Sub-Pixel通过硬件创新实现单帧全同步,适合车载等高动态、高可靠性场景;•DOL通过时序优化实现准同步多帧融合,在成本和实时性上更具普适性。未来技术演进可能趋向空间-时间混合方案(如Sub-Pixel+多帧曝光),以平衡动态范围、噪声与运动兼容性。

2025-04-07 16:38:16 296

原创 [ISP 3A ] AE的常用算法分析

(增益、快门时间、光圈等)来确保拍摄出的图像亮度适宜的算法。AE 需要根据环境光线变化自动调整曝光,以避免过曝(图像太亮)或欠曝(图像太暗)。来补偿 Irradiance 变化,以使曝光保持在合适的水平。AE 算法的核心目标是让图像亮度(通常用。,选择适合的 AE 算法能提升图像质量。自动曝光(AE)是相机通过调节。

2025-04-02 17:41:28 835

原创 [ISP] 理解白平衡的理想色温6500K

色温是指将一个理想黑体加热到某个温度时,其发出的光颜色与某个光源的颜色相匹配时的温度。6500K 表示光源的颜色接近于黑体在 6500 开尔文(即 6500K)时发出的光。

2025-04-02 16:26:18 438

原创 [ISP] raw图常见的噪声种类以及生成原因

在ISP算法处理前,噪声是影响raw图像质量的关键因素。不同的噪声类型具有不同的分布特性。,表现为像素值突然变成极端值(0 或 255),通常是由于传输误码、传感器故障或数据丢失造成的。在实际应用中,高斯噪声通常会导致图像整体变得模糊,噪声值较大的地方可能会出现随机色斑。的离散噪声,常见于低光照成像或 X 射线成像,主要由。的随机噪声,通常由传感器热噪声或光电探测器引起。泊松噪声的随机性与图像像素值相关,某个像素。),所以明亮区域的噪声幅度比暗部更明显。的生成方式,并给出具体的模拟公式。

2025-04-02 15:34:55 954

原创 【C++】彻底理解三大智能指针

C++ 中的智能指针是现代 C++ 编程中不可或缺的工具,目的是为了解决手动内存管理带来的问题,如内存泄漏、悬空指针等。它们通过 RAII 原理确保资源在适当时候被释放。本报告将详细探讨和的特性、用法和最佳实践,并提供示例说明。

2025-03-28 18:37:21 655

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

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

2025-03-28 15:19:27 280

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

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

2025-03-27 16:53:32 498

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

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

2025-03-26 21:18:17 1243

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

但它们的应用场景和实现方式有所不同。本文将基于 C++ 代码,分析抽象工厂模式的实现,并对比其与工厂方法模式的区别。它提供了一个接口,允许客户端通过工厂方法创建不同类型的对象,而无需关心具体实现。桌子(Desk)**两个产品接口,并为它们的不同风格(现代、维多利亚)提供具体实现。中,一个工厂负责创建一组产品(例如:现代风格的桌子 + 现代风格的椅子)。本期我们来学习一下设计模式之抽象工厂模式,在软件开发中,(现代风格 or 维多利亚风格)。交互,而不需要知道具体的工厂实现。,而不是一组相关的对象。

2025-03-26 13:21:42 1173

原创 【设计模式】工厂模式

工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种方法来封装对象的创建逻辑。具体来说,它通过定义一个创建对象的接口(即工厂方法),但将具体的对象实例化工作推迟到子类中完成。这样,客户端代码可以在不知道具体类的情况下创建对象,从而实现创建与使用的分离。首先,定义一个抽象基类Vehicle,它声明了所有车辆必须实现的方法。public:// 纯虚函数,所有子类必须实现// 虚析构函数,确保正确释放资源然后,定义一个抽象工厂类,它包含一个纯虚函数,用于创建。

2025-03-25 18:01:58 900

原创 【C++】普通虚函数 vs 虚析构函数在 vtable 中的绑定方式

这篇文章可以回答两个问题: 1. 为什么析构函数需要是虚函数 2. 普通的虚函数和虚析构函数的在虚函数表的绑定方式的区别。当一个对象调用虚函数时,,vtable 会存放。

2025-03-25 14:38:26 362

原创 【设计模式】SOLID 设计原则概述

SOLID 是面向对象设计中的五大原则,不管什么面向对象的语言, 这个准则都很重要,如果你没听说过,赶紧先学一下。原则可以写出更好的代码,使系统更易扩展、维护和测试。在设计类和模块时,应尽量。,使代码更加健壮、易于测试和扩展。这样每个类的变更都不会影响其他功能,符合 SRP。,否则后期修改代码时,可能会影响其他无关功能。,避免不必要的修改。

2025-03-21 18:13:45 671

原创 【设计模式】C++ 单例模式总结与最佳实践

你的项目用的是 C++11 以上吗?,它具备线程安全性、简洁性和性能优势。是软件开发中常见的设计模式之一,主要用于。,并提供一个全局访问点。如果你还在用 C++03,那就用。C++ 单例模式有多种实现方式,对于 MFC 开发,可以用。

2025-03-21 17:39:34 541

原创 【C++高速化】流水线设计提升并发效率

流水线设计模式是一种将复杂任务分解为多个独立阶段(Stage)的架构,每个阶段负责处理任务的一部分。阶段之间通过队列(Queue)传递数据,形成一个有序的处理链。并行处理:不同阶段可以同时处理不同的数据块,从而提升整体吞吐量。模块化:每个阶段独立运行,便于开发、测试和维护。灵活性:可以根据需求动态调整阶段数量和处理逻辑。在多线程场景下,我们可以为每个阶段分配一个线程,利用时间并行来加速任务处理。通过多线程流水线设计,我们能够将复杂任务分解为多个并行执行的阶段,从而显著提升程序的处理能力和吞吐量。

2025-03-21 16:18:00 785

原创 【C++】理解 C++ 中的完美转发(Perfect Forwarding)

完美转发是指在模板函数中,将参数以其原始值类别(lvalue 或 rvalue)传递给目标函数,而不会引入额外的拷贝或类型转换。C++ 通过模板类型推导、右值引用(T&&)和的结合实现了这一功能。完美转发是 C++ 中结合模板、右值引用和引用折叠的优雅解决方案。它通过T&&和确保参数按原始值类别传递,兼顾性能和灵活性。引用折叠规则是其实现的基础,而使用场景主要集中在泛型编程、性能优化和接口设计中。理解并掌握完美转发,能显著提升代码的效率和可维护性。作为 C++ 开发者,下次编写模板函数。

2025-03-20 22:01:32 858

原创 【C++】vector的push_back和emplace_back

效率通常更高效,因为它避免了拷贝或移动。但是如果是添加的对象,还是会触发拷贝或者移动(右值)灵活性直接用构造函数参数,push_back需要现成的对象。选择建议:优先考虑,除非你已经有构造好的对象需要传入。

2025-03-20 21:56:47 823

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

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

2025-03-19 17:39:45 598

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

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

2025-03-18 19:37:58 744

原创 【C++】触发移动构造函数的两种方式

这两种方式都会触发移动构造函数,但它们的工作方式略有不同。本文将深入解析这两种写法的区别,以及它们在 C++ 编译器中的具体行为。用于将对象转换为右值引用,以便调用移动构造函数(Move Constructor)。✅ 编译器优化可以消除额外的拷贝,保证两种方式都高效运行。的工作方式是非常重要的!希望这篇文章对你有所帮助!转换成右值,最终的构造方式仍由。(如果没有合适的构造函数可用)。如果你的代码涉及性能优化,了解。,只是书写方式不同。

2025-03-17 10:56:03 370

原创 【C++】vector的内存到底在哪里

我们可以高效、安全地管理动态数组,避免内存泄漏和不必要的拷贝操作。希望本文能帮助你深入理解。是 C++ 标准库中最常用的动态数组容器,它能够自动管理内存并提供高效的随机访问能力。它的头部和数据部分分别分配在栈上还是堆上?的堆内存会被正确管理。作为函数返回值时,会发生什么?和数据指针,各占 8 字节)。头部的栈上对象会被销毁,但。的头部存储位置不变。在 64 位系统下,

2025-03-17 10:49:02 880

原创 【模型调优】手把手教你调优yolo

模型调优(Model Tuning)是指通过调整机器学习模型的参数和结构,以提高其性能和准确性的过程。在目标检测任务中,调优可以帮助模型在特定类别上达到更高的精度(如AP值),同时减少不必要的计算开销。例如,YOLO模型默认支持多类别检测,但有时我们只需要检测单一类别,并要求该类别的检测效果最佳。通过以上步骤,我们成功从YOLOv8s预训练模型中调优出一个专门检测电视的模型。利用COCO数据集提取电视类别数据,并结合Optuna进行超参数优化,最终获得了性能最佳的模型。

2025-03-14 18:53:47 917

原创 【C++】如何高效掌握UDP数据包解析

通过确保数据布局紧凑性,再结合实现高效字节序转换,能够显著提升UDP数据包解析的可靠性与代码可维护性。此方法尤其适用于嵌入式网络协议栈、物联网设备通信等场景。完整代码示例可在实际项目中扩展,加入负载解析、多线程处理等高级特性。

2025-03-14 11:09:35 1071

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

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

2025-03-12 17:13:54 379

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

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

2025-03-11 23:46:53 650

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

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

2025-03-11 23:12:43 877

原创 USB的传输速率总结

好的,用户之前询问了关于USB3.2的传输速度以及兼容性的问题,我详细解释了不同子版本的速度差异,以及设备与电脑接口的兼容性情况。现在用户回复说“总结的很好,重新整理以下,请用表格列出来”,这说明用户希望信息更结构化,方便快速查阅。首先,我需要确定用户的需求。用户可能已经理解了之前的解释,但需要更清晰的视觉呈现,比如表格,这样更容易比较不同版本之间的区别。用户可能是技术人员、学生或普通用户,想要快速参考USB3.2的不同规格和兼容性,而不需要再次阅读长段文字。

2025-03-11 10:36:51 824

原创 深入理解LRU(Least Recently Used)的概念

当物理内存的页帧被占满时,新页的加载需要替换旧页。LRU 通过跟踪页面的访问时间,选择“最冷”的页淘汰。,用于在物理内存不足时,决定哪些内存页应该被换出到磁盘,以腾出空间加载新的内存页。CPU 多级缓存(L1/L2/L3)的替换策略也基于类似 LRU 的逻辑,淘汰最久未访问的缓存行。,从而尽可能保留高频使用的页面,减少后续缺页中断的发生。(链表顺序:A < B < C,C 是最近访问的页)。:循环遍历数组时,同一内存页会被频繁访问。(最近访问的页可能在短期内被再次访问)。

2025-02-28 10:46:59 815

原创 【高屋建瓴】彻底理解windows和linux的库连接

下,与 Windows 的 .lib。,不像 Windows 需要单独的。在 Windows 下,你可以用。在 Linux 下,生成静态库(在 Linux 下,生成共享库(不能直接被链接,因此需要一个。在 Windows 下,.lib。在 Linux 下,你可以用。在 Windows 下,来提供符号解析信息。所以,Linux 下。

2025-02-24 11:04:13 376

原创 OpenXLSX使用之demo5讲解(迭代器,row.cells())

该程序演示了如何使用OpenXLSX库通过迭代器高效处理Excel中的数据。与上一示例不同,这里利用了方法直接访问每一行的单元格,并通过迭代器进行读取和写入。该方式在处理大量数据时比传统的按单元格范围操作更加高效。程序的功能包括生成随机数据并写入文件、读取数据并统计非空单元格数量与计算总和。加粗样式。

2025-02-23 14:21:45 615

原创 OpenXLSX使用之demo6讲解(批量处理row数据)

这个示例程序演示了如何使用OpenXLSX库进行高效的Excel文件读写操作,特别是通过行范围(rows())进行数据操作。程序首先随机生成数据并写入Excel文件,然后重新打开文件并读取数据,计算并输出单元格的数量和所有单元格的总和。与按单元格范围操作相比,按行操作可以提高性能,尤其是在处理大量数据时。

2025-02-23 14:15:43 612

原创 OpenXLSX使用之demo5讲解(迭代器,range)

这个示例展示了如何使用OpenXLSX库通过迭代器和范围操作Excel单元格。程序生成一个随机数填充的Excel文件,保存并重新打开文件,然后计算并输出单元格的数量以及所有单元格的总和。通过使用OpenXLSX的range()方法,程序能够方便地定义一个单元格范围,并通过迭代器访问该范围内的每个单元格。这种方法使得操作Excel文档中的数据变得高效且直观。

2025-02-23 14:14:14 507

原创 OpenXLSX使用之demo4讲解(字符格式)

这个示例程序演示了如何使用OpenXLSX库处理Unicode字符,并在Excel单元格中插入不同语言的文本。通过使用库,程序确保即使在Windows系统中,控制台也能正确显示UTF-8编码的字符。这对于多语言支持和跨平台开发非常有用。

2025-02-23 14:10:50 824

原创 OpenXLSX使用之demo3讲解(格式,clone)

这个例子演示了OpenXLSX的工作表操作功能,包含了常见的工作表管理操作,如添加、删除、克隆和排序。它还展示了如何操作工作表标签的颜色和激活状态。

2025-02-23 14:09:19 546

原创 OpenXLSX使用之demo2讲解

该程序演示了如何使用OpenXLSX向Excel单元格添加公式,并且如何获取和打印公式。OpenXLSX目前仅支持向单元格添加公式,但不支持公式计算。公式计算需要通过Excel来完成。

2025-02-23 14:07:10 387

原创 OpenXLSX使用之demo1讲解

创建和保存 Excel 文件读写单元格日期时间处理评论操作工作表保护与密码设置单元格格式化与解锁这些操作展示了如何利用 OpenXLSX 来进行 Excel 文件的读取、写入、格式化以及其他相关功能。

2025-02-23 14:03:44 302

原创 解决Excel文件格式损坏问题:如何通过程序读取并复制内容

通过 Python 脚本结合 Excel 的 COM 接口,我们能够有效地读取损坏的.xls文件,提取其内容,并将其保存为新的.xlsx格式文件。这种方法对于大批量处理损坏的 Excel 文件非常有效,避免了人工操作的繁琐,并保证了数据的完整性。这种解决方案适用于需要修复损坏的.xls文件或在格式不兼容的情况下提取内容的场景。希望本文提供的解决方案能够帮助您解决类似问题,提升工作效率。

2025-02-22 21:04:32 1061

原创 libxls库的编译以及基于Visual studio的配置

以上步骤在你的环境下(MSYS2 MinGW64,路径)可生成。Debug 版本需添加。若只需库,禁用测试程序可简化流程。按步骤操作即可成功编译!

2025-02-22 13:13:55 1095 3

原创 激光安全等级 (研发或使用激光雷达硬件的筒子们重视)

最近有小伙伴不注意自己的眼镜,竟然对着激光头看,很不安全,即使是class2, 也不能一直盯着,所以给大家普及一下激光安全等级!(美国食品药品监督管理局标准)。它们将激光按功率和危害性分为多个等级,从完全安全到极度危险。国际上激光的安全等级主要依据。(国际电工委员会标准)和。

2025-02-18 18:42:54 664

原创 计算中位数的两种常见方法:直方图方法与直接排序方法

直方图方法通过统计数据值的频率并计算累计频率来求得中位数,适用于数据值范围较小、分布较均匀的情况。直接排序方法则通过对数据进行排序来直接获取中位数,适用于需要高精度计算的场景,尽管它的时间复杂度较高。最终,通过扫描累计频率数组,找到累计频率值等于数据总数一半的位置。如果数据的取值范围很大,可能需要为每个可能的数值创建一个数组或哈希表来存储其频率。了解了这两种方法的原理和复杂度后,你可以根据数据的特点选择合适的方法来计算中位数。,而且排序后的数据可以直接取中位数,查找中位数的时间复杂度是。

2025-02-12 15:51:52 453

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

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

2024-10-20

cuda vscode编译配置

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

2023-03-01

read_binary.py

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

2021-07-29

doxygen的配置文件

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

2021-07-08

call_count.h

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

2021-06-25

how_to_use_simpleperf_for_cachemisses_and_cpucycles.txt

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

2021-06-10

extras-master-simpleperf.tar.gz

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

2021-06-10

vscode 利用cmakelist 的demo工程

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

2020-11-25

VScode hello world

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

2020-11-18

人脸样本库

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

2018-10-10

空空如也

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

TA关注的人

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