国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python-OpenCV中的圖像處理-圖像平滑

這篇具有很好參考價(jià)值的文章主要介紹了Python-OpenCV中的圖像處理-圖像平滑。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

圖像平滑

使用低通濾波器可以達(dá)到圖像模糊的目的。這對(duì)與去除噪音很有幫助。其實(shí)就是去除圖像中的高頻成分(比如:噪音,邊界)。所以邊界也會(huì)被模糊一點(diǎn)。(當(dāng)然,也有一些模糊技術(shù)不會(huì)模糊掉邊界)。

平均濾波

這是由一個(gè)歸一化卷積框完成的。他只是用卷積框覆蓋區(qū)域所有像素的平均值來(lái)代替中心元素??梢允褂煤瘮?shù) cv2.blur() 和 cv2.boxFilter() 來(lái)完這個(gè)任務(wù)??梢酝床榭次臋n了解更多卷積框的細(xì)節(jié)。我們需要設(shè)定卷積框的寬和高。
一個(gè)3x3的歸一化卷積框:
K = 1 9 [ 1 1 1 1 1 1 1 1 1 ] K=\frac{1}{9}\left[\begin{matrix} 1&1&1 \\1&1&1\\1&1&1\end{matrix}\right] K=91? ?111?111?111? ?
注意:如果不想使用歸一化卷積框,你應(yīng)該使用 cv2.boxFilter(),這時(shí)要傳入?yún)?shù) normalize=False。
dst=cv2.boxFilter(src,ddepth,ksize)

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


# 在圖片上生成椒鹽噪聲
def add_peppersalt_noise(image, n=10000):
    result = image.copy()
    # 測(cè)量圖片的長(zhǎng)和寬
    w, h, = image.shape[:2]
    # 生成n個(gè)椒鹽噪聲
    for i in range(n):
        x = np.random.randint(1, w)
        y=  np.random.randint(1, h)
        if np.random.randint(0, 2) == 0 :
            result[x, y] = 0
        else:
            result[x,y] = 255
    return result

# 平均
# 這是由一個(gè)歸一化卷積框完成的,
# cv2.blur()和cv2.boxFiter()來(lái)實(shí)現(xiàn)。
img = cv2.imread('./resource/opencv/image/logo/opencv-logo-white.png', cv2.IMREAD_COLOR)

# 原圖添加椒鹽噪聲
saltnoise_img = add_peppersalt_noise(img, 10000)

blur = cv2.blur(saltnoise_img, (5,5))
boxfilter = cv2.boxFilter(saltnoise_img, -1, (3,3))
# boxfilter = cv2.boxFilter(saltnoise_img, -1, (3,3), normalize=0)

plt.subplot(221), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title('origin'), plt.xticks([]), plt.yticks([])
plt.subplot(222), plt.imshow(cv2.cvtColor(saltnoise_img, cv2.COLOR_BGR2RGB)), plt.title('add noise'), plt.xticks([]), plt.yticks([])
plt.subplot(223), plt.imshow(cv2.cvtColor(blur, cv2.COLOR_BGR2RGB)), plt.title('blur'), plt.xticks([]), plt.yticks([])
plt.subplot(224), plt.imshow(cv2.cvtColor(boxfilter, cv2.COLOR_BGR2RGB)), plt.title('boxfilter'), plt.xticks([]), plt.yticks([])
plt.show()

Python-OpenCV中的圖像處理-圖像平滑,OpenCV Python,python,opencv,圖像處理

高斯模糊

現(xiàn)在把卷積核換成高斯核(簡(jiǎn)單來(lái)說(shuō),方框不變,將原來(lái)每個(gè)方框的值是相等的,現(xiàn)在里面的值是符合高斯分布的,方框中心的值最大,其余方框根據(jù)距離中心元素的距離遞減,構(gòu)成一個(gè)高斯小山包。原來(lái)的求平均數(shù)現(xiàn)在變成求加權(quán)平均數(shù),全就是方框里的值)。實(shí)現(xiàn)的函數(shù)是 cv2.GaussianBlur()。我們需要指定高斯核的寬和高(必須是奇數(shù))。以及高斯函數(shù)沿 X, Y 方向的標(biāo)準(zhǔn)差。如果我們只指定了 X 方向的的標(biāo)準(zhǔn)差, Y 方向也會(huì)取相同值。如果兩個(gè)標(biāo)準(zhǔn)差都是 0,那么函數(shù)會(huì)根據(jù)核函數(shù)的大小自己計(jì)算。高斯濾波可以有效的從圖像中去除高斯噪音。如果你愿意的話,你也可以使用函數(shù) cv2.getGaussianKernel() 自己構(gòu)建一個(gè)高斯核。

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

