ISP图像质量自动化测试方法

背景介绍

ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了摄像机的成像质量。

ISP这个主要用在视频监控设备、相机等。测试方法和场景适用于:IPC设备,手机相机等。

关键词

ISP(Image Signal Processor) IPC图像质量 图像质量算法测试 自动化测试

本文主要介绍一种测试IPC图像质量的测试方法,测试方法的思路基于用户的使用场景,以及算法的适应,自动化测试图像质量的方法;按照自然的方法进行测试,记录下ISP算法的参数变化以及对应的图像质量,根据这些数据来改善图像质量。

1       当前测试方法不足

IPC图像质量测试现状已经有了一套非常规范的测试方法,在不同的灯光下测试色彩还原能力,测试宽动态等,有专业的测试软件,例如Imatest等,可以基于这些方法和工具进行设备之间的对比测试,给出全面的图像质量的评价。

但是这样的测试有几个地方没有考虑到:

  • 不能进行自动化测试,需要人工搭建测试环境,进行人工采集测试结果并分析,测试效率较低。
  • 脱离了设备实际应用场景,只是模拟了典型场景,离真实环境还有一段距离。
  • 只是单点的测试ISP的算法,没有测试到算法的适应性以及算法中间的过渡。
  • 没有记录算法中间的变化过程。不能纵向记录ISP算法的参数变化,即按照时间的顺序记录算法调整的变化。

2       测试方法介绍

基于上述测试方法的不足之处,我们能否有一个测试方法,放置设备在一个固定的地点,记录下IPC设备全天图像变化的情况,观察设备随着时间变化图像质量的变化,可以以24小时为周期测试,记录24小时的图像变化,然后判断IPC图像质量的效果。根据这个思路,方法有两个:

  • 按照时间间隔定期抓取图片
  • 根据ISP参数的变化抓取图片

因为我们需要测试ISP图像质量,所以根据ISP参数的变化来抓取图片比较合理。

结合产品的特性,可以按照下面的测试方法进行测试:

实时获取影响ISP算法参数的值(例如:YUV数值,快门,增益,iris),作为基准数据;一秒钟后,获取值,并与基准数据做比较,如果有变化,则调用ISP算法接口,截取一帧的数据转换为JEPG格式保存,并记录下当前的YUV数据值;保存当前的YUV数据位基准参数。重新获取YUV值,与基准参数比较,如果有变化,抓取图片,保存基准参数。

如此循环,可以记录ISP算法的变化和图像质量情况,可以根据算法的变化曲线进行优化算法等。

测试流程图如下:

3       测试方法的优缺点分析

  • 优点:
    • 实现图像质量测试自动化,做到全天候测试,数据收集更加丰富
    • 可以实现多台设备同时测试,测试效率更高
    • 测试场景与客户真实使用场景一致,更加真实
    • 可以记录ISP参数全天以及更长时间的变化,为优化算法提供基本数据
    • 测试成本低,不增加新的设备和仪器,利用现有资源测试
    • 测试方法简单,结果观察方便
    • 不涉及到图形界面操作,测试可靠性较好
  • 缺点
    • 因测试原理为视频数据抽帧转为图片格式,中间有转换损失(如果直接调用前端抓拍接口,则不存在此问题)
    • 无法直接判断测试结果,需要人工判断(如果有图片质量评比工具就可以自动判断了)
    • 必须由开发人员对代码做一些修改或者调整
    • 测试依赖环境的自然变化,测试验证场景单一
    • 在实际测试中发现,每天测试生成的图片非常多,查阅测试结果需要一定的时间。(这个可以根据参数的阈值来调节,但是阈值设置需要验证)

4       开发支持准备

需要在软件添加两个接口,并注册到OSP模块,用来测试使用

一是:获取YUV值参数信息

获取ISP算法的参数,3A等参数信息。

二是:从数据流中保存一帧数据,转换为图片并保存

测试接口的功能类似于相机的拍照功能,根据参数触发图像数据抓拍

5       测试方法实现

