RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

標(biāo)簽 > DM642

DM642

+關(guān)注 0人關(guān)注

DM642全名TMS320DM642是TI公司C6000系列DSP中最新的定點(diǎn)DSP,其核心是C6416型高性能數(shù)字信號(hào)處理器,具有極強(qiáng)的處理性能,高度的靈活性和可編程性,同時(shí)外圍集成了非常完整的音頻、視頻和網(wǎng)絡(luò)通信等設(shè)備及接口,特別適用于機(jī)器視覺(jué)、醫(yī)學(xué)成像、網(wǎng)絡(luò)視頻監(jiān)控、數(shù)字廣播以及基于數(shù)字視頻/圖像處理的消費(fèi)類電子產(chǎn)品等高速DSP應(yīng)用領(lǐng)域。

文章: 19 個(gè)
瀏覽: 26612
帖子: 49 個(gè)

DM642簡(jiǎn)介

  DM642全名TMS320DM642是TI公司C6000系列DSP中最新的定點(diǎn)DSP,其核心是C6416型高性能數(shù)字信號(hào)處理器,具有極強(qiáng)的處理性能,高度的靈活性和可編程性,同時(shí)外圍集成了非常完整的音頻、視頻和網(wǎng)絡(luò)通信等設(shè)備及接口,特別適用于機(jī)器視覺(jué)、醫(yī)學(xué)成像、網(wǎng)絡(luò)視頻監(jiān)控、數(shù)字廣播以及基于數(shù)字視頻/圖像處理的消費(fèi)類電子產(chǎn)品等高速DSP應(yīng)用領(lǐng)域。筆者針對(duì)市場(chǎng)客戶的需求,設(shè)計(jì)并實(shí)現(xiàn)了一款以TVP5150為視頻輸入解碼器,以PCM1801為音頻輸入采集電路,以TMS320DM642型DSP為核心處理器的多路視頻采集兼壓縮處理PCI板卡,并將其應(yīng)用于構(gòu)建高穩(wěn)定性、高魯棒性和多媒體數(shù)字監(jiān)控系統(tǒng),取得了較好的社會(huì)效益和經(jīng)濟(jì)效益。

