OpenCV 高斯模糊 cv2.GaussianBlur

OpenCV 高斯模糊 cv2.GaussianBlur

flyfish

cv2.GaussianBlur 是 OpenCV 庫中用于對圖像進行高斯模糊處理的函數。

高斯模糊的含義

高斯模糊是一種常見的圖像濾波技術,它可以對圖像進行平滑處理,減少圖像中的噪聲和細節,使得圖像看起來更加模糊、柔和。在很多圖像處理場景中,如邊緣檢測前的預處理、去除圖像中的高頻噪聲等,都會用到高斯模糊。

高斯模糊的原理

高斯模糊的核心思想是基于高斯函數,它通過對圖像中的每個像素點及其鄰域像素進行加權平均來實現模糊效果。具體步驟如下:

  1. 定義高斯核:高斯核是一個二維的矩陣,其元素值由高斯函數計算得出。高斯函數的特點是中心的值最大,隨著距離中心的增加,值逐漸減小。這意味著在進行加權平均時,中心像素的權重最大,離中心越遠的像素權重越小。
  2. 卷積操作:將定義好的高斯核應用到圖像的每個像素上,對該像素及其鄰域像素進行加權平均。通過這種方式,圖像中的高頻信息(如噪聲、細節)會被平滑掉,從而實現模糊效果。

高斯模糊會讓圖片變得更模糊。模糊的程度取決于高斯核的大小和標準差。

  • 高斯核大小:高斯核的大小通常是一個奇數,如 (3, 3)(5, 5) 等。核的大小越大,參與加權平均的鄰域像素就越多,模糊效果也就越明顯。
  • 標準差:標準差控制著高斯函數的分布范圍。標準差越大,高斯核中的元素值分布越分散,離中心較遠的像素權重相對增加,模糊效果也會更強烈。

代碼示例

下面是一個使用 cv2.GaussianBlur 對圖像進行高斯模糊處理的示例代碼:

import cv2# 讀取圖像
image = cv2.imread('example.jpg')# 進行高斯模糊處理
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)# 顯示原始圖像
cv2.imshow('Original Image', image)# 顯示模糊后的圖像
cv2.imshow('Blurred Image', blurred_image)# 等待按鍵事件,按任意鍵關閉窗口
cv2.waitKey(0)# 關閉所有打開的窗口
cv2.destroyAllWindows()

使用 cv2.GaussianBlur 函數對圖像進行高斯模糊處理,高斯核大小為 (5, 5),標準差為 0。運行代碼后,可以看到模糊后的圖像比原始圖像更加模糊。

1. 代碼

  • 函數名cv2.GaussianBlur
    OpenCV 中用于實現高斯模糊的函數。
  • 輸入參數
    • frame_gray:輸入的灰度圖像(需為單通道圖像)。
    • (5, 5):高斯核的尺寸(寬度和高度)。
    • 0:高斯核在 X 軸方向的標準差(sigmaX)。
  • 輸出:返回處理后的模糊圖像,并賦值給 frame_gray

2. 參數詳解

(1) 高斯核尺寸 (5, 5)
  • 作用
    定義高斯核的大小,控制模糊范圍。核越大(如 7x7),模糊效果越強,但計算量也越大。
  • 要求
    • 必須為正奇數(如 3, 5, 7),否則 OpenCV 會自動調整為最近的奇數。
    • 寬度和高度可以不同(如 (5, 3)),但通常保持一致以避免方向性模糊。
(2) 標準差 sigmaX = 0
  • 作用
    控制高斯核的分布寬度(標準差)。sigmaX 是 X 軸方向的標準差,sigmaY(未指定時默認與 sigmaX 相同)是 Y 軸方向的標準差。
  • 設置為 0 的含義
    sigmaX = 0 時,OpenCV 會根據核的尺寸自動計算一個合適的標準差(通常為 0.3 * (kernel_size / 2) - 1 的形式)。這簡化了參數設置,適合大多數場景。

3. 高斯模糊的數學原理

高斯模糊通過高斯核與圖像像素的卷積實現:

  • 高斯核:是一個二維正態分布矩陣,中心權重最大,向四周遞減。
  • 卷積運算:每個像素的值被替換為周圍像素的加權平均值(權重由高斯核決定),從而平滑圖像。

例如,一個 5x5 的高斯核示意圖如下(中心權重最大):

[0.003 0.013 0.022 0.013 0.003]
[0.013 0.059 0.097 0.059 0.013]
[0.022 0.097 0.159 0.097 0.022]
[0.013 0.059 0.097 0.059 0.013]
[0.003 0.013 0.022 0.013 0.003]

在圖像處理中,“噪聲” 指的是圖像中出現的 隨機的、不必要的干擾信號,這些信號會破壞圖像的清晰度和真實性,導致圖像質量下降。簡單來說,噪聲是圖像中不符合正常像素分布規律的異常像素,表現為局部區域的亮度、顏色或紋理出現無規則的紊亂。

