自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 线程相关使用

【代码】线程相关使用。

2025-07-21 17:01:50 168

原创 错误机制的设计

总结:本质就是利用一个32位的整形数,对这32为进行区分,前多少为用来当id,后多少为用来当错误码,实现错误打印时候的区分。显然module向左移了20位,那么前20位可以是我们自己定义的错误码,而20-31可以是我们的模块id。有些高级的时候,需要细分当错误出现的时候究竟是什么错误,那么就可以进行更高级的设计。那么最上面的实例代码就可以进行一个修改,代码如下,这样就可以对错误码进行一个解析。2、可以让多次使用的判断代码进行封装后,达到更好用的效果。例如:当使用指针时,需要判断指针是否为NULL。

2025-07-09 17:31:15 228

原创 图像质量对比感悟

这个软件非常好用,便于两张图片的比较。

2025-06-26 17:34:58 1208

原创 RAW数据转换成RGB数据

上图RAW图中,每个像素点只有一种颜色信息,但是RGB的图像中,每个像素应该有3种色彩信息,因此要进行插值处理。我们可以便利每个像素点,在该像素点上获取其他两种颜色信息就可以得到一个像素的GRB颜色信息。传感器RAW通常是10-14位,需缩放为8位RGB。说明:RAW数据转换成RGB数据是通过插值得到的。在R行:R取左右平均,B取上下平均。在B行:R取上下平均,B取左右平均。不同位置使用不同插值策略。B:取四个对角线B的平均。R:取四个对角线R的平均。G:取左右相邻G的平均。G:取上下左右G的平均。

2025-06-16 17:04:12 351

原创 c++指针使用

在实际项目中,小白往往会不注意指针的使用而导致项目的崩溃。因此,在次简单描述一下指针的使用。

2025-06-12 10:53:58 156

原创 高通录像功能

摘要:本文介绍了使用Camera2和MediaRecorder API实现视频录制的流程。主要步骤包括:创建MediaRecorder对象、设置音视频源(麦克风和SURFACE)、配置输出格式(MPEG-4)、设置文件路径、调整编码参数(10M码率、30帧率)、指定分辨率、选择编码格式(H264视频/AAC音频)、设置视频方向等。关键是通过mMediaRecorderSurface控制录像流程,最后完成prepare/start/stop/reset操作。整个过程需特别注意录像数据的传输和控制流程。

2025-06-10 14:13:54 257

原创 相机从app启动流程

目录如下:重点代码分析:启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的准备工作。

2025-06-09 14:51:23 1076

原创 高通camx CaptureSession

处理一个拍照的流程大致如下: 接口:CaptureRequest.Builder Builder = CameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE)描述:通过以上代码会根据传入createCaptureRequest的参数获取相应的builder示例:接口:CaptureRequest.Builder.setTag(int)CaptureRequest.Builder.addTarget(Surface)Captu

2025-06-06 16:22:01 448

原创 高通camx Node相关

node在camx和chi中均会存在,但存在的位置不一样。/vendor/qcom/proprietary/camx/src/(hwl/swl),例如:IFE,IPE,BPS,Sensor等。Chi中主要位于:android/vendor/qcom/proprietary/chi-cdk/oem/qcom/node/,例如:三方EIS,memcpy等。

2025-06-05 20:40:19 749

原创 高通LOG的使用方式

由于我是主攻camx,因此只展示这部分相关的loglog分成chi仓的log和camx 仓的logchi 仓库的log 用这个属性控制只看看到camx的打印可以使用指令

2025-06-05 14:49:25 1047

原创 初识高通camx

Chi对Camx的操作,需要通过进行操作,因此,CamX对外提供的接口扩展需要通过ExtensionModule进行,里面一个重要的变量就是。Camx对Chi的操作,是通过HAL3Module接口的进行的,因此chi里面释放的接口,都会在里面体现。(一定要先看此链接再看后续的)

2025-06-03 14:12:36 818

原创 初识高通平台收货总结(比较杂)

