基于DSP的邊緣檢測與圖像銳化算法研究與實現

摘要:該文圍繞基于 DSP 的邊緣檢測與圖像銳化算法展開研究與實現。在邊緣檢測方面,實現了 Sobel、Roberts 和 Prewitt 三種算子算法。Sobel 算子通過計算水平和垂直方向的梯度并求和來檢測邊緣,對噪聲有一定抑制能力;Roberts 算子基于交叉差分計算梯度,計算簡單但對噪聲敏感;Prewitt 算子通過 3x3 模板計算梯度,對邊緣定位較準確。在圖像銳化方面,實現了 Laplace 算子的三種變體算法,包括標準 Laplace、8 鄰域 Laplace 和加權 Laplace。標準 Laplace 使用 4 鄰域模板,8 鄰域 Laplace 考慮了對角鄰域,加權 Laplace 則引入了銳化強度系數以增強銳化效果。這些算法均在 DSP 環境下實現,并針對 160×160 和 180×120 等不同尺寸的圖像進行處理,通過指針操作實現了高效的圖像處理,同時對處理結果進行了范圍限制以確保輸出在有效像素范圍內。實驗結果表明,這些算法能夠有效檢測圖像邊緣并增強圖像清晰度,為基于 DSP 的圖像處理應用提供了有力的算法支持。

關鍵詞:圖像銳化;邊緣檢測;加權處理

引??言

在數字圖像處理領域,邊緣檢測與圖像銳化是基礎且關鍵的技術,廣泛應用于計算機視覺、醫學影像等領域。邊緣作為圖像中像素值急劇變化的區域,是目標識別等高級處理的基礎;銳化則能增強圖像細節,提升視覺效果。隨著嵌入式與實時處理需求增長,在 DSP 上高效實現這些算法成為研究熱點。

DSP 憑借高速數據處理與實時性優勢,成為圖像處理重要平臺。工業檢測、智能監控等場景不僅要求算法精準,更對處理速度提出嚴格要求。經典邊緣檢測算子(如 Sobel、Roberts 等)與 Laplace 銳化算子雖理論成熟,但應用于 DSP 時需結合其體系結構優化,如利用并行處理能力、高效內存訪問模式提升效率。

本研究聚焦 DSP 平臺的邊緣檢測與銳化算法實現,分析改進經典算法,結合 DSP 硬件特性優化 Sobel、Prewitt 等邊緣算子及 Laplace 變體,通過實驗驗證算法有效性,為 DSP 在圖像處理中的應用提供技術支撐。

2、圖像銳化算法及實現

2.1 圖像銳化技術概述

圖像銳化是數字圖像處理中的關鍵技術,其核心目標是通過增強圖像中像素值的突變區域(即邊緣和細節),提升圖像的視覺清晰度和細節表現力。從信號處理的角度來看,圖像模糊本質上是圖像信號經過低通濾波的結果,而銳化則通過高通濾波或微分運算,對圖像的高頻成分(邊緣、紋理等)進行增強,抑制低頻成分(平滑區域)。

圖像銳化的核心是通過增強像素值的突變區域(邊緣與細節)提升圖像清晰度。本代碼基于拉普拉斯(Laplace)二階微分算子實現銳化,其原理是通過計算中心像素與鄰域像素的差值,突出灰度值的突變部分。拉普拉斯算子對圖像中的階躍邊緣和孤立點響應顯著。

在實際應用中,圖像銳化的目的主要體現在兩方面:一是改善圖像的視覺效果,使模糊的圖像變得清晰,便于人眼觀察,如老照片修復、醫學影像增強等;二是為后續的圖像分析任務(如目標識別、邊緣檢測、特征提取)提供更優質的輸入,避免因圖像模糊導致的特征丟失或誤判。例如,在工業質檢中,銳化可幫助更精準地識別零件表面的缺陷邊緣。

本文主要是討論拉普拉斯銳化技術,分別介紹四領域拉普拉斯銳化與八領域拉普拉斯銳化以及加權拉普拉斯銳化。

2.2 四領域拉普拉斯銳化

該方法采用4鄰域模板,中心系數為 5,上下左右鄰域系數為 -1

對圖像內部像素(非邊緣區域),通過公式(3)計算銳化值,并將結果限制在 [0, 255]范圍內。

對于圖像邊緣部分如圖像四周像素(第一行、最后一行、最左列、最右列)直接保留原值,避免越界錯誤。

