欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCV實現圖像平滑處理的方法匯總

 更新時間:2023年02月13日 11:45:23   作者:雙子座斷點  
這篇文章為大家詳細介紹了在圖像上面進行了圖像均值濾波、方框濾波 、高斯濾波、中值濾波、雙邊濾波、2D卷積等具體操作的方法,需要的可以參考一下

本文是OpenCV圖像視覺入門之路的第10篇文章,本文詳細的在圖像上面進行了圖像均值濾波、方框濾波 、高斯濾波、中值濾波、雙邊濾波、2D卷積等操作。

1 均值濾波

OpenCV 中的簡單濾波(例如均值濾波或中值濾波)可能會使圖像變得模糊,因為它們會平滑圖像中的細節(jié)和邊緣。如果濾波的程度過強,則可能會導致圖像失真,使其看起來更差。因此,濾波的程度需要適當地控制,以獲得最佳效果。

import cv2
 
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
 
    # 均值濾波 
    # 簡單的平均卷積操作
    img_blur1 = cv2.blur(img1, (3, 3))  # 使用3*3的卷積核
    img_blur2 = cv2.blur(img1, (30, 30))  # 使用30*30的卷積核
 
    cv2.imshow("blur1", img_blur1)  # 顯示疊加圖像 dst
    cv2.imshow("blur2", img_blur2)  # 顯示疊加圖像 dst
    cv2.imshow("image", img1)  # 顯示疊加圖像 dst
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

2 方框濾波        

方框濾波是一種圖像平滑技術,在 OpenCV 中可以使用。方框濾波的主要作用是對圖像進行去噪和平滑處理,使圖像變得更加平滑,減少圖像的鋸齒狀、噪聲等不規(guī)則的部分。在圖像處理中,方框濾波通常作為預處理步驟,以提高圖像的質量和處理效果。

import cv2
 
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
 
    # 方框濾波
    # 基本和均值一樣,可以選擇歸一化
    img_box1 = cv2.boxFilter(img1, -1, (3, 3), normalize=True)
    img_box2 = cv2.boxFilter(img1, -1, (2, 2), normalize=False)
 
 
    cv2.imshow("box1", img_box1)  # 顯示疊加圖像 dst
    cv2.imshow("box2", img_box2)  # 顯示疊加圖像 dst
    cv2.imshow("image", img1)  # 顯示疊加圖像 dst
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

3 高斯濾波

高斯濾波是圖像處理中一種常用的平滑處理方法。在使用OpenCV處理圖像時,高斯濾波可以用于減少圖像中的噪聲和模糊不清的細節(jié)。此外,它還可以用于圖像的邊緣檢測和圖像分割,因為高斯濾波能夠保留圖像的主要特征,同時去除小的干擾。

import cv2
 
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
 
    # 高斯濾波
    # 高斯模糊的卷積核里的數值是滿足高斯分布,相當于更重視中間的
    img_aussian1 = cv2.GaussianBlur(img1, (5, 5), 0, 0)
    img_aussian2 = cv2.GaussianBlur(img1, (5, 5), 13, 13)
 
    cv2.imshow("aussian1", img_aussian1)  # 顯示疊加圖像 dst
    cv2.imshow("aussian2", img_aussian2)  # 顯示疊加圖像 dst
    cv2.imshow("image", img1)  # 顯示疊加圖像 dst
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

4 中值濾波

OpenCV 中值濾波是一種圖像去噪方法,它通過在圖像上選擇一個掩碼,并將其中的每個像素與周圍像素值進行比較,以計算該像素的新值。新值是該像素周圍像素值的中位數。這樣,中值濾波能夠有效去除圖像中的噪聲和椒鹽噪聲,使圖像更清晰、更加穩(wěn)定。

import cv2
 
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
 
    # 中值濾波
    # 相當于用中值代替
    img_median1 = cv2.medianBlur(img1, 3)  # 中值濾波
    img_median2 = cv2.medianBlur(img1, 9)  # 中值濾波
 
    cv2.imshow("median1", img_median1)  # 顯示疊加圖像 dst
    cv2.imshow("median2", img_median2)  # 顯示疊加圖像 dst
    cv2.imshow("image", img1)  # 顯示疊加圖像 dst
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

5 雙邊濾波

雙邊濾波是一種圖像模糊技術,它在保持圖像邊緣清晰的同時,對圖像中的噪聲進行有效去除。雙邊濾波算法通過比較圖像上相鄰像素的顏色差異和空間差異來確定每個像素的權重,從而決定每個像素的最終顏色值。在OpenCV中,雙邊濾波算法可用于處理圖像的模糊、去噪、抗抖動等問題。

均值濾波、方框濾波、高斯濾波、中值濾波都是只單純的考慮了像素點之間的空間信息而進行濾波的方式,這些方式都或多或少都會模糊圖像的邊緣信息,就是把圖像里面的邊緣線條弄模糊了,就是在去除圖像噪音的同時把圖像也弄模糊了,造成圖像邊界信息的部分丟失,這是這些方法的一個共同的缺點。
雙邊濾波就可以很好的規(guī)避這個缺點。因為雙邊濾波不僅考慮了像素的空間信息(距離越遠權重越小)同時還考慮了像素的色彩信息(色彩差別越大,權重越小),這樣就可以很好的去除噪聲還可以較好的保護邊緣信息,所以雙邊濾波器也是一個保邊去噪的濾波器。

import cv2
 
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
 
    img_bilateralFilter1 = cv2.bilateralFilter(img1, 15, 150, 1000)
    img_bilateralFilter2 = cv2.bilateralFilter(img1, 3, 255, 1000)
 
    cv2.imshow("bilateralFilter2", img_bilateralFilter2)  # 顯示疊加圖像 dst
    cv2.imshow("bilateralFilter1", img_bilateralFilter1)  # 顯示疊加圖像 dst
    cv2.imshow("image", img1)  # 顯示疊加圖像 dst
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