DM642百科

  DM642全名TMS320DM642是TI公司C6000系列DSP中最新的定點(diǎn)DSP,其核心是C6416型高性能數(shù)字信號(hào)處理器,具有極強(qiáng)的處理性能,高度的靈活性和可編程性,同時(shí)外圍集成了非常完整的音頻、視頻和網(wǎng)絡(luò)通信等設(shè)備及接口,特別適用于機(jī)器視覺(jué)、醫(yī)學(xué)成像、網(wǎng)絡(luò)視頻監(jiān)控、數(shù)字廣播以及基于數(shù)字視頻/圖像處理的消費(fèi)類電子產(chǎn)品等高速DSP應(yīng)用領(lǐng)域。筆者針對(duì)市場(chǎng)客戶的需求,設(shè)計(jì)并實(shí)現(xiàn)了一款以TVP5150為視頻輸入解碼器,以PCM1801為音頻輸入采集電路,以TMS320DM642型DSP為核心處理器的多路視頻采集兼壓縮處理PCI板卡,并將其應(yīng)用于構(gòu)建高穩(wěn)定性、高魯棒性和多媒體數(shù)字監(jiān)控系統(tǒng),取得了較好的社會(huì)效益和經(jīng)濟(jì)效益。

  硬件架構(gòu)

  TMS320DM642采用第二代高性能、先進(jìn)的超長(zhǎng)指令字veloci T1.2結(jié)構(gòu)的DSP核及增強(qiáng)的并行機(jī)制,當(dāng)工作在720M赫茲的時(shí)鐘頻率下,其處理性能最高可達(dá)5760MI/s,使得該款DSP成為數(shù)字媒體解決方案的首選產(chǎn)品,它不僅擁有高速控制器的操作靈活性,而且具有陣列處理器的數(shù)字處理能力,TMS320DM642的外圍集成了非常完整的音頻、視頻和網(wǎng)絡(luò)通信接口。

  主要構(gòu)成

  3個(gè)可配置的視頻端口(VPORT0-2)能夠與通用的視頻編、解碼器實(shí)現(xiàn)無(wú)縫連接,支持多種視頻分辨率及視頻標(biāo)準(zhǔn),支持RAW視頻輸入/輸出,傳輸流模式;

  1個(gè)10/100Mb/s以太網(wǎng)接口(EMAC),符合IEEE 802.3標(biāo)準(zhǔn);

  1個(gè)多通道帶緩沖音頻串行端口(McASP),支持I2S,DIT,S/PDIF,IEC60958-1,AES-3、CP-430等音頻格式;

  2個(gè)多通道帶緩沖串行端口(McBSP),采用RS232電平驅(qū)動(dòng);

  1個(gè)VCXO內(nèi)插控制單元(VIC),支持音/視頻同步;

  1個(gè)32位、66M赫茲、3.3V主/從PCI接口,遵循PCI2.2規(guī)范;

  1個(gè)用戶可配置的16/32主機(jī)接口(HPI);

  1個(gè)16位通用輸入/輸出端口(GPIO);

  1個(gè)64位外部存儲(chǔ)器接口(EMIF),能夠與大多數(shù)異步存儲(chǔ)器(SRAM、EPROM)及同步存儲(chǔ)器(SDRAM,SBSRAM,ZBT SRAM,F(xiàn)IFO)無(wú)縫連接,最大可尋址外部存儲(chǔ)器空間為1024MB;

  1個(gè)具有64路獨(dú)立通道的增強(qiáng)型直接內(nèi)存訪問(wèn)控制器(EDMA);

  1個(gè)數(shù)據(jù)管理輸入/輸出模塊(MDIO);

  1個(gè)I2C總線模塊;

  3個(gè)32位通用定時(shí)器;

  1個(gè)符合IEEE 1149.1標(biāo)準(zhǔn)的JTAG接口及子板接口等。

  DM642學(xué)習(xí)筆記(程序注釋)

  用的是瑞泰創(chuàng)新的實(shí)驗(yàn)箱(ICETEK-DM642-IDK-M),主要是視頻處理部分的程序注釋及思考題思路及一些不成熟的見解~~

  實(shí)驗(yàn)5.6-5.19 視頻驅(qū)動(dòng)程序應(yīng)用

  DM642視頻驅(qū)動(dòng)程序的注釋:

  /*

  * Copyright 2003 by Texas Instruments Incorporated.

  * All rights reserved. Property of Texas Instruments Incorporated.

  * Restricted rights to use, duplicate or disclose this code are

  * granted through contract.

  *

  */

  /* “@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)” */

  #include 《std.h》 //如果使用C語(yǔ)言,必須將此文件作為第一個(gè)頭文件

  #include 《tsk.h》

  #include 《sem.h》

  #include 《gio.h》

  #include 《csl_dat.h》

  #include 《csl_cache.h》//使用CSL庫(kù),要用到的一些頭文件,可參考CSL

  #include 《fvid.h》//視頻驅(qū)動(dòng)頭文件

  #include 《edc.h》

  #include 《vport.h》

  #include 《vportcap.h》

  #include 《vportdis.h》

  #include 《saa7105.h》

  #include 《saa7115.h》

  #include 《evmdm642.h》//芯片頭文件

  #include “colorbar.h”//如果顯示彩色滾動(dòng)條,就必須有此頭文件;否則不需要

  #include “evmdm642_vcapparams.h”

  #include “evmdm642_vdisparams.h”

  /* heap IDs defined in the BIOS configuration file */

  extern Int EXTERNALHEAP;//??DSP/BIOS?????¨??

  /*

  * ======== main ========

  */

  main()

  {

  /******************************************************/

  /* open CSL DAT module for fast copy */

  /******************************************************/

  CSL_init(); //調(diào)用任何CSL庫(kù)中的函數(shù),必須先在此調(diào)用函數(shù)

  CACHE_clean(CACHE_L2ALL, 0, 0); //清洗Cache模式

  CACHE_setL2Mode(CACHE_256KCACHE); //設(shè)置Cache模式

  CACHE_enableCaching(CACHE_EMIFA_CE00); //使能EMIFA CE0空間

  CACHE_enableCaching(CACHE_EMIFA_CE01); //使能EMIFA CE1空間

  DAT_open(DAT_CHAANY, DAT_PRI_LOW, DAT_OPEN_2D); //打開數(shù)據(jù)傳輸

  }

  /*

  * ======== tskVideoLoopback ========

  * video loopback function.

  */

  void tskVideoLoopback()

  {

  Int i;

  int m_nWork;

  Int status;

  FVID_Handle disChan; //設(shè)置設(shè)備句柄

  Int frames = 0;

  FVID_Frame *disFrameBuf;

  Int numLinesDis = EVMDM642_vDisParamsChan.imgVSizeFld1;

  //設(shè)置顯示的行數(shù),VGA為480,PAL為576

  Int numLinesCap =EVMDM642_vCapParamsChan.fldYStop1 - //設(shè)置采集行數(shù)

  EVMDM642_vCapParamsChan.fldYStrt1+1;

  /*判斷是顯示區(qū)域大,還是采集區(qū)域大,取其小者*/

  Int numLines = (numLinesDis 》 numLinesCap) ? numLinesCap : numLinesDis;

  #ifdef _LOOPBACK

  FVID_Handle capChan;

  /*設(shè)置每行顯示的像素?cái)?shù),PAL制為720*/

  Int numPixels = EVMDM642_vCapParamsChan.fldXStop1 -

  EVMDM642_vCapParamsChan.fldXStrt1+1;

  FVID_Frame *capFrameBuf;

  /*設(shè)置采集圖像一行的總像素*/

  Int capLinePitch = EVMDM642_vCapParamsChan.fldXStop1 -

  EVMDM642_vCapParamsChan.fldXStrt1+1;

  /*設(shè)置顯示圖像一行的總像素*/

  Int disLinePitch = EVMDM642_vDisParamsChan.imgHSizeFld1;

  #ifdef _PIP

  VPORTCAP_Params EVMDM642_vCapParamsChan2 = EVMDM642_vCapParamsChan;

  FVID_Handle capChan2;

  FVID_Frame *capFrameBuf2;

  Int yPitch = capLinePitch 》》 1;

  Int cPitch = ((capLinePitch 》》 2) + 7) & (~ 7);

  #endif

  #endif

  numLines *= 2; /* both fields */如果輸出為PAL制,前面numLinesCap不要*2,這里再*2?

  /******************************************************/

  /* allocate both capture and display frame buffers */

  /* in external heap memory */

  /******************************************************/

  /*分配采集和顯示圖像的存放緩沖區(qū)*/

  EVMDM642_vCapParamsChan.segId = EXTERNALHEAP;

  EVMDM642_vDisParamsChan.segId = EXTERNALHEAP;

  EVMDM642_vDisParamsSAA7105.hI2C = EVMDM642_I2C_hI2C;

  EVMDM642_vCapParamsSAA7115.hI2C = EVMDM642_I2C_hI2C;

  /******************************************************/

  /* initialization of capture driver */

  /******************************************************/

  /*建立并初始化采集設(shè)備對(duì)象*/

  #ifdef _LOOPBACK

  capChan = FVID_create(“/VP0CAPTURE/A/0”,

  IOM_INPUT, &status, (Ptr)&EVMDM642_vCapParamsChan, NULL);

  #ifdef _PIP

  EVMDM642_vCapParamsChan2.scale = VPORT_SCALING_ENABLE;

  EVMDM642_vCapParamsChan2.fldOp = VPORT_FLDOP_FLD1;

  EVMDM642_vCapParamsChan2.thrld 》》=1;

  capChan2 = FVID_create(“/VP1CAPTURE/A/1”,

  IOM_INPUT, &status, (Ptr)&EVMDM642_vCapParamsChan2, NULL);

  #endif

  #endif

  /******************************************************/

  /* initialization of display driver */

  /******************************************************/

  /*建立并初始化顯示設(shè)備對(duì)象*/

  disChan = FVID_create(“/VP2DISPLAY”, IOM_OUTPUT,

  &status, (Ptr)&EVMDM642_vDisParamsChan, NULL);

  /******************************************************/

  /* configure video encoder & decoder */

  /******************************************************/

  for ( m_nWork=0;m_nWork《6;m_nWork++ )//這里的循環(huán)有何用???一直沒(méi)有弄清楚

  {

  /*為保證采集和顯示設(shè)備正常工作,為其設(shè)置驅(qū)動(dòng)*/

  FVID_control(disChan, VPORT_CMD_EDC_BASE + EDC_CONFIG,

 ?。≒tr)&EVMDM642_vDisParamsSAA7105);

  #ifdef _LOOPBACK

  FVID_control(capChan, VPORT_CMD_EDC_BASE + EDC_CONFIG,

  (Ptr)&EVMDM642_vCapParamsSAA7115);

  #ifdef _PIP

  EVMDM642_vCapParamsSAA7115.aFmt = SAA7115_AFMT_COMPOSITE;

  FVID_control(capChan2, VPORT_CMD_EDC_BASE+EDC_CONFIG,

 ?。≒tr)&EVMDM642_vCapParamsSAA7115);

  #endif

  #endif

  }

  /******************************************************/

  /* start capture & display operation */

  /******************************************************/

  /*開始采集和顯示操作*/

  FVID_control(disChan, VPORT_CMD_START, NULL);

  #ifdef _LOOPBACK

  FVID_control(capChan, VPORT_CMD_START, NULL);

  #ifdef _PIP

  FVID_control(capChan2, VPORT_CMD_START, NULL);

  #endif

  #endif

  /********************************************************/

  /* request a frame buffer from display & capture driver */

  /********************************************************/

  /*分配采集和顯示一幀圖像存放的緩沖區(qū)*/

  FVID_alloc(disChan, &disFrameBuf);

  #ifdef _LOOPBACK

  FVID_alloc(capChan, &capFrameBuf);

  #ifdef _PIP

  FVID_alloc(capChan2, &capFrameBuf2);

  #endif

  #endif

  frames ++;

  while(1){/* loop forever */

  #ifdef _LOOPBACK

  /* copy data from capture buffer to display buffer */

  /***************************************************/

  /*將采集緩沖區(qū)的內(nèi)容復(fù)制到顯示緩沖區(qū)*/

  for(i = 0; i 《 numLines; i ++) {

  DAT_copy(capFrameBuf-》frame.iFrm.y1 + i * capLinePitch,

  disFrameBuf-》frame.iFrm.y1 + i * disLinePitch,

  numPixels);

  DAT_copy(capFrameBuf-》frame.iFrm.cb1 + i * (capLinePitch 》》 1),

  disFrameBuf-》frame.iFrm.cb1 + i * (disLinePitch 》》 1),

  numPixels》》1);

  DAT_copy(capFrameBuf-》frame.iFrm.cr1 + i * (capLinePitch 》》 1),

  disFrameBuf-》frame.iFrm.cr1 + i * (disLinePitch 》》 1),

  numPixels》》1);

  }

  #ifdef _PIP

  for(i = 0; i 《 (numLines》》1); i ++) {

  DAT_copy(capFrameBuf2-》frame.iFrm.y1 + i * yPitch,

  disFrameBuf-》frame.iFrm.y1 + i * disLinePitch

  + (disLinePitch 》》 1),

  (numPixels》》1));

  DAT_copy(capFrameBuf2-》frame.iFrm.cb1 + i * cPitch,

  disFrameBuf-》frame.iFrm.cb1 + i * (disLinePitch 》》 1)

  + (disLinePitch 》》2 ),

 ?。╪umPixels 》》 2));

  DAT_copy(capFrameBuf2-》frame.iFrm.cr1 + i * cPitch,

  disFrameBuf-》frame.iFrm.cr1 + i * (disLinePitch 》》 1)

  +(disLinePitch 》》 2),

 ?。╪umPixels 》》 2));

  }

  #endif

  DAT_wait(DAT_XFRID_WAITALL);

  FVID_exchange(capChan, &capFrameBuf);//采集一幀圖像

  #ifdef _PIP

  FVID_exchange(capChan2, &capFrameBuf2);

  #endif

  #else //如果定義CAPTURE則填充圖像緩沖區(qū)為8條帶

  fillFrmBuf(&disFrameBuf-》frame.iFrm, EVMDM642_vDisParamsChan.imgHSizeFld1,

  EVMDM642_vDisParamsChan.imgVSizeFld1

  + EVMDM642_vDisParamsChan.imgVSizeFld2,

  frames % 360);

  #endif

  FVID_exchange(disChan, &disFrameBuf);//將顯示緩沖區(qū)中一幀圖像送給顯示設(shè)備

  frames ++; //處理下一幀圖像

  }

  }

  實(shí)驗(yàn)5.20 視頻圖像處理-取反

  1.將程序改成屏幕1/4進(jìn)行取反,而其他不變

  在主程序中ICETEKDM642PCIImageProcessReverse()函數(shù)前加if(i《(numLines/2)),即:

  if(i《(numLines/2))

  ICETEKDM642PCIImageProcessReverse();

  并將ICETEKDM642PCIImageProcessReverse()函數(shù)中的循環(huán)體改為如下:

  for ( i=0;i《720/2;i++ )

  nMemTemp[i]=~nMemTemp[i];

  2.例程中處理了亮度信號(hào),以下是處理色差信號(hào):

  for ( i = 0; i 《 numLines; i ++ )

  {

  m_nID=DAT_copy(capFrameBuf-》frame.iFrm.cb1+i*(capLinePitch》》1),nMemTemp,numPixels》》1);

  DAT_wait(m_nID);

  ICETEKDM642PCIImageProcessReverse();

  DAT_copy(nMemTemp,disFrameBuf-》frame.iFrm.cb1+i*(disLinePitch》》1),numPixels》》1);

  for ( m_nWork=0;m_nWork《numPixels》》1;m_nWork++ )

  nMemTemp[m_nWork]=0x080;

  DAT_copy(nMemTemp,disFrameBuf-》frame.iFrm.y1+i*disLinePitch,numPixels); DAT_copy(nMemTemp,disFrameBuf-》frame.iFrm.cr1+i*(disLinePitch》》1),numPixels》》1);

  }

  出現(xiàn)的問(wèn)題:圖像顯示時(shí)右半屏有閃爍???~~~

  實(shí)驗(yàn)5.21 視頻圖像處理-直方圖統(tǒng)計(jì)

  程序注釋:源程序中定義的js變量不知為何用,于是就刪除了~~~

  #include “ICETEK-DM642-PCI.h”

  //工作變量

  #pragma DATA_SECTION(nMemTemp, “.INTPROCBUFF”);

  #pragma DATA_ALIGN(nMemTemp,128);

  unsigned char nMemTemp[720];

  #pragma DATA_SECTION(nHisto, “.INTPROCBUFF”);

  #pragma DATA_ALIGN(nHisto,128);

  unsigned int nHisto[256];

  unsigned char imgHisto[HISTOHIGH*HISTOWIDTH];//128*256

  int mi,mj,m_nWork1;

  unsigned int m_nWork,*pWork;

  unsigned char *pImg,*pImg1;

  void ICETEKDM642PCIBoardInit()//直方圖顯示區(qū)域初始化

  {

  for ( mi=0;mi《HISTOHIGH*HISTOWIDTH;mi++ )

  imgHisto[mi]=1;

  for ( mi=0;mi《256;mi++ )

  nHisto[mi]=0;

  }

  #pragma CODE_SECTION(ICETEKDM642PCIStatistic,“.text1”)

  void ICETEKDM642PCIStatistic()//統(tǒng)計(jì)一幀圖像的直方圖

  {

  int i;

  for ( i=0;i《720;i++ )

  {

  nHisto[nMemTemp[i]]++;

  }

  }

  #pragma CODE_SECTION(ICETEKDM642PCIHistogram,“.text1”)

  void ICETEKDM642PCIHistogram()//將統(tǒng)計(jì)的一幀圖像的直方圖顯示在顯示區(qū)域上

  {

  m_nWork=0;

  for ( mi=0;mi《256;mi++ )//找出各灰度級(jí)別像素總數(shù)最大的

  if ( m_nWork《nHisto[mi] )

  m_nWork=nHisto[mi];

  m_nWork/=(HISTOHIGH-1);//求出比例因子(即像素總數(shù)最大值/顯示區(qū)域的高度)

  for ( mi=0;mi《256;mi++ )//轉(zhuǎn)換各灰度級(jí),將其映射到顯示區(qū)域(即:各個(gè)灰度級(jí)的像素/比例因子)

  {

  nHisto[mi]/=m_nWork;

  }

  for ( mi=0;mi《HISTOHIGH*HISTOWIDTH;mi++ )//將顯示區(qū)域置白

  imgHisto[mi]=1;

  pImg = imgHisto; //pImg指針指向顯示區(qū)域首地址

  pImg += ((HISTOHIGH-1)*HISTOWIDTH); //mImg指針指向顯示區(qū)域尾地址

  pImg++;//???

  for ( mi=1;mi《255;mi++,pImg++ )

  {

  for ( mj=0,pImg1=pImg;mj《nHisto[mi];mj++,pImg1-=HISTOWIDTH )

 ?。?pImg1)=HISTOCOLOR;//對(duì)應(yīng)的顯示區(qū)域填充顏色,這里還是不太明白

  }

  for ( mi=0;mi《256;mi++ ) //清除直方圖統(tǒng)計(jì)的數(shù)組

  nHisto[mi]=0;

  }

  實(shí)驗(yàn)5.22 視頻圖像處理-直方圖均衡化增強(qiáng)

  程序注釋:直方圖均衡化,其實(shí)質(zhì)是圖像增強(qiáng)的一種。

  #include “math.h”

  #include “ICETEK-DM642-PCI.h”

  //工作變量

  #pragma DATA_SECTION(nMemTemp, “.INTPROCBUFF”);

  #pragma DATA_ALIGN(nMemTemp,128);

  unsigned char nMemTemp[720];

  #pragma DATA_SECTION(fHisto, “.INTPROCBUFF”);

  #pragma DATA_ALIGN(fHisto,128);

  float fHisto[256];//

  #pragma DATA_SECTION(lut, “.INTPROCBUFF”);

  #pragma DATA_ALIGN(lut,128);

  unsigned char lut[256];//保存新的灰度級(jí),是通過(guò)上一幀圖像計(jì)算的

  int mi,mj,m_nWork1;

  unsigned int m_nWork,*pWork,js;

  unsigned char *pImg,*pImg1;

  float m_fWork;

  void ICETEKDM642PCIBoardInit()

  {

  js=0;

  for ( mi=0;mi《256;mi++ )

  {

  fHisto[mi]=0.0f;

  lut[mi]=0;

  }

  }

  #pragma CODE_SECTION(ICETEKDM642PCIStatistic,“.text1”)

  void ICETEKDM642PCIStatistic()

  {

  int i;

  for ( i=0;i《720;i++ )

  {

  fHisto[nMemTemp[i]]++;//統(tǒng)計(jì)灰度直方圖

  nMemTemp[i]=lut[nMemTemp[i]];//新的灰度級(jí)映射(通過(guò)上一幀圖像計(jì)算出的新灰度級(jí),處理這一幀圖像)

  }

  }

  #pragma CODE_SECTION(ICETEKDM642PCIHistogramEnhance,“.text1”)

  void ICETEKDM642PCIHistogramEnhance()//

  {

  m_fWork=720*576; fHisto[0]/=m_fWork;

  for ( mi=1;mi《256;mi++ )//灰度直方圖頻率

  {

  fHisto[mi]/=m_fWork;

  fHisto[mi]+=fHisto[mi-1];

  }

  for ( mi=0;mi《256;mi++ )//計(jì)算新的灰度級(jí)

  {

  m_fWork=fHisto[mi];

  m_fWork*=255;

  lut[mi]=(unsigned char)m_fWork;//這就是新的灰度級(jí)

  }

  for ( mi=0;mi《256;mi++ )//灰度直方圖數(shù)組清0

  fHisto[mi]=0.0f;

  }

  實(shí)驗(yàn)5.23 視頻圖像處理-中值濾波

  中值濾波算法實(shí)質(zhì)是一種圖像噪聲的抑制。該系統(tǒng)實(shí)現(xiàn)中值濾波算法速度極慢。

  實(shí)驗(yàn)5.24 視頻圖像處理-邊緣檢測(cè)(Sobel算子)

  Sobel算子實(shí)質(zhì)是圖像的銳化處理,主要目的是突出圖像中的細(xì)節(jié)或者增強(qiáng)被模糊了的細(xì)節(jié)。

  但是對(duì)這個(gè)算法程序?qū)崿F(xiàn)不是很明白。

  for ( mi=0;mi《MWIDTH;mi++,pImg1++,pImg2++,pImg3++ )

  {

  x3=(*pImg1); x6=(*pImg2); x9=(*pImg3);

  m_nWork1=x7+x8+x8-x2-x2-x3;

  m_nWork2=x3+x6+x6-x4-x4-x7;

  if ( m_nWork1《m_nWork2 )////對(duì)這個(gè)算法的程序?qū)崿F(xiàn)不是很明白

  m_nWork1=m_nWork2;

  m_nWork2=m_nWork1+x9-x1;

  if ( m_nWork2》255 ) m_nWork2=255;

  else if ( m_nWork2《0 ) m_nWork2=0;

  nMemTemp[mi+180]=m_nWork2;

  x1=x2; x2=x3;

  x4=x5; x5=x6;

  x7=x8; x8=x9;

  }

  實(shí)驗(yàn)5.25 視頻圖像處理-傅立葉變換

  對(duì)傅立葉變換的知識(shí)比較空白。壓根沒(méi)看懂~~~

  實(shí)驗(yàn)5.26 視頻圖像處理-色彩空間變換

  程序注釋:

  void ICETEKDM642PCIYUVRGB()

  {

  int i,j;

  int r,g,b,y,u,v;

  unsigned char *py,*pu,*pv,*pr,*pg,*pb;

  py=m_dbFrameY; pu=m_dbFrameU; pv=m_dbFrameV;

  pr=m_dbTargetImageR; pg=m_dbTargetImageG; pb=m_dbTargetImageB;

  for ( i=0;i《SIMGHEIGHT;i++ )

  {

  for ( j=0;j《SIMGWIDTH;j+=2 ) ////列720點(diǎn),360個(gè)32bit,

  {

  u=(*pu); v=(*pv); y=(*py);

  u-=128; v-=128;

  r=y+1.402*u;

  g=y-0.34414*u-0.71414*v;

  b=y+1.772*v;

  if ( r》255 ) r=255;

  else if ( r《0 ) r=0;

  if ( g》255 ) g=255;

  else if ( g《0 ) g=0;

  if ( b》255 ) b=255;

  else if ( b《0 ) b=0;

  (*pr)=r; pr++;

 ?。?pg)=g; pg++;

 ?。?pb)=b; pb++;

  py++; y=(*py);

  r=y+1.402*u;

  g=y-0.34414*u-0.71414*v;

  b=y+1.772*v;

  if ( r》255 ) r=255;

  else if ( r《0 ) r=0;

  if ( g》255 ) g=255;

  else if ( g《0 ) g=0;

  if ( b》255 ) b=255;

  else if ( b《0 ) b=0;

 ?。?pr)=r; pr++;

 ?。?pg)=g; pg++;

 ?。?pb)=b; pb++;

  py++; pu++; pv++;

  }

  }

  }

  ////在計(jì)算機(jī)中,用RGB方式描述一個(gè)像素需要R、G、B共3個(gè)字節(jié)。而用YUV方式描述,則對(duì)于每2個(gè)像素,Y用2個(gè)字節(jié),U取相同的值,用一個(gè)字節(jié),V取相同的值,

  ////用一個(gè)字節(jié),平均每個(gè)像素2個(gè)字節(jié)。理解了這一點(diǎn),對(duì)于上面的程序就理解了~~~