2.3八鄰域拉普拉斯銳化

該方法采用8鄰域模板:擴展至 8 鄰域,中心系數為 8,周圍 8 個方向系數均為 - 1,模板為:

針對對角鄰域影響,采用公式(5)處理:

相比4鄰域,8鄰域對各方向邊緣的增強更均衡,尤其適合紋理豐富的圖像。

2.4 加權拉普拉斯銳化

該方法引入銳化強度系數alpha,通過加權融合原圖與拉普拉斯算子輸出,其中alpha可調節銳化程度,alpha>1時增強效果更明顯,同時通過范圍限制避免像素值溢出。

2.5 DSP實驗程序

/*========  頭文件引用===========*/
#include "stdio.h"
/*============= 工作變量定義======*/
unsigned char *pr_n;    //指針定義
unsigned char *pr_s;    //指針定義//說明:定義數據存放變量
#pragma        DATA_SECTION(IMG,"data"); 
int  IMG[30000];#pragma        DATA_SECTION(Original_IMG,"data");
unsigned char  Original_IMG[30000];#pragma        DATA_SECTION(Sharp_IMG,"data");
unsigned char  Sharp_IMG[30000];void  IMG_Sharp_Laplace();
void  IMG_Sharp_Laplace_8Neighbor();
void  IMG_Sharp_Laplace_Weighted();
int CoefArray[9]={1,1,1,1,1,1,1,1,1};/*================= 主程序 ================*/
main()
{   long n;int imgH,imgW;int *ptr;imgH=180;  //圖像高與寬,因為數據文件中的圖像是180X120像素的imgW=120; /*=========== 初始化 ==========*///1 把圖像數據從IMG中移到Noise_IMG數組中ptr=IMG;pr_n=Original_IMG;for (n=0;n<imgH*imgW;n++)*pr_n++=*ptr++;//說明:在此暫停,可看到噪聲圖像 //指針指向數組pr_n=Original_IMG;pr_s=Sharp_IMG;//2 調用子程序,進行彩色圖像變換成灰度圖像while (1){ // IMG_Sharp_Laplace(pr_n,pr_s,imgW,imgH);//IMG_Sharp_Laplace_8Neighbor(pr_n,pr_s,imgW,imgH);IMG_Sharp_Laplace_Weighted(pr_n,pr_s,imgW,imgH);//說明:上面子程序執行后,在此暫停,可看平滑后的圖像 }//說明:在此暫停,可看變換后的灰度圖像 
/*============== 子程序 =============*/
void IMG_Sharp_Laplace
(   unsigned char   *F,        /* 輸入原圖像                  */unsigned char   *G,       /* 輸出的銳化圖像              */int cols, int rows      /* 圖像的寬度與高度             */
)
{    //定義局部變量unsigned char *ptr, *pp, *newpp;int tmpNum,i, x, y;//圖像四周的像素不進行銳化,等于原值 for (x=0; x< cols -1; x++)  //處理第一行的像素G[x] = F[x];//處理最后一行的像素newpp  =  G + (rows-1)* cols;    //指針指向銳化圖像pp     =  F+ (rows-1)* cols;     //指針指向原圖像        for (x=0; x< cols -1; x++) * newpp++ = * pp++;//處理最左邊一列的像素newpp  =  G;    //指針指向銳化圖像pp     =  F;     //指針指向原圖像        for (y=0; y< rows -1; y++) {* newpp = * pp;  newpp+=cols; pp+=cols;  //指針偏移到下一行像素的位置}//處理最右邊一列的像素newpp  =  G+cols;    //指針指向銳化圖像pp     =  F+cols;     //指針指向原圖像        for (y=0; y< rows -1; y++) {* newpp = * pp;  newpp+=cols; pp+=cols;  //指針偏移到下一行像素的位置}//采用循環的方式對圖像中的每個像素進行銳化for (y=1; y< rows -1; y++)for (x=1; x<cols -1; x++){newpp   = G + y* cols +x;    //指針指向銳化圖像pp      = F + y* cols +x;     //指針指向原圖像  tmpNum  =  5*(*pp);         //(x,y)處像素的灰度值tmpNum-=*(pp-cols);    //(x,y)處上方像素的灰度值tmpNum-=*(pp-1);      //(x,y)處左邊像素的灰度值tmpNum-=*(pp+1);     //(x,y)處右邊像素的灰度值tmpNum-=*(pp+cols);      //(x,y)處下方像素的灰度值//檢測數據是否溢出,且將平均值賦給平滑圖像if (tmpNum > 255)*newpp=255;else if (tmpNum<0)*newpp=0;else*newpp=tmpNum;        }
} //程序結束void IMG_Sharp_Laplace_Weighted(unsigned char *F,         /* 輸入原圖像                  */unsigned char *G,         /* 輸出的銳化圖像              */int cols, int rows        /* 圖像的寬度與高度            */
)
{unsigned char *ptr, *pp, *newpp;int tmpNum, x, y;float alpha = 1.5f;       // 銳化強度系數int laplacian;// 處理圖像邊緣像素,保持原值for (x = 0; x < cols; x++) {G[x] = F[x];                         // 第一行G[(rows-1)*cols + x] = F[(rows-1)*cols + x]; // 最后一行}for (y = 0; y < rows; y++) {G[y*cols] = F[y*cols];               // 最左列G[y*cols + cols-1] = F[y*cols + cols-1]; // 最右列}// 處理內部像素for (y = 1; y < rows - 1; y++) {for (x = 1; x < cols - 1; x++) {newpp = G + y*cols + x;pp = F + y*cols + x;// 拉普拉斯算子計算laplacian = 4 * (*pp) - *(pp-cols) - *(pp-1) - *(pp+1)- *(pp+cols);  // 帶權重的銳化:原圖 + alpha * 拉普拉斯值tmpNum = (int)(*pp + alpha * laplacian);*newpp = (unsigned char)tmpNum;}}
}
void IMG_Sharp_Laplace_8Neighbor(unsigned char *F,         /* 輸入原圖像                  */unsigned char *G,         /* 輸出的銳化圖像              */int cols, int rows        /* 圖像的寬度與高度            */
)
{unsigned char *ptr, *pp, *newpp;int tmpNum, x, y;// 處理圖像邊緣像素,保持原值for (x = 0; x < cols; x++) {G[x] = F[x];                         // 第一行G[(rows-1)*cols + x] = F[(rows-1)*cols + x]; // 最后一行}for (y = 0; y < rows; y++) {G[y*cols] = F[y*cols];               // 最左列G[y*cols + cols-1] = F[y*cols + cols-1]; // 最右列}// 處理內部像素for (y = 1; y < rows - 1; y++) {for (x = 1; x < cols - 1; x++) {newpp = G + y*cols + x;pp = F + y*cols + x;// 八鄰域拉普拉斯算子:中心系數8,八方向系數-1tmpNum = 8 * (*pp) - *(pp-cols-1) - *(pp-cols)- *(pp-cols+1)- *(pp-1)- *(pp+1) - *(pp+cols-1)- *(pp+cols) - *(pp+cols+1);*newpp = (unsigned char)tmpNum;}}
}

