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

OpenCV-Python(49):圖像去噪

這篇具有很好參考價值的文章主要介紹了OpenCV-Python(49):圖像去噪。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目標(biāo)

  • 學(xué)習(xí)使用非局部平均值去噪算法去除圖像中的噪音
  • 學(xué)習(xí)函數(shù)cv2.fastNlMeansDenoising()、cv2.fastNlMeansDenoisingColored等

原理

????????在前面的章節(jié)中我們已經(jīng)學(xué)習(xí)了很多圖像平滑技術(shù),比如高斯平滑、中值平滑等。當(dāng)噪聲比較小時,這些技術(shù)的效果都是很好的。在這些技術(shù)中我們選取像素周圍一個小的鄰域然后用高斯平均值或者中值平均值取代中心像素。簡單來說,像素級別的噪聲去除是限制在局部領(lǐng)域的。

????????噪聲有一個性質(zhì)。我們認(rèn)為噪聲是平均值唯一的隨機(jī)變量??紤]一個帶噪聲的像素點p = p0 + n,其中p0 為像素的真實值,n 為這個像素的噪聲。我們可以從不同圖片中選取大量的相同像素(N)然后計算平均值。理想情況下我們會得到p = p0。因為噪聲的平均值為0。

? ? ? ? 通過簡單的設(shè)置我們就可以去除這些噪聲。將一個靜態(tài)攝像頭固定在一個位置連續(xù)拍攝幾秒。這樣我們就會得到足夠多的圖像幀或者同一場景的大量圖像。寫一段代碼求求解些幀的平均值(這對你來說應(yīng)該是小菜一碟)。將最終結(jié)果與第一幀圖像對比一下。你會發(fā)現(xiàn)噪聲減小了。不幸的是,種簡單的方法對于攝像頭和運動動場景并不總是適用。大多數(shù)情況下我們只有一張導(dǎo)游帶有噪音的圖像。

????????想法很簡單,我們需要一組相似的圖片,通過取平均值的方法可以去除噪音??紤]圖像中一個小的窗口(5x5)有很大可能圖像中的其它區(qū)域也存在一個相似的窗口。有時這個相似窗口就在鄰域周圍。如果我們找到這些相似的窗口并取他們的平均值會怎樣呢?對于特定的窗口這樣做挺好的。如下圖所示:

OpenCV-Python(49):圖像去噪,opencv-python,opencv,圖像去噪,計算攝影學(xué),非局部去噪

????????上圖中的藍(lán)色窗口看起來是相似的。綠色窗口看看來也是相似的。所以我們可以選取包含目標(biāo)像素的一個小窗口,然后在圖像中搜索相似的窗口,最后求取所有窗口的平均值,并用這個值取代目標(biāo)像素的值。這種方法就是非局部平均值去噪。與我們以前學(xué)習(xí)的平滑技術(shù)相比,種算法要消耗更多的時間,但是結(jié)果很好。你可以在更多資源中找到更多的細(xì)節(jié)和在線演示。對于彩色圖像首先要轉(zhuǎn)換到CIELAB 顏色空間,然后對L 和AB 成分分別去噪。?

OpenCV中的圖像去噪

OpenCV 提供了這種技術(shù)的四個變本。

  1. cv2.fastNlMeansDenoising() 使用對象為灰度圖。
  2. cv2.fastNlMeansDenoisingColored() 使用對象為彩色圖。
  3. cv2.fastNlMeansDenoisingMulti() 適用于短時的圖像序列(灰度圖像)
  4. cv2.fastNlMeansDenoisingColoredMulti() 適用于短時的圖像序列(彩色圖像)

????????共同參數(shù)有:

  • h : 決定過濾器強(qiáng)度。h 值高可以很好的去除噪聲,但也會把圖像的細(xì)節(jié)抹去。(取10 的效果不錯)
  • ?hForColorComponents : 與h 相同,但使用與彩色圖像。
  • templateWindowSize : 奇數(shù)。(推薦值為7)
  • searchWindowSize : 奇數(shù)。(推薦值為21)

????????下面演示一下2、3的效果:

和上面提到的一樣,cv2.fastNlMeansDenoisingColored()可以用來去除彩色圖像的噪聲。假設(shè)是高斯噪聲??:

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

img = cv2.imread('die.png')
dst = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)
plt.subplot(121),plt.imshow(img)
plt.subplot(122),plt.imshow(dst)
plt.show()

????????下面是結(jié)果的放大圖,我們的輸入圖像中含有方差為25 的噪聲,下面是結(jié)果:

OpenCV-Python(49):圖像去噪,opencv-python,opencv,圖像去噪,計算攝影學(xué),非局部去噪

????????現(xiàn)在我們使用cv2.fastNlMeansDenoisingMulti() 對一段視頻使用這個方法。第一個參數(shù)是一個噪聲幀的列表。第二個參數(shù)imgtoDenoiseIndex 設(shè)定哪些幀需要去噪,我們可以傳入一個幀的索引。第三個參數(shù)temporaWindowSize 可以設(shè)置用于去噪的相鄰幀的數(shù)目,它應(yīng)該是一個奇數(shù)。在這種情況下temporaWindowSize 幀的圖像會用于去噪,中間的幀就是要去噪的幀。例如,我們傳入5 幀圖像,imgToDenoiseIndex = 2 和temporalWindowSize = 3。那么第一幀、第二幀、第三幀圖像將將用于第二幀圖像的去噪。下面我們來看一個例子:

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

