使用zoom预览出图和系统相机预览出图,画质不一样的问题分析

1、问题背景

最近在基于 Android 的平台调试一款摄像头,客户有反馈一个问题,系统自带的 Camera2 app 预览出图是正常的,但用 Zoom app 打开摄像头,出图画面存在畸变、锯齿、过曝的问题,现象如下图所示。

2、问题分析

这里是存在3个问题,畸变、锯齿、过曝,我们依次来做分析。

a、关于畸变

首先我们是针对不同分辨率下做过畸变校正的,预览、录像、拍照分别对应的是三路流,出不同的分辨率。预览是1080P、录像是4K、拍照是全尺寸,所以查看一下用 Zoom 出图时此时走的是哪路流,出的分辨率是多少就可以了(我是通过dump 实时的yuv,可以看到输出的yuv的尺寸来确定的)。

有确认到用 Zoom 出图时,出的是 640x480 的分辨率,他是从全尺寸直接 resize 成 640x480 的 ,我们未做过这个分辨率下的畸变校正,所以增加一组 640x480 下的畸变校正参数即可解决。

这里要提一下,关于畸变校正为什么不可以直接在 sensor 出来的原始尺寸上去做,而是要分别基于从原始数据源分出的预览、录像、拍照三路上单独去做呢?如果是基于原始尺寸去校正,那之后的 crop、downscale 就不会存在畸变,也不用单独基于每个分辨率去增加畸变参数那么麻烦了(这里的前提是 sensor 只有一组setting,只有一个数据源输出)。 

1>. 一般关于畸变校正是有单独的一个硬件模块去做处理的,目前我们这个平台 ISP 是直接出三路,没办法在中间先过畸变校正的模块。

2>. 另外一点就是 crop /dowscale 之前做,只适合 1080P 这样的尺寸,尺寸太大了,硬件性能会不够(而对于全尺寸的拍照可以做,是因为拍照只是取视频流中的一帧,录像和预览则是实时的数据流都要处理 )。

b、关于锯齿

锯齿的成因有很多,ISP中调试参数的问题、全尺寸到小尺寸resize的处理、camera apk 的处理等等,可以依次一步一步的 dump 数据进行比较,确认是哪个模块的问题,再去做相应的处理,但首先得了解这个视频出流的 pipeline, 都经过了哪些模块,才好去做排查。

但我这里的问题是 Zoom 预览出图是 640x480, 而系统相机 Camera2 预览出图是 1920x1080,这就没啥可比性了, 要用更少的像素来显示同样数据的场景,小分辨率下肯定是会锯齿比较明显,所以这里是正常现象,如果是同分辨率下,存在锯齿的差异,那就要去按出流的 pipeline 去排查原因了。

c、关于过曝

同样的我们要判断 Zoom 出图时走的是哪路流,然后是哪个模块导致的,是 Zoom app 类似自带的美颜效果处理导致的、还是 ISP 当中哪个模块调试参数导致的、还是从全尺寸 resize 到 640x480 的处理导致的。

1>. 首先通过指令确认 Zoom 和系统相机预览时,走的是否是同一路,确认结果是走的同一路。

2>. 场景亮度不变,在固定AE下,分别 dump camera2 预览的截屏和 yuv,及 zoom 预览的截屏和 yuv 来对比亮度结果。

camera2 预览的截屏和 yuv 亮度是一致的。

zoom 的预览截屏和 yuv 亮度是一致的。

camera2 预览的截屏和 zoom 预览的截屏亮度不一致,zoom 预览画面亮度高。

camera2 预览的 yuv 和 zoom 预览的 yuv 亮度不一致,zoom 预览的 yuv 亮度高。

从上面比较结果可知,app 的表现和 yuv 的一致,那就不是 app 的处理导致。但两个尺寸的 yuv 亮度结果不一致那就需要继续往上排查。

3>. 将 camera2 的预览和拍照,都设置成 640x480 输出,分别 dump 640x480 预览和拍照的 yuv,确认下效果。

结果是拍照的 yuv 亮度正常,预览 yuv 亮度过曝,所以问题就是,在分辨率为640x480下,预览这路有问题。

预览和拍照都用的同一套效果参数,且AE固定,场景不变,且1080P 下的预览效果是正常的,那就不大可能是 ISP 调试参数的问题。

只有可能是预览这路从全尺寸 resize 成 640x480 的处理导致的,最后确认结果确时是 resize 处理相关,调整寄存器参数,更新驱动后解决。

3、问题总结

对于基于Android 平台调试 Camera 来说,客户通常会使用到很多第三方的Camera app, 对于不同app 出图效果不一致的问题,可以参考上述过程来做相应排查。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/98227.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka--kafka基础概念-ISR详解

kafka基础概念-ISR详解 主要是讲 主 往 从同步中的问题 当绿色P1接收到写入的数据,要同步到紫色的P1S1和P1S2 如何保证一致性呢? 使用In Sync Replicas 也就是ISR概念 为什么不一致的? 因为P1S1同步数据 可能花费 50ms P1S2可能花费60ms…

java Spring Boot properties多环境配置拆分文件管理

上文 java Spring Boot yml多环境拆分文件管理优化 我们用yml 做了一个多环境配置文件的拆分管理 我们将 application.yml 改为 application.properties 参考代码如下 spring.profiles.activedev我们知道 yml 是用 : 来区分高低基本 而 properties是直接通过 . 来表达 其他基本…

重新认识小米

被镁光灯聚焦的企业,总是会被贴上各种标签。 8月14日,小米科技创始人雷军以“成长”为主题的年度演讲,刷遍社交网络。提到小米,你首先想到什么?手机发烧友、极致性价比,还是最年轻的500强? 这…

