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的矩陣,分別為橫向及縱向,將之與影象作平面卷積,即可分...