IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 第38讲 Android Camera2 API 通过CropRegion控制Zoom缩放 -> 正文阅读

[移动开发]第38讲 Android Camera2 API 通过CropRegion控制Zoom缩放

本讲是Android Camera专题系列的第38讲,我们介绍Android Camera2 API专题的通过CropRegion控制Zoom缩放,包括如下内容:

  1. Android Zoom简介
  2. 如何查询当前Camera支持的Zoom能力

  3. 通过Crop Region控制Digital Zoom

    1. Crop Region坐标系
    2. Crop Region应用的时机点
    3. Crop Region与输出流间的裁剪规则
    4. Crop Region精度控制
    5. Crop Region与Sensor输出大小关系
    6. Crop Region与Zoom Ratio

视频在线观看:

加入知识星球与更多Camera同学交流
– 星球名称:深入浅出Android Camera
– 星球ID: 17296815

Android Zoom简介

Zoom就是对画面进行放大或缩小功能,分为光学变焦(Optical Zoom)和数字变焦(Digital Zoom)两种

光学变焦数字变焦
光学变焦是通过物理光学手段来变焦的,也就是调整硬件的镜片间的距离实现的数字变焦是软件手段,在计算机上放大图片
光学变焦是真实的像素,它可以原汁原味地还原远处的景物,而不会有什么质量损失数字变焦是利用软件对已有像素周边的色彩进行判断,并根据周边的色彩情况插入经特殊算法加入的像素,所产生的照片是通过软件运算方式得到的
光学变焦的原理就是通过改变焦距的大小来改变图像的大小,而且光学变焦只是改变了光线传输的距离,光线本身没有变化,所以照片质量不会发生变化数字变焦最基本的原理就是将一张已经固定的照片在进行放大,因为数码照片是使用像素组成的,所以进行变焦之后只能看到一个个的小点或者小方块

如何查询当前Camera支持的Zoom能力

CameraCharacteristicsDescription
SCALER_AVAILABLE_MAX_DIGITAL_ZOOM当前Camera支持的最大数字变焦倍数
active area width / crop region width 或 active area height / crop region height能支持的最大值,也就描述了最小的crop region
当crop region小于该区域时,超出的部分会被忽略
CONTROL_ZOOM_RATIO_RANGE当前Camera支持的变焦范围,包括数字和光学变焦的能力
maxZoom >= 1.0 >= minZoom, 当minZoom小于1时表示能增加FOV(手机上是指切到广角镜头)

通过Crop Region控制Digital Zoom

CaptureRequest#SCALER_CROP_REGION用于控制digital zoom的

Crop Region坐标系

不支持android.distortionCorrection.mode

  • Left,top = [0, 0], Right,bottom = [android.sensor.info.activeArraySize]

支持android.distortionCorrection.mode

  • distortion correction mode 是OFF
    • Left,top=[0,0], Right bottom = [android.sensor.info.preCorrectionActiveArraySize]
  • distortion correction mode 是非OFF
    • Left,top=[0,0], Right bottom = [android.sensor.info.activeArraySize]

对于支持ULTRA_HIGH_RESOLUTION_SENSOR的Camera设备,当android.sensor.pixelMode设置为SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION,参考坐标系要相应地修改为activeArraySizeMaximumResolution和preCorrectionActiveArraySizeMaximumResolution.

Crop Region应用的时机点

Crop region应用于raw转其他颜色空间(比如yuv)时,因此对raw buffer不生效

Crop Region与输出流间的裁剪规则

当crop region的宽高比与stream size的宽高比不一致时,会发生裁减

  • 如果crop region是4:3,那么4:3的stream能看到所有画面, 16:9的stream会出现垂直方向上的裁减
  • 如果crop region是16:9,那么16:9的stream能看到所有画面,4:3的stream会出现水平方向上的裁减

Crop Region裁减规则说明

  • 假设camera device的active array size为(2000,1500),且支持FREEFORM的crop

    • Active array size: 2000×1500 (3 MP, 4:3 aspect ratio)
    • Output stream #1: 640×480 (VGA, 4:3 aspect ratio)
    • Output stream #2: 1280×720 (720p, 16:9 aspect ratio)

Case #1: 4:3 crop region with 2x digital zoom

  • Crop region: Rect(500, 375, 1500, 1125) // (left, top, right, bottom)
    • 640×480 stream: (500, 375, 1500, 1125) (与 crop region相等)
    • 280×720 stream: (500, 469, 1500, 1031) (垂直裁剪)

Crop Region裁减规则说明

Case #2: 16:9 crop region with ~1.5x digital zoom

  • Crop region: Rect(500, 375, 1833, 1125)
    • 1280×720 stream: (500, 375, 1833, 1125) (与 crop region相等)
    • 640×480 stream: (666, 375, 1666, 1125) (水平裁剪)

Crop Region裁减规则说明

Case #3: 1:1 crop region with ~2.6x digital zoom

  • Crop region: Rect(500, 375, 1250, 1125)
    • 640×480 stream: (500, 469, 1250, 1031) (垂直裁剪)
    • 1280×720 stream: (500, 543, 1250, 957) (垂直裁剪)

Crop Region裁减规则说明

Case #4: Replace 640×480 stream with 1024×1024 stream, with 4:3 crop region

  • Crop region: Rect(500, 375, 1500, 1125)
    • 1024×1024 stream: (625, 375, 1375, 1125) (水平裁剪)
    • 1280×720 stream: (500, 469, 1500, 1031) (垂直裁剪)

Crop Region裁减规则说明

Crop Region精度控制

由于硬件限制或者一些对齐要求,上层在CaptureRequest里面设置的crop region可能会被Camera HAL做微调,最终实际生效的Crop region会在CaptureResult中体现。

Crop Region与Sensor输出大小关系

Crop region大小不会影响到Sensor输出大小,Sensor输出不同的Size都会被mapping到Active array size上来进行计算;这里Active array size仅表示当前sensor mode下sensor输出的全尺寸,并不是sensor输出大小

Crop Region与Zoom Ratio

从API Level 30开始,在Logical multicam中强烈建议通过CONTROL_ZOOM_RATIO来控制Zoom,因为该控制方式会结合光学变焦和数字变焦的能力,甚至可以缩小到1倍zoom以下

  • 通过CONTROL_ZOOM_RATIO控制Zoom时,Crop region设置为默认active array size即可
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:26:00  更:2021-11-29 16:27:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:43:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码