CamraHAL3数据流向图:Camera数据从sensor出来,首先会经过IFE,然后分预览/视频和拍照2种情况。如果是预览或者录像,是先经过IPE处理,最后输出到显示。如果是拍照,则是先经过BSP处理,然后再经过JPEG编码器,最后保存为图片输出。

2025-05-29 15:31:41 239

原创 高通usecase理解

CamraHAL3数据流向图:Camera数据从sensor出来,首先会经过IFE,然后分预览/视频和拍照2种情况。如果是预览或者录像,是先经过IPE处理,最后输出到显示。如果是拍照,则是先经过BSP处理,然后再经过JPEG编码器,最后保存为图片输出。

2025-05-23 15:21:34 742

原创 Sensor hdr 模式下不出图/出图异常的排查

30fps 1080Mbps的 setting 查看 log 有 mipi 传输的报错,而 15fps 540Mbps 的setting是没有的,后面咨询我们这边的大佬,提出让确认下mipi clock 的传输形式是怎样的,我们平台是只支持 mipi clock 的连续传输,不支持非连续的(这个是以前没了解过的)。和 sensor 厂确认了,他们给的是非连续的,这里就有问题了,Linear 模式是非连续的,但可以正常出图,这是不正常的。d、平台端查看单独输出长帧,短帧时的情况,确认是长帧还短帧的问题。

2025-05-20 13:57:27 884

原创 如何判断平台端,能否支持一款新sensor的点亮

raw数据常见的格式有:raw8, raw10, raw12,raw16,分别表示一个像素点有8bit、10bit、12bit、16bit数据,也就是存储每个像素所用的位数,要确认好sensor输出的raw格式,看平台端是否支持,我司平台支持raw8/raw10/raw12,主要用的是raw10;平台端每个型号的soc都有其最大支持分辨率的要求,这要查看平台的datasheet(下图是一款soc的datasheet对接入cis的说明),若要支持的sensor大于此分辨率则无法支持;

2025-05-20 11:44:01 389

原创 修改sensor输出帧率(包含实例)

首先我们先求pclk的值:pclk = frame_length ∗ line_length * fps,公式里的帧长和行长就是 VTS 和 HTS,这两个值 sensor setting 里就有,因为pclk是不变的,我们可以通过初始的30fps的setting来计算出 pclk 的值。“ 在项目中我们经常有修改 sensor 输出帧率的需求,目的可能是要通过降低帧率,来增加曝光时间,从而提升低照度下的图像质量、或者是通过降低帧率,来减少传输带宽、又或者是通过提高帧率,抓拍高速运动的物体等等。

2025-05-20 11:32:57 407

原创 Sensor点亮 bringup总结

一般我们在调试一款sensor 的效果时,首先要先把他点亮,也叫 sensor bringup,这部分工作大都由驱动工程师来完成,但有时也是需要tuning 工程师来做的。但其实如果顺利的话,在sensor驱动中配置好sensor setting、i2c地址、sensor的chip_id,就可以出图了,但大多数情况下,往往不会那么顺利,会遇到很多的问题,这里总结一下,整个sensor bringup的流程,以及遇到的一些问题。

2025-05-20 10:45:09 1020

原创 sensor调试流程

简述:日常工作中, 我们拿到一款新 sensor,一般都是先点亮,再接着调试效果。但点亮及调试也是有流程的,需按流程一步步去完成才可以,此文总结一下 ,关于 sensor 从点亮出图到效果调试的一个大致流程。

2025-05-20 09:57:53 1017

原创 图像中紫边出现原因

成像系统一般将绿色通道准确对焦,然而由于镜头色差,蓝色和红色通道不能完全准确对焦,从而使物体边缘出现紫红色的色边,之前工作当中有遇到过,当处于虚焦状态时紫边就看不到了,也正验证了此结论。

2025-05-19 17:35:12 218

原创 ISP中拖影问题的处理

有时候会出现如下的阴影问题该如何处理呢?本文将提供几个思路。

2025-05-15 10:14:00 616

