IDR)" />
当前位置:文档之家› STM32单片机ov760摄像头进行图像采集处理

STM32单片机ov760摄像头进行图像采集处理

STM32单片机ov760摄像头进行图像采集处理
STM32单片机ov760摄像头进行图像采集处理

#include

#include

#include

#include

#include

#include

#include

#include

#include "Image.h"

#include "include.h"

float kp,kd,ki;

s16 steererr = 0;

u8 Get_a_Y()

{

u8 t1,t2;

//获得一个Y分量的过程

FIFO_RCK=0;

FIFO_RCK=1;

t1=(0x00ff&GPIOB->IDR);

FIFO_RCK=0;

FIFO_RCK=1;

t2=(0x00ff&GPIOB->IDR);

//跳过一个像素

FIFO_RCK=0;

FIFO_RCK=1;

t2=(0x00ff&GPIOB->IDR);

FIFO_RCK=0;

FIFO_RCK=1;

t2=(0x00ff&GPIOB->IDR);

return t1;

}

void skip_a_row()

{

u16 i;

u8 temp;

for (i=0;i<320;i++)

{

//跳过一个像素

FIFO_RCK=0;

FIFO_RCK=1;

temp=(0x00ff&GPIOB->IDR);

FIFO_RCK=0;

FIFO_RCK=1;

temp=(0x00ff&GPIOB->IDR);

}

}

void Get_a_Image()