# 高斯模糊
# 卷積核換成高斯核,即方框不變,將原來(lái)方框相等的值,換成符合高斯分部的值,方框中心值最大,其余值遞減,構(gòu)成一個(gè)高斯小山包
# 高斯核的寬和高必須是奇數(shù)

# 在圖片上生成椒鹽噪聲
def add_peppersalt_noise(image, n=10000):
    result = image.copy()
    # 測(cè)量圖片的長(zhǎng)和寬
    w, h, = image.shape[:2]
    # 生成n個(gè)椒鹽噪聲
    for i in range(n):
        x = np.random.randint(1, w)
        y=  np.random.randint(1, h)
        if np.random.randint(0, 2) == 0 :
            result[x, y] = 0
        else:
            result[x,y] = 255
    return result

# 獲取高斯核
k1 = cv2.getGaussianKernel(3, 1)
k2 = cv2.getGaussianKernel(5,2)
print(k1)
print(k2)

# 彩色圖像高斯模糊
img = cv2.imread('./resource/opencv/image/logo/opencv-logo-white.png', cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGBA)
img = add_peppersalt_noise(img)
dst1 = cv2.GaussianBlur(img, (5,5), 0)

# 灰度圖像高斯模糊
gray = cv2.imread('./resource/opencv/image/logo/opencv-logo-white.png', cv2.IMREAD_GRAYSCALE)
gray = add_peppersalt_noise(gray)
dst2 = cv2.GaussianBlur(gray, (5,5), 0)


plt.subplot(221), plt.imshow(img, 'gray'), plt.title('original'), plt.xticks([]), plt.yticks([])
plt.subplot(222), plt.imshow(dst1, 'gray'), plt.title('gaussianBlur'), plt.xticks([]), plt.yticks([])
plt.subplot(223), plt.imshow(gray, 'gray'), plt.title('gray'), plt.xticks([]), plt.yticks([])
plt.subplot(224), plt.imshow(dst2, 'gray'), plt.title('gaussianBlur'), plt.xticks([]), plt.yticks([])
plt.show()

Python-OpenCV中的圖像處理-圖像平滑,OpenCV Python,python,opencv,圖像處理

中值模糊

顧名思義就是用與卷積框?qū)?yīng)像素的中值來(lái)替代中心像素的值。這個(gè)濾波器經(jīng)常用來(lái)去除椒鹽噪聲。前面的濾波器都是用計(jì)算得到的一個(gè)新值來(lái)取代中心像素的值,而中值濾波是用中心像素周圍(也可以使他本身)的值來(lái)取代他。他能有效的去除噪聲。卷積核的大小也應(yīng)該是一個(gè)奇數(shù)。

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

# 中值濾波
# 在圖片上生成椒鹽噪聲
def add_peppersalt_noise(image, n=10000):
    result = image.copy()
    # 測(cè)量圖片的長(zhǎng)和寬
    w, h, = image.shape[:2]
    # 生成n個(gè)椒鹽噪聲
    for i in range(n):
        x = np.random.randint(1, w)
        y=  np.random.randint(1, h)
        if np.random.randint(0, 2) == 0 :
            result[x, y] = 0
        else:
            result[x,y] = 255
    return result

img = cv2.imread('./resource/opencv/image/logo/opencv-logo-white.png', cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGBA)
img = add_peppersalt_noise(img)
median = cv2.medianBlur(img, 5)

gray = cv2.imread('./resource/opencv/image/logo/opencv-logo-white.png', cv2.IMREAD_GRAYSCALE)
gray = add_peppersalt_noise(gray)
median_gray = cv2.medianBlur(gray, 5)

plt.subplot(221), plt.imshow(img, 'gray'), plt.title('original')
plt.subplot(222), plt.imshow(median, 'gray'), plt.title('medianBlur')
plt.subplot(223), plt.imshow(gray, 'gray'), plt.title('gray')
plt.subplot(224), plt.imshow(median_gray, 'gray'), plt.title('medianBlur')
plt.show()

