(一)OpenCV——噪聲去除(降噪)

高斯濾波器(針對高斯噪聲)

高斯噪聲是指它的概率密度函數服從高斯分布(即正態分布)的一類噪聲。常見的高斯噪聲包括起伏噪聲、宇宙噪聲、熱噪聲和散粒噪聲等等。

高斯濾波(Gaussian filter) 包含許多種,包括低通、帶通和高通等,我們通常圖像上說的高斯濾波,指的是 高斯模糊(Gaussian Blur) ,是一種 高斯低通濾波 ,其過濾調圖像高頻成分(圖像細節部分),保留圖像低頻成分(圖像平滑區域),所以對圖像進行 ‘高斯模糊’ 后,圖像會變得模糊。

高斯模糊對于抑制?高斯噪聲?(服從正態分布的噪聲) 非常有效。

高斯濾波是一種常用的圖像去噪方法,它通過在圖像上進行卷積操作來實現。

高斯濾波的計算過程:

高斯函數

在計算每個像素時,都把當前中心點看作坐標原點,可以使得均值 μ = 0?,簡化高斯函數的公式:

其中:

  • (x,y) 是核中某點相對于中心點的坐標

  • σ 是標準差(控制平滑程度)

高斯核的生成

高斯濾波的重要兩步就是先找到高斯核然后再進行卷積

生成示例(3×3高斯核,σ=1)

import numpy as npdef gaussian_kernel(size, sigma=1):kernel = np.fromfunction(lambda x, y: (1/(2*np.pi*sigma**2)) * np.exp(-((x-(size-1)/2)**2 + (y-(size-1)/2)**2)/(2*sigma**2)),(size, size))return kernel / np.sum(kernel)  # 歸一化kernel = gaussian_kernel(3)
print(kernel)

輸出結果:

[[0.07511361 0.1238414  0.07511361][0.1238414  0.20417996 0.1238414 ][0.07511361 0.1238414  0.07511361]]

卷積計算

高斯濾波的卷積計算步驟如下:

  1. 核中心對準:將高斯核中心對準圖像的每個像素

  2. 對應相乘:核覆蓋區域的像素值與核權重逐點相乘

  3. 求和:將所有乘積結果相加

  4. 替換中心像素:用求和結果替換原中心像素值


計算示例(3×3區域):

圖像局部區域I:
[100 120 110]
[ 90 100 115]
[ 95 105 108]高斯核:
[[0.07511361 0.1238414  0.07511361][0.1238414  0.20417996 0.1238414 ][0.07511361 0.1238414  0.07511361]]計算后的結果:
[0.075 0.124 0.075]
[0.124 0.204 0.124]
[0.075 0.124 0.075]計算過程:
新中心值 = 100*0.075 + 120*0.124 + 110*0.075 +90*0.124 + 100*0.204 + 115*0.124 +95*0.075 + 105*0.124 + 108*0.075≈ 103.3

給原圖加上高斯噪聲,并繪制加噪后的像素值分布圖

經過高斯濾波處理后的圖像

?

歸一化

歸一化(Normalization)在圖像濾波和卷積運算中是一個關鍵步驟,它確保濾波操作不會改變圖像的整體亮度水平。

歸一化的基本定義

歸一化指的是將濾波器(卷積核)的所有權重值進行縮放,使得它們的總和等于1。數學表達式為:

歸一化核 = 原始核 / ∑(原始核所有元素)

為什么需要歸一化??

保持圖像亮度恒定

未經歸一化:卷積后圖像整體會變亮或變暗

kernel = np.array([[1, 1, 1],[1, 1, 1],[1, 1, 1]])  # 總和=9
# 應用該核會使每個像素值變為原來的9倍

歸一化后:?

normalized_kernel = kernel / 9  # 總和=1

不需要歸一化的特殊情況?

某些濾波器故意不歸一化

  • 邊緣檢測算子(如Sobel、Laplacian)
sobel_x = np.array([[-1, 0, 1],[-2, 0, 2],[-1, 0, 1]])  # 總和=0
  • 銳化濾波器

  • 這些濾波器需要保留灰度變化信息

中值濾波器(針對椒鹽噪聲)