{

u16 i,j;

for (i=0;i

{

for(j=0;j

{

// data[i][j]= Get_a_Y();

}

//跳过紧接着的5行

skip_a_row();

skip_a_row();

skip_a_row();

skip_a_row();

skip_a_row();

}

}

u8 Abs8(u8 a)

{

if (a>=0)

{

return a;

}

else

{

return -a;

}

}

void send_pic(void)

{

u8 i,j;

USART_SendData(USART1,0xFF);

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

for (i=0;i

{

for (j=0;j

{

if(data[i][j]==255) data[i][j]--;

USART_SendData(USART1,data[i][j]);

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

}

}

}

//*************************************************************// //函数名: DataAnalyse

//函数类型:void 参数:l:图像数组号

//功能:图像数据分析

//*************************************************************// void DataAnalyse(u8 l)

{

Data=&data[0][0];

ImageProcess();

}

///////////////////////////////////////////

//全局变量,要改

///////////////////////////////////////////

void ImageProcess()

{

int i=0,j=0;

u8 *p=0;

//unsigned char *q=0;

//ThresholdValue = otsu ((unsigned char *)Data, C, 0, 0, R, C);

//ThresholdValue = 130;

//均值滤波

// for(i=0;i<38;i++)

// {

// for (p=Data+i*C+3;p

// {

// *p=(*p+*(p+1)+*(p-1))/3; //使用均值滤波的方式滤波// }

// }

//二值化

for (p = Data; p <= Data+R*C; p++)

{

if (*p > ThresholdValue){*p = White;} //130 =ThresholdValue

else{*p = Black;}

}

//滤波

for (i=0;i

{

p = Data+i*C+1;

j=0;

while (j

{

if (*(p-1) == White && *p == Black && *(p+1) == White)

{

*p = White;

}

else if (*(p-1) == Black && *p == White && *(p+1) == Black)

{

*p = Black;

}

j++;

p++;

}

}

}

void mygetLmr()

{

u8 i=0;

u8 j=0;

u8 pLeft,pRight ;

u8 bFoundLeft = 0;

u8 bFoundRight = 0;

/// unsigned char TripLen = 4;

char bLeftEnd=0;

char bRightEnd=0;

char bMidEnd=0;

BlackLineData[R-1]=LastFieldMid1;

for (i=R-2;i>3&&bMidEnd!=1;i--)

{

//清零,以备下一行使用

bFoundLeft=0;

bFoundRight=0;

//向左扫描

for (pLeft=BlackLineData[i+1];pLeft>2;pLeft--)

{

if (*(Data+i*C+pLeft)==Black)

{

bFoundLeft=1;

Left[i]=pLeft;

pLeft=1;

}

}

if(bFoundLeft!=1)

Left[i]=1;

//检测是否到了尽头

//向右扫描

for (pRight=BlackLineData[i+1];pRight

{

if (*(Data+i*C+pRight)==Black)//&&*(Data+i*C+pRight+1)==Black) {

bFoundRight=1;

Right[i]=pRight;

pRight=C;

}

}

if (bFoundRight!=1)

Right[i]=C-1;

BlackLineData[i]=((Left[i]+Right[i]))/2;

//左右边线采集结束,开始逻辑处理,易错,小心!!!以上``````````````````````````````````````````````````````````````````````````````````````````````````````````````````的部分代码安全

/*

if ( *(Data+i*C+ BlackLineData[i])==Black)

bMidEnd=1;

*/

if (bFoundRight!=1&&bFoundLeft!=1)

Steerangle = STRM;

if ((BlackLineData[i]>C-4)||BlackLineData[i]<4)

bMidEnd=1;

}

LastFieldMid1= BlackLineData[ R-5];

LastFieldMid2=BlackLineData[ R-6];

}

void SmoothMid() //

{

u8 i;

for (i=R-3;i>2;i--) {

if (Abs8(BlackLineData[i]-BlackLineData[i-1])>5&& Abs8(BlackLineData[i]-BlackLineData[i+1])>5 )

BlackLineData[i]=(BlackLineData[i-1]+BlackLineData[i+1] )/2;

}

}

void AddMtoPic(void)

{

u8 i;

for(i=0;i

{

data[i][BlackLineData[i]]=Black;

data[i][80]=Black;

}

}

void Steer_control(void)

{

//u8 kp,kd,ki;

// s16 steererr = 0;

// s32 sum=0;

//s8 dircnt=0;

int i=0,a=0,b=0,aver;

//float e;

double e;

double s;

Err=(BlackLineData[4]+BlackLineData[5]+BlackLineData[6]+BlackLineData[7]+BlackLineData[8])/5-80;//BlackLineData[20]+BlackLineData[21]+BlackLineData[22]+BlackLineData[23]+BlackLineData[ 24])/10-80;

Errd=(BlackLineData[13]+BlackLineData[12]+BlackLineData[11]+BlackLineData[10]+BlackLineData [9])/5-80;

Errb=(BlackLineData[39]+BlackLineData[38]+BlackLineData[37]+BlackLineData[36]+BlackLineData [35])/5-80;

Erri=( Errd-Err);

for(i=0;i<=34;i++)

{

a=(BlackLineData[i]+BlackLineData[i+1]+BlackLineData[i+2]+BlackLineData[i+3]+BlackLineData[i+ 4])/5-80;

b=b+a;

aver=b/10;

}

for(i=0;i<=34;i++)

{

a=(BlackLineData[i]+BlackLineData[i+1]+BlackLineData[i+2]+BlackLineData[i+3]+BlackLineData[i+ 4])/5-80;

e+=(a-aver)*(a-aver);

e=e/(10-1);

s=sqrt(e)*1000;

}

}

void SpeedContiol(u16 speed)

{

TIM3->CCR2 =speed;

//TIM2->CCR2 = speed;

}

void zhidaowang (void)

{

SpeedContiol(547);

SpeedContiol(547);

SpeedContiol(547);

// SpeedContiol(525); //546

kp=10;

kd=6;

steererr = kp*(Err-3.5)+ kd*Erri;

Steerangle = STRM-steererr;

if(Steerangle<=STRL) Steerangle=STRL;

if(Steerangle>=STRR) Steerangle=STRR;

TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle;

}

void xiaos(void)

{

SpeedContiol(542) ;SpeedContiol(542) ;SpeedContiol(542) ;

kp=8;

kd=1;

steererr =(kp*Err-4)+ kd*Erri ;

Steerangle = STRM-steererr;

if(Steerangle<=STRL) Steerangle=STRL;

if(Steerangle>=STRR) Steerangle=STRR;

TIM3->CCR1 = Steerangle;TIM3->CCR1 = Steerangle;TIM3->CCR1 = Steerangle;

}

void xiaow5(void) //下一次改这个

{

SpeedContiol(546);SpeedContiol(546);SpeedContiol(546);

kp=8;

kd=4;

Steerangle = STRM-steererr;

if(Steerangle<=STRL) Steerangle=STRL;

if(Steerangle>=STRR) Steerangle=STRR;

TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle;

}

void xiaow4(void) ///////////////???????

{

SpeedContiol(542);SpeedContiol(542);SpeedContiol(542);//544

kp=9;/////////////////////

kd=4;//1.5;

steererr = kp*Err+ kd*Erri ;

Steerangle = STRM-steererr;

if(Steerangle<=STRL) Steerangle=STRL;

if(Steerangle>=STRR) Steerangle=STRR;

TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; }

void xiaow3(void)

{

SpeedContiol(546);

SpeedContiol(546);

SpeedContiol(546);//544

kp=8;///2.

kd=65;//1.5

ki=0;

steererr = kp*Err+ kd*Erri ;

Steerangle = STRM-steererr;

if(Steerangle<=STRL) Steerangle=STRL;

if(Steerangle>=STRR) Steerangle=STRR;

TIM3->CCR1 = Steerangle;TIM3->CCR1 = Steerangle;TIM3->CCR1 = Steerangle; }

void xiaow2(void)

{

SpeedContiol(543);

SpeedContiol(543);

SpeedContiol(543);//////////////////// 这个很重要

kp=5;

kd=10;//1.5

ki=0;

Steerangle = STRM-steererr;

if(Steerangle<=STRL) Steerangle=STRL;

if(Steerangle>=STRR) Steerangle=STRR;

TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; }

void xiaow(void)

{

SpeedContiol(546);

SpeedContiol(546);

SpeedContiol(546);

//550

kp=6;//////////////////////////////////////////////////////////222222222222 kd=6;

steererr = kp*Err+ kd*Erri ;

Steerangle = STRM-steererr;

if(Steerangle<=STRL) Steerangle=STRL;

if(Steerangle>=STRR) Steerangle=STRR;

TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; }

void zhidao1(void)

{

SpeedContiol(541);

SpeedContiol(541);

SpeedContiol(541);//553

kp=2;

kd=1;

steererr = kp*Err+ kd*Erri ;

Steerangle = STRM-steererr;

if(Steerangle<=STRL) Steerangle=STRL;

if(Steerangle>=STRR) Steerangle=STRR;

TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; }

///////////////////////////////////////////////////////////////////////

////////////////////////////////新加////////////////////////////////////

///////////////////////////////////////////////////////////////////////

void zhidao(void)

{

SpeedContiol(570);

SpeedContiol(570);

SpeedContiol(570);

kp=0;

kd=1.5;

steererr = kp*Err+ kd*Erri ;

Steerangle = STRM-steererr+4;

if(Steerangle<=STRR) Steerangle=STRR;

if(Steerangle>=STRL) Steerangle=STRL;

TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle;

}

void zhidaowan (void)

{

SpeedContiol(555);

SpeedContiol(555);

SpeedContiol(555);

kp=17;

kd=5;

steererr = kp*(Errd-3.5)+ kd*Erri;

Steerangle = STRM-steererr;

if(Steerangle>640||Steerangle<440) SpeedContiol(557);

if(Steerangle<=STRR) Steerangle=STRR;

if(Steerangle>=STRL) Steerangle=STRL;

TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle; TIM3->CCR1 = Steerangle;

}

void circular (void)

{

SpeedContiol(554) ;SpeedContiol(554) ;SpeedContiol(554) ;

kp=2.5;

kd=1;

steererr =kp*(Err-10)+ kd*Erri ;

Steerangle = STRM-steererr;

if(Steerangle>640||Steerangle<440)SpeedContiol(555);

if(Steerangle<=STRR) Steerangle=STRR;

if(Steerangle>=STRL) Steerangle=STRL;

TIM3->CCR1 = Steerangle;TIM3->CCR1 = Steerangle;TIM3->CCR1 = Steerangle;

}

void xiaos1(void)

{

SpeedContiol(553) ;SpeedContiol(553) ;SpeedContiol(553) ;

kp=0.5;

kd=2;

steererr =kp*(Err-40)+ kd*Erri ;

Steerangle = STRM-steererr;

if(Steerangle<=STRR) Steerangle=STRR;

if(Steerangle>=STRL) Steerangle=STRL;

TIM3->CCR1 = Steerangle;TIM3->CCR1 = Steerangle;TIM3->CCR1 = Steerangle;

}

智能车模拟摄像头图像采集方法详解

本帖最后由 superyongzhe 于 2009-11-16 23:24 编辑 我想大家肯定还遇到一个问题,那就是如何知道自己采集的图像是否正确呢?可以使用串 口,大家把我那个程序里面的printp.c 复制到你的工程里,再把includes.h里面的声明添加到你的程序里,在串口初始化程序里 设置好波特率(如何设置可参考《单片 机嵌入式在线开发方法》一书中的相关内容,也可以看芯片资料)。上位机可以使用“串口 助手就可以了”,很简单的。如果大 家还有什么问题就赶快提出来把,我尽量给大家解决,因为这里面前车的东西比较繁杂,我 一下说不清楚。最好有个电视机,能 够看到摄像头摄在那里,这样会更容易校对 近几天看到论坛里有很多网友遇到CCD图像采集的麻烦,我在最开始的时候也为这个烦恼过,由于本人比较菜,在度过大概半个月的绝望日夜后,在刚准备放弃时突然发现我已经采集到正确的图像了。特再次分享,希望能解决大家当前遇到的麻烦。 在采集图像之前,我们首先要知道摄像头输出信号的特性。目前的模拟摄像头一般都是PAL制式的,输出的信号由复合同步信号,复合消隐信号和视频信号。其中的视频信号才是真正的图像信号,对于黑白摄像头,图像越黑,电压越低,图像越白,电压越高。而复合同步信号是控制电视机的电子枪对电子的偏转的,复合消隐信号是在图像换行和换场时电子枪回扫时不发射电子。由于人眼看到的图像大于等于24Hz时人才不会觉得图像闪烁,所以PAL 制式输出的图像是25Hz,即每秒钟有25幅画面,说的专业点就是每秒25帧,其中每一帧有625行。但由于在早期电子技术还不发达时,电源不稳定,容易对电视信号进行干扰,而交流电源是50Hz所以,为了和电网兼容,同时由于25Hz时图像不稳定,所以后来工程师们把一副图像分成两场显示,对于一幅画面,一共有625行,但是电子枪先扫描奇数场1,3,5.....,然后再扫描2,4,6.....,所以这样的话,一副图像就变成了隔行扫描,每秒钟就有50场了。其中具体的细节请参考这个网站 电视原理与系统 /zjx/zjx09/zjx090000.htm 只用看前面的黑白全电视信号和PAL制式就可以了(当然如果感兴趣可以全部看完)。 通过上面的内容如果你对PAL制式信号了然于心,那么就可以开始图像的采集了,PAL 输出的信号有复合同步信号,复合消隐信号和视频信号。那么我们首先就是要从这三种信号中分理出复合同步信号,复合消隐信号和视频信号,以便我们对AD采样到的值进行存储,

第二讲 文本素材的采集与处理

第二讲文本素材的采集与处理 本讲目标: 1.明确文本素材的五种获取方法。 2.掌握扫描仪的使用方法,会用扫描仪获取大量文本,并能利用文字识别软件对获取的文本进行修改编辑。 重点:获取文本素材的方法。 难点:大量文本的采集—扫描仪扫描文字识别法。 一、五种文本素材的获取方法 文本素材的获取有直接获取与间接获取两种方式,直接获取是指通过多媒体教学制作工具软件的文字工具或在文字编辑处理软件中用键盘直接输入或复制,一般在文本内容不多的场合下使用该方式。间接获取是指用扫描仪或其他输入设备输入文本素材,常用于大量文本的获取。 文本素材的获取方法如下: (1)键盘输入方法 键盘输入方法是文本输入的主要方法,使用计算机输入汉字,需要对汉字进行编码,根据汉字的某种规律将汉字用数字或英文字符编码,然后由计算机键盘输入。汉字有音、形、义三个要素,根据汉字读音的编码叫音码,根据汉字字形的编码叫形码,兼顾汉字读音和字形的编码叫音形码或形音码。在常用的多媒体教学制作软件中,都带有文字工具,在文本内容不多的情况下,可以直接输入文字,对输入的文字可进行直接编辑处理。 (2)手写输入方法 使用“输入笔”设备,在写字板上书写文字,来完成文本输入,利用手写输入法获取文本的方式,类似于平时我们在纸上写字,但对在写字板上书写的文字要经选择。手写输入方法使用的输入笔有两种:一种是与写字板相连的有线笔,另一种是无线笔。无线笔携带和使用均很方便,是手写输入笔的发展方向。写字板也有两种,一种是电阻式,另一种是感应式。 (3)语音输入方法 将要输入的文字内容用规范的语音朗读出来,通过麦克风等输入设备送到计算机中,计算机的语音识别系统对语音进行识别,将语音转换为相应的文字,完成文字的输入。 语音输入方法目前开始使用,但识别率还不是很高,对发音的准确性要求比较高。 (4)扫描仪输入法 将印刷品中的文字以图像的方式扫描到计算机中,再用光学识别器(OCR)软件将图像中的文字识别出来,并转换为文本格式的文件。目前,OCR的英文识别率可达90%以上,中文识别率可达85%以上。 (5)从互联网上获取文本 从互联网上可以搜索到许多有用的文本素材,在不侵犯版权的情况下,可以从互联网上获取有用的文字。从互联网的html页面上获取部分文本的方法是:首先拖动鼠标选取有用的文本,或单击鼠标右键,在弹出的快捷菜单中,选择“全选”命令,将整个页面上文字全部选中,然后选择“复制”命令,打开文字处理软件(如Word),选择“编辑”/“粘贴”命令,就可以将复制的文字在文字处理软件中进行编辑处理了。如果将互联网上其他格式的文本文件(如:.pdf,.caj)格式的文件进行保存,然后使用部分有用文本,常用的方法是:选择“文件”菜单中的“另存为”命令,将文本文件进行保存,

LabVIEW应用于实时图像采集及处理系统

LabVIEW应用于实时图像采集及处理系统 2008-7-29 9:35:00于子江娄洪伟于晓闫丰隋永新杨怀江供稿 摘要:本文在LabVIEW和NI-IMAQ Vision软件平台下,利用通用图像采集卡开发一种图像实时采集处理虚拟仪器系统。通过调用动态链接库驱动通用图像采集卡完成图像采集,采集图像的帧速率达到25帧每秒。利用NI-IMAQ Vision视频处理模块,进行图像处理,以完成光电探测器的标定。该系统具有灵活性强、可靠性高、性价比高等优点。 主题词:虚拟仪器;图像处理;LabVIEW;动态链接库 1.引言 美国国家仪器(NI)公司的虚拟仪器开发平台LabVIEW,使用图形化编程语言编程,界面友好,简单易学,配套的图像处理软件包能提供丰富的图像处理与分析算法函数,极大地方便了用户,使构建图像处理与分析系统容易、灵活、程序移植性好,大大缩短了系统开发周期。在推出应用软件的基础上,NI公司又推出了图像采集卡,对于NI公司的图像采集卡,可以直接使用采集卡自带的驱动以及LabVIEW中的DAQ库直接对端口进行操作。 但由于NI公司的图像采集卡成本很高,大多用户难以接受,因此硬件平台往往采用通用图像采集卡,软件方面的图像处理程序仍采用LabVIEW以及视频处理模块编写。本文正是基于这样的目的,提出了一种在LabVIEW环境下驱动通用图像采集卡的方案,在TDS642EVM高速DSP视频处理板卡的平台下,完成实时图像采集及处理。 在图象处理的工作中主要完成对CCD光电探测器的辐射标定。由于探测器在自然环境下获取图像时,会受到来自大气干扰,自身暗电流,热噪声等影响,使CCD像元所输出信号的数值量化值与实际探测目标辐射亮度之间存在差异,所以要得到目标的精确图像就必须对探测器进行辐射标定。 2.图像采集卡简介 闻亭公司TDS642EVM(简称642)多路实时视频处理板卡是基于DSP TMS320DM642芯片设计的评估开发板。计算能力可达到4Gips,板上的视频接口和视频编解码芯片Philips SAA7115H相连,实现实时多路视频图像采集功能,支持多种PAL,NTSC和SECAM视频标准。本系统通过642的PCI接口与主机进行数据交换。PCI支持“即插即用(PnP)”自动配置功能,使图像采集板的配置变得更加方便,其一切资源需求的设置工作在系统初启时交由BIOS处理,无需用户进行繁琐的开关与跳线操作。PCI接口的海量数据吞吐,为其完成实时图像采集和处理提供保证。 3.系统组成及工作原理

STM32单片机ov760摄像头进行图像采集处理

#include #include #include #include #include #include #include #include #include "Image.h" #include "include.h" float kp,kd,ki; s16 steererr = 0; u8 Get_a_Y() { u8 t1,t2; //获得一个Y分量的过程 FIFO_RCK=0; FIFO_RCK=1; t1=(0x00ff&GPIOB->IDR); FIFO_RCK=0; FIFO_RCK=1; t2=(0x00ff&GPIOB->IDR); //跳过一个像素 FIFO_RCK=0; FIFO_RCK=1; t2=(0x00ff&GPIOB->IDR); FIFO_RCK=0; FIFO_RCK=1; t2=(0x00ff&GPIOB->IDR); return t1; }

void skip_a_row() { u16 i; u8 temp; for (i=0;i<320;i++) { //跳过一个像素 FIFO_RCK=0; FIFO_RCK=1; temp=(0x00ff&GPIOB->IDR); FIFO_RCK=0; FIFO_RCK=1; temp=(0x00ff&GPIOB->IDR); } } void Get_a_Image() { u16 i,j; for (i=0;i

基于Labview的图像采集与处理

目前工作成果: 一、USB图像获取 USB设备在正常工作以前,第一件要做的事就是枚举,所以在USB摄像头进行初始化之前,需要先枚举系统中的USB设备。 (1)基于USB的Snap采集图像 程序运行结果: 此程序只能采集一帧图像,不能连续采集。将采集图像函数放入循环中就可连续采集。

循环中的可以计算循环一次所用的时间,运行发现用Snap采集图像时它的采集速率比较低。运行程序时移动摄像头可以清楚的看到所采集的图像有时比较模糊。 (2)基于USB的Grab采集图像 运行程序之后发现摄像头采集图像的速率明显提高。

二、图像处理 1、图像灰度处理 (1)基本原理 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。 第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。 第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。 (2)labview中图像灰度处理程序框图 处理结果:

PCB图像采集系统研究背景意义及国内外现状

PCB图像采集系统研究背景意义及国内外现状 1 研究背景 2 AOI系统的研究和国内现状 3 研究意义 1 研究背景 印刷电路板(Printed Circuit Board,PCB)又称为印刷线路板或印制电路板。印刷电路板是各种电子产品的主要部件,有“电子产品之母”之称,它是任何电子设备及产品均需配备的,其性能的好坏在很大程度上影响到电子产品的质量。几乎每一种电子设备都离不开PCB,小到电子手表、计算器,大到航空航天、军用武器系统等,都包含各式各样,大小各异的PCB板。近年来,随着生产工艺的不断提高,PCB正在向超薄型、小元件、高密度、细间距方向快速发展。这种趋势必然给质量检测工作带来了很多挑战和困难。因此PCB故障的检测已经成为PCB制造过程中的一个核心问题,是电子产品制造厂商非常关注的问题。在生产线上,厂家为保证PCB板的质量,就得要求100%的合格率,对所有的部件、子过程和成品都是如此。在过去靠人工对其进行检测的过程中,存在以下几个不可避免的缺点: (1)容易漏检。由于是人眼检测,眼睛容易疲劳,会造成故障不能被发现的问题。并且人工检测主观性大,判断标准不统一,使检测质量变得不稳定。 (2)检测速度慢,检测时间长。比如对于图形复杂的印刷电路板,人工很难实现快速高效的检测,因此人工检测不能满足高速的生产效率。 (3)随着技术的发展,设备的成本降低,人工费用增加,仍然由人工进行产品质量控制,将难于实现优质高效,而且还会增加生产成本。 (4)在信息技术如此发达的今天人工检测有不可克服的劣势,例如:对检测结果实时地保存和远距离传输,对原始图像的保存和远距离传输等。 (5)有些在线检测系统是接触式检测,需要与产品进行接触测量,因此,有可能会损伤产品。 因此,人工检测的精确性和可靠性大打折扣,传统意义上的检测方法不再能适应现代电路板检测的要求。如果漏检的有错误的电路板进入下一道工序,随着每一项工艺步骤的增加,到最终经过贴装阶段后,仍然会被检测出来是有故障的,那时,制造厂商与其花费大量的人力和成本来检测、返修这块电路板,还不如选

基于摄像头的图像采集与处理应用

基于摄像头得图像采集与处理应用 1、摄像头工作原理 图像传感器,就是组成数字摄像头得重要组成部分。根据元件得材料不同,可分为 CCD(Charge Coupled Device,电荷耦合元件)与CMOS(plementary MetalOxide Semiconductor,金属氧化物半导体元件)两大类。 电荷藕合器件图像传感器CCD(Charge Coupled Device),它使用一种高感光度得半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号,数字信号经过压缩以后由相机内部得闪速存储器或内置硬盘卡保存,因而可以轻而易举地把数据传输给计算机,并借助于计算机得处理手段,根据需要与想像来修改图像。CCD由许多感光单位组成,通常以百万像素为单位。当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有得感光单位所产生得信号加在一起,就构成了一幅完整得画面。 互补性氧化金属半导体CMOS(plementary MetalOxide Semiconductor)与CCD一样同为在图像传感器中可记录光线变化得半导体。CMOS主要就是利用硅与锗这两种元素所做成得半导体,使其在CMOS上共存着带N(带–电)与P(带+电)级得半导体,这两个互补效应所产生得电流即可被处理芯片纪录与解读成影像。然而,CMOS得缺点就就是太容易出现杂点, 这主要就是因为早期得设计使CMOS在处理快速变化得影像时,由于电流变化过于频繁而会产生过热得现象。 CCD与CMOS在制造上得主要区别就是CCD就是集成在半导体单晶材料上,而CMOS就是集成在被称做金属氧化物得半导体材料上,工作原理没有本质得区别。CCD制造工艺较复杂,采用CCD得摄像头价格都会相对比较贵。事实上经过技术改造,目前CCD与CMOS得实际效果得差距已经减小了不少。而且CMOS得制造成本与功耗都要低于CCD不少,所以很多摄像头生产厂商采用得CMOS感光元件。成像方面:在相同像素下CCD得成像通透性、明锐度都很好,色彩还原、曝光可以保证基本准确。而CMOS得产品往往通透性一般,对实物得色彩还原能力偏弱,曝光也都不太好,由于自身物理特性得原因,CMOS得成像质量与CCD还就是有一定距离得。但由于低廉得价格以及高度得整合性,因此在摄像头领域还就是得到了广泛得应用 工作原理:为了方便大家理解,我们拿人得眼睛来打个比方。当光线照射景物,景物上得光线反射通过人得晶状体聚焦,在视网膜上就可以形成图像,然后视网膜得神经感知到图像将信息传到大脑,我们就能瞧见东西了。摄像头成像得原理与这个过程非常相似,光线照射景物,景物上得光线反射通过镜头聚焦,图像传感器就会感知到图像。 具体部分就是这样得,摄像头按一定得分辨率,以隔行扫描得方式采集图像上得点,当扫描到某点时,就通过图像传感芯片将该点处图像得灰度转换成与灰度一一对应得电压值,然后将此电压值通过视频信号端输出。如图1所示,摄像头连续地扫描图像上得一行,则输出就就是

对摄像头采集图像的处理(1)

1. 图像处理 4.2.1目标指引线的提取 智能车通过图像采样模块获得车前方的赛道图像信息,往下介绍如何 分析此二维数组来提取黑线,我们采用边缘检测的方法。 二维数组的行数和列数即为像素的图像坐标,我们若求出了黑线边缘 的图像坐标,就知道了黑线的位置。黑线边缘的特点是其左、右两像素为 一黑一白,两像素值的差的绝对值大于某阀值,大于可根据试验确定;而 其余处的相邻两像素或全白,或全黑,像素值差的绝对值小于该阀值。这 样,只要我们对两数组每行中任何相邻两点做差,就可以根据差值的大小 是否大于该阀值来判断此两点处是否为黑线边缘,还可以进行根据差值的 正负来判定边缘处是左白右黑,还是右黑左白。 从最左端的第一个有效数据点开始依次向右进行阀值判断:由于实际 中黑白赛道边缘可能会出现模糊偏差,导致阀值并不是个很简单介于两相 邻之间,很可能要相隔两个点。因此:第line为原点,判断和line+3的差 是否大于该阀值,如果是则将line+3记为i,从i开始继续在接下的从i+3到该行最末一个点之间的差值是否大于阀值,如果大于则将line+i/2+1的坐 标赋给中心给黑线中心位置值,如5-4

图4-4单行黑线提取法 利用该算法所得到的黑线提取效果不仅可靠,而且实时性好;在失去 黑线目标以后能够记住是从左侧还是从右侧超出视野,从而控制舵机转向让赛车回到正常赛道。 试验表明:只要阀值取得合适,该算法不仅可靠,而且实时性较好。 如果更进一步可以设置阀值根据现场情况的变化而变化。在黑线引导线已经能够可靠提取的基础上,我们可以利用它来进行相应的弯、直道判定,以及速度和转向舵机控制算法的研究。 2.

基于摄像头的图像采集与处理应用

基于摄像头的图像采集与处理应用 1、摄像头工作原理 图像传感器,是组成数字摄像头的重要组成部分。根据元件的材料不同,可分为CCD (Charge Coupled Device,电荷耦合元件)和CMOS(Complementary Metal-Oxide Semiconductor,金属氧化物半导体元件)两大类。 电荷藕合器件图像传感器CCD(Charge Coupled Device),它使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号,数字信号经过压缩以后由相机内部的闪速存储器或内置硬盘卡保存,因而可以轻而易举地把数据传输给计算机,并借助于计算机的处理手段,根据需要和想像来修改图像。CCD由许多感光单位组成,通常以百万像素为单位。当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。 互补性氧化金属半导体CMOS(Complementary Metal-Oxide Semiconductor)和CCD一样同为在图像传感器中可记录光线变化的半导体。CMOS主要是利用硅和锗这两种元素所做成的半导体,使其在CMOS上共存着带N(带–电)和P(带+电)级的半导体,这两个互补效应所产生的电流即可被处理芯片纪录和解读成影像。然而,CMOS的缺点就是太容易出现杂点, 这主要是因为早期的设计使CMOS在处理快速变化的影像时,由于电流变化过于频繁而会产生过热的现象。 CCD和CMOS在制造上的主要区别是CCD是集成在半导体单晶材料上,而CMOS是集成在被称做金属氧化物的半导体材料上,工作原理没有本质的区别。CCD制造工艺较复杂,采用CCD的摄像头价格都会相对比较贵。事实上经过技术改造,目前CCD和CMOS的实际效果的差距已经减小了不少。而且CMOS的制造成本和功耗都要低于CCD不少,所以很多摄像头生产厂商采用的CMOS感光元件。成像方面:在相同像素下CCD的成像通透性、明锐度都很好,色彩还原、曝光可以保证基本准确。而CMOS的产品往往通透性一般,对实物的色彩还原能力偏弱,曝光也都不太好,由于自身物理特性的原因,CMOS的成像质量和CCD还是有一定距离的。但由于低廉的价格以及高度的整合性,因此在摄像头领域还是得到了广泛的应用 工作原理:为了方便大家理解,我们拿人的眼睛来打个比方。当光线照射景物,景物上的光线反射通过人的晶状体聚焦,在视网膜上就可以形成图像,然后视网膜的神经感知到图像将信息传到大脑,我们就能看见东西了。摄像头成像的原理和这个过程非常相似,光线照射景物,景物上的光线反射通过镜头聚焦,图像传感器就会感知到图像。 具体部分是这样的,摄像头按一定的分辨率,以隔行扫描的方式采集图像上的点,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度一一对应的电压值,然后将此电压值通过视频信号端输出。如图1所示,摄像头连续地扫描图像上的一行,则输出

摄像头图像采集及处理范文

摄像头采集赛道黑线信息是本系统赛道信息获取的主要途径,本章将从摄像头工作原理、图像采样电路设计、和采样程序流程图三个方面进行介绍。 8.1 摄像头工作原理摄像头常分为彩色和黑白两种摄像头,主要工作原理是:按一定的分辨率,以隔行扫描的方式采样图像上的点,当扫描到某点时,就通过图像传感芯片将该点处图像的灰度转换成与灰度成一一对应关系的电压值,然后将此电压值通过视频信号端输出。 在示波器上观察可知摄像头信号如图8.1所示。摄像头连续地扫描图像上的一行,就输出一段连续的电压视频信号,该电压信号的高低起伏正反映了该行图像的灰度变化情况。当扫描完一行,视频信号端就输出一低于最低视频信号电压的电平(如0.3V),并保持一段时间。这样相当于,紧接着每行图像对应的电压信号之后会有一个电压“凹槽”,此“凹槽”叫做行同步脉冲,它是扫描换行的标志。然后,跳过一行后(因为摄像头是隔行扫描的方式),开始扫描新的一行,如此下去,直到扫描完该场的视频信号,接着就会出现一段场消隐区。此区中有若干个复合消隐脉冲(简称消隐脉冲),在这些消隐脉冲中,有个脉冲,它远宽于(即持续时间长于)其他的消隐脉冲,该消隐脉冲又称为场同步脉冲,它是扫描换场的标志。场同步脉冲标志着新的一场的到来,不过,场消隐区恰好跨在上一场的结尾部分和下一场的开始部分,得等场消隐区过去,下一场的视频信号才真正到来。摄像头每秒扫描25 幅图像,每幅又分奇、偶两场,先奇场后偶场,故每秒扫描50 场图像。奇场时只扫描图像中的奇数行,偶场时则只扫描偶数行。 8.2 图像采样电路设计在本次比赛中赛道仅由黑白两色组成,为了获得赛道特征,只需提取探测画面的灰度信息,而不必提取其色彩信息,所以本设计中采用黑白摄像头。型号为: XB-2001B,分辨率为320*240。为了有效地获取摄像头的视频信号,我们采用LM1881提取行同步脉冲,消隐脉冲和场同步脉冲,电路原理图8.2所示。将视频信号通过一个电容接至LM1881的2脚,即可得到控制单片机进行A/D采样的控制信号行同步HS与奇偶场同步号 ODD/EVEN。

单片机摄像头数据采集与处理

单片机摄像头数据采集与处理 题目单片机摄像头数据采集与处理 _自动化学院_院(系) 自动化_专业学 号 08009123 姓名孙博指导教师符影杰顾问教师起止日期 2012.12.20 –2013.06.10 设计地点中心楼 224东南大学毕业设计(论文)报告摘要单片机摄像 头数据采集与处理摘要随着计算机的发展,随着图像采集处理技术的进步和社会 的发展,其被广泛的运用于社会社交,远程医疗及实时监控等各个方面。图像测量 是一种非接触式的检测方法,可应用于工业、民用等许多领域。图像采集与处理是 图像测量的基础,关系到测量的精度与速度。基于单片机摄像头图像采集与处理技 术拥有广泛的应用市场和广阔的发展前景。本文中基于低功耗单片机的摄像式实时 图像测量系统,通过图像测量的方法,可直接安装在常规电表前,采用摄像技术和 图像识别技术实现数据采集,将读表数据直接在单片机中处理并显示出结果,采用 串口传输技术将数据存储于上位机上并显示,无需人工干预,具有成本低、安装简

单、智能化程度高的特点。针对本设计的特点,采用一种基于图像处理技术 的数码 管检测系统,设计了静态图像采集和静态图像处理的控制方案。首先,通过分析与 实验,完成各功能模块核心元件的选型与外围电路设计。经过硬件调试,完成了最 小系统、图像采集、数据存储、结果显示和数据传输等功能模块的硬件设计。其次, 在硬件平台的基础上,实现各个功能模块的软件功能。基于本装置的 控制 要求,分别选用了 MSP430F149 单片机和STC12LE5A60S2 单片机和OV7670 图像传感器作为核心部件,设计并完成了两套图像测量系统。实验结 果表 明,该装置满足测量要求,达到了研究的预期目的。关键词:图像测量、图像 处理、 摄像头、单片机 .I.东南大学毕业设计(论文)报告 Abstract Singlechip camera data acquisition and processing Abstract With the development of computer technology along with the development of image acquisition andprocessing technology and the progress of society image technology is widely used in socialnetworkingtelemedicine and real-time monitoring. Image measurement is a sort of non-contactmeasurement which can be applied to many fields such as industrial civil. Image acquisition andprocessing is the basis of image measurement which is related to the precision and

摄像头视频采集压缩及传输原理

摄像头视频采集压缩及传输原理 摄像头基本的功能还是视频传输,那么它是依靠怎样的原理来实现的呢?所谓视频传输:就是将图片一张张传到屏幕,由于传输速度很快,所以可以让大家看到连续动态的画面,就像放电影一样。一般当画面的传输数量达到每秒24帧时,画面就有了连续性。 下边我们将介绍摄像头视频采集压缩及传输的整个过程。 一.摄像头的工作原理(获取视频数据) 摄像头的工作原理大致为:景物通过镜头(LENS)生成的光学图像投射到图像传感器表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过USB接口传输到电脑中处理,通过显示器就可以看到图像了。下图是摄像头工作的流程图: 注1:图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。光电二极管受到光照射时,就会产生电荷。 注2:数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理,并把处理后的信号通过USB等接口传到PC等设备。 DSP结构框架: 1. ISP(image signal processor)(镜像信号处理器) 2. JPEG encoder(JPEG图像解码器) 3. USB device controller(USB设备控制器) 而视频要求将获取的视频图像通过互联网传送到异地的电脑上显示出来这其中就涉及到对于获得的视频图像的传输。 在进行这种图片的传输时,必须将图片进行压缩,一般压缩方式有如H.261、JPEG、MPEG 等,否则传输所需的带宽会变得很大。大家用RealPlayer不知是否留意,当播放电影的时候,在播放器的下方会有一个传输速度250kbps、400kbps、1000kbps…画面的质量越高,这个速度也就越大。而摄像头进行视频传输也是这个原理,如果将摄像头的分辨率调到640×480,捕捉到的图片每张大小约为50kb左右,每秒30帧,那么摄像头传输视频所需的速度为50×30/s=1500kbps=1.5Mbps。而在实际生活中,人们一般用于网络视频聊天时的分辨率为320×240甚至更低,传输的帧数为每秒24帧。换言之,此时视频传输速率将不到300kbps,人们就可以进行较为流畅的视频传输聊天。如果采用更高的压缩视频方式,如MPEG-1等等,可以将传输速率降低到200kbps不到。这个就是一般视频聊天时,摄像头所需的网络传输速度。 二.视频压缩部分 视频的压缩是视频处理的核心,按照是否实时性可以分为非实时压缩和实时压缩。而视频传输(如QQ视频即时聊天)属于要求视频压缩为实时压缩。 下面对于视频为什么能压缩进行说明。 视频压缩是有损压缩,一般说来,视频压缩的压缩率都很高,能够做到这么 高的压缩率是因为视频图像有着非常大的时间和空间的冗余度。所谓的时间冗余度指的是两帧相邻的图像他们相同位置的像素值比较类似,具有很大的相关性,尤其是静止图像,甚至两帧图像完全相同,对运动图像,通过某种运算(运动估计),应该说他们也具有很高的相关性;而空间相关性指的是同一帧图像,相邻的两个像素也具备一定的相关性。这些相关性

图像采集处理模块

1、图像采集处理 我们将OpenCV软件安装在安卓手机中,对手机拍照后的图像进行辨别处理以及定位处理,通过蓝牙模块,将信号传给单片机。 示意图: (1)、利用手机进行拍照、识别的原因: 我们查阅相关资料,找到了蓝牙助手v1.0这个软件,它是一款手机软件,实现了对于安卓手机蓝牙的基本操作以及安卓手机与单片机的通信。安装了次软件的安卓手机就可以借助HC-05蓝牙串口模块,控制单片机等系统,并可以接受从单片机等传送来的数据。 利用这个软件的原因是因为此软完成了蓝牙串口协议的设置,开发者使用时可以免去复杂的设置。 (2)、所用设备HC-05蓝牙串口 实物图:

模块与单片机的连接方式: 参数设置: 工作模式:从模式;波特率:9600bps;设备名称:HC-05;配对密码:1234,如按默认参数则无需以下个性设置。所有设置好的参数掉电都可保存): 1)、给模块提供合适的工作电源,带底板模块的工作电源为3.6~6V,不带底板核心模块为3.3V 2)、正确连接数据线,单片机的TXD和RXD必须与蓝牙模块的RXD,TXD交叉连接 进入AT命令模式有两种方法: a.蓝牙模块工作后拉高KEY脚电平进入AT模式1,LED状态为快闪,此时设置AT命令使用的波特率与通信时波特率一致,如通信时使用9600则此时设置AT命令的波特率

也应该选择9600 b.在模块上电的同时也令KEY脚为高电平,则进入AT模式2,LED状态为慢闪,固定使用38400,8,N,1的通信格式设置参数进入AT模式后只有保持KEY脚为高电平才能使用全部的AT命令。AT命令后面必须有回车换行符。如果使用SSCOM则在字符串输入框输入“AT”并勾选“发送新行”即可。 (3)、手机与蓝牙从机模块的连接及通信测试: 首先打开手机蓝牙,然后用手机的蓝牙管理程序扫描蓝牙设备,这时会找到蓝牙从机模块,然后进入蓝牙助手v1.0这个软件,在此软件中再次查询蓝牙从机模块,这时点击连接,会提示输入密码,例如模块初始配对码为1234。输入后,会提示配对未连接。此操作只要进行一次即可被手机记住,下次自动配对。因为蓝牙设备是串口设备,需要打开端口才可以连接,这时模块的灯还是闪烁的,当你打开端口后,灯才会变成连接成功状态。 下一步进行测试,在蓝牙助手v1.0中,输入字符后点击send,这时数据就会通过蓝牙发送到蓝牙模块,并从模块的TXD发出,此时单片机连接到模块的TXD-RXD进行数据通信了。 (4)、如何利用opencv软件进行物体的识别区分以及定位 识别特定的物体,可以用模板匹配的方法,大致说来就是先拍一张模板,再在图像里检测目标,模板匹配对比的是图像的像素值。 我们设想的具体方式为: 1)、在比赛前,分别拍摄架子上的物品(第一层和第二层),作为OpenCV图像库中的模版图像(patch);(其角度为正面照,若增强其区分的精确度,则可多角度完成一个物品的模版照) 2)在机器人启动前,我们将要拿去的东西输入进机器人; 3)、寻找一幅图像的匹配的模板,OpenCV已经为我们集成好了相关的功能,具体函数为matchTemplate; 4)、比赛时在现场分5次拍摄图像(每四个物品一次拍成),最中间无巡线部分,采用相隔1S的时间段的频率进行拍摄,知道拍摄出的图片物品在正中间即可,这就确定了物品的位置。 5)、接下来就是在所拍摄的图像中寻找和模板图像(patch)最相似的区域。OpenCV提供给我们的函数matchTemplate。该函数的功能为,在输入源图像Source image(I)中滑动框,寻找各个位置与模板图像Template image(T)的相似度,并将结果保存在结果矩阵result matrix(R)中。该矩阵的每一个点的亮度表示与模板T的匹配程度。然后可以通过函数minMaxLoc定位矩阵R中的最大值; 6)、手机根据找到的物体的位置,生成指令,并通过串口传递给单片机,最后机器人则针对匹配度最高的物品进行拿取操作。 通过查找资料,OpenCV的函数库中能够应用于匹配的方法有一下几种: CV_TM_SQDIFF 平方差匹配法,最好的匹配为0,值越大匹配越差 CV_TM_SQDIFF_NORMED 归一化平方差匹配法