查看詳情

dm642技術(shù)

基于TMS320DM642嵌入式圖像識(shí)別方案實(shí)現(xiàn)車流量檢測(cè)系統(tǒng)的設(shè)計(jì)

現(xiàn)有的傳統(tǒng)視頻檢測(cè)方法基于工控機(jī),其算法成熟,且已形成相關(guān)產(chǎn)品。但其也有缺點(diǎn):一是由于通用CPU沒(méi)有專用的硬件乘法器,故很難實(shí)現(xiàn)圖像的時(shí)實(shí)性處理。二是采...

2020-11-17 標(biāo)簽:嵌入式控制系統(tǒng)德州儀器 6425 0

基于DM642的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計(jì)

基于DM642的嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計(jì)

 目前的安防監(jiān)控領(lǐng)域的主流產(chǎn)品是DVR(數(shù)字硬盤錄像機(jī)),它的主要特點(diǎn)是適合監(jiān)控點(diǎn)集中的局域監(jiān)控應(yīng)用。但是,隨著對(duì)于遠(yuǎn)程分布式監(jiān)控需求的增長(zhǎng),嵌入式網(wǎng)絡(luò)...

2016-05-27 標(biāo)簽:嵌入式TIDM642 1499 0

基于DM642平臺(tái)的智能視頻分析系統(tǒng)設(shè)計(jì)