一、噪聲的具體表現

  1. 視覺上的直觀表現

    • 圖像中出現孤立的 亮點、暗點(如“椒鹽噪聲”中的黑白斑點)。
    • 整體畫面呈現 顆粒感、模糊感條紋、噪點(如低光環境下拍攝的照片常出現的“高斯噪聲”)。
    • 顏色異常,例如局部區域顏色與周圍明顯不協調。
  2. 像素層面的本質
    噪聲是圖像中像素值的 隨機波動。例如,在灰度圖像中,某個像素的灰度值本應是 50,但由于噪聲干擾,實際值可能變成 30 或 70,偏離了真實值。

二、噪聲的常見類型

根據噪聲的分布和特性,常見類型包括:

  1. 椒鹽噪聲(Salt-and-Pepper Noise)

    • 表現為圖像中隨機出現的 白色(高灰度值)或黑色(低灰度值)斑點,類似撒在圖像上的鹽粒(白)和胡椒粒(黑)。
    • 成因:傳感器故障、數據傳輸錯誤、圖像壓縮過度等。
  2. 高斯噪聲(Gaussian Noise)

    • 像素值的分布符合 高斯(正態)分布,表現為圖像整體模糊或有細膩的顆粒感(如低光照下的圖像噪聲)。
    • 成因:傳感器熱噪聲、電路干擾等。
  3. 泊松噪聲(Poisson Noise)

    • 常見于低光照或高感光度拍攝的圖像,噪聲強度與信號強度相關(信號越弱,噪聲越明顯)。
  4. 周期性噪聲(Periodic Noise)

    • 表現為圖像中重復出現的 條紋、網狀圖案(如掃描圖像時的電磁干擾)。

三、噪聲的主要來源

  1. 硬件因素

    • 圖像傳感器(如相機 CCD/CMOS)的 電子噪聲(熱噪聲、讀出噪聲)。
    • 鏡頭污染、光學系統缺陷導致的干擾。
  2. 環境因素

    • 拍攝時的 低光照條件(傳感器需放大信號,噪聲隨之放大)。
    • 電磁干擾(如雷達、無線電信號對圖像傳輸的影響)。
  3. 處理過程

    • 圖像壓縮(如 JPEG 壓縮時的塊效應)。
    • 數字化過程中的 采樣誤差(如分辨率不足導致的偽像)。

四、噪聲的影響

噪聲會干擾圖像處理的后續操作,例如:

  • 邊緣檢測 中,噪聲可能被誤判為邊緣,導致檢測結果出現大量偽邊緣。
  • 目標識別 中,噪聲可能掩蓋真實特征,降低算法準確率。
  • 圖像分割 中,噪聲可能導致區域劃分錯誤。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76948.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76948.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76948.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[密碼學基礎]密碼學發展簡史:從古典藝術到量子安全的演進

密碼學發展簡史:從古典藝術到量子安全的演進 密碼學作為信息安全的基石,其發展貫穿人類文明史,從最初的文字游戲到量子時代的數學博弈,每一次變革都深刻影響著政治、軍事、科技乃至日常生活。本文將以技術演進為主線,…

PostgreSQL認證培訓推薦機構

首先來看一張2025年4月份db-engines上的數據庫排行情況,前三名是雷打不動的Oracle、MySQL、Microsoft SQL Server,排名第四的就是我們今天的主角 - PostgreSQL數據庫,從這張圖上可以看出,PostgreSQL數據庫的上升超非常明顯&#x…

STM32 CubeMx下載及安裝(一)

CubeMx及Java下載安裝(一) 1 背景1.1 基本介紹1.2 主要特點1.3 相關準備 2 軟件下載2.1 Java 官網下載2.2 CubeMx官網下載2.4 CubeMX網盤下載 3 軟件安裝3.1 Java 軟件安裝3.1.1 安裝過程 3.2 CubeMx軟件安裝 總結 1 背景 1.1 基本介紹 STM32CubeMX&am…

Spring Boot 應用優雅關閉