基于单片机的图像处理采集系统

( 二 〇 一 二 年 六 月 本科毕业设计说明书 题 目:基于单片机的图像处理采集系统设 计与实现 学生姓名: 学 院: 系 别: 专 业: 班 级: 指导教师:

摘要 传统的工业级图像处理采集系统大多是由CCD摄像头、图像采集卡和PC机组成,虽已得到了广泛的应用,但是它具有结构复杂,成本高,体积大,功耗大等缺点。随着单片机的迅速发展,开发一种智能控制及智能处理功能的微型图像处理采集系统成为可能,并且也克服了传统图像处理采集系统的诸多缺点。 本设计提出了基于单片机的图像采集系统,该系统主要由四大模块组成:第一个是单片机控制模块,对摄像头进行控制;第二个是摄像头模块,即进行图像拍摄和取图;第三个是Zigbee无线传输模块,功能是将图像传送到上位机;最后是上位机,实现图像显示功能。其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高,使用环境广泛及成本低等。利用Proteus和Keil进行仿真调试,可以看到设计内容的运行结果,验证系统运的行正确及稳定性,并且实现了图像处理采集功能,所以具有一定的实用和参考价值。 关键词:单片机;Proteus;图像采集

Abstract The traditional industrial image processing collection system by CCD camera, mostly image collection card and PC unit into, although already a wide range of applications, but it has the structure is complex, high cost, big volume and shortcomings, such as big power consumption. With the rapid development of the single chip microcomputer, the development of a kind of intelligent control and intelligent processing function of micro image processing collection system possible, and also overcome traditional image processing collection system of many of the faults. This design is put forward based on SCM image acquisition system, the system consists of four modules: the first one is the single chip microcomputer control module, the camera to control; The second is a camera module, the image shoot and take diagram; The third is Zigbee wireless transmission module, the function is will images to PC; Finally the PC, realize image display function. Its advantage is hardware circuit is simple, software perfect function, control system and reliable, high cost performance, use extensive and environment cost low status. Use Proteus and Keil simulation commissioning, can see the operation of the design content, as demonstrated the correct and do the system stability, and realize the image processing collection function, so has certain practical and reference value. Keywords:Single-Chip Microcomputer;Proteus; Image Capture

数字图像采集与处理

1. 图像处理过程:摄像机产生一个对应于物体的光学图像,显影后的胶片上形成对应于 光学图像的负像。胶片在数字化器的光敏面上形成一个光学图像,由它形成输入数字图像,再经过6次转换得到输出图像。每一步都可能产生退化。 2. 图像采集:利用采集装置获取数字图像。采集装置包括:光敏感器件、扫描系统和模/数转换装置。 3. 采样:图像在空间上的离散化称为采样(或:图像数字化设备把图像划分为若干图像元素(像素)并给出它们的地址)量化:把采样后所得的各像素的灰度值从模拟量到离散量的转换称为图像灰度的量化(或:度量每一像素的灰度,并把连续的度量结果量化为整数) 4. 数字化设备:(1)采样孔:使数字化设备能够单独地观测特定的图像元素而不受图像其他部分的影响。(2)图像扫描机构:使采样孔按照预先确定的方式在图像上移动,从而按顺序观测每一个像素。(3)光传感器:通过采样检测图像的每一像素的亮度,通常采用CCD阵列。(4)量化器:将传感器输出的连续量转化为整数值。典型的量化器是A/D转换电路,它产生一个与输入电压或电流成比例的数值。(5)输出存储装置:将量化器产生的灰度值按适当格式存储起来,以用于计算机后续处理。 5. 采样孔的大小和相邻像素的间距(采样间隔)是两个重要的性能指标 6. 位图与矢量图区别:(1)位图由像素构成,矢量图由对象构成(2)

点位图受到像素和分辨率的制约,而矢量图形不存在这些制约(3)位图修改麻烦,矢量图形修改随心所欲(4)位图难以重复使用,矢量图形可以随意重复使用(5)位图效果丰富,矢量图形效果单调机械 7. 位图文件常见的文件扩展名为BMP、GIF(图形交换文件格式)、PCX、PSD、PCD、TIF(标记图像文件格式)、JPG(联合图像专家组)等。矢量图文件的扩展名为CDR、AI 或3DS 8. 辐射照度:如果某一表面被辐射体辐射,为表示B点辐射的强弱,在B点取微小面积元dA,它所接收的辐射通量为dΦe,则dΦe与dA之比就称为辐射照度。即表面上一点的辐射照度是入射在该面积元上的辐射通量dΦe除以该面面积元dA之商。单位为瓦特每平方米(W/m2)。 9. 光照度:单位受照面积接受的光通量,定义为光照面的光照度,用E表示。即光照度表示为:E=dφ/dA。光照度的单位为勒克斯(lx) 10. CIEl931—XYZ色度系统:XYZ色度系统是建立在RGB色度系统基础之上的.由三个虚设的三刺激值X、Y、Z来代替R,G,B,而组成一个新的色度系统。1931CIE色度系统使用了三个假想的三原色,记为X,Y,Z。对其要求是:用该假想三原色匹配任何颜色时,三刺激值X,Y,Z均为正;颜色的亮度仅由Y表示,而色度由X,Y,Z共同决定。 11. 图形是指由外部轮廓线条构成的矢量图(FROM Baidu) 12. 色差就是两种颜色之间的差别。显色指数是衡量一光源性能好坏

摄像头图像采集程序与分析

打开摄像头: case IDM_OPENCAMERA: if(capDriverConnect(hwndCap, 0)==TRUE) { capDriverGetCaps(hwndCap , &CapDriver ,sizeof (CAPDRIVERCAPS) ); if (CapDriver.fHasOverlay) capOverlay(hwndCap ,TRUE); else { capPreviewRate(hwndCap ,66) ; capPreview(hwndCap, TRUE) ; } } else { MessageBox(hwndCap,"打开摄像头错误!\n 确定摄像头是否已连接","错误 ",MB_OK); }break; //采集,捕捉摄像头单帧图像 case IDM_CAPTUREIMG: capGrabFrame( hwndCap); break; //保存摄像头采集的图片 case IDM_CAPIMGSA VE: MenuOpenDlg(hwnd,"视频采集保存对话框","save"); capFileSaveDIB(hwndCap,TempName); break;

//VideoCapture.cpp #include #include #include #include #include "VideoCapture.h" #include "resource.h" char TempName[256]; HWND hwndCap; HWND hwndSetCapStutas; CAPDRIVERCAPS CapDriver; CAPSTATUS CapStat; 2 / 17 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { if(DialogBox(hInstance,(LPCSTR)IDD_DIALOG1,NULL,DlgProc)==-1) MessageBox(NULL,"对话框建立错误!","错误",MB_OK); return 0; } BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam) { RECT rect; switch(message)

相关主题
文本预览
相关文档 最新文档