基于DM642平臺(tái)的智能視頻分析系統(tǒng)設(shè)計(jì)

以DM642為核心,設(shè)計(jì)了一款智能視頻分析系統(tǒng),支持標(biāo)清視頻。采用模塊化設(shè)計(jì),通過(guò)視頻智能分析,對(duì)目標(biāo)實(shí)現(xiàn)了檢測(cè)、識(shí)別、跟蹤及預(yù)警功能。

2014-01-09 標(biāo)簽:TIDM642智能視頻 1596 0

基于DSP的視頻采集驅(qū)動(dòng)程序的設(shè)計(jì)

基于DSP的視頻采集驅(qū)動(dòng)程序的設(shè)計(jì)

視頻終端的核心是圖像的數(shù)字化處理模塊?;赑C機(jī)的數(shù)字視頻處理,給出了算法研究的途徑,而基于高速DSP的應(yīng)用模塊才提供了實(shí)時(shí)嵌入式視頻處理的可能。然而,...

2011-09-29 標(biāo)簽:DSPDM642EDMA 1829 0

DM642的I2C息線配置與應(yīng)用

DM642的I2C息線配置與應(yīng)用

本文主要介紹的就是基于DM642的視頻采集處理系統(tǒng)中I2C模塊的正確初始化,以及通過(guò)I2C總線正確地對(duì)視頻解碼芯片SAA7115的寄存器讀/寫程序。