原创 ISP有感自发

由于传感器,即便在无光的情况下,依然会产生微小的暗电流,这些暗电流可能是噪点会影响后期的调试。因此,我们便将这些电流处理为0,成为纯黑的颜色。可以在源头消除这些误差。如何矫正黑电平:在其中有个ob区域(Optical Black Region),这个区域是不感光的,但是也会接收到黑电平。因此,可以把有效区域的值减去ob区的值,这样就可以得到矫正后的值。:从传感器读取遮蔽区域的像素值(如每行的前若干列)。:取OB区所有像素的均值或中位数(避免异常值干扰)。:确保结果不小于0(避免负值)。

2025-05-14 11:45:48 897

原创 海思vio模块学习

②根据压缩模式配置vb_cfg中对应压缩模式的缓冲块大小,根据YUV海思raw配置缓冲块的个数。此时我们配置好了vb_cfg,接着我们只要用海思的接口ss_mpi_vb_set_cfg设置下去即可。使用ss_mpi_vb_set_supplyment_cfg进行vb属性的补充。①先配置vb_cfg中的缓冲池的最大个数max_pool_cnt,例子如下。2、配置完vb后,启动系统ss_mpi_sys_init。

2025-04-29 14:30:23 450

原创 海思dump图原理

第二个dump代表dump帧的位置,如果是0表示dump的是在所有ISP模块后面的数据,如果是1代表是整个wdr模块后的raw数据。3、设置获取帧的属性:设置压缩模式为不压缩,设置像素为RGB bayer类型的16bit数据。改变dump帧的深度:首先设置其深度,设置为2,因为YUV的UV是16bit,需要深度为2。3、设置vi BE帧的属性:设置BE帧的属性为dump在ISP模块后的数据。2、改变dump帧的深度, 用ss_mpi_vi_set_chn_attr。第一个1代表需要dump帧的数量。

2025-04-27 19:17:17 292

原创 camera知识学习

DSP(数字信号处理器),这个是介于sensor和ISP处理的一个处理阶段,会进行一些传感器方面的偏硬件处理,再进行数据格式的转换,将raw数据转换成RGB数据或者YUV数据。

2025-04-27 16:02:16 243

原创 摄影小技巧

出现情况:在弱光常出现概率更高。分类: 明度噪点、色彩噪点。

2025-04-24 19:51:27 200

原创 海思ISP调试记录

功能:表示在ISP BE config buffer的数量,BE Config Buffer 是图像处理流水线中的一个关键组件,主要用于 后端处理(Back End Processing)的配置数据管理。快速抓拍 :手机相机APP启动时,优先使用 quick_start 加载默认配置,确保第一帧图像在100ms内输出,后续再通过3A算法逐步优化参数。参数意义:0表示不快速启动,ISP初始化时配置sensor序列,1表示快速启动,ISP初始化是不配置sensor序列。海思ISP中的关联模块。

2025-04-24 19:12:28 463

原创 【c】信息传递,从一个cpp文件传输到另一个cpp文件

用类封装后是更安全的,因为在第一种方法中,参数是在private中,因此在类外,控制参数只能使用类中的getmessage这个函数来改变或者获取值。而在第二种方法却可以随意修改。上面代码用于将一个cpp文件中的某些参数放入一个结构体中,让这些参数可以在其他cpp文件中赋值并使用。那两种方法的区别在哪里呢?

2025-04-22 15:19:18 216

原创 YUV 数据到NV12的转换

YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,关于其详细原理,可以通过网上其它文章了解,这里我想强调的是如何根据其采样格式来从码流中还原每个像素点的YUV值,因为只有正确地还原了每个像素点的YUV值,才能通过YUV与RGB的转换公式提取出每个像素点的RGB值,然后显示出来。大致意思是:先存储完所有的Y,后面紧跟着存V,V的步长(也就是宽)是Y的步长的一半,V的行高是Y的一半。存储顺序是先存Y,再存U,再VU交替存储。

2025-03-21 14:46:57 1004