根据测试方法描述,测试实现较为快速高效的实现是使用脚本来进行控制。需要使用FTP,Telnet功能。

脚本功能分析,根据上述测试思路,实现自动化测试,选取Python脚本来实现。

需要实现的模块有:


编号


模块名称


模块功能


1


YUV数据获取模块


telnet到设备,执行名称,获取YUV数据


2


YUV数据提取模块


从返回的数据中提取出YUV数据数值


3


抓取图片模块


执行抓取图片命令,获得当前参数下的图片


4


FTP下载图片模块


用ftp方法把图片从设备保存到本地目录


5


输出测试报告模块


根据YUV数据,图片,以及时间输出html格式测试报告

6       测试方法应用

前面章节介绍了传统测试方法的缺点,也介绍了此测试方法的优势。但是此测试方法不能替代原有的专业的ISP图像质量测试方法,但是可以作为快速验证、回归测试以及对比测试的方法。

快速验证:现在每天都有版本出来,靠传统方法难以快速验证,利用此方法可以做到验证每天版本的ISP图像质量。

回归测试:在ISP算法调整后,回归测试算法调整效果。ISP算法调整后,用此测试方法验证算法的基本情况以及适应性。

对比测试:同时测试两台设备的效果对比,快捷方便。

7  自动化图片质量打分

测试脚本选用python实现,可以利用opencv库,对于抓取的图片生成图片的直方图,然后对于这些直方图数据进行对比,比较这些图片的相似度。同时也可以设置一些基准图片,抓取的图片与这些基准图片进行对比,给出一个打分。

直方图数据比较脚本。

#sudo pip install PIL
def pil_image_similarity(filepath1, filepath2):
from PIL import Image import math
import operator
image1 = Image.open(filepath1)
image2 = Image.open(filepath2)
# image1 = get_thumbnail(img1)
# image2 = get_thumbnail(img2)
h1 = image1.histogram()
h2 = image2.histogram()
rms = math.sqrt(reduce(operator.add, list(map(lambda a,b: (a-b)**2, h1, h2)))/len(h1) )
return rms

此段代码使用了:monkey  https://testerhome.com/topics/202

8  图像质量人工测试

 

自动化测试脚本每天可以抓取大量的图片,这些图片可以直接浏览,主观评价这些图片的质量,并且可以看到每天不同时段的图片质量的变化,以及isp算法的适应性,调整是否合理等。

特别是日夜模式切换时图片质量的变化;光线情况快速变化时,ISP算法的适应性等。


时间: 2024-10-29 19:09:43

ISP图像质量自动化测试方法的相关文章

关于 Android 下的自动化测试方法介绍

前言: 现在Android开发非常红火,Java环境下敏捷开发是不二选择.而敏捷开发都是测试驱动.所以,最近研究了一下Android下的各种自动化测试手段.本文重点在于面上的比较而非点上的细节.时间比较短,所以很可能理解很不充分. http://blog.csdn.net/pugongying1988/article/details/6976069 关于 Android 下的自动化测试方法介绍

WiFi无线连接真机进行Appium自动化测试方法

有时需要测试APP 产品的耗电问题,但用自动化又面临了一个USB接电脑供电的问题,从而导致计算出来的功耗与手动跑,存在有很大的误差,因此可使用wifi无线连接到手机进行自动化测试,解决功耗问题. 前提条件: 1.确保手机已经开启Root权限 2.手机和PC 要在一个网段(从PC端可以ping通手机端的IP地址) 方法一: 可以在应用市场商店里面下一个叫 Wireless ADB并安装好. 勾选Wireless ADB启动,还可以在设置端口号. 然后执行命令:adb connect 192.168

Android 程序员必须掌握的三种自动化测试方法

在日常的开发中,尤其是app开发,因为不像web端那样 出错以后可以热更新,所以app开发 一般对软件质量有更高的要求(你可以想一下 一个发出去的版本如果有重大缺陷 需要强制更新新客户端是多么蛋疼的事情). 恩,所以我们app的开发者 一定要学会自己测试自己的代码 自己测试自己的app,不要寄希望于测试来帮你找bug,实际上,我工作多年的经验告诉,绝大多数隐藏极深的bug 都是开发自己发现的. 所以 今天就来教大家几招,如何测试自己的app,测试自己的模块. 1.Monkey http://de