2011-09-23 標(biāo)簽:DM642I2C視頻采集 1615 0

DM642上5/3提升小波的優(yōu)化

DM642上5/3提升小波的優(yōu)化

本文介紹了5/3提升小波變換及其在DM642上的實(shí)現(xiàn)。在通用的DSP芯片上實(shí)現(xiàn)該算法具有很好的可擴(kuò)展性、可升級(jí)性與易維護(hù)性。用這種方式靈活性強(qiáng),完全能滿...

2011-08-09 標(biāo)簽:DM642小波小波優(yōu)化 1446 0

查看更多>>

dm642資訊

基于CDMA網(wǎng)絡(luò)傳輸?shù)臒o(wú)線視頻監(jiān)控存儲(chǔ)系統(tǒng)

基于CDMA網(wǎng)絡(luò)傳輸?shù)臒o(wú)線視頻監(jiān)控存儲(chǔ)系統(tǒng)

摘 要: 選用TMS320DM642 作為系統(tǒng)CPU ,并采用最新視頻編碼標(biāo)準(zhǔn)H. 264 壓縮算法, 實(shí)現(xiàn)基于CDMA 網(wǎng)絡(luò)傳輸?shù)臒o(wú)線視頻監(jiān)控和視頻數(shù)...

2012-07-18 標(biāo)簽:DM642h264編碼無(wú)線視頻監(jiān)控 2380 1