6 2D卷積(自定義卷積核實現卷積)

OpenCV 中的 2D 卷積的作用是圖像濾波,它可以用來消除圖像中的噪聲、提取圖像的特征、邊緣檢測等。它通過對圖像中的每一個像素與一個固定的卷積核進行卷積操作來實現這些目的。

如果上面的均值濾波卷積核、方框濾波卷積核、高斯濾波卷積核、中值濾波卷積核、雙邊濾波卷積核都不能滿足我們對圖像的處理要求,此時我們就需要一個更加靈活的核——即我們自定義一個我們想要的核。如何實現呢?opencv中的cv2.filter2D()函數可以幫助我們實現:

cv2.filter2D(img, ddepth, kernel, anchor, delta, borderType)

  • img:要處理的原圖
  • ddepth: 默認-1,表示與原圖圖像相同的深度
  • kernel: 卷積核,是一個單通道的數組。如果想處理彩圖時,讓每個通道使用不同的核,就必須先將彩圖分解后再使用不同的核去卷積操作。
  • anchor: 默認值是(-1,-1),默認計算的結果位于核的中心位置。
  • delta:這個參數可寫可不寫。如果寫,表示在卷積操作時,對應位置相乘相加后再加一個偏置,這個偏置就是delta。
  • borderType: 邊界處理方式,一般用默認值即可。
import cv2
 
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
 
    kernel = np.ones((9, 9), np.float32) / 81  # 在實際中我們可以定義更復雜的卷積核,以實現自定義濾波操作
    img_kernel1 = cv2.filter2D(img1, -1, kernel)  # 這個濾波器就相當于均值濾波
 
    kernel = np.ones((18, 18), np.float32) / 81  # 在實際中我們可以定義更復雜的卷積核,以實現自定義濾波操作
    img_kernel2 = cv2.filter2D(img1, -1, kernel)  # 這個濾波器就相當于均值濾波
    
 
    cv2.imshow("kernel1", img_kernel1)  # 顯示疊加圖像 dst
    cv2.imshow("kernel2", img_kernel2)  # 顯示疊加圖像 dst
    cv2.imshow("image", img1)  # 顯示疊加圖像 dst
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

以上就是OpenCV實現圖像平滑處理的方法匯總的詳細內容,更多關于OpenCV圖像平滑處理的資料請關注腳本之家其它相關文章!

相關文章

  • 如何用 Python 制作一個迷宮游戲

    如何用 Python 制作一個迷宮游戲

    這篇文章主要介紹了如何用 Python 制作一個迷宮游戲,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2021-02-02
  • 一篇文章學會兩種將python打包成exe的方式

    一篇文章學會兩種將python打包成exe的方式

    最近有部分小伙伴問我,python 寫的項目可不可以打包成exe程序,放到沒有python環(huán)境上的電腦中執(zhí)行? 答案當然是可以的,下面這篇文章主要給大家介紹了如何通過一篇文章學會兩種將pyton打包成exe的方式,需要的朋友可以參考下
    2021-11-11
  • Pandas 解決dataframe的一列進行向下順移問題

    Pandas 解決dataframe的一列進行向下順移問題

    今天小編就為大家分享一篇Pandas 解決dataframe的一列進行向下順移問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python數據擬合之scipy.optimize.curve_fit解讀

    python數據擬合之scipy.optimize.curve_fit解讀

    這篇文章主要介紹了python數據擬合之scipy.optimize.curve_fit解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • linux系統(tǒng)使用python監(jiān)測網絡接口獲取網絡的輸入輸出

    linux系統(tǒng)使用python監(jiān)測網絡接口獲取網絡的輸入輸出

    這篇文章主要介紹了linux系統(tǒng)使用python監(jiān)測網絡接口獲取網絡的輸入輸出信息,大家參考使用吧
    2014-01-01
  • 利用Python獲取文件夾下所有文件實例代碼

    利用Python獲取文件夾下所有文件實例代碼

    在處理數據的過程中經常需要遍歷文件夾,如果遠程服務器的文件是分布式存儲,遍歷需要更快的速度,下面這篇文章主要給大家介紹了關于利用Python獲取文件夾下所有文件的相關資料,需要的朋友可以參考下
    2023-01-01
  • python中的多進程的創(chuàng)建與啟動方式

    python中的多進程的創(chuàng)建與啟動方式

    這篇文章主要介紹了python中的多進程的創(chuàng)建與啟動,python中的并發(fā)有三種形式,多進程、多線程、協程,執(zhí)?并發(fā)任務的?的是為了提?程序運?的效率,本文通過實例代碼詳細講解需要的朋友可以參考下
    2022-12-12
  • python自動zip壓縮目錄的方法

    python自動zip壓縮目錄的方法

    這篇文章主要介紹了python自動zip壓縮目錄的方法,可實現調用zip.exe文件進行目錄壓縮的功能,需要的朋友可以參考下
    2015-06-06
  • python中pandas操作apply返回多列的實現

    python中pandas操作apply返回多列的實現

    本文主要介紹了python中pandas操作apply返回多列的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Python使用pyinstaller打包含有gettext?locales語言環(huán)境的項目(推薦)

    Python使用pyinstaller打包含有gettext?locales語言環(huán)境的項目(推薦)

    最近在用 pyhton 做一個圖片處理的小工具,順便接觸了gettext,用來實現本地化化中英文轉換,本文通過一個項目給大家詳細介紹下,感興趣的朋友跟隨小編一起看看吧
    2022-01-01

最新評論