當前位置:編程學習大全網 - 編程語言 - 圖片處理-opencv-10.圖像銳化與邊緣檢測

圖片處理-opencv-10.圖像銳化與邊緣檢測

?

Roberts算子又稱為交叉微分算法,它是基於交叉差分的梯度算法,通過局部差分計算檢測邊緣線條。常用來處理具有陡峭的低噪聲圖像,當圖像邊緣接近於正45度或負45度時,該算法處理效果更理想。其缺點是對邊緣的定位不太準確,提取的邊緣線條較粗。

Prewitt是壹種圖像邊緣檢測的微分算子,其原理是利用特定區域內像素灰度值產生的差分實現邊緣檢測。由於Prewitt算子采用3 3模板對區域內的像素值進行計算,而Robert算子的模板為2 2,故Prewitt算子的邊緣檢測結果在水平方向和垂直方向均比Robert算子更加明顯。Prewitt算子適合用來識別噪聲較多、灰度漸變的圖像。

dst = filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])

RSobel算子是壹種用於邊緣檢測的離散微分算子,它結合了高斯平滑和微分求導。該算子用於計算圖像明暗程度近似值,根據圖像邊緣旁邊明暗程度把該區域內超過某個數的特定點記為邊緣。Sobel算子在Prewitt算子的基礎上增加了權重的概念,認為相鄰點的距離遠近對當前像素點的影響是不同的,距離越近的像素點對應當前像素的影響越大,從而實現圖像銳化並突出邊緣輪廓。Sobel算子的邊緣定位更準確,常用於噪聲較多、灰度漸變的圖像。

Sobel算子根據像素點上下、左右鄰點灰度加權差,在邊緣處達到極值這壹現象檢測邊緣。對噪聲具有平滑作用,提供較為精確的邊緣方向信息。因為Sobel算子結合了高斯平滑和微分求導(分化),因此結果會具有更多的抗噪性,當對精度要求不是很高時,Sobel算子是壹種較為常用的邊緣檢測方法。

dst = Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, delta[, borderType]]]]])

在進行Sobel算子處理之後,還需要調用convertScaleAbs()函數計算絕對值,並將圖像轉換為8位圖進行顯示

dst = convertScaleAbs(src[, dst[, alpha[, beta]]])

拉普拉斯(Laplacian)算子是n維歐幾裏德空間中的壹個二階微分算子,常用於圖像增強領域和邊緣提取。它通過灰度差分計算鄰域內的像素,基本流程是:判斷圖像中心像素灰度值與它周圍其他像素的灰度值,如果中心像素的灰度更高,則提升中心像素的灰度;反之降低中心像素的灰度,從而實現圖像銳化操作。在算法實現過程中,Laplacian算子通過對鄰域中心像素的四方向或八方向求梯度,再將梯度相加起來判斷中心像素灰度與鄰域內其他像素灰度的關系,最後通過梯度運算的結果對像素灰度進行調整。

Laplacian算子分為四鄰域和八鄰域,四鄰域是對鄰域中心像素的四方向求梯度,八鄰域是對八方向求梯度。當鄰域內像素灰度相同時,模板的卷積運算結果為0;當中心像素灰度高於鄰域內其他像素的平均灰度時,模板的卷積運算結果為正數;當中心像素的灰度低於鄰域內其他像素的平均灰度時,模板的卷積為負數。對卷積運算的結果用適當的衰弱因子處理並加在原中心像素上,就可以實現圖像的銳化處理。

dst = Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])

由於Sobel算子在計算相對較小的核的時候,其近似計算導數的精度比較低,比如壹個33的Sobel算子,當梯度角度接近水平或垂直方向時,其不精確性就越發明顯。Scharr算子同Sobel算子的速度壹樣快,但是準確率更高,尤其是計算較小核的情景,所以利用3*3濾波器實現圖像邊緣提取更推薦使用Scharr算子

Scharr算子又稱為Scharr濾波器,也是計算x或y方向上的圖像差分,在OpenCV中主要是配合Sobel算子的運算而存在的。Scharr算子的函數原型如下所示,和Sobel算子幾乎壹致,只是沒有ksize參數.

dst = Scharr(src, ddepth, dx, dy[, dst[, scale[, delta[, borderType]]]]])

Canny邊緣檢測算子(多級邊緣檢測算法)是壹種被廣泛應用於邊緣檢測的標準算法,其目標是找到壹個最優的邊緣檢測解或找尋壹幅圖像中灰度強度變化最強的位置。最優邊緣檢測主要通過低錯誤率、高定位性和最小響應三個標準進行評價。

Canny算子的實現步驟如下:

edges = Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])

LOG(Laplacian of Gaussian)邊緣檢測算子也稱為Marr&Hildreth算子,它根據圖像的信噪比來求檢測邊緣的最優濾波器。該算法首先對圖像做高斯濾波,然後再求其拉普拉斯(Laplacian)二階導數,根據二階導數的過零點來檢測圖像的邊界,即通過檢測濾波結果的零交叉(Zero crossings)來獲得圖像或物體的邊緣。

LOG算子該綜合考慮了對噪聲的抑制和對邊緣的檢測兩個方面,並且把Gauss平滑濾波器和Laplacian銳化濾波器結合了起來,先平滑掉噪聲,再進行邊緣檢測,所以效果會更好。 該算子與視覺生理中的數學模型相似,因此在圖像處理領域中得到了廣泛的應用。它具有抗幹擾能力強,邊界定位精度高,邊緣連續性好,能有效提取對比度弱的邊界等特點。

  • 上一篇:Win7 64位操作系統下 機械設計手冊(新編軟件版2008
  • 下一篇:有哪些電視劇的女主不是傻白甜?
  • copyright 2024編程學習大全網