多媒體處理器DM642及其在視頻監(jiān)控中的應(yīng)用

多媒體處理器DM642及其在視頻監(jiān)控中的應(yīng)用

  介紹了一種新型的多媒體DSP處理器DM642的結(jié)構(gòu)和功能,總結(jié)了開發(fā)DM642系統(tǒng)的應(yīng)用技術(shù)和方法,并給出了基于DM642的視頻監(jiān)控系統(tǒng)實(shí)例。

2012-05-28 標(biāo)簽:多媒體處理器視頻監(jiān)控DM642 1377 0

基于DM642的視音頻采集器的設(shè)計(jì)

基于DM642的視音頻采集器的設(shè)計(jì)

地理信息系統(tǒng)( GIS)、全球定位系統(tǒng)( GPS)的廣泛應(yīng)用使人們享受到了基于位置服務(wù)所帶來(lái)的諸多便利。傳統(tǒng)G IS 是以地圖為可視化主要手段, 然而人...

2011-09-22 標(biāo)簽:GPSDM642GIS 1779 0

基于DM642DSP的視頻編碼優(yōu)化方法

基于DM642DSP的視頻編碼優(yōu)化方法

在視頻監(jiān)控系統(tǒng)和視頻會(huì)議系統(tǒng)以及流媒體等應(yīng)用中,數(shù)字視頻編碼成為最重要和最基本的技術(shù)手段,論文作者針對(duì)視頻監(jiān)控系統(tǒng),論述了基于TMS320DM642媒體...

