国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

opencv python 圖像梯度

mumumu / 1282人閱讀

摘要:提供三種類型的梯度濾波器或高通濾波器,,和和導(dǎo)數(shù)算子是結(jié)合了高斯平滑與微分運(yùn)算的結(jié)合方法,所以它的抗噪聲能力很強(qiáng)用戶可以設(shè)定求導(dǎo)方向,水平或者垂直通過(guò)參數(shù)和也可以指定卷積核大小,通過(guò)參數(shù)如果,那么一個(gè)的濾波器會(huì)被使用,該濾波器會(huì)得到比濾波

Image Gradients

OpenCV提供三種類型的梯度濾波器或高通濾波器,Sobel,Scharr和Laplacian.

1 Sobel 和 Scharr 導(dǎo)數(shù)

Sobel算子是結(jié)合了高斯平滑與微分運(yùn)算的結(jié)合方法,所以它的抗噪聲能力很強(qiáng).

用戶可以設(shè)定求導(dǎo)方向,水平或者垂直(通過(guò)參數(shù)yorder和xorder).也可以指定卷積核大小,通過(guò)參數(shù)ksize.如果ksize=-1,那么一個(gè)3*3的scharr濾波器會(huì)被使用,該濾波器會(huì)得到比Sobel濾波器更好的效果.

2

該方法計(jì)算了圖像的拉普拉斯導(dǎo)數(shù):

$$ Delta src = frac{partial ^2{src}}{partial x^2} + frac{partial ^2{src}}{partial y^2} $$

每個(gè)求導(dǎo)數(shù)的方法都是使用Sobel求導(dǎo)方法,如果ksize=1,那么會(huì)使用下面核函數(shù)進(jìn)行濾波.

$$ kernel = egin{bmatrix} 0 & 1 & 0 1 & -4 & 1 0 & 1 & 0 end{bmatrix} $$

代碼

import cv2
from matplotlib import pyplot as plt

img = cv2.imread("img.jpg",0)

laplacian = cv2.Laplacian(img,cv2.CV_64F)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)

plt.subplot(2,2,1),plt.imshow(img,cmap = "gray")
plt.title("Original"), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2),plt.imshow(laplacian,cmap = "gray")
plt.title("Laplacian"), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3),plt.imshow(sobelx,cmap = "gray")
plt.title("Sobel X"), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4),plt.imshow(sobely,cmap = "gray")
plt.title("Sobel Y"), plt.xticks([]), plt.yticks([])

plt.show()

NOTE

在我們的上一個(gè)示例中,輸出數(shù)據(jù)類型為cv.CV_8U或np.uint8.但是這有一個(gè)小問(wèn)題.將黑到白轉(zhuǎn)換視為正斜率(它具有正值),而將白到黑轉(zhuǎn)換視為負(fù)斜率(它具有負(fù)值). 因此,當(dāng)您將數(shù)據(jù)轉(zhuǎn)換為np.uint8時(shí),所有負(fù)斜率都為零.

如果想要兩種邊界都檢測(cè)到,最高的辦法就是將輸出數(shù)據(jù)類型設(shè)置更高,cv2.CV_16S,cv2.CV_64F等等,然后取絕對(duì)值轉(zhuǎn)換為cv2.CV_8.

代碼

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread("img5.png",0)


# Output dtype = cv.CV_8U
sobelx8u = cv2.Sobel(img,cv2.CV_8U,1,0,ksize=5)

# Output dtype = cv.CV_64F. Then take its absolute and convert to cv.CV_8U
sobelx64f = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
abs_sobel64f = np.absolute(sobelx64f)
sobel_8u = np.uint8(abs_sobel64f)

plt.subplot(1,3,1),plt.imshow(img,cmap = "gray")
plt.title("Original"), plt.xticks([]), plt.yticks([])
plt.subplot(1,3,2),plt.imshow(sobelx8u,cmap = "gray")
plt.title("Sobel CV_8U"), plt.xticks([]), plt.yticks([])
plt.subplot(1,3,3),plt.imshow(sobel_8u,cmap = "gray")
plt.title("Sobel abs(CV_64F)"), plt.xticks([]), plt.yticks([])

plt.show()

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42009.html

相關(guān)文章

  • opencv python Canny邊緣檢測(cè)

    摘要:雖然邊低于,但它連接到邊,因此也被視為有效邊,我們得到完整的曲線。但邊緣雖然高于并且與邊緣的區(qū)域相同,但它沒(méi)有連接到任何真實(shí)邊緣,因此被丟棄。 Canny Edge Detection Canny邊緣檢測(cè)是一種流行的邊緣檢測(cè)算法.它是由John F. Canny開(kāi)發(fā)的, 這是一個(gè)多階段算法. 減少噪音由于邊緣檢測(cè)易受圖像中的噪聲影響,因此第一步是使用5x5高斯濾波器去除圖像中的噪...

    whinc 評(píng)論0 收藏0
  • 使用PythonOpenCV進(jìn)行基本的圖像處理——提取紅色圓圈輪廓并繪制

    摘要:使用,進(jìn)行基本的圖像處理提取紅色圓圈輪廓并繪制效果圖源碼寫(xiě)這篇博客源于博友的提問(wèn),想提取圖片中的紅色圓圈坐標(biāo),并繪制封閉的輪廓。還是使用一系列圖像處理,得到了比較理想的結(jié)果。 ...

    Gu_Yan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<