Python-OpenCV中的圖像處理-圖像平滑,OpenCV Python,python,opencv,圖像處理

雙邊濾波

函數(shù) cv2.bilateralFilter() 能在保持邊界清晰的情況下有效的去除噪音。但是這種操作與其他濾波器相比會(huì)比較慢。我們已經(jīng)知道高斯濾波器是求中心點(diǎn)鄰近區(qū)域像素的高斯加權(quán)平均值。這種高斯濾波器只考慮像素之間的空間關(guān)系,而不會(huì)考慮像素值之間的關(guān)系(像素的相似度)。所以這種方法不會(huì)考慮一個(gè)像素是否位于邊界。因此邊界也會(huì)別模糊掉,而這正不是我們想要。雙邊濾波在同時(shí)使用空間高斯權(quán)重和灰度值相似性高斯權(quán)重??臻g高斯函數(shù)確保只有鄰近區(qū)域的像素對(duì)中心點(diǎn)有影響,灰度值相似性高斯函數(shù)確保只有與中心像素灰度值相近的才會(huì)被用來(lái)做模糊運(yùn)算。所以這種方法會(huì)確保邊界不會(huì)被模糊掉,因?yàn)檫吔缣幍幕叶戎底兓容^大。

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

# 雙邊濾波

img = cv2.imread('./resource/opencv/image/rubberwhale1.png', cv2.IMREAD_GRAYSCALE)

# 9:鄰域直徑,75:空間高斯函數(shù)標(biāo)準(zhǔn)差,75:灰度值相似性高斯函數(shù)標(biāo)準(zhǔn)差
dst1 = cv2.bilateralFilter(img, 9, 75, 75)

plt.subplot(121), plt.imshow(img, 'gray'), plt.title('origin')
plt.subplot(122), plt.imshow(dst1, 'gray'), plt.title('bilateralFiter')
plt.show()

Python-OpenCV中的圖像處理-圖像平滑,OpenCV Python,python,opencv,圖像處理文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-636509.html

