摄像头工程师说 Camera-如何控制摄像头的输出尺寸(分辨率)

news2024/12/26 22:54:09

计算机视觉 Camera-如何控制摄像头的输出尺寸(分辨率)

  • 摄像头工程师说 Camera-如何控制摄像头的输出尺寸(分辨率)
    • windowing
    • Cropping
    • Skip/Subsample
    • Scale
    • Binning
    • 总结

摄像头工程师说 Camera-如何控制摄像头的输出尺寸(分辨率)

摄像头 sensor 的技术手册中往往标识了其支持的最大输出尺寸,如下:
在这里插入图片描述
在最大尺寸为 2688 x 1944 的情况下,如何获取一个适合自己的输出尺寸,如 1920 x 1080,有多种方法。典型的有:windowing、crop、subsample、skip、binning、scaling 几种。今天我们就来唠唠这几种方法的区别和基本原理。

windowing

Windowing 方法是通过控制 camera sensor 的输出像素窗口来控制最终得到的图像分辨率大小的。
举例:
如下是一个像素矩阵,左下角为坐标(0,0)处。通过控制 sensor 输出窗口的起始坐标,以及输出窗口的长、宽就可以得到想要的分辨率。如起始坐标为(0,0),长、宽分别为 340 x 240,就可以得到一个 340 x 240 分辨率的输出。这种方法的优势是真正工作的 sensor pixel 减少了,曝光时间等参数缩小了,因此可以增加帧率。但是很显然,这种方式减小了 sensor 的视角。
在这里插入图片描述

Cropping

Cropping,即裁剪通常发生在 Camera sensor 的下级处理单元中,比如 ISP 或者 Codec。裁剪是指对于一个 1920*1080 的 sensor 输出图像,我们只裁剪其中的一部分。
如下,我们在原图中裁剪出一小部分作为最终的输出:
在这里插入图片描述
在这里插入图片描述
显然,与 windowing 不同,crop 是在得到图像后,指定一个起始地址和裁剪的长、宽来框定一个裁剪范围。有时在一些图像处理软件中,裁剪的过程称为 ROI,即 Region of interest,其意就是框定一个感兴趣的范围。如果 sensor 支持 crop,那么其实也是在原始数据输出后,从大尺寸上裁剪出来的,因此并不能改善帧率,同时,这种方法缩减了最终图像的视场角。

Skip/Subsample

Skip 和 Subsample 的原理类似,都是在 sensor 完成采集,输出数据(Readout)阶段,按照一定的规则只抽取部分像素点的数据作为输出来实现的。
如下所示,在输出数据时,可以隔列输出,将原本 8 列的数据,舍弃 4 列,仅输出剩余四列的像素对应的数据。
在这里插入图片描述
当然也可以行、列都仅输出部分的数据:
在这里插入图片描述
这种抽取部分像素的值进行输出方式承认会损失一部分图像细节,但因为像素点排列很紧密,还是能还原原始图像的大部分轮廓和颜色的。这种方式没有影响参与曝光的像素点的个数,仅仅是在 readout 阶段作了取舍。因此 Subsample 后的帧率与原始尺寸的帧率一样,不会加快帧率;此外Subsample 后的图像视角与原始尺寸基本一样,不会缩小图像视角。

Scale

Scaling 即缩放。Scaling 又分为 scale down 即缩小、scale up 放大。可以水平\垂直方向缩放,也可以水平、垂直同比例缩放,本质是相关位置的像素的分解与融合成更少、更多的像素。这种控制图像大小的方式,多出现在图像处理的后端,如 ISP 和 LCD 控制器上。
如下是一个水平缩放的效果示例:
在这里插入图片描述

Binning

Binning 发生在像素 readout 阶段,是一种合并读出的处理策略。与 Skip 不同的是,Binning 不是舍弃部分像素值,而是将所有相同颜色(通道)的像素值融合为一个像素值(可以简单认为是均值处理)输出。如下图所示为 2 x 2 binning(即水平、垂直方向均 2 倍融合),4 x 4 的 16 个像素的值,通过融合,变成了一个 2 x 2 的 4 个像素的值。这将数据量减小了 4 倍。
在这里插入图片描述
binning 通常可以加快帧率,改善低光照下的图像质量(多个像素感光性能好,信噪比高),并且保留了原始曝光像素的视角。

总结

1)本文讲述了几种控制 Camera 系统的输出图像尺寸-分辨率的方法,包含 windowing、Cropping、Skip、Subsample、Scale、Binning 几种方法。
2)不同的 sensor 、不同的 Camera 系统支持的控制输出尺寸的方法不同。不同的方法对图像的视场角、帧率、图像质量等的影响也不同。大家应该结合具体 sensor 的特性、产品需求使用合适的方法。
(感谢点赞或收藏,关注不迷路)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Google Chrome的新“IP保护”功能将隐藏用户的IP地址

导语:在保护用户隐私方面,Google Chrome正在测试一项名为“IP保护”的新功能。通过使用代理服务器掩盖用户的IP地址,这项功能能够增强用户的隐私保护。在意识到IP地址可能被用于秘密追踪后,Google希望在确保用户隐私的同时&#x…

《 汇编语言的系统学习》一、编程语言、机器语言与汇编语言

