- 博客(334)
- 资源 (68)
- 问答 (1)
- 收藏
- 关注
原创 ISP图像处理_白平衡AWB
白平衡调整流程原理很简单:1,在各个色温下(2500~7500)拍几张白纸照片,假设拍6张(2500,3500…7500),可以称作色温照.2,把色温照进行矫正,具体是对R/G/B通道进行轿正,让偏色的白纸照变成白色,并记录各个通道的矫正参数. 实际上只矫正R和B通道就可以,这样就得到了6组矫正参数(Rgain,Bgain).3,上面是做前期工作,只要知道当前场景是什么色温,再轿正一下就可以了所以,AWB算法的核心就是判断图像的色温之前拍了6张色温照以及6组矫正参数. 插值一下可以得到无数个.
2020-11-28 12:01:29
3435
原创 白平衡(灰度世界、全反射、色温估计)
人在观测物体时,视线和感知会根据场景光源进行自动调节。而机械以及光敏元件则会受到场景光源影响,并且无法判断和处理这种不良影响。先验:白光的RGB分量为(R=G=B=255);灰色的光(R=G=B)。算法:灰度世界算法GW(自动白平衡广泛应用)假设:一副有足够色彩变化的图像,RGB的均值趋于相等。GB没有写,都是一样的,这里非常简单地做了一个映射,以此来达到灰度世界的假设。该方法较为简单,可也忽略了一些细节问题。R_ave,代表红通道均值,其他类似。全反射理论算法PR(自动白平衡最常用之一)
2020-11-28 12:00:27
898
原创 AWB调试中(Tuning)的几个问题
第一,颜色的准确不仅取决于AWB模块,这是系统性的工程比如,一个车载项目,囿于其使用环境,日夜切换不能满足,只得用双通滤光片,但是该滤光片红色波段截止不彻底,导致在650-700波段仍有透过,结果就是在低色温下黑色物体偏蓝,其他颜色(除了蓝色)均出现不同程度的偏色,整个色卡看起来发“蒙”。这个问题其实包含三个问题,其一,为何黑色偏蓝;其二,为何只有黑色偏;其三,为何是F光源偏。经过分析,得出以下初步结论:其一,黑色偏蓝是因为RAW上R偏多,导致偏青,表现出来就是蓝;其二,黑色是因为吸收能力强,所以,
2020-11-28 11:59:40
4046
原创 awk ‘{print $1,$2,$14,$15}‘ /proc/`pidof hik_demo`/task/*/stat
awk '{print $1,$2,$14,$15}' /proc/`pidof hik_demo`/task/*/stat
2020-10-27 08:58:27
341
原创 task_struct
1、进程的基本信息1.1 标识一个进程——PID每个进程都必须拥有它自己的进程描述符;因此,即使共享内核大部分数据结构的轻量级进程(后面会提到),也有它们自己的task_struct结构。进程和进程描述符之间有非常严格的一一对应关系,所以我们可以方便地使用32位进程描述符地址标识进程。进程描述符指针(task_struct*)指向这些地址。内核对进程的大部份引用都是通过进程描述符指针...
2020-10-27 08:58:15
1475
原创 perf-stat
perf-stat用于分析指定程序的性能概况。Run a command and gather performance counter statistics.perf stat [-e <EVENT> | --event=EVENT] [-a] <command>perf stat [-e <EVENT> | --event=EVENT] [-a] - <command> [<options>](1) 输出格式# perf sta
2020-10-18 10:56:55
794
原创 perf 性能分析实例——使用perf优化cache利用率
3.perf原理与使用简介本文,我们主要关心的是cache miss事件,那么我们只需要统计程序cache miss的次数即可。使用perf 来检测程序执行期间由此造成的cache miss的命令是perf stat -e cache-misses ./exefilename,另外,检测cache miss事件需要取消内核指针的禁用(/proc/sys/kernel/kptr_restrict设置为0)。4.cache 优化实例4.1数据合并有两个数据A和B,访问的时候经常是一起访问的,总是会先访
2020-10-18 10:51:45
5811
原创 利用Oprofile对多核多线程进行性能分析
性能分析工具简介衡量性能收益的方法随着科学技术的不断发展,计算机系统结构朝着多核的方向发展,从而将并发编程推到了聚光灯下,但如何去衡量并行程序设计所带来的性能收益呢?不得不想起1967年Gene Amdahl所做出的杰出贡献,他提出的Amdahl定律能够计算出并行程序相对于最优串行算法在性能提升上的理论最大值。 S+(1-S)/n+H(n)其中, S 表示执行程序中串行部分的比例, n 表示处理器核的数量, H(n)表示系统开销。由于Amdahl定律本身做出了几个假设,但这些假设在现实世界中又
2020-10-11 23:12:18
348
原创 关于apt-get source下载源码包的问题
e.g. 下载 ls的源码包1>which ls //得到 /bin/ls2>dpkg-query -S /bin/ls //会得到包名 ,e.g. coreutils:/bin/ls3>sudo apt-get source coreutils //下载
2020-10-11 11:40:43
952
原创 软件性能测试(连载13)
② 查看inode和目录项缓存[28]slab是Linux操作系统的一种内存分配机制,slab分配算法采用cache存储内核对象。slab缓存、从缓存中分配和释放对象然后销毁缓存的过程必须要定义一个kmem_cache对象,然后对其进行初始化这个特定的缓存包含32字节的对象。可以通过运行cat /proc/slabinfo |grep -E '^#|dentry|inode'命令来查看所有目录项和各种文件系统索引节点的缓存情况。# cat/proc/slabinfo | grep -E '^#|d
2020-10-11 10:25:53
272
原创 性能分析之分析决策树3与4
分析决策树图1当物理内存不够时,linux 触发oom,将进程杀掉;可以使用vmstat可以展现给定时间间隔的服务器的状态值,包括Linux的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况,用于分析磁盘的压力在哪里,在swap,还是在load文件等分析决策树图2分析决策树图3分析决策树图4在学习Linux disk I/O先聊下磁盘系统结构:如果是IDE驱动器,磁盘命名为:hda、hdb、hdc等;如果是SCSI驱动器,磁盘命名为:sda、sdb、sdc等磁盘通常被分
2020-10-11 10:25:18
889
原创 如何利用Ptrace拦截和模拟Linux系统调用
strace在开始之前,我们先看一看strace的实现骨架。Ptrace一直都没有相应的使用标准,但在不同的操作系统中它的接口都是类似的,尤其是它的核心功能,但多多少少都会有一些细微的差别。Ptrace(2)的原型类似如下:long ptrace(int request, pid_t pid, void *addr, void *data);pid是tracee的进程ID,一个tracee一...
2020-09-24 08:28:22
601
原创 ISP 框架
一.ISP 框架图 1:ISP标准流程b) 去马赛克(demosaicing)Demosaicing的意思是如何将采集到的Bayer单通道像素值转成RGB三通道的数据。例如下图4(左图),这是我们采集到的单通道图像,我们需要估计R5位置处的G5和B5. 目前常用的方法是:1.简单插值。图 4: 简单插值edge-aware 插值上述都是基本的简单方法。在改进方面,近几年也有比较新的工作,如文献[5,6]。c) 白平衡(white balance)图 6:相机白平衡的原因;人眼会根
2020-09-16 09:05:08
858
原创 3A+ISP之AE篇
关于AE(Auto Exposure)AE算法思想和曝光量公式:(1)AE的基本概念:Auto Exposure即自动曝光,是相机根据外界光线的强弱自动调整曝光量和增益,防止曝光过度或者不足的一种机制。可见,AE的输入为当前影像的亮度值Y,输出为sensor的曝光时间和增益,isp增益和镜头光圈(如果镜头光圈可调)。当AE algorithm得到当前帧的亮度后,便会与target Y做比较,然后计算出下一次需要调整的参数,以便让影像的亮度越来越接近target Y,如下所示。PS:target并非
2020-09-16 09:04:36
6426
原创 内存带宽测试工具-Stream
简介:STREAM是一套综合性能测试程序集,通过fortran和C两种高级且高效的语言编写完成,由于这两种语言在数学计算方面的高效率, 使得 STREAM 测试例程可以充分发挥出内存的能力。 STREAM 测试得到的是可持续运行的内存带宽最大值,而并不是一般的硬件厂商提供的理论最大值。测试过程:下载stream.c文件使用gcc编译成二进制可执行文件gcc -O3 -mcmodel=medium -fopenmp -DSTREAM_ARRAY_SIZE=100000000 -DNTIMES=30
2020-09-16 08:57:06
2157
原创 mrss_memcpubw.sh
#!/bin/shhik_echo “usage:1)./mrss_memcpubw.sh 路径(第一个参数)文件夹(第二个参数),两个参数间有空格;2)./mrss_memcpubw.sh 路径(第一个参数)文件夹默认命名为mrss_cpu_ui;3)./mrss_memcpubw.sh 路径默认/home/config/ 文件夹默认命名为mrss_cpu_ui”source=hik_demomrsspath="/home/config/mrss_cpu_ui"if [ ! -n “1"]
2020-09-16 08:52:50
660
原创 《程序员的自我修养》第三章学习笔记
《程序员的自我修养–链接、装载与库》链接过程主要包括了:地址和空间分配(Address and Storage Allocation),符号决议(Symbol Resolution)和重定位(Relocation)。编译器编译源代码生成的文件叫做目标文件。从结构上说,是编译后的可执行文件,只不过还没有经过链接3.1 目标文件的格式1,可执行文件的格式: Windows下的PE 和 Linux下的ELF2,从广义上说,目标文件与可执行文件的格式几乎是一样的,所以广义上可以将目标文件与可执行文件
2020-09-16 08:44:21
370
原创 search.py
filename='data.txt'output='output.txt'cnt=0 #行数flag=0userInt,vdocapInt,vdoprcInt,audcapInt,vdooutInt,vdodecInt,vdoencInt=0,0,0,0,0,0,0f = open(output,'w')with open(filename,'r')as fp: while True: line = fp.readline() # 整行读取数据
2020-09-16 08:39:30
155
原创 内存池的实现(二)
阅读目录(Content)1.APR内存池结构1.1 内存分配结点1.2 内存分配器1.3 内存池结点2.APR内存池的内存管理2.1 内存申请2.2 内存释放2.3 内存池结点管理的内存3.小结《内存池的实现(一)》中,介绍了使用内存池的原因,设计内存池应该考虑的问题,最后给出一个简单的内存池实现例子。使用上一篇文章中介绍的内存池实现方案,要在一定的限定条件下,下面我们来看更通用的内存池实现——Apache服务器的内存池实现。Apache服务器的开发人员将代码中可移植的部分整理出来,
2020-09-14 09:11:15
238
原创 内存池的实现(一)
阅读目录(Content)1.引言2.内存池设计3.内存池实现方案一4.内存跟踪策略5.内存申请和释放策略5.1 申请5.2 释放6.对方案一的分析1.引言C/C++下内存管理是让几乎每一个程序员头疼的问题,分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端:A.调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存,
2020-09-14 09:08:37
367
原创 Linux简单线程池实现(带源码)
一.线程池简介为什么使用线程池?目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即 时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程
2020-08-24 08:45:12
303
原创 docker cgroup 技术之memory(首篇)
测试环境centos7,内核版本4.20内核使用cgroup对进程进行分组,并限制进程资源和对进程进行跟踪。内核通过名为cgroupfs类型的虚拟文件系统来提供cgroup功能接口。cgroup有如下2个概念:subsystem:用于控制cgroup中的进程行为的内核组件,可以在/proc/cgroups查看所有支持的subsystem,subsystem也别称为resource controller;第二列为croup id;第三列为cgroup中进程数目。# cat /proc/cgroups#
2020-08-16 09:22:17
969
原创 一致性hash算法清晰详解!
1 基本场景比如你有 N 个 cache 服务器(后面简称 cache),那么如何将一个对象 object映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache;hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个 cache 服务器 m down 掉了(在实际应用中必须要考虑这种情况),这样所有映射到 cache m 的对象都会失效,怎么办,需要把 cache m 从 cache 中移除,
2020-08-10 08:29:01
228
1
原创 一种处理栈越界的方法
在linux下,栈越界写坏返回地址会导致调用栈无法回溯,这就导致我们直接使用bt没有办法查看崩溃时调用栈,今天我讲一下我最近研究出来的一种方法(虽然是原创,但可能互联网上早有人发布过此种方法,只不过我没有查到而已).废话少说,步入正题,首先我写了个简单的程序来构造一个栈溢出的情况,为了使效果更加明显,我使用了一些递归来增加调用栈的深度,代码如下:简单描述下这个代码的功能,func2里递归调用了func2,这样能有效增加调用栈深度,然后调用func3的时候,由于func3里写buf越界了,导致栈被破坏了
2020-07-27 22:52:17
783
原创 《coredump问题原理探究》Linux x86版3.8节栈布局之栈溢出coredump例子
现在,回到前言的栈,看一下能不能用上面的规律来恢复它的栈。前言的可执行文件是没有使用-fomit-frame-pointer编译选项的。前言的栈是这样的:(gdb) bt#0 0x6f745374 in ?? ()#1 0x57735571 in ?? ()#2 0xbff80065 in ?? ()Backtrace stopped: previous frame inner to this frame (corrupt stack?)先看一下ebp,esp的值:(gdb) i r
2020-07-27 22:51:22
985
原创 gdb深入学习手册
1.4 log如果你想把GDB命令输出到一个文件有,有几种方法控制set logging onset logging offset logging file <filename>set logging overwrite [on|off] #默认会追加到logfile里set logging redirect [on|off] #默认GDB输出会在terminal和logfile里显示,用redirect让它只在logfile里显示show logging
2020-07-15 08:40:40
336
原创 PPT分享: Linux铁三角之I/O(一)—— IO模型
Linux I/O是宋宝华老师继《Linux的任督二脉:进程调度和内存管理》第一脉《进程、线程和调度》、第二脉《内存管理》后的,进程、内存、I/O铁三角的一角。这样,进程、内存和I/O形成了一个完整的系列。这次的I/O,主要弄清从上到下发起一次Block I/O的全流程、文件系统ext4等的模型和工作方法、不同的I/O访问模型。第1节 Linux I/O和网络模型阻塞非阻塞多路复用:...
2020-07-14 09:06:53
329
原创 《C语言的面向对象(面向较大型软件)》ppt分享和ppt注解
解释面向对象封装、继承、多态的原理,并举了吃饭的例子,比如婴儿是拿奶瓶,而其他人是拿筷子。这边会进一步解释派生类覆盖上层类函数。以大象进冰箱例子,解释对象思维和过程思维的差异。这页讲C语言如何模拟C++的类,但是其实我们只是想用对象式思想,而不是为了追求形式上的模拟这页讲一个WAV文件的头部,如果用结构体进行“封装”,可以极大地改善代码的质量。如果我们要做一个命令解析器,输入一个...
2020-07-14 09:05:55
214
原创 linux内核部件分析(一)——连通世界的list
在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。 struct list_head { struct list_head *next, *prev; }; 这是链表的元素结构。因为是循环链表,表头和表中节点都是这一结构。有pr...
2020-07-14 09:04:43
162
原创 第五十二章 Linux 阻塞和非阻塞 IO 实验
52.1 阻塞和非阻塞 IO52.1.1 阻塞和非阻塞简介这里的 IO 指的是 Input/Output,也就是输入/输出,是应用程序对驱动设备的输入/输出操作。当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就...
2020-07-14 08:59:56
147
原创 【转载】 详解事件驱动跟消息驱动机制相比
事件驱动和异步IO通常,我们写服务器处理模型的程序时,有以下几种模型:(1)每收到一个请求,创建一个新的进程,来处理该请求;(2)每收到一个请求,创建一个新的线程,来处理该请求;(3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求上面的几种方式,各有千秋,第(1)中方法,由于创建新的进程的开销比较大,所以,会导致服务器性能比较差,但实现比较简单。第(2)种方...
2020-07-14 08:56:22
292
原创 大碰撞!当Linux多线程遭遇Linux多进程
背景本文并不是介绍Linux多进程多线程编程的科普文,如果希望系统学习Linux编程,可以看[《Unix环境高级编程》第3版](https://book.douban.com/subject/1788421/)本文是描述多进程多线程编程中遇到过的一个坑,并从内核角度分析其原理。这里说的多进程多线程并不是单一的多进程或多线程,而是多进程和多线程,往往会在写一个大型应用时才会用到多进程多线程的模...
2020-07-05 23:06:31
226
原创 如何定制Linux外围文件系统?
一般来说,我们所说的Linux系统指的是各种基于Linux Kernel和GNU Project的操作系统发行版。为了掌握Linux操作系统的使用,了解 Linux操作系统的运作过程,理解内核与外围支撑系统的关系,加深对开源操作系统的认识,我决定造个轮子——自己定制一个Linux文件系统。这里有两种实现方法:直接自己实现init(M1)加载bios 的硬件信息-> 读取MBR –>执行Grub ->加载kernel–> 加载驱动–> init –> 执行bash
2020-06-18 19:32:09
246
原创 ubuntu中swap(虚拟内存)设置
添加swap用free查看swap分区大小free -m创建一个swap文件夹mkdir swapcd swapsudo dd if=/dev/zero of=swapfile bs=1024 count=100000其中count的大小对应swap的大小,如上述代码所示count=100000为大约100M注:设置count值时要注意,如果设置swap大小超过硬盘大小,会导致设置完重启后,虚拟机ubuntu的图形界面进不去把生成的文件转换成swap文件mkswap swapfile
2020-06-18 19:31:48
676
原创 挂载根文件系统
1、制作根文件系统Linux中就有制作根文件系统的工具,mke2fs.只需要找到一个目录,然后依次执行下面的命令就行dd if=/dev/zero of=rootfs.ext2 bs=1024 count=2048losetup /dev/loop1 rootfs.ext2mke2fs -m 0 /dev/loop1 2048 mount -t ext2 /dev/loop1 ./rootfs/
2020-06-18 19:31:16
1174
1
AN平台中端人证及访客ThreadPool.zip
2020-08-16
AN平台中端人证及访客sogou_explorer_8.6.1.31812_4600.perf.unfold
2020-03-30
AN平台中端人证及访客sogou_explorer_8.6.1.31812_4600.rarelfutils-0.178.tar.bz2
2020-03-29
AN平台中端人证及访客sogou_explorer_8.6.1.31812_4600.rarltrace.rar
2020-03-29
AN平台中端人证及访客sogou_explorer_8.6.1.31812_4600strace-4.5.18.tar.bz2
2020-03-29
FlameGraph.rarAN平台中端人证及访客sogou_explorer_8.6.1.31812_4600
2020-03-29
AN平台中端人证及访客sogou_explorer_8.6.1.31812_4600.rar
2020-02-25
SecureCrt.v.7.0-kg.rar
2020-02-18
ffmpeg-4.2.rar
2020-02-14
netkit-ftp-0.17.rar
2020-02-14
live555-latest.tar.gz
2020-01-16
AN平台中端_美颜算法预研
2019-11-21
AN平台中端人证m.rar
2019-11-01
AN平台中端人证gfx_rotate_sample.zip
2019-11-01
AN平台中端人证gfx_copy_sample.zip
2019-11-01
AN平台中端人证及访客common.rar
2019-11-01
AN平台中端人证及访客V1.0项目DSP设计文档ACS_DSP_NT_V
2019-10-31
使用下载好的sourceinsight4.exe替换已安装好的sourceinsight4.exeSourceInsight.zip
2021-05-31
业界承认的内存带宽测试工具occlum-master.zip
2021-05-17
AN平台中端人证及访客callgrind.out.2789
2021-04-03
AN平台中端人证及访客qcachegrindyy.rar
2021-04-03
AN平台中端人证及访valgrind-3.17.0.tar.bz2
2021-04-03
AN平台中端人证及访客embedded_linux_optimizations.odp
2021-03-29
clipper.chrome.zip
2021-03-21
AN平台中端人证及访客V1.0项目DSP设计文档linux-4.16.8 AN平台中端人证及访客V1.0项目DSP设计文档AN平台中端人证及访客perf.svg
2021-02-05
TTS音频生成工具(第二版).rar
2020-09-30
sysstat.rar
2020-07-04
AN平台中端人证及访客V1.0项目DSP设计文档linux-4.16.8 AN平台中端人证及访客V1.0项目DSP设计文档mytest.rtp
2020-06-07
AN平台中端人证及访客rtp.pcap
2020-05-31
h264rtpdup.pcap
2020-05-31
AN平台中端人证及访客valgrind-3.11.0.tartest.rar
2020-04-18
AN平台中端人证及访客sogou_explorer_8.6.1.31812_4600.perf.unfold perf.svg
2020-04-02
多个网络放在一起要怎么优化
2022-11-20
sdf gradient
2022-11-20
‘PyTypeObject {aka struct _typeobject}’ has no member named ‘tp_print’; did you mean ‘tp_dict’?
2022-11-09
这样去迭代了么 这个机制的key word是什么
2022-11-08
运行torch报错cuda
2022-11-07
序列照片运行colmap,怎么确认得到的camer pose是否正确?
2022-11-04
自动曝光算法的难点在什么地方?
2021-06-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