到了這里,關(guān)于Python-OpenCV中的圖像處理-圖像平滑的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python-OpenCV中的圖像處理-圖像金字塔

    Python-OpenCV中的圖像處理-圖像金字塔

    同一圖像的不同分辨率的子圖集合,如果把最大的圖像放在底部,最小的放在頂部,看起來(lái)像一座金字塔,故而得名圖像金字塔。 cv2.pyrUp():上采樣 cv2.pyrDown():下采樣 高斯金字塔的頂部是通過(guò)將底部圖像中的連續(xù)的行和列去除得到的。頂部圖像中的每個(gè)像素值等于下一層圖

    2024年02月13日
    瀏覽(21)
  • Python-OpenCV中的圖像處理-邊緣檢測(cè)

    Python-OpenCV中的圖像處理-邊緣檢測(cè)

    Canny 邊緣檢測(cè)是一種非常流行的邊緣檢測(cè)算法,是 John F.Canny 在 1986 年提出的。它是一個(gè)有很多步構(gòu)成的算法:噪聲去除、計(jì)算圖像梯度、非極大值抑制、滯后閥值等。 Canny(image: Mat, threshold1, threshold2, edges=…, apertureSize=…, L2gradient=…) 在 OpenCV 中只需要一個(gè)函數(shù): cv2.Canny(),

    2024年02月13日
    瀏覽(35)
  • Python-OpenCV中的圖像處理-霍夫變換

    Python-OpenCV中的圖像處理-霍夫變換

    霍夫(Hough)變換在檢測(cè)各種形狀的技術(shù)中非常流行,如果要檢測(cè)的形狀可以用數(shù)學(xué)表達(dá)式描述,就可以是使用霍夫變換檢測(cè)它。即使要檢測(cè)的形狀存在一點(diǎn)破壞或者扭曲也是可以使用。 Hough直線變換,可以檢測(cè)一張圖像中的直線 cv2.HoughLines(image, rho, theta, threshold) return:返回值

    2024年02月13日
    瀏覽(124)
  • Python-OpenCV中的圖像處理-幾何變換

    Python-OpenCV中的圖像處理-幾何變換

    對(duì)圖像進(jìn)行各種幾個(gè)變換,例如移動(dòng),旋轉(zhuǎn),仿射變換等。 cv2.resize() cv2.INTER_AREA v2.INTER_CUBIC v2.INTER_LINEAR res = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) 或 height, width = img.shape[:2] res = cv2.resize(img, (2 width, 2 height), interpolation=cv2.INTER_CUBIC) OpenCV提供了使用函數(shù)cv2.warpAffine()實(shí)

    2024年02月13日
    瀏覽(97)
  • Python-OpenCV中的圖像處理-物體跟蹤

    Python-OpenCV中的圖像處理-物體跟蹤

    現(xiàn)在我們知道怎樣將一幅圖像從 BGR 轉(zhuǎn)換到 HSV 了,我們可以利用這一點(diǎn)來(lái)提取帶有某個(gè)特定顏色的物體。在 HSV 顏色空間中要比在 BGR 空間中更容易表示一個(gè)特定顏色。在我們的程序中,我們要提取的是一個(gè)藍(lán)色的物體。下面就是就是我們要做的幾步: ? 從視頻中獲取每一幀

    2024年02月13日
    瀏覽(22)
  • Python-OpenCV中的圖像處理-顏色空間轉(zhuǎn)換

    Python-OpenCV中的圖像處理-顏色空間轉(zhuǎn)換

    在 OpenCV 中有超過(guò) 150 中進(jìn)行顏色空間轉(zhuǎn)換的方法。但是你以后就會(huì) 發(fā)現(xiàn)我們經(jīng)常用到的也就兩種: BGR G r a y 和 B G R Gray 和 BGR G r a y 和 BGR HSV。 注意:在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范圍是 [0, 179],S(飽和度)的取值范圍 [0, 255], V(亮度)的取值范圍 [0,

    2024年02月13日
    瀏覽(25)
  • Python-OpenCV中的圖像處理-直方圖

    Python-OpenCV中的圖像處理-直方圖

    通過(guò)直方圖你可以對(duì)整幅圖像的灰度分布有一個(gè)整體的了解。直方圖的 x 軸是灰度值( 0 到 255), y 軸是圖片中具有同一個(gè)灰度的點(diǎn)的數(shù)目。 BINS:上面的直方圖顯示了每個(gè)灰度值對(duì)應(yīng)的像素?cái)?shù)。如果像素值為 0到255,你就需要 256 個(gè)數(shù)來(lái)顯示上面的直方圖。但是,如果你不需

    2024年02月13日
    瀏覽(29)
  • Python-OpenCV中的圖像處理-形態(tài)學(xué)轉(zhuǎn)換

    Python-OpenCV中的圖像處理-形態(tài)學(xué)轉(zhuǎn)換

    形態(tài)學(xué)操作:腐蝕,膨脹,開(kāi)運(yùn)算,閉運(yùn)算,形態(tài)學(xué)梯度,禮帽,黑帽等 主要涉及函數(shù):cv2.erode(), cv2.dilate(), cv2.morphologyEx() 原理:形態(tài)學(xué)操作是根據(jù)圖像形狀進(jìn)行的簡(jiǎn)單操作。一般情況下對(duì)二值化圖像進(jìn)行的操作。需要輸入兩個(gè)參數(shù),一個(gè)是原始圖像,第二個(gè)被稱為結(jié)構(gòu)化

    2024年02月13日
    瀏覽(24)
  • Python-OpenCV中的圖像處理-傅里葉變換

    Python-OpenCV中的圖像處理-傅里葉變換

    傅里葉變換經(jīng)常被用來(lái)分析不同濾波器的頻率特性。我們可以使用 2D 離散傅里葉變換 (DFT) 分析圖像的頻域特性。實(shí)現(xiàn) DFT 的一個(gè)快速算法被稱為快速傅里葉變換( FFT)。 對(duì)于一個(gè)正弦信號(hào):x (t) = A sin (2πft), 它的頻率為 f,如果把這個(gè)信號(hào)轉(zhuǎn)到它的頻域表示,我們會(huì)在頻率

    2024年02月12日
    瀏覽(22)
  • Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode=…) img:輸入圖像 mask:掩模圖像,用來(lái)確定那些區(qū)域是背景,前景,可能是前景/背景等。 可以設(shè)置為: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接輸入 0,1,2,3 也行。 rect :包含前景的矩形,格式為

    2024年02月13日
    瀏覽(104)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包