原创 如何修改sensor的帧率

首先我们先求pclk的值:pclk = frame_length ∗ line_length * fps,公式里的帧长和行长就是 VTS 和 HTS,这两个值默认的setting里就有,因为pclk是不变的,我们可以通过初始的30fps的setting来计算出 pclk 的值。输出帧率的需求,目的可能是要通过降低帧率,来增加曝光时间,从而提升低照度下的图像质量、或者是通过降低帧率,来减少传输带宽、又或者是通过提高帧率,抓拍高速运动的物体等等。本文主要介绍的就是如何修改 sensor 的输出帧率。

2025-03-14 14:46:42 474

原创 对coms曝光时间的理解

Rst与第一次readout的时间即为每一行的曝光时间。

2025-03-14 13:48:58 837

原创 积分时间和快门时间的设置

快门时间(Tsh)则是控制图像传感器曝光的总时间,它结合了积分时间和一些精细调整参数,以实现对曝光的精确控制。:这是粗积分时间(Coarse Integration Time)的缩写,它是一个与积分时间相关的参数,通常用于控制图像传感器的曝光时间。:这是精细积分时间扩展(Fine Integration Time Extension)的缩写,它是一个更精细的调整参数,用于在粗积分时间的基础上进行微调,以达到更精确的曝光控制。:同上,这是每个像素行的长度,用于将精细积分时间扩展转换为与行数相关的时间量。

2025-03-13 17:22:40 395

原创 帧率的计算

帧率(Frame Rate)的单位是帧每秒(frame/s),表示每秒显示的帧数。这是每帧所需的总时钟周期数。换句话说,它表示一帧画面需要多少个像素时钟周期来完成传输或显示。帧率是通过总的时钟周期频率(每秒的周期数)除以每帧需要的周期数来计算的。分子整体表示每秒可以处理的。

2025-03-13 16:12:38 1921

原创 MIPID 常用

mipi

2025-03-10 20:38:18 304

原创 逻辑分析仪使用

对于串口而言,需要修改的位置。

2024-11-29 10:34:43 284

原创 【c++】select的用法

可参考链接。

2024-11-25 11:51:30 234

原创 【c++】cpp程序编译过程,动态库和静态库制作过程和原理

每个程序通过源程序变成静态库,嵌入到每个程序的代码段中。因此每有一个程序需要某个源代码,就需要生成一份静态库文件。同一份代码存放在代码段存放了三份,内存消耗严重:因为每次都是编写好静态库再使用,这个静态库,如果代码更新了,则要重新编译静态库。:当编译完静态库之后,则与源程序就无关了,因此没有源程序,使用静态库即可独立运行。

2024-11-19 17:58:38 306

原创 【c++】区分接口继承和实现继承

设计类中的函数时候,应该注意使用纯虚函数还是,虚函数,还是non-virtual函数。:基类无法被创建对象,强制派生类重写提供具体的实现。:用于实现运行时的多态,允许派生类重写。:具体指定接口继承以及强制性实现继承。

2024-11-18 16:21:58 90

原创 【c++】避免遮掩继承而来的名称

3、对于父类重载,子类重写了其中的某个函数,想在main函数中调用子类的另一个函数。1、好的代码不应该让其通过编译,而不是在运行的时候体现出来。2、要明确作用域的概念,知道怎么找对应的名字。

2024-11-18 14:50:24 215

原创 shell脚本杂碎汇总

这个模板是一个典型的命令框选择模板。do的配对是done;easc是用于结束case,就不会往后面的case走了;每一个选项后面要加一个),告诉编译器该选项结束。break是解释select。*)表示除上面外的所有按键。开头一般需要添加 #/bin/sh。① select,模板如下。

2024-11-15 14:10:37 212

原创 【c++】类型的强转,static_cast

强转,经常在实际的函数中,需要将void*类型的数据强转为对应类的指针,此时就可以使用static_cast。

2024-11-13 16:22:52 101

空空如也

空空如也

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

TA关注的人

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