3、邊緣檢測算法及實現

3.1 邊緣檢測技術概述

邊緣檢測是圖像處理的核心技術,旨在識別圖像中像素值劇烈變化的區域,對應物體邊界或場景深度突變。其本質是通過灰度梯度的局部極值表征邊緣,為目標識別、圖像分割等任務提供結構信息,同時實現數據降維。經典算法分為一階與二階導數兩類:一階算子如 Roberts、Prewitt 和 Sobel,通過梯度計算突出邊緣,其中 Sobel 算子因中心加權設計對噪聲更魯棒;二階算子以拉普拉斯為代表,通過二階導數檢測突變點,但常與高斯濾波結合(如 LOG 算子)。其原理如下。

圖像f(x,y)在點(x,y)處的梯度是一個二維向量:

在離散域中,偏導數通常通過差分近似計算。一階導數算子通過設計卷積模板來估計梯度,模板的選擇直接影響邊緣檢測的精度和抗噪性。

隨著技術發展,深度學習驅動的邊緣檢測(如 HED)通過端到端訓練提升復雜場景精度,多尺度分析與自適應閾值方法也增強了算法魯棒性。該技術廣泛應用于醫學影像(器官邊界提取)、工業質檢(缺陷檢測)、自動駕駛(道路識別)等領域。當前挑戰包括噪聲與紋理干擾、弱邊緣漏檢及實時性需求,未來研究將聚焦深度學習與傳統算法融合、輕量化模型設計及跨模態邊緣感知。