2011-09-16 標(biāo)簽:DSPDM642視頻編碼 1216 0

DM642和CPLD外部中斷的寄存器式鍵盤設(shè)計(jì)

DM642和CPLD外部中斷的寄存器式鍵盤設(shè)計(jì)

介紹了一種采用DM642和CPLD相配合的擴(kuò)展鍵盤方法。CPLD管理鍵盤電路中的芯片邏輯,DM642的外部中斷監(jiān)控按鍵的狀態(tài)。簡(jiǎn)單闡述了鍵盤的分類,給出...

2011-08-19 標(biāo)簽:CPLD寄存器鍵盤 2584 0

基于DM642的X.264編碼器優(yōu)化

基于DM642的X.264編碼器優(yōu)化

TMS320DM642是TI公司推出的一款針對(duì)視頻和圖像處理領(lǐng)域應(yīng)用的數(shù)字多媒體處理芯片,具有處理能力強(qiáng)和集成度高等特點(diǎn),是目前實(shí)現(xiàn)H.264視頻編碼器...

2011-08-17 標(biāo)簽:編碼器DM642H.264 1906 0

基于DM642的視頻處理系統(tǒng)硬件設(shè)計(jì)

基于DM642的視頻處理系統(tǒng)硬件設(shè)計(jì)