cap = cv2.VideoCapture('vtest.avi')
# create a list of first 5 frames
img = [cap.read()[1] for i in xrange(5)]
# convert all to grayscale
gray = [cv2.cvtColor(i, cv2.COLOR_BGR2GRAY) for i in img]
# convert all to float64
gray = [np.float64(i) for i in gray]
# create a noise of variance 25
noise = np.random.randn(*gray[1].shape)*10
# Add this noise to images
noisy = [i+noise for i in gray]
# Convert back to uint8
noisy = [np.uint8(np.clip(i,0,255)) for i in noisy]
# Denoise 3rd frame considering all the 5 frames
dst = cv2.fastNlMeansDenoisingMulti(noisy, 2, 5, None, 4, 7, 35)
plt.subplot(131),plt.imshow(gray[2],'gray')
plt.subplot(132),plt.imshow(noisy[2],'gray')
plt.subplot(133),plt.imshow(dst,'gray')
plt.show()

OpenCV-Python(49):圖像去噪,opencv-python,opencv,圖像去噪,計算攝影學(xué),非局部去噪

????????計算消耗了相當(dāng)可觀的時間。第一張圖是原始圖像,第二個是帶噪音量圖像,第三個是去噪之后的圖像。?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-810677.html

?

到了這里,關(guān)于OpenCV-Python(49):圖像去噪的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • OpenCV-Python中的圖像基礎(chǔ)操作

    OpenCV-Python中的圖像基礎(chǔ)操作

    首先讀入一副圖像: 獲取像素值及修改的更好方法: img = cv2.imread(‘./resource/image/1.jpg’, cv2.IMREAD_COLOR) img.shape: 圖像的形狀(包括行數(shù),列數(shù),通道數(shù)的元組) img.size : 圖像的像素數(shù)目 img.dtype :圖像的數(shù)據(jù)類型 ROI(regionofinterest),感興趣區(qū)域。機(jī)器視覺、圖像處理中,從被

    2024年02月11日
    瀏覽(24)
  • opencv-python 將圖像迷宮轉(zhuǎn)為迷宮數(shù)組

    opencv-python 將圖像迷宮轉(zhuǎn)為迷宮數(shù)組

    起因是我想做個自動走迷宮的外掛(其實是想做點實踐),所以我需要在游戲中捕捉畫面并自動尋路,然后再控制自動移動,此為第一部分:捕捉畫面。 1.取得圖像迷宮 2.處理圖像 3.圖像分割 4.生成數(shù)組 首先我們得捕捉屏幕畫面,即獲得迷宮圖像,這里我是在steam上面找了一

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

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

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

    2024年02月12日
    瀏覽(24)
  • OpenCV-Python中的圖像處理-視頻分析

    OpenCV-Python中的圖像處理-視頻分析

    學(xué)習(xí)使用 Meanshift 和 Camshift 算法在視頻中找到并跟蹤目標(biāo)對象: Meanshift 算法的基本原理是和很簡單的。假設(shè)我們有一堆點(比如直方 圖反向投影得到的點),和一個小的圓形窗口,我們要完成的任務(wù)就是將這個窗 口移動到最大灰度密度處(或者是點最多的地方)。如下圖所

    2024年02月12日
    瀏覽(24)
  • OpenCV-Python中的圖像處理-模板匹配

    OpenCV-Python中的圖像處理-模板匹配

    使用模板匹配可以在一幅圖像中查找目標(biāo) 函數(shù): cv2.matchTemplate(), cv2.minMaxLoc() 模板匹配是用來在一副大圖中搜尋查找模版圖像位置的方法。 OpenCV 為我們提供了函數(shù): cv2.matchTemplate()。和 2D 卷積一樣,它也是用模板圖像在輸入圖像(大圖)上滑動,并在每一個位置對模板圖像

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

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

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

    2024年02月12日
    瀏覽(31)
  • opencv-python[cv2]讀取中文路徑圖像

    opencv-python[cv2]讀取中文路徑圖像

    隨著AI人工智能的不斷發(fā)展,圖像處理這門技術(shù)也越來越重要,很多學(xué)校本科都開啟了圖像處理這門課程,學(xué)習(xí)圖像處理開發(fā),自然就繞不開opencv-python[ cv2 ]這個由intel主導(dǎo)的開源庫。 cv2 是指OpenCV的Python接口庫。 OpenCV (Open Source Computer Vision Library)是一個開源的計算機(jī)視覺庫

    2024年02月06日
    瀏覽(41)
  • 基于OpenCV-Python的圖像位置校正和版面分析

    基于OpenCV-Python的圖像位置校正和版面分析

    使用opencv對圖像進(jìn)行操作,要求:(1)定位銀行票據(jù)的四條邊,然后旋正。(2)根據(jù)版面分析,分割出小寫金額區(qū)域。 首先是對圖像的校正 讀取圖片 對圖片二值化 進(jìn)行邊緣檢測 對邊緣的進(jìn)行霍夫曼變換 將變換結(jié)果從極坐標(biāo)空間投影到笛卡爾坐標(biāo)得到傾斜角 根據(jù)傾斜角對

    2024年01月19日
    瀏覽(42)
  • OpenCV-Python中的圖像處理-傅里葉變換

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

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

    2024年02月12日
    瀏覽(24)
  • OpenCV-Python學(xué)習(xí)(10)—— OpenCV 圖像二值化處理(cv.threshold)

    OpenCV-Python學(xué)習(xí)(10)—— OpenCV 圖像二值化處理(cv.threshold)

    1. 學(xué)習(xí)目標(biāo) 理解圖像的分類,不同類型的圖像的區(qū)別; 對圖像進(jìn)行二值化處理,對【 cv.threshold 】函數(shù)的理解。 2. 圖像分類 2.1 不同類型圖像說明 按照顏色對圖像進(jìn)行分類,可以分為二值圖像、灰度圖像和彩色圖像。 二值圖像: 只有黑色和白色兩種顏色的圖像。 每個像素

    2024年02月03日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包