web自动化测试之百度经验-HTTP层面的Web Service自动化测试

前言 我们之前在测试web service的时候尝试过多种方法:比如使用SoapUI:使用本地代理类编程等.前者不太方便做自动化,后者是从SOAP协议层面进行测试,数据组织不太方便,测试程序相对复杂,并且扩展性不好. SOAP协议大多使用HTTP绑定,我们发现使用HTTP直接向web service server发送数据包可以做到接口无关,不同的接口对于HTTP请求来说只是包的内容和目标url不同.这样可以将修改测试程序的工作转变为构造数据的工作,一方面在数据量较小的情况下可以减小测试准备和执行

Android自动化测试之Monkeyrunner学习笔记(一)【转】

因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyrunner.Athrun.appium,目前仍在了解学习android测试框架.CTS等.本文主要为前段时间学习总结,由于刚接触不久,故本文难免会有些肤浅,大神请绕走~ [目录] 1.Monkeyrunner简介 2.Monkeyrunner工具特性 3.Monkeyrunner工具同Monkey工具的差别 4.运行Monkeyrunner 5.实例 6.学习笔记

软件安全测试方法

近来,在我负责的公司某软件产品的最后测试工作,常常被问到这样一个问题:在做测试过程中,我们的软件产品在安全性方面考虑了多少?应该如何测评一个软件到底有多安全? 这个软件因为涉及客户商业上重要的信息资料,因此用户关心的核心问题始终围绕“这个软件安全吗”.一个由于设计导致的安全漏洞和一个由于实现导致的安全漏洞,对用户的最终影响都是巨大的.我的任务就是确保这个软件在安全性方面能满足客户期望. 什么是软件安全性测试 (1)什么是软件安全 软件安全属于软件领域里一个重要的子领域.在以前的单机时代,安全问题

DLL接口自动化测试总结

1. DLL接口测试方法介绍 在最近测试的项目中,系统给业务端提供DLL文件,业务端通过DLL文件中的C++接口实现系统功能,这就需要对DLL中的C++接口进行详细功能测试. 本文主要介绍项目测试中使用的DLL接口测试方法及基于AutoIT实现的DLL接口自动化测试方法. 1.1 VS2005 通过VS2005可以直接加载DLL文件中的C++接口,模拟业务端调用,传递一些参数值从而验证接口返回码等功能是否正确接口.这部分代码,类似与白盒测试中编写的驱动模块,需要有一定的C++编程基础. 项目初期

安全测试-优秀测试工程师必备的4项安全测试方法!

用您5分钟时间阅读完,希望能对您有帮助! 一.安全性测试 1.安全性测试方法测试手段可以进行安全性测试,目前主要安全测试方法有: 1)静态的代码安全测试 主要通过对源代码进行安全扫描,根据程序中数据流.控制流.语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞. 静态的源代码安全测试是非常有用的方法,它可以在编码阶段找出所有可能存在安全风险的代码,这样开发人员可以在早期解决潜在的安全问题.而正因为如此,静态代码测试比较适用于早期的代码开发阶段,而不是测试阶段. 2)动态的**

自动化测试到底是什么

引子 偶然在群里有人问自动化测试到底是啥,搞不懂.qtp对象库好麻烦,jmeter怎么做测试....一堆一堆的问题.其实说实话真心不知道该咋解答了,我的内心是累的~ 突然想到自己的新书里不就解释过这些吗!看来还是很多童鞋对于自动化测试的认知存在巨大的问题啊! so,以下内容选择<小强软件测试疯狂讲义> 重新认识性能测试之后我们再来看看自动化测试到底是什么.其实这个话题我在不同的场合多次谈过,甚至在我创办的"挨踢脱口秀"中也专门做了一次节目来说明,但可惜的是仍然有很多朋友对自