查看: 8374  |  回复: 11
参赛作品《基于dspC6748车牌识别系统》已完成

主题

回复
发表于2018-06-20 22:31:14 | 显示全部楼层
1# 电梯直达

【报名阶段需要填写的内容】


1. 参赛者姓名(必填项):张博文


2. 单位或学校名称(选填项):华南农业大学


3. 当前职务或职称(选填项):学生


4. 参赛作品的名字(必填项):基于dsp6748车牌识别系统


5. 简要陈述您的idea和作品(必填项):通过dsp控制摄像头拍照车牌,并传回dsp芯片处理,通过算法识别出车牌号码,并显示到计算机和LCD


6. 拟用到的立创商城在售物料(必填项):杜邦线,电阻电容若干,串口线


7. 拟用到的非立创商城物料或其它补充(必填项):dsp开发板


8. 拟用到的EDA工具软件名称(必填项):立创EDA,AD


【作品正式发表(报名成功后进入设计阶段)需要填写的内容】


一、作品简介

例如,可以包括但不局限于以下内容:

1.作品的整机外观图片或焊接组装好的PCBA图片;

 点击查看大图           

 点击查看大图

2.作品的研究背景、目的和功能、市场应用前景;

智能交通系统(ITS)是未来交通发展的必然趋势,是目前电子信息技术的交通运输
领域应用的前沿研究项目。车牌识别(License plate recognition system ,LRPS)是
智能交通系统的重要组成部分,在规范交通管理以及减少交通事故等方面具有重要的
现实意义。

3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现?

利用嵌入式dsp技术dsp技术实现车牌识别。与以往基于PC的车牌识别系统不同,本识别系统可将
图像算法固化在dsp芯片上,形成专用的图像处理硬件模块,具有识别速度快,系统结构简单,方便携带
,成本低,体积小优点。并且运用了一种综合车牌纹理,形状,颜色特征的定位方法和基于Radon 变换和
模板匹配的方法。

二、系统构架图

用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。

 点击查看大图

三、硬件部分的描述

1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的;


 点击查看大图

 点击查看大图

LCD_eaysEDA源码.zip 

底板pcd.zip  

VPORT.rar 

2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。

DSP芯片驱动摄像头和LCD显示屏工作,摄像头采集图像数据到dsp芯片,dsp芯片对图像进行处理并识别,把识别结果传给LCD屏幕和PC

3.注明所用到的EDA工具软件名称并附上设计链接。

https://lceda.cn/editor#id=|84a36e9f976e4f7f8b663105f8a5b92b

https://lceda.cn/editor#id=|137b1ba9035741398c83418830f02395

四、材料清单(BOM列表)

DSP芯片,开发板底板,7寸LCD屏幕,OV2640摄像头,摄像头转接器,LCD转接器等


五、软件部分的描述(选填)

如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)。

 

其中预处理部分包含纹理和颜色过滤等步骤。

***************************************************