目录 《 汇编语言的系统学习》1、编程语言1.1 语言1.2 程序 2 编程语言分类2.1 机器语言2.2 汇编语言2.3 高级程序语言2.3.1 编译型2.3.1 解释型 《 汇编语言的系统学习》 1、编程语言 1.1 语言 定义:一种系统的,人与人之间通过声音、符号等进行交流的…

Qwt-QwtPlot类详解

1.概述 QwtPlot类是Qwt库中最重要的类之一,用于创建和管理绘图窗口。 QwtPlot类具有以下主要功能: 提供一个绘图窗口,可以在其中绘制简单或复杂的二维数据图。支持多种类型的图表,包括曲线图、柱状图、散点图等。能够自定义图表…

第一章: LangChain 生成与加载知识库并根据匹配内容回答问题

LangChain——让文本大模型更加智能化系列文章目录 第一章 langchain生成与加载向量库并根据匹配内容回答问题 文章目录 LangChain——让文本大模型更加智能化系列文章目录前言文章简介一、使用步骤1.引入库2.LLM加载3.数据加载4.数据切分与转换向量5.构建prompt5.查询知识库并…

进程的优先级与LAMP项目部署实战

一、进程的优先级(扩展) 1、什么是进程的优先级 Linux是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。哪些进程先运行,哪些进程后运行,就由进程优先级来控制 思考:什么时候需要用到进程…

线性表操作的实现--顺序表

本文参考朱战力老师的数据结构与算法--使用C语言一书 文章目录 前言 一、线性表是什么? 二、具体实现 1.顺序表的定义 2.初始化ListInitiate(L) 3.求当前元素个数ListLength(L) 4.插入元素ListInsert(L&…

js 导出文字到txt文件

简介: js 导出文字到txt文件 效果展示: 代码示例: /*** 导出文字到txt文件* param filename* param text*/ function exportToTxt(filename, text) {if (filename undefined) {filename "example-";}if (text undefined) {tex…

【IDEA配置】IDEA配置

参考视频:【idea必知必会】优化设置 告别卡顿 1. 显示内存 右击底下空白区域,出现memory indicator内存指示器,点击勾选即可显示。有的是在Settings->Appearance->Window Options里,如图所示: 2. 内存设置 …

傻瓜式调用阿里云的接口进行三要素(姓名、手机号和身份证号)校验

傻瓜式调用阿里云的接口进行三要素(姓名、手机号和身份证号)校验 一、准备1、购买阿里云的三要素核验套餐包2、申请开通三要素一致性核验3、查看AccessKey 二、调用三要素核验接口1、查看接口文档2、查看阿里云的调用示例3、阿里云完整示例代码4、改造后…

高级深入--day39

(实战项目三)新浪网分类资讯爬虫 爬取新浪网导航页所有下所有大类、小类、小类里的子链接,以及子链接页面的新闻内容。 效果演示图: items.py import scrapy import sys reload(sys) sys.setdefaultencoding("utf-8")class SinaItem(scrapy.I…

STM32Cube高效开发教程<基础篇>(七)----基础定时器

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。    本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。 一、 概述 STM…

new Vue() 发生了什么?

目录 前言 用法 代码和效果图 效果图 理解 高质量的使用 前言 Vue.js是一个流行的JavaScript前端框架,用于构建单页面应用(SPA)和用户界面。当我们使用new Vue()来创建一个Vue实例时,Vue会执行一系列的初始化过程&#xff0…

Tomcat 和 HTTP 协议

目 录 HTTP 协议HTTP 是什么理解 HTTP 协议的工作过程抓包结果HTTP请求HTTP响应 HTTP 请求 (Request)认识 URL认识 "方法" (method)认识请求 "报头"(header)认识请求 "正文" (body) HTTP 响应认识 "状态码" (st…

NFS性能瓶颈分析

前言 atop – run it with -d option or press d to toggle the disk stats view. iostat – try it with the -xm 2 options for extended statistics, in megabytes, and in two-second intervals. iotop – top-like I/O monitor. Try it with the -oPa options to show the…

Redis数据类型——list类型数据的扩展操作

1.list阻塞式数据获取 2.list类型数据业务场景

基于蜻蜓算法的无人机航迹规划-附代码

基于蜻蜓算法的无人机航迹规划 文章目录 基于蜻蜓算法的无人机航迹规划1.蜻蜓搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用蜻蜓算法来优化无人机航迹规划。 1.蜻蜓搜索算法 …

华盛顿特区选举委员会:黑客可能已侵入整个选民名册

导语 近日,华盛顿特区选举委员会(DCBOE)传来了一条令人担忧的消息:黑客可能已经侵入了整个选民名册。这一事件引发了公众的广泛关注和担忧。本文将为大家详细介绍这一事件的经过以及可能带来的后果,并探讨选民数据的保…

KekeBlog项目实战后台模块(二)(已完结)

十一、后台模块-菜单列表 菜单指的是权限菜单,也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表,不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…

Python与Appium实现手机APP自动化测试的示例代码

本文主要介绍了Python与Appium实现手机APP自动化测试的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.什么是Appium appium是一个开源的测试自动化框架,可以与原生的、混合的和移…

借助文心大模型4.0轻松搞定中文语境,生成技术视频十分强悍,并能自主添加各种方言!

在10月17日的百度世界2023上,文心大模型4.0版本正式发布!百度直接放话:文心大模型4.0是目前最强大的文心大模型。会上百度董事长李彦宏为我们展示了文心大模型4.0在搜索、地图、商业智能、智能会议、智能视频、多轮对话方面的强悍。那文心大模…