OLED透明屏采购指南:如何选择高质量产品?

着科技的不断进步,OLED透明屏作为一种创新的显示技术,在各个行业中得到了广泛应用。 在进行OLED透明屏采购时,选择高质量的产品至关重要。在这篇文章中,尼伽将为您提供一个全面的OLED透明屏采购指南,帮助您了解关键步…

ArcGIS Pro如何制作不规则形状图例

在默认的情况下,ArcGIS Pro生成的图例是标准的点、直线和矩形的,对于湖泊等要素而言,这样的表示方式不够直观,我们可以将其优化一下,制作不规则的线和面来代替原有图例,这里为大家介绍一下制作方法&#xf…

嵌入式设备应用开发(boost库应用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 嵌入式开发过程中不可避免在很多情况下,需要使用到posix的api函数。一方面,这些api函数确实可以帮助我们解决一些问题;但是另外一方面,因为平台的差异,如果一段时间不做嵌入式…

No114.精选前端面试题,享受每天的挑战和学习

文章目录 vue3中的ref、toRef、toRefs说明下TS的优缺点说下函数式组件说下函数式编程 vue3中的ref、toRef、toRefs 下面是对Vue 3中的ref、toRef和toRefs进行比较的表格: reftoReftoRefs参数类型值类型或引用类型响应式对象响应式对象返回值Ref 对象Ref 对象响应式…

cmake扩展(5)——file命令排除部分文件

在cmake中可以使用file命令获取需要的文件&#xff0c;并且支持正则/通配符&#xff0c;使用起来还是很方便的。 #语法file({GLOB | GLOB_RECURSE} <out-var> [...] [<globbing-expr>...])#example file(GLOB_RECURSE SOURCES "src/*.h" "src/*.cp…

http库 之 OKHttpUtil

源码位置 方便实用&#xff0c;个人感觉不错 依赖 <dependency><groupId>io.github.admin4j</groupId><artifactId>common-http-starter</artifactId><version>0.7.5</version> </dependency>代码实践 /*** 通用http的pos…

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)。 一、简介 单点登录(Single Sign On),简称为 SSO。 它的解释是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 ❝ 所谓一次登录,处处登录。同样一处退出,处处退出。 ❞ 二…

基于ChatYuan-large-v2 微调训练 医疗问答 任务

一、ChatYuan-large-v2 上篇基于ChatYuan-large-v2 语言模型 Fine-tuning 微调训练了广告生成任务&#xff0c;总体生成效果还可以&#xff0c;但上篇文章的训练是微调的模型全部的参数&#xff0c;本篇文章还是以 ChatYuan-large-v2 作为基础模型&#xff0c;继续探索仅训练解…

Centos 8 网卡connect: Network is unreachable错误解决办法

现象1、ifconfig没有ens160配置 [testlocalhost ~]$ ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopba…

基于HTML+CSS+Echarts大屏数据可视化集合共99套

基于HTMLCSSEcharts大屏数据可视化集合共99套 一、介绍二、展示1.大数据展示系统2.物流订单系统3.物流信息系统4.办税渠道监控平台5.车辆综合管控平台 三、其他系统实现四、获取源码 一、介绍 基于HTML/CSS/Echarts的会议展览、业务监控、风险预警、数据分析展示等多种展示需求…

Python绘制爱心代码(七夕限定版)

写在前面&#xff1a; 又到了一年一度的七夕节啦&#xff01;你还在发愁送女朋友什么礼物&#xff0c;不知道怎样表达你满满的爱意吗&#xff1f;别担心&#xff0c;我来帮你&#xff01;今天&#xff0c;我将教你使用Python绘制一个跳动的爱心&#xff0c;用创意和幽默为这个…

【面试专题】Java核心基础篇②

&#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;Java面试专题 目录 1.接口和抽象类有什么区别&#xff1f; 2.两个对象的 hashCode() 相同&#xff0c;则 equals()也一定为 true&#xff0c;对吗&#xff1f; 3.说一说hashCode()和equals()的…

机器学习基础之《分类算法(3)—模型选择与调优》

作用是如何选择出最好的K值 一、什么是交叉验证&#xff08;cross validation&#xff09; 1、定义 交叉验证&#xff1a;将拿到的训练数据&#xff0c;分为训练和验证集。以下图为例&#xff1a;将数据分成5份&#xff0c;其中一份作为验证集。然后经过5次(组)的测试&#x…

【简单认识Docker基本管理】

文章目录 一、Docker概述1、定义2.容器化流行的原因3.Docker和虚拟机的区别4.Docker核心概念 二、安装docker三、镜像管理1.搜索镜像2.下载&#xff08;拉取&#xff09;镜像3.查看已下载镜像4.查看镜像详细信息5.修改镜像标签6.删除镜像7.导出镜像文件和拉取本地镜像文件8.上传…

cloud 问题

eureka 自我保护机制 eureka 是定时去拿 统计最近15分钟的eureka实例正常的心跳占比&#xff0c;如果低于85%&#xff0c;那么就会触发自我保护机制。 触发了自我保护机制&#xff0c;eureka 暂时会把失效的服务保护起来&#xff0c;不让其过期&#xff0c;但是这些服务也不是…

用讯飞星火认知大模型构建一个带界面的聊天机器人

在本篇博客中&#xff0c;我们将使用 最新的星火认知大模型和 Tkinter 构建一个简单的聊天机器人界面。通过这个界面&#xff0c;用户可以与聊天机器人进行交互&#xff0c;并查看机器人的回答。 C:\pythoncode\blog\static_16919367030710594_SparkApi_Python\testui.py 准备…