中值濾波(Median Filter)是一種非線性濾波方法,主要用于去除圖像中的椒鹽噪聲(Salt-and-Pepper Noise)同時較好地保留圖像邊緣。它的計算過程與線性濾波器(如高斯濾波)完全不同。

基本計算步驟

對于一個像素點,中值濾波的計算過程如下:

  1. 定義濾波窗口:選擇一個奇數尺寸的鄰域窗口(如3×3、5×5等)

  2. 提取窗口內像素值:取出該窗口覆蓋的所有像素值

  3. 排序像素值:將這些像素值按從小到大(或從大到小)排序

  4. 取中值:選擇排序后的中間值作為該像素點的新值

  5. 替換原像素:用這個中值替換原圖像中對應位置的像素值

具體計算示例

假設我們有一個3×3的圖像區域和3×3的中值濾波窗口:

原始圖像區域(3×3):

[120, 125, 130,115, 255, 120,  ← 中心像素255可能是噪聲(椒鹽噪聲)110, 105, 140]

計算過程:

  1. 提取所有9個像素值:[120, 125, 130, 115, 255, 120, 110, 105, 140]

  2. 排序:[105, 110, 115, 120, 120, 125, 130, 140, 255]

  3. 取中值(第5個值):120

  4. 用120替換原中心像素255

中值濾波的特點

  1. 非線性處理:不能表示為核卷積

  2. 去噪效果:特別適合去除椒鹽噪聲

  3. 邊緣保留:比均值濾波更好地保留邊緣

  4. 計算復雜度:比線性濾波高,因為涉及排序操作

  5. 窗口大小:通常使用奇數尺寸(3×3, 5×5等)

給圖像加入椒鹽噪聲,并去噪

?均值濾波器(簡單平滑)

均值濾波器(Mean Filter),也稱為簡單平滑濾波器箱式濾波器(Box Filter),是最基礎的線性濾波器之一。

基本原理

均值濾波通過用鄰域像素的平均值代替中心像素值來實現圖像平滑:

  • 線性操作:可以表示為卷積運算

  • 均勻權重:濾波窗口內所有像素權重相同

  • 平滑效果:減少圖像噪聲和細節

計算過程

對于一個N×N的均值濾波器:

  1. 定義濾波窗口:選擇濾波器尺寸(如3×3、5×5等)

  2. 遍歷圖像:對每個像素應用濾波窗口

  3. 計算平均值:計算窗口內所有像素的算術平均值

  4. 替換中心像素:用平均值替換原中心像素值、

數學表達式:

新像素值 = (1/N2) × Σ(窗口內所有像素值)

具體示例

考慮一個3×3的圖像區域:

[50, 60, 70]
[40, 255, 80]  ← 中心像素255可能是噪聲
[30, 20, 90]

計算過程:

  1. 提取所有9個像素值:[50, 60, 70, 40, 255, 80, 30, 20, 90]

  2. 計算平均值:(50+60+70+40+255+80+30+20+90)/9 = 85

  3. 用85替換原中心像素255

應用場景

  1. 快速平滑:需要簡單快速平滑處理時

  2. 預處理:作為更復雜處理的預處理步驟

  3. 均勻區域處理:處理紋理較均勻的圖像區域

高斯濾波、均值濾波與中值濾波的全面對比

基本性質對比

特性高斯濾波均值濾波中值濾波
濾波器類型線性濾波器線性濾波器非線性濾波器
計算復雜度中等(可分離優化)高(需要排序)
權重分配中心權重高,邊緣權重低均勻權重無權重概念
歸一化要求需要需要不需要

去噪效果對比

噪聲類型高斯濾波表現均值濾波表現中值濾波表現
高斯噪聲效果最好效果較好效果一般
椒鹽噪聲效果較差效果差效果最好
脈沖噪聲效果差效果差效果極佳

邊緣保持能力

邊緣特性高斯濾波均值濾波中值濾波
邊緣模糊程度中等(σ越大越模糊)嚴重最小
銳利邊緣保持較好優秀
細節保留中等

實際應用對比

高斯濾波最佳場景

  • 需要平滑但保留一定邊緣

  • 預處理步驟(如Canny邊緣檢測前)

  • 光學系統產生的自然模糊建模