寫這篇文章是因為看到 “線程池在使用結束后應該正確關閉.” 那么如果我們的 Spring 應用都無法正確關閉, 那么線程池肯定也無從保障 1. 優雅關閉 kill with pid, without -9 大多數情況下無須在意這個問題, 正確使用 kill 命令關閉就行 (注意不能使用 kill -9) kill $(cat …

linux與c語言基礎知識(未全部完成)

文章很多處理論,沒辦法寫出來,(linux的一些理論問題,我有時間后,會逐個解決) 文章大多數的理論來字這個鏈接, C語言快速入門-C語言基礎知識-CSDN博客 一. linux(Ubuntu) …

面試經歷(一)雪花算法

uid生成方面 1:為什么用雪花算法 分布式ID的唯一性需要保證,同時需要做到 1:單調遞增 2:確保安全,一個是要能體現出遞增的單號,二一個不能輕易的被惡意爬出訂單數量 3:含有時間戳 4&#…

基于GA遺傳優化TCN-BiGRU注意力機制網絡模型的時間序列預測算法matlab仿真

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) 2.算法運行軟件版本 matlab2024b(提供軟件版本下載) 3.部分核心程序 (完整版代碼包…

深度強化學習 pdf 董豪| 馬爾科夫性質,馬爾科夫過程,馬爾科夫獎勵過程,馬爾科夫決策過程

深度強化學習 pdf 百度云 hea4 pdf 主頁 概念 馬爾可夫獎勵過程和價值函數估計的結合產生了在絕大多數強化學習方法中應用的核心結果——貝爾曼 (Bellman)方程。最優價值函數和最優策略可以通過求解貝爾曼方程得到,還將介紹三種貝爾曼 方…

驗證Kubernetes的服務發現機制

驗證Kubernetes的服務發現機制 文章目錄 驗證Kubernetes的服務發現機制[toc]一、驗證基于環境變量的服務發現機制 服務發現是讓客戶端能夠以固定的方式獲取到后端Pod訪問地址的機制。下面驗證環境變量和DNS這兩種機制。 一、驗證基于環境變量的服務發現機制 對于需要訪問服務…

FPGA系列之DDS信號發生器設計(DE2-115開發板)

一、IP核 IP(Intellectual Property)原指知識產權、著作權等,在IC設計領域通常被理解為實現某種功能的設計。IP模塊則是完成某種比較復雜算法或功能(如FIR濾波器、FFT、SDRAM控制器、PCIe接口、CPU核等)并且參數可修改的電路模塊&#xff0c…

Java單例模式詳解:實現線程安全的全局訪問點

精心整理了最新的面試資料和簡歷模板,有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 一、什么是單例模式? 單例模式(Singleton Pattern)是一種創建型設計模式,它保證一個類僅有一個實例&#xff…

JVM 生產環境問題定位與解決實戰(七):實戰篇——OSSClient泄漏引發的FullGC風暴

本文已收錄于《JVM生產環境問題定位與解決實戰》專欄,完整系列見文末目錄 引言 在前六篇博客中,我們系統性地學習了 JVM 生產環境問題定位與解決的全套工具鏈,涵蓋jps、jmap、jstat、jstack、jcmd 等基礎工具的使用技巧,深入剖析…

Spark集群搭建-spark-local

(一)安裝Spark 安裝Spark的過程就是下載和解壓的過程。接下來的操作,我們把它上傳到集群中的節點,并解壓運行。 1.啟動虛擬機 2.通過finalshell連接虛擬機,并上傳安裝文件到 /opt/software下 3.解壓spark安裝文件到/op…

Java 異常 SSLException: fatal alert: protocol_version 全解析與解決方案

在 Java 網絡通信中,SSLException: fatal alert: protocol_version 是典型的 TLS/SSL 協議版本不兼容異常。本文結合 Java 官方規范、TLS 協議標準及實戰經驗,提供體系化解決方案,幫助開發者快速定位并解決協議版本沖突問題。 一、異常本質&…

虛擬列表技術深度解析:原理、實現與性能優化實戰

虛擬列表技術深度解析:原理、實現與性能優化實戰 引言 在當今數據驅動的互聯網應用中,長列表渲染已成為前端開發的核心挑戰。傳統的一次性全量渲染方式在數據量超過千條時,往往導致頁面卡頓、內存飆升等問題。虛擬列表(Virtual L…

2025-04-20 李沐深度學習4 —— 自動求導

文章目錄 1 導數拓展1.1 標量導數1.2 梯度:向量的導數1.3 擴展到矩陣1.4 鏈式法則 2 自動求導2.1 計算圖2.2 正向模式2.3 反向模式 3 實戰:自動求導3.1 簡單示例3.2 非標量的反向傳播3.3 分離計算3.4 Python 控制流 硬件配置: Windows 11Inte…

Redis的使用總結

Redis 核心使用場景 緩存加速 高頻訪問數據緩存(如商品信息、用戶信息) 緩解數據庫壓力,提升響應速度 會話存儲 分布式系統共享 Session(替代 Tomcat Session) 支持 TTL 自動過期 排行榜/計數器 實時排序&#x…

富文本編輯器實現

🎨 富文本編輯器實現原理全解析 📝 基本實現路徑圖 #mermaid-svg-MO1B8a6kAOmD8B6Y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MO1B8a6kAOmD8B6Y .error-icon{fill:#552222;}#mermaid-s…

LeetCode熱題100——283. 移動零

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 請注意 ,必須在不復制數組的情況下原地對數組進行操作。 示例 1: 輸入: nums [0,1,0,3,12] 輸出: [1,3,12,0,0] 示例 2: 輸入: nums [0] 輸出:…

與Ubuntu相關命令

windows將文件傳輸到Ubuntu 傳輸文件夾或文件 scp -r 本地文件夾或文件 ubuntu用戶名IP地址:要傳輸到的文件夾路徑 例如: scp -r .\04.py gao192.168.248.129:/home/gao 如果傳輸文件也可以去掉-r 安裝軟件 sudo apt-get update 更新軟件包列表 sudo apt insta…