【蜗牛黑板报】sensor基础知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【蜗牛黑板报】sensor基础知识相关的知识,希望对你有一定的参考价值。
参考技术A 一、camera常见的数据输出格式常见的数据输出格式有:Raw格式、YUV格式、RGB格式。
RGB格式:采用这种编码方法,每种颜色都可用三个变量来表示红、绿、蓝的强度。每一个像素有三原色R红色、G绿色、B蓝色组成。
YUV格式:其中“Y”表示明亮度(Luminance或luma),即灰阶值;“U”和“V”表示色度(Chrominance或Chroma),描述影像色彩及饱和度,用于指定像素的颜色。
RAW格式:是sensor将光信号转换为电信号时的电平高低的原始记录,单纯地将没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。
支持RGB/YUV格式的模组,一般会在模组上继承ISP(Image Single Processor),经过A/D转换过的原始数据经过ISP处理生成YUV标准格式传到baseband(基带)中。一般来说,这种设计适用于低像素Camera的要求,会在主板上省去一个DSP(数字信号处理芯片),可降低成本。
支持RAW格式的模组,由于感光区域的需求,不会再模组内集成ISP,以最大程度的调大感光区域的面积,提高照片质量。模组把原始的数字信号传给baseband上的DSP进行处理。
注:
1)ISP:ISP的性能是决定影像流畅的关键
2)DSP:DSP作为控制芯片,是将感光芯片获取的数据及时快速地传到baseband中并刷新感光芯片。因此控制芯片的好坏,直接决定画面品质(比如色彩饱和度、清晰度)与流畅度。
3) Bayer pattern: 基本组成格式:RGrGbB。其中每个单独的R, G, B都是一个像数,只不过后期都是插值的方法把R或G或B插值到含有RGB三原色的像素。Gr和Gb只是名字这么叫便于区分,本质上还是只有G分量。
另外,水平方向来看,靠近R的像素叫Gr。这可能是因为sensor逐行曝光的特性,所以按行方向给Gr这个像素命名。
算法有时要做一些补偿,一般都是以G为基准计算的。比如:R/Gr;B/Gb
二、Camera的供电
camera主要包含三路电:模拟电(AVDD)、数字电(DVDD)、IO电(IOVDD)
1)DVDD:主要给ISP供电
2)AVDD:主要给sensor感光区和模数转换部分(ADC)供电
3)IOVDD:主要给I2C供电
4)AFVDD:主要给自动对焦马达(VCM)供电
三、Mipi协议
Mipi线有2种: mipi data线和mipi clk线. mipi data线用来传输数据, mipi clk线用于主机Soc和sensor之间做同步用的(即, 这两者之间是同步通信的). sensor工作时主机Soc通过CLK线传输时钟信号给sensor传感器, 说明: sensor的工作速率取决于主机给它的CLK频率.
注:
1). 同步通信: 通信的双方工作在同一个时钟; 异步通信, 通信的双方工作在各自的时钟.
2). 同步通信就是通信双方工作在同一个时钟下, 一般是通信的A方通过一根CLK信号线传输A自己的时钟给B, B工作在A传输的时钟下. 所以同步通信的显著特征就是: 通信线中有CLK.
3). 比如: 军训的时候, 教官根据自己的节奏喊“121”, 学员就跟着教官喊的”121“节奏跑步, 此时, 学员的步伐就和教官同步了.
4). 同步通信必然有CLK信号, 但是有CLK信号不一定是同步的.
蜗牛—Android基础之button监听器
XML文件中有一个textView 和 一个button。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <!-- 一个id为textView的文本 宽度充满父容器 高度自适应 背景为红色 初识文字为wjj --> <TextView android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FF0000" android:text="@string/wjj" > </TextView> <!-- 一个id为button的button 宽度自适应 高度自适应 初识文字为button --> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" /> </LinearLayout>
Java文件
package com.wjj.day_01_genesis; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private TextView textView; private Button button; int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 设置布局文件 textView = (TextView) findViewById(R.id.textView); // 找到文本 textView.setBackgroundColor(Color.BLUE); // 设置文本背景的颜色 button = (Button) findViewById(R.id.button); // 找到按钮 buttonOnClickLisnter lisnter = new buttonOnClickLisnter(); // 初识化一个监听器 button.setOnClickListener(lisnter); // 给按钮设置监听器 } class buttonOnClickLisnter implements OnClickListener { // 实现OnClickListener接口 @Override public void onClick(View view) { // 当绑定此监听器的按钮被按下时会调用此方法 // TODO Auto-generated method stub count++; textView.setText(count + ""); // 设置文本的显示 } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
以上是关于【蜗牛黑板报】sensor基础知识的主要内容,如果未能解决你的问题,请参考以下文章