均值濾波適用場景

  • 快速簡單平滑需求

  • 計算資源有限的場景

  • 均勻區域的噪聲去除

中值濾波不可替代場景

  • 椒鹽噪聲去除(舊照片修復)

  • 需要保留銳利邊緣(醫學影像)

  • 脈沖噪聲環境(工業檢測)

參考文章:

https://blog.csdn.net/a435262767/article/details/107115249

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

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

相關文章

百度開源文心 4.5 系列開源大模型 GitCode 本地化部署,硅基流動:文心 vs. DeepSeek vs. Qwen 3.0 深度測評

百度開源文心 4.5 系列開源大模型 GitCode 本地化部署,硅基流動:文心 vs. DeepSeek vs. Qwen 3.0 深度測評 文章目錄百度開源文心 4.5 系列開源大模型 GitCode 本地化部署,硅基流動:文心 vs. DeepSeek vs. Qwen 3.0 深度測評背景百…

「日拱一碼」022 機器學習——數據劃分

目錄 基于單次隨機劃分的方法 普通單次隨機劃分(train_test_split) 分層單次隨機劃分(使用 train_test_split 的 stratify 參數) 基于多次隨機劃分的方法 普通多次隨機劃分(ShuffleSplit) 分層多次隨機劃分(StratifiedShuffleSplit…

lora網關

所需配置的引腳,SPI傳輸,PG13復位(輸出引腳,推挽輸出),PE2忙碌(輸入引腳,浮空輸入)PE6PE5輸出。若利用延時處理按鍵消抖,hal庫里用systick中斷實現延時&#…

5G IMS注冊關鍵一步:UE如何通過ePCO獲取P-CSCF地址

看似簡單的P-CSCF地址傳遞,背后是5G核心網控制面與用戶面的精密協作。ePCO作為高效的信令載體,承載著IMS業務觸達的第一把鑰匙。 在5G網絡中建立IMS PDN連接時,UE(用戶設備)獲取P-CSCF(Proxy-Call Session Control Function)地址是IMS業務(如VoLTE、VoNR)成功注冊和運…

JVM方法區的運行時常量區到底存儲哪些數據?

JDK8以后,運行時常量池邏輯上屬于方法區;但: 其中的字符串常量池實際位置移至到了java堆;其中一些符號引用也存儲到了元空間;字符串常量池,元空間,運行時常量區的具體關系請看這篇博客&#xf…

Go defer(二):從匯編的角度理解延遲調用的實現

Go的延遲調用機制會在當前函數返回前執行傳入的函數,它會經常被用于關閉文件描述符、關閉數據庫連接以及解鎖資源。之前的文章( Go defer(一):延遲調用的使用及其底層實現原理詳解 )詳細介紹了defer的使用以…

Android 12系統源碼_分屏模式(一)從最近任務觸發分屏模式

前言 打開MainActivity,然后進入最近任務觸發分屏,可以成功進入分屏模式。 本篇文章我們來具體梳理一下這個過程的源碼調用流程。 一 launcher3階段 1.1 源碼 //packages/apps/Launcher3/quickstep/src/com/android/quickstep/views/TaskView.java publi…

Flask 入門教程:用 Python 快速搭建你的第一個 Web 應用

文章目錄前言一、什么是 Flask?📌 Flask 的優勢1. 輕量靈活2. 易于上手3. 可擴展性強4. 自由度高5. 社區活躍,資料豐富Flask 主要用來做什么?二、Flask快速入門1.創建一個Flask項目2.開啟debug,修改host,端…

實習第一個小需求樣式問題總結

Vue2 vxe-table Element UI 表頭下拉詳情實現總結一、核心功能實現表頭下拉按鈕交互初始嘗試 expand-change 事件無法滿足需求&#xff0c;改用 vxe-table 的 toggle-row-expand 事件&#xff1a;<vxe-table toggle-row-expand"handleExpandChange"><temp…

Linux中LVM邏輯卷擴容

在Linux系統中對根目錄所在的LVM邏輯卷進行擴容&#xff0c;需要依次完成 物理卷擴容 ? 卷組擴容 ? 邏輯卷擴容 ? 文件系統擴容 四個步驟。以下是詳細操作流程&#xff1a;一、確認當前磁盤和LVM狀態# 1. 查看磁盤空間使用情況 df -h /# 2. 查看塊設備及LVM層級關系 lsblk# …

微軟365 PDF導出功能存在本地文件包含漏洞,可泄露敏感服務器數據

微軟365的"導出為PDF"功能近期被發現存在嚴重的本地文件包含(Local File Inclusion, LFI)漏洞&#xff0c;攻擊者可利用該漏洞獲取服務器端的敏感數據&#xff0c;包括配置文件、數據庫憑證和應用程序源代碼。該漏洞由安全研究員Gianluca Baldi發現并報告給微軟&…

臺球 PCOL:極致物理還原的網頁斯諾克引擎(附源碼深度解析)

> 無需下載,打開瀏覽器即可體驗專業級斯諾克!本文將揭秘網頁版臺球游戲的物理引擎與渲染核心技術 在游戲開發領域,臺球物理模擬一直被視為**剛體動力學皇冠上的明珠**。今天我們要解析的**臺球 PCOL**(Pure Canvas Online Billiards)正是一款突破性的網頁版斯諾克游戲…

springboot-2.3.3.RELEASE升級2.7.16,swagger2.9.2升級3.0.0過程

一、pom文件版本修改<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.16</version><relativePath/> </parent>如果用到了“spring-boot-starter…

Python-正則表達式-信息提取-滑動窗口-數據分發-文件加載及分析器-瀏覽器分析-學習筆記

序 欠4前年的一份筆記 &#xff0c;獻給今后的自己。 正則表達式 概述 正則表達式&#xff0c;Regular Expression&#xff0c;縮寫為regex、regexp、RE等。 正則表達式是文本處理極為重要的技術&#xff0c;用它可以對字符串按照某種規則進行檢索、替換。 1970年代&…

一文入門神經網絡:神經網絡概念初識

神經網絡的世界遠比你想象得更豐富多元。從基礎架構到前沿融合模型&#xff0c;我為你梳理了當前最值得關注的神經網絡類型&#xff0c;不僅包括那些“教科書級”的經典模型&#xff0c;也覆蓋了正在改變行業格局的新興架構。以下是系統分類與核心特點總結&#xff1a;一、基礎…

線上事故處理記錄

線上事故處理記錄 一、MySQL 導致的服務器 CPU 飆升 有一天&#xff0c;突然收到了服務器 CPU 飆升的告警信息&#xff0c;打開普羅米修斯查看 CPU 的使用情況&#xff0c;發現 CPU 確實飆升了&#xff0c;下面開始去進行問題定位了。 1. 首先連接到對應的服務器&#xff0c;然…

ParaCAD 筆記 png 圖紙標注數據集

ParaCAD-Dataset git lfs install git clone https://www.modelscope.cn/datasets/yuwenbonnie/ParaCAD-Dataset.git https://github.com/ParaCAD/ 不止100g 下個最小的 沒有三視圖

C#使用Semantic Kernel實現Embedding功能

1、背景 C#開發中&#xff0c;可以通過Semantic Kernel實現本地模型的調用和實現。 本地的Ollama的版本如下&#xff1a;安裝的Package如下&#xff1a;2、代碼實現 // See https://aka.ms/new-console-template for more information using Microsoft.Extensions.AI; using Mi…

轉轉APP逆向

APP版本 11.15.0 接口分析 # URL https://app.zhuanzhuan.com/zz/transfer/search# header cookie xxx x-zz-monitoring-metrics feMetricAntiCheatLevelV1 zztk user-agent Zhuan/11.15.0 (11015000) Dalvik/2.1.0 (Linux; U; Android 10; Pixel 3 Build/QQ3A.200805.001) z…

注解與反射的完美配合:Java中的聲明式編程實踐

注解與反射的完美配合&#xff1a;Java中的聲明式編程實踐 目錄 引言 核心概念 工作機制 實戰示例 傳統方式的痛點 注解反射的優勢 實際應用場景 最佳實踐 總結 引言 在現代Java開發中&#xff0c;我們經常看到這樣的代碼&#xff1a; Range(min 1, max 50)priva…