//颜色过滤
void getblue(const unsigned char *in, unsigned char *out)
{
int i,j,r,g,b;
unsigned short hang,lie;
unsigned short temp;
    //获取宽度和高度
hang = (in[2]<<8) + in[1];
lie = (in[4]<<8) + in[3];
//复制像头
*out++ = *in++;
*out++ = *in++;
*out++ = *in++;
*out++ = *in++;
*out++ = *in++;

for(i=0; i<lie; i++)
for(j=0; j<hang; j++)
{    //求出RGB565的分量
r = (in[(i*hang + j)*2 + 1] >> 3) & 0x1f;
g =  ((in[(i*hang + j)*2 + 1] & 0x7) << 3) | ((in[(i*hang + j)*2]>>5) & 0x7);
b = (in[(i*hang + j)*2]) & 0x1f;
if( (r<=20)&&(g<=40)&&(b>= 21 //设置阈值,对非车牌区域过滤
{
temp=0;
}
else
{
temp=255;
}

*out++ = temp;

}
}

***************************************************************

//灰度变换
void GreyTran(const unsigned char *in, unsigned char *out)
{
int i,j,r,g,b;
unsigned short hang,lie;
unsigned short temp;

hang = (in[2]<<8) + in[1];
lie = (in[4]<<8) + in[3];
*out++ = *in++;
*out++ = *in++;
*out++ = *in++;
*out++ = *in++;
*out++ = *in++;

for(i=0; i<lie; i++)
for(j=0; j<hang; j++)
{
r = (in[(i*hang + j)*2 + 1] >> 3) & 0x1f;
g =  ((in[(i*hang + j)*2 + 1] & 0x7) << 3) | ((in[(i*hang + j)*2]>>5) & 0x7);
b = (in[(i*hang + j)*2]) & 0x1f;

r = r<<3;
g = g<<2;
b = b<<3;

temp = (r*299 + g*587 + b*114 + 500) / 1000;

if(temp >255)
{
temp = 255;
UARTprintf("grey=%x\n",*(out-1));
}
*out++ = temp;
}
}

****************************************************

//根据得出的4个边界计算车牌图像
void getcarplateimage(unsigned char *SourceImage,unsigned int left,
unsigned int right, unsigned int up, unsigned int down)
{
    int i,j;

   for(i=0;i<up*2;i++)
    {
    for(j=0;j<800*2;j++)
    SourceImage[ i*800+j] =0;
      // SourceImage[5 + (i*800+j)*2+1] =0;
    }

    for(i=479*2;i>down*2;i--)
    {
    for(j=0;j<800*2;j++)
    SourceImage[i*800+j] =0;

    }

   for(j=0;j<left*2;j++)
    {
    for(i=0;i<479;i++)
    SourceImage[i*800*2+j] =0;
    }
    for(j=799*2+1;j>right*2;j--)
 {
    for(i=0;i<479;i++)
    SourceImage[ i*800*2+j] =0;
   }
}
*****************************************************

  // 初始化离屏显存
GrOffScreen16BPPInit(&g_sTL_LCD_16BitDisplay, g_pucBuffer, LCD_WIDTH, LCD_HEIGHT);

// 初始化显存上下文.
GrContextInit(&sContext, &g_sTL_LCD_16BitDisplay);

// 使能LCD帧结束中断
    RasterEndOfFrameIntEnable(SOC_LCDC_0_REGS);

    // 使能光栅
    RasterEnable(SOC_LCDC_0_REGS);
    ConfigRasterDisplayEnable();
}

static void SetUpLCD(void)
{
unsigned int val;
volatile unsigned int savePinMux = 0;

PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_LCDC, PSC_POWERDOMAIN_ALWAYS_ON,
             PSC_MDCTL_NEXT_ENABLE);

    LCDPinMuxSetup();

// 背光
GPIODirModeSet(SOC_GPIO_0_REGS, 8, GPIO_DIR_OUTPUT);
GPIOPinWrite(SOC_GPIO_0_REGS, 8, GPIO_PIN_HIGH);

    // 禁用光栅
    RasterDisable(SOC_LCDC_0_REGS);
    
    // 时钟配置
    RasterClkConfig(SOC_LCDC_0_REGS, LCDCLK, LCD_CLK);

    // 配置 LCD DMA 控制器
    RasterDMAConfig(SOC_LCDC_0_REGS, RASTER_DOUBLE_FRAME_BUFFER,
                    RASTER_BURST_SIZE_16, RASTER_FIFO_THRESHOLD_8,
                    RASTER_BIG_ENDIAN_DISABLE);

    // 模式配置(例如:TFT 或者 STN,彩色或者黑白 等等)
    RasterModeConfig(SOC_LCDC_0_REGS, RASTER_DISPLAY_MODE_TFT,
                     RASTER_PALETTE_DATA, RASTER_COLOR, RASTER_RIGHT_ALIGNED);

    // 帧缓存数据以 LSB 方式排列
    RasterLSBDataOrderSelect(SOC_LCDC_0_REGS);
    
    // 禁用 Nibble 模式
    RasterNibbleModeDisable(SOC_LCDC_0_REGS);
   
    // 配置光栅控制器极性
    RasterTiming2Configure(SOC_LCDC_0_REGS, RASTER_FRAME_CLOCK_LOW |
                                            RASTER_LINE_CLOCK_LOW  |
                                            RASTER_PIXEL_CLOCK_HIGH|
                                            RASTER_SYNC_EDGE_RISING|
                                            RASTER_SYNC_CTRL_ACTIVE|
                                            RASTER_AC_BIAS_HIGH     , 0, 255);

    // 配置水平 / 垂直参数
    RasterHparamConfig(SOC_LCDC_0_REGS, LCD_WIDTH, HSW, HFP, HBP);
RasterVparamConfig(SOC_LCDC_0_REGS, LCD_HEIGHT, VSW, VFP, VBP);

   // 配置 FIFO DMA 延时
   RasterFIFODMADelayConfig(SOC_LCDC_0_REGS, (17647058/8823529));

   // 修改优先级
    val = HWREG(0x01C14118);
val &= 0x0fffffff;
HWREG(0x01C14118) = val;

}


六、作品演示

请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得10分,具体详见活动规则。

https://v.qq.com/x/page/x0762oewapz.html

七、总结

例如您在完成该作品过程中的一些体会、碰到的技术问题或调试经验、作品的未来规划,及对我们主办方的建议和意见等。

作品识别误差率主要受外界光线强度的干扰,如果有自动补光系统识别率可以更高。 最后感谢立创公司给予我们这次大显身手的机会谢谢啦


主题

回复
发表于2021-12-29 16:08:49   |  显示全部楼层
12#
发表于2018-07-06 15:55:09  5# 用这么老的技术做车牌识别,完全没有价值,现在都用A7的,几个美元的成本做好。停车场都用这样的方案了。
666

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部