Sobel邊緣提取演算法 DSP

2021-05-07 22:44:55 字數 1208 閱讀 4888

1.

中並作sobel邊緣提取演算法。

我們只對攝像頭採集的一塊資料進行sobel邊緣提取。採用一維edma傳送方式,每一次傳送採集的一行中的部分資料(dat_copy()函式)。在pal制式下,先把一行資料放到nmemtemp陣列中,比如我們要把從144行到432行,從180列到435列的影象進行sobel邊緣提取,最後把變換後的資料輸出到顯示緩衝區。

unsigned char nmemtemp[720];

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

儲存的三行影象使用翻捲的緩衝區管理,三個變數分別指示當前使用的y行、y-1行和y-2行在緩衝區中的起始偏移量。我們可以這樣來做:輪流往三塊快取區拷貝資料。只要拷貝的指標變化就可以。在我們拷貝當前這一塊的時候,已經拷貝的另外兩塊資料依然沒有變化,所以我們就可以實現三塊資料儲存採集影象中的相鄰的三行資料。

如下:

緩衝區1

clines[0-255]

緩衝區2

clines[256-512]

緩衝區3

clines[513-768]

表快取區分配

三個指標*pimg1,*pimg2,*pimg3分別輪流指向三個緩衝區。

m_noffset1=0;

m_noffset2=256;

m_noffset3=512;

unsigned char clines[256*3];

void sobel()

nmemtemp[mi]=0;

m_nwork=m_noffset1; m_noffset1=m_noffset2;

m_noffset2=m_noffset3; m_noffset3=m_nwork;}2.

並作sobel邊緣提取演算法。

我們可以通過dat_copy2d()函式直接把採集的一幅影象亮度分量存放到sdram中,如下:

dat_copy2d(dat_2d2d,

capframebuf->frame.ifrm.y1,

m_dbframebuffertemp,

numpixels,

numlines,

numpixels);

其中:m_dbframebuffertemp是指向sdram中緩衝區的指標,numpixels是一行的象素數,numlines是行數。當把資料存放到sdram的乙個陣列中後,sobel演算法的實現就非常簡單了。當然也可以參照一維的方法來實現。

再說邊緣特徵提取sobel運算元

本文主要講述以下幾個函式的作用 1 cvsobel 2 cvconvertscaleabs 3 cvcvtcolor 首先,我們來了解一下計算機是如何檢測邊緣的。以灰度影象為例,它的理論基礎是這樣的,如果出現乙個邊緣,那麼影象的灰度就會有一定的變化,為了方便假設由黑漸變為白代表乙個邊界 那麼對其灰度...

再說邊緣特徵提取sobel運算元

本文主要講述以下幾個函式的作用 1 cvsobel 2 cvconvertscaleabs 3 cvcvtcolor 首先,我們來了解一下計算機是如何檢測邊緣的。以灰度影象為例,它的理論基礎是這樣的,如果出現乙個邊緣,那麼影象的灰度就會有一定的變化,為了方便假設由黑漸變為白代表乙個邊界,那麼對其灰度...

Sobel邊緣檢測演算法

索貝爾運算元 sobel operator 主要用作邊緣檢測,在技術上,它是一離散性差分運算元,用來運算影象亮度函式的灰度之近似值。在影象的任何一點使用此運算元,將會產生對應的灰度向量或是其法向量 sobel 卷積因子為 該運算元包含兩組 3x3的矩陣,分別為橫向及縱向,將之與影象作平面卷積,即可分...