本文主要是討論基于一階導數計算梯度,共實現了Sobel、Roberts與Prewitt三個算子。
?

3.2 Sobel算子

Sobel 算子采用兩個 3×3 模板分別計算水平和垂直方向的梯度分量。其水平梯度模板Gx和垂直梯度模板Gy分別為:
該模板設計特點在于對中心像素的鄰域進行加權,增強了邊緣響應的同時抑制了部分噪聲。最終梯度幅值通常采用絕對值之和近似:

3.3 Roberts算子

Roberts 算子是最早提出的邊緣檢測算子之一,基于 2×2 鄰域的交叉差分計算梯度。 其梯度分量計算公式為:

梯度幅值同樣采用絕對值之和:

Roberts 算子計算簡單,但僅考慮 2×2 鄰域,對邊緣的定位精度較低,且對噪聲敏感。

3.4 Sobel算子

Prewitt 算子與 Sobel 算子類似,采用 3×3 模板計算梯度,但未對中心像素進行加權。其水平和垂直梯度模板分別為:

Prewitt 算子的計算復雜度與 Sobel 相近,但由于未對中心像素加權,其邊緣響應強度略低于 Sobel 算子。

3.5 DSP實驗程序

/*========  頭文件引用===========*/
#include "stdio.h"
/*============= 工作變量定義======*/
unsigned char *pSource;     //指針定義
unsigned char *pNew;        //指針定義
int *pIMG;//說明:定義數據存放變量
#pragma        DATA_SECTION(IMG,"data");
int  IMG[30000];#pragma        DATA_SECTION(sourceIMG,"data");
unsigned char  sourceIMG[30000];#pragma        DATA_SECTION(newIMG,"data");
unsigned char  newIMG[30000];void IMG_sobel();
void IMG_Roberts();
void IMG_Prewitt();///
//使用說明:
//   1. 本程序可以在Simulator下運動;
//   2. 程序編譯、鏈接、加載成功后,先
//      執行File/data/load,將要進行顏色轉換的圖像數據從Gray_Lena160x160.dat 
//     加載入數據存儲器存儲地址RGB_IMG中
//   3. 數據加載成功后,再Debug/Go Main, 一步一步運行程序
////*================= 主程序 ================*/
main()
{   int n,imgH,imgW;/*=========== 初始化 ==========*/imgH=160;    //圖像的高與寬,因為數據文件所對應的圖像高與寬就是160,160imgW=160; //指針指向數組	pIMG=IMG;pSource=sourceIMG;for (n=0;n<imgH*imgW;n++)*pSource++=*pIMG++;   pSource=sourceIMG;pNew=newIMG;  //說明:在此暫停,可看原始RGB彩色圖像  while (1){ //IMG_sobel(pSource,pNew,imgW,imgH);// IMG_Roberts(pSource,pNew,imgW,imgH); IMG_Prewitt(pSource,pNew,imgW,imgH);       }    //說明:在此暫停,可看變換后的灰度圖像 }
void IMG_sobel
(const unsigned char *restrict in,   /* Input image data   */unsigned char       *restrict out,  /* Output image data  */int cols, int rows              /* Image dimensions   */
)
{int H, O, V, i;int i00, i01, i02;int i10,      i12;int i20, i21, i22;int w = cols;/* -------------------------------------------------------------------- *//*  Iterate over entire image as a single, continuous raster line.      *//* -------------------------------------------------------------------- */for (i = 0; i < cols*(rows-2) - 2; i++){/* ---------------------------------------------------------------- *//*  Read in the required 3x3 region from the input.                 *//* ---------------------------------------------------------------- */i00=in[i    ]; i01=in[i    +1]; i02=in[i    +2];i10=in[i+  w];                  i12=in[i+  w+2];i20=in[i+2*w]; i21=in[i+2*w+1]; i22=in[i+2*w+2];/* ---------------------------------------------------------------- *//*  Apply horizontal and vertical filter masks.  The final filter   *//*  output is the sum of the absolute values of these filters.      *//* ---------------------------------------------------------------- */H = -   i00 - 2*i01 -   i02 +   i20 + 2*i21 +   i22;V = -   i00         +   i02- 2*i10         + 2*i12-   i20         +   i22;O = abs(H) + abs(V);/* ---------------------------------------------------------------- *//*  Clamp to 8-bit range.  The output is always positive due to     *//*  the absolute value, so we only need to check for overflow.      *//* ---------------------------------------------------------------- */if (O > 255) O = 255;/* ---------------------------------------------------------------- *//*  Store it.                                                       *//* ---------------------------------------------------------------- */out[i + 1] = O;}
}  
/** 函數名稱:IMG_Roberts* 功能:使用羅伯特算子實現圖像邊緣檢測* 參數:*   const unsigned char *restrict in  - 輸入圖像數據*   unsigned char       *restrict out - 輸出圖像數據*   int cols, int rows                - 圖像尺寸*/
void IMG_Roberts(const unsigned char *restrict in,   /* 輸入圖像數據   */unsigned char       *restrict out,  /* 輸出圖像數據   */int cols, int rows                  /* 圖像尺寸       */
)
{int Gx, Gy, G;int i, j;int w = cols;// 遍歷圖像,處理每個像素點(邊緣像素除外)for (j = 0; j < rows - 1; j++) {for (i = 0; i < cols - 1; i++) {// 計算當前位置的梯度Gx = in[j*w + i] - in[(j+1)*w + (i+1)];  // 水平梯度Gy = in[(j+1)*w + i] - in[j*w + (i+1)];  // 垂直梯度// 計算梯度幅值(通常使用絕對值之和)G = abs(Gx) + abs(Gy);// 確保結果在0-255范圍內if (G > 255) G = 255;// 存儲結果out[j*w + i] = G;}}
}
/** 函數名稱:IMG_Prewitt* 功能:使用普瑞維特算子實現圖像邊緣檢測* 參數:*   const unsigned char *restrict in  - 輸入圖像數據*   unsigned char       *restrict out - 輸出圖像數據*   int cols, int rows                - 圖像尺寸*/
void IMG_Prewitt(const unsigned char *restrict in,   /* 輸入圖像數據   */unsigned char       *restrict out,  /* 輸出圖像數據   */int cols, int rows                  /* 圖像尺寸       */
)
{int Gx, Gy, G;int i, j;int w = cols;// 遍歷圖像,處理每個像素點(邊緣像素除外)for (j = 1; j < rows - 1; j++) {for (i = 1; i < cols - 1; i++) {// 計算水平梯度分量Gx = (in[(j-1)*w + (i-1)] + in[j*w + (i-1)] + in[(j+1)*w + (i-1)]) - (in[(j-1)*w + (i+1)] + in[j*w + (i+1)] + in[(j+1)*w + (i+1)]);// 計算垂直梯度分量Gy = (in[(j-1)*w + (i-1)] + in[(j-1)*w + i] + in[(j-1)*w + (i+1)]) - (in[(j+1)*w + (i-1)] + in[(j+1)*w + i] + in[(j+1)*w + (i+1)]);// 計算梯度幅值(通常使用絕對值之和)G = abs(Gx) + abs(Gy);// 確保結果在0-255范圍內if (G > 255) G = 255;// 存儲結果out[j*w + i] = G;}}

4、實驗結果與分析

4.1 操作步驟

1設置ccs為軟件仿真環境

打開setup ccs2,點擊clear,選擇family為c64xx,platform為simulator,endianness為little,在選擇DM642 Device Simulator…點擊import,點擊save and quit,如下圖所示,啟動CCS。

雙擊桌面上CCS 2 ('C6000)圖標,運行CCS。

2、編譯、鏈接程序:執行菜單Project/Rebuild All,匯編結果在將匯編信息輸出窗口中給出。編譯后將在Bebug目錄中產生一個ImgSmooth.out文件。

3、加載程序:執行File/Load Program,選擇ImgSmooth.out并打開,即將可執行文件加載到DSP軟件仿真器simulator中,此時CCS將自動打開一個反匯編窗口。

4、將圖像的數據從 dat 文件讀入到內存:執行 File/data/load,將要進行顏色轉換的圖像數據 從 Data160x160.dat (說明:*.dat 格式,內部存放了某圖像各像素的灰度值)文件中加載入到數據存儲器,即在彈出的窗口中輸入存儲地址 IMG 與數據的長度,如下圖所示。

5、運行程序:執行Debug/Run。為了便于觀看試驗前后的結果,可以在程序中設置斷點,采用單步執行的方法運行程序。

4.2 實驗結果

4.2.1拉普拉斯銳化

顯示出銳化之前的圖像:執行 View/Graph/Image,在彈出的對話框中選擇顏色類型為 RGB,并輸入 RGB 彩色圖像三個通道數據的地址,以及圖像顯示格式(顯示幾行、每行幾像素)等內容。

圖4.1 銳化之前的圖像

顯示銳化之后的圖像:執行 View/Graph/Image,在彈出的對話框中選擇顏色類型為 RGB,并輸入灰度圖像據的地址,以及圖像顯示格式(顯示幾行、每行幾像素)等內容。

圖4.2 四領域拉普拉斯銳化的圖像

圖4.3 八領域拉普拉斯銳化的圖像

圖4.4 加權拉普拉斯銳化的圖像

4.2.2 邊緣檢測結果

圖4.5 原圖像

如下圖所示為邊緣檢測結果

圖4.6 sobel算子檢測圖像

圖4.7 Roberts算子檢測圖像

圖4.8 Prewitt算子檢測圖像

4.3 實驗結果分析

在標準測試圖像上的實驗表明,三種拉普拉斯銳化算法呈現出顯著差異。標準 4 鄰域拉普拉斯對水平 / 垂直邊緣增強效果突出,但對角方向細節提升有限,可能產生 “棋盤格” 偽影;八鄰域拉普拉斯通過引入對角像素信息,有效消除了方向性偏差,使各方向邊緣增強更均衡,但同時也放大了噪聲;加權拉普拉斯通過調整系數 α(實驗中 α=1.5 時效果最優),在增強邊緣的同時保留了更多原圖細節,視覺效果更自然。在 DSP 平臺上,八鄰域算法較 4 鄰域計算量增加;加權拉普拉斯因引入浮點運算,耗時增加,但靈活性更高,適用于醫學影像等對細節保留要求高的場景。

對比 Sobel、Roberts 和 Prewitt 算子的邊緣檢測效果,Roberts 算子因僅考慮 2×2 鄰域,邊緣定位精度最低,易產生斷裂邊緣,尤其對噪聲敏感,但計算速度最快;Prewitt 算子通過 3×3 模板平滑噪聲,邊緣連續性優于 Roberts,但因未對中心像素加權,邊緣響應強度略弱于 Sobel;Sobel 算子在邊緣完整性、定位精度與抗噪性間取得最佳平衡。在紋理復雜區域(如 Lena 圖像的頭發部分),Sobel 和 Prewitt 能檢測到更多細節,而 Roberts 則出現明顯漏檢。實驗進一步表明,三種算子的邊緣寬度均為 1 像素,但 Sobel 的邊緣更接近真實物體邊界,誤檢率較 Prewitt 低。

5、小結

通過對拉普拉斯銳化與經典邊緣檢測算子的設計實現,驗證了算法在 DSP 平臺的有效性。拉普拉斯銳化中,八鄰域算子對圖像的紋理增強效果顯著,相比標準4鄰域算法,其邊緣梯度保留率提升,而加權拉普拉斯(α=1.5)在圖像中使邊界對比度。邊緣檢測實驗表明,Sobel 算子在 160×160 像素圖像中,較 Prewitt 算子提升檢測精度,且抗噪性優于 Roberts算子。通過這次設計得到了很多收獲和體會。第一提高了綜合運用所學知識的能力。第二增強了根據課程需要選學參考資料查閱手冊圖表和文獻資料的自學能力。通過獨立思考深入研究有關問題學會自己分析解決問題的方法。第三通過實際方案的分析比較設計計算元件選取安裝調試等環節初步掌握了簡單使用ccs設計方法。第四在這次設計過程中光有理論知識是不夠的還必須懂一些實踐中的知識。所以在設計的實踐中比較常用的儀器的使用方法提高了動手能力。第五培養了嚴謹的工作作風和科學態度。在這次設計過程中我對仿真軟件ccs等軟件有了更進一步的了解。

參考文獻

[1]岡薩雷斯, 伍茲. 數字圖像處理(第三版)[M]. 北京: 電子工業出版社. 2011. 06. 39 – 91.

[2]康曉東. 醫學圖像信號變換與壓縮[M]. 北京: 北京清華大學出版社. 2004.

[3]余英漢, 蔡漢添, 謝勝利. 信號處理新方法導論[M]. 北京: 清華大學出版社. 2004. ?

[4]王永良, 陳輝, 彭應寧, 萬群. 空間譜估計理論與算法[M]. 北京: 清華大學出版社. 2004. ?

[5]李建平. 小波分析與信號處理理論、應用及軟件實現[M]. 重慶: 重慶出版社. 1997. ?

[6]?W.?K.?Pratt,?Digital?Image?Processing.?New?York:?Wiley,1991.?

[7]?G.?R.?Arce,?N.?C.?Gallagher?and?T.?Nodes,?“Median?filters:Theory?and?applica?tions,”?in?Advances?in?ComputerVision?and?Image?Processing,?Greenwich,?CT:?JAI,?1986.?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912497.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

概率概率密度

我之前一直很糾結為什么離散型隨機變量分布律中有隨機變量的出現&#xff0c;而連續型隨機變量概率密度中沒有隨機變量的出現。那對于連續型隨機變量而言&#xff0c;如何建立隨機變量和取值之間的聯系。也就是說看到連續型隨機變量的概率密度&#xff0c;我怎么知道描述的是哪…

Android 中 使用 ProgressBar 實現進度顯示

在 Android 中,ProgressBar 是一個用于顯示進度的控件,通常用于表示任務的完成進度或加載狀態。ProgressBar 有多種樣式,包括水平進度條、圓形進度條等。 1、常見屬性 android:id 用于在代碼中引用該ProgressBar。android:layout_width 和 android:layout_height 定義Progr…

Prompt:面向目標的提示詞

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄 1 引言2 理解”目標驅動“提示詞2.1 從”引導“到…

04_MySQL 通過 Docker 在同一個服務器上搭建主從集群(一主一從)

04_MySQL 通過 Docker 在同一個服務器上搭建主從集群&#xff08;一主一從&#xff09; &#x1f9f0; 準備工作 1. 拉取 MySQL 鏡像 docker pull mysql:8.0.262. 創建主從配置目錄 mkdir -p /root/mysql/master/conf mkdir -p /root/mysql/master/data mkdir -p /root/mysq…

隨筆 | 寫在六月的最后一天,也寫在2025年上半年的最后一天

文章目錄 前言.出差.耐心.回歸.結語. 前言 又要以最經典的句式開場&#xff0c;轉眼間&#xff0c;2025年已經過去了一半。五六月飛逝&#xff0c;但仔細回望&#xff0c;也留下了很多美好的瞬間。 記得之前讀過一句話&#xff0c;人們總是高估一年可以做的事情&#xff0c;也…

Prompt Enginering

1.Prompt Engineering 提示詞工程 Prompt 給人工智能模型輸入文本或指令&#xff0c;這些指令引導模型生成特定的輸出 Prompt Engineering&#xff1a;指在使用生成式人工智能模型&#xff08;比如gpt-4)時&#xff0c;設計優化輸入文本&#xff08;prompt)的過程&#xff0c;以…

CppCon 2018 學習:A Semi Compile/Run-time Map with (Nearly) Zero Overhead Looup

介紹一個 C 和 Java 之間橋接&#xff08;Bridge&#xff09;系統的示例代碼&#xff0c;它說明了如何在 C 中調用 Java 類&#xff08;如 java.io.InputStream&#xff09;的方法。下面是詳細解讀&#xff1a; 一、內容來源說明 《C ? Java Bridge》 目的&#xff1a;演示…

原子級制造革命:雙原子鑭催化劑登頂Angew,焦耳超快加熱技術深度解析

一、突破性成果&#xff1a;雙原子鑭催化劑的三大里程碑 吉林大學的牛效迪教授&#xff0c;王振旅教授、管景奇教授在《Angewandte Chemie》發表創新研究&#xff0c;通過焦耳超快加熱技術成功制備氮配位雙原子鑭催化劑&#xff08;La?-NG&#xff09;&#xff0c;實現三大突…

unix:///var/run/supervisor/supervisor.sock no such file

在 Linux 系統中&#xff0c;如果你遇到 /var/run/supervisor/supervisor.sock 文件不存在的問題&#xff0c;這通常意味著 Supervisor 服務沒有正確運行或者其配置文件沒有正確設置來創建這個 socket 文件。下面是一些解決這個問題的步驟&#xff1a; 檢查 Supervisor 是否正…

Python 編輯器:Geany,不是內部或外部命令,系統找不到指定路徑

目錄 1 找到設置選項2 開始設置2.1 complie2.2 execute 3 歡迎糾錯4 免費爬蟲------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題&#xff0c;有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內…

Docker安裝Mysql、配置文件掛載、修改Mysql編碼

1.下載mysql鏡像 docker pull mysql:5.72.查看鏡像 docker images3.啟動mysql鏡像 # 1.設置端口映射3306:3306、 # 2.設置文件掛載 # 3.設置mysql密碼為“root” sudo docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/mysql-files:/var/lib/mysql-files \ -v /mydata…

vueflow截圖功能,線會有黑色背景

vueflow截圖功能&#xff0c;線會有黑色背景&#xff0c;解決辦法,畫線時style里設置fill:‘none’ // 線的默認顏色 const edgesStyle {style: {fill:none,stroke: #6366f1,strokeWidth: 1, // 設置線寬 },markerEnd: {type: MarkerType.ArrowClosed,// color: #6366f1,// w…

16014.rtsp推流服務器

1 ubuntu20.04搭建rtsp服務器,easyplayer進行拉流 在images/stream1 文件下存儲了5張圖片,作為咱們得原料,運行rtsp服務器,即可。#include <iostream> #include <vector> #include <chrono>

常用測試腳本

Linux 系統 測試網絡帶寬及網卡吞吐量 shell 腳本 #!/bin/bash # 定義測試時間 time10 # 定義網卡名稱 niceth0 # 測試網卡的帶寬 echo 網卡帶寬&#xff1a;time dd if/dev/zero bs1M count1024 | nc -w $time localhost 9000 > /dev/null # 測試網卡的吞吐量 echo 網卡吞…

華為云 Flexus+DeepSeek 征文|華為云 Flexus 云服務 Dify-LLM 平臺深度部署指南:從基礎搭建到高可用實踐

華為云 FlexusDeepSeek 征文&#xff5c;華為云 Flexus 云服務 Dify-LLM 平臺深度部署指南&#xff1a;從基礎搭建到高可用實踐 引言&#xff1a;正文&#xff1a;一、前期準備1.1 賬號注冊與充值1.2 控制臺操作熟悉 二、一鍵部署 Dify-LLM 平臺2.1 云服務器單機部署2.1.1 訪問…

Kafka 核心機制面試題--自問自答

基礎篇 Q1: Kafka為什么能這么快&#xff1f; A: Kafka的高性能主要來自三大核心技術&#xff1a; 零拷貝(Zero-Copy)&#xff1a;通過sendfile()系統調用&#xff0c;數據直接從磁盤到網卡&#xff0c;避免了內核態和用戶態之間的多次拷貝頁緩存(Page Cache)&#xff1a;消…

Git遠程倉庫遷移與分支關聯技術分享

背景 開發中常需切換代碼托管平臺&#xff08;如Coding → 自建GitLab&#xff09;。以下通過實際命令演示如何安全遷移倉庫并解決分支關聯問題。 操作步驟及原理分析 1. 查看當前遠程倉庫 bash git remote -v 輸出說明&#xff1a; text origin https://e.coding.net…

HttpURLConnection使用及優化

文章目錄 簡介使用示例GET請求POST請求 HttpURLConnection優化1. 設置合適的超時時間2. 指定字符編碼3. 正確處理響應編碼4. 使用壓縮傳輸&#xff08;如果適用&#xff09;5. 關閉連接釋放資源6. 啟用持久連接&#xff08;Keep-Alive&#xff09;&#xff0c;減少握手開銷 簡介…

【Springai】項目實戰進度和規劃

項目概述 新開一個用于學習實踐springai的項目&#xff0c;springai-novel是一個基于前后端分離的現代化AI實踐應用 前端技術棧 Vue 3 TypeScriptVite Naive UI vicons/ionicons5 后端技術棧 JDK17Spring AI MySQL milvus ollama 已實現功能 (?) ? springaimysql后…

知微傳感Lkam系列線掃輪廓儀SDK例程篇:SDK安裝及VS工程配置

寫在前面 本人從事機器視覺細分的3D相機行業。編寫此系列文章主要目的有&#xff1a; 1、便利他人應用3D相機&#xff0c;本系列文章包含公司所出售相機的SDK的使用例程及詳細注釋&#xff1b;2、促進行業發展及交流。 歡迎與我深入交流&#xff1a;微信號&#xff1a;liu_zhi…