系統(tǒng)研究并實(shí)現(xiàn)了一個(gè)通用的基于DM642的視頻處理系統(tǒng)。該系統(tǒng)已經(jīng)調(diào)試成功,它可以完成視頻信號(hào)的輸入與輸出,可以應(yīng)用于視頻圖象采集和處理的各種場(chǎng)合中

2011-03-23 標(biāo)簽:DM642視頻處理 4670 0

基于DM642的PCI總線GJB289A智能仿真卡的設(shè)計(jì)

基于DM642的PCI總線GJB289A智能仿真卡的設(shè)計(jì)

  虛擬仿真系統(tǒng)模擬GJB289A總線設(shè)備,需要收發(fā)大量的GJB289A總線數(shù)據(jù)。傳統(tǒng)的處理方式是通過(guò)GJB289A總線PCI通訊卡將接收到的數(shù)據(jù)傳輸?shù)?..

2010-12-25 標(biāo)簽:DM642PCI總 1269 0

基于DM642的I2C模塊的正確初始化

基于DM642的I2C模塊的正確初始化

  DM642作為高性能的視頻處理芯片,被廣泛應(yīng)用到視頻處理的很多領(lǐng)域,但是DM642的I2C應(yīng)用容易遇到I2C、VP等死鎖,以及

2010-11-27 標(biāo)簽:DM642視頻采集 1819 0

基于DM642的嵌入式圖像型火災(zāi)探測(cè)系統(tǒng)

基于DM642的嵌入式圖像型火災(zāi)探測(cè)系統(tǒng)

  引言   火災(zāi)是最常見的嚴(yán)重災(zāi)害之一,它往往給人們的生命財(cái)產(chǎn)造成巨大的危害。目前用于火焰探測(cè)的主要有煙感探測(cè)器、紅外探測(cè)器、紫外探測(cè)器等,但這些

2010-11-22 標(biāo)簽:DM642火災(zāi)探測(cè) 1538 0

查看更多>>

dm642數(shù)據(jù)手冊(cè)

相關(guān)標(biāo)簽

相關(guān)話題

換一批
  • 德飛萊
    德飛萊
    +關(guān)注
  • 編程軟件
    編程軟件
    +關(guān)注
    常用的編程軟件有:Visual studio、PhpStorm、Notepad++、WebStrom、Sublime Text、EditPlus 等。Visual studio是一款由美國(guó)微軟公司開發(fā)的開發(fā)工具集,簡(jiǎn)稱VS,它包括了整個(gè)軟件的生命周期所需要的大部分工具。
  • 阻抗計(jì)算
    阻抗計(jì)算
    +關(guān)注
  • 串口調(diào)試工具
    串口調(diào)試工具
    +關(guān)注
      串口調(diào)試工具是一款簡(jiǎn)單實(shí)用的串口調(diào)試工具,無(wú)插件的綠色軟件,適宜單片機(jī)編程時(shí)對(duì)RS232通訊測(cè)試用。
  • 信捷
    信捷
    +關(guān)注
  • Polar
    Polar
    +關(guān)注
  • MPLABIDE
    MPLABIDE
    +關(guān)注
    MPLABIDE是一種在PC機(jī)上運(yùn)行的軟件,用來(lái)為Microchip單片機(jī)開發(fā)應(yīng)用程序。由于它提供了一種單一的集成環(huán)境來(lái)為嵌入式單片機(jī)開發(fā)程序代碼,因此被稱為集成開發(fā)環(huán)境或IDE。
  • adr
    adr
    +關(guān)注
  • HOG
    HOG
    +關(guān)注
  • 檢測(cè)軟件
    檢測(cè)軟件
    +關(guān)注
  • vue
    vue
    +關(guān)注
  • png
    png
    +關(guān)注
  • CSS3
    CSS3
    +關(guān)注
換一批

關(guān)注此標(biāo)簽的用戶(0人)

編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語(yǔ)言教程專題

RM新时代网站-首页