微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > 双目立体视觉摄像头模块开发搭建,含源代码、电路图

双目立体视觉摄像头模块开发搭建,含源代码、电路图

时间:11-30 来源:3721RD 点击:

// 1-bit pixel value, come from BW image buffer

input [11:0] Hcnt, // 0-1599 来自VideoTimmingCtl的HCNT_O

input [10:0] Vcnt, // 0-899 来自VideoTimmingCtl的 VCNT_O

output reg[11:0] center_h, // 0-1599,中点横向坐标

output reg [10:0] center_v // 0-899,中点纵向坐标

);

reg [20:0] num; //亮点区像素总数

wire [19:0] h_num; //亮点区像素总数的一半

reg [20:0] num_cnt; //亮点区像素总数计数

reg [11:0] h_cnt; //中点横向坐标计数

reg [10:0] v_cnt; //中点纵向坐标计数

reg [20:0] center_line_sum; //中间一行的有效像素横坐标和

reg [20:0] center_line_sum_cnt; //中间一行的有效像素横坐标和计数

reg [10:0] center_line_num; //中间一行的有效像素总数

reg [10:0] center_line_num_cnt; //中间一行的有效像素总数计数

assign h_num= num[20:1];

//有效区间

reg en;

always@(*) begin

if(Hcnt>0 && Hcnt<1599 && Vcnt>0 && Vcnt<899)

en<= 1;

else

en<= 0;

end

//亮点区像素总数计数

always@(posedge pclk) begin

if(Hcnt==1 && Vcnt==0) //扫描到像素点(1,0)处时

begin

num_cnt<= 0;

end

else

if(din==1 && en==1) num_cnt<= num_cnt+1;

else num_cnt<= num_cnt;

end

//中点纵坐标计数

always@(posedge pclk) begin

if(num_cnt<h_num) v_cnt<= Vcnt;

else v_cnt<= v_cnt;

end

//中间一行有效像素横坐标和

always@(posedge pclk) begin

if(Hcnt==1 && Vcnt==0) //扫描到像素点(1,0)处时

begin

center_line_sum_cnt<= 0;

end

else

if(Vcnt==center_v && en==1 &&din==1)

center_line_sum_cnt<= center_line_sum_cnt + Hcnt;

else

center_line_sum_cnt<= center_line_sum_cnt;

end

//中间一行的有效像素总数

always@(posedge pclk) begin

if(Hcnt==1 && Vcnt==0) //扫描到像素点(1,0)处时

begin

center_line_num_cnt<= 0;

end

else

if(Vcnt==center_v && en==1 &&din==1)

center_line_num_cnt<= center_line_num_cnt + 1;

else

center_line_num_cnt<= center_line_num_cnt;

end

//除法器

wire rfd;

wire [10:0] fractional;

wire [20:0] quotient;

div Divider (

.rfd(rfd),

.clk(pclk),

.dividend(center_line_sum),

.quotient(quotient),

.divisor(center_line_num),

.fractional(fractional)

);

//一帧结尾赋值

always@(posedge pclk) begin

if(Hcnt==1598 && Vcnt==899)//扫描到像素点(1598,899)处时

begin

num<= num_cnt;

center_v<= v_cnt;

center_h<= quotient[11:0];

center_line_sum<= center_line_sum_cnt;

center_line_num<= center_line_num_cnt;

end

end

endmodule

软件部分:

PC上在Processing环境中开发了一个3D动画界面,通过立方体模拟红外光点的三维位置。该程序接收从开发板经由UART协议发来的光点坐标,并将结果显示在窗口中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top