圖像平滑處理

圖像平滑處理

  • 四種常用方式
    • 1. 均值濾波 (cv2.blur())
    • 2. 高斯濾波 (cv2.GaussianBlur())
    • 3. 中值濾波 (cv2.medianBlur())
    • 4、雙邊濾波 (cv2.bilateralFilter())
  • 總結
  • 存圖時遇到一個中文版亂碼問題


四種常用方式

平滑處理(也稱為模糊處理),用于減少圖像中的噪聲或細節。

OpenCV 提供了多種平滑處理的方法,這里展示四種常用的平滑處理技術:均值濾波、高斯濾波、中值濾波和雙邊濾波。

1. 均值濾波 (cv2.blur())

均值濾波是最簡單的平滑處理方法之一。

均值濾波的原理是將圖像中每個像素的值替換為其周圍像素的平均值。

均值濾波可以有效地去除噪聲,但可能會導致圖像變得模糊。

	# 讀取圖片img = cv2.imread('D:\Word\keli.jpg')# 應用均值濾波blurred_image = cv2.blur(img, (5, 5))# 保存圖片cv2.imwrite('D:\Word\keli_blurred.jpg', blurred_image)# 顯示結果cv2.imshow('blurred_image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

在這里插入圖片描述

在這里插入圖片描述

2. 高斯濾波 (cv2.GaussianBlur())

高斯濾波是一種基于高斯函數的平滑處理方法。與均值濾波不同,高斯濾波在計算像素平均值時,會給中心像素賦予更高的權重,而給邊緣像素賦予較低的權重。

高斯濾波在去除噪聲的同時,能夠更好地保留圖像的邊緣信息。

# 讀取圖片img = cv2.imread('D:\Word\keli_thres2.jpg')# 應用高斯濾波blurred_image = cv2.GaussianBlur(img, (5, 5), 0)# 保存圖片cv2.imwrite('D:\Word\keli_blurred.jpg', blurred_image)# 顯示結果cv2.imshow('blurred_image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

cv2.GaussianBlur(image, (5, 5), 0) 參數說明
image: 輸入的圖像。
(5, 5): 濾波核的大小。
0: 高斯核的標準差,如果為0,則根據核大小自動計算。

在這里插入圖片描述
在這里插入圖片描述

適用場景
高斯濾波適用于去除圖像中的高斯噪聲,并且在保留圖像邊緣信息方面表現較好。

3. 中值濾波 (cv2.medianBlur())

中值濾波是一種非線性平滑處理方法。它的原理是將圖像中每個像素的值替換為其周圍像素的中值。

中值濾波在去除椒鹽噪聲(即圖像中隨機出現的黑白點)時非常有效。

	# 讀取圖片img = cv2.imread('D:\Word\keli_thres2.jpg')# 應用中值濾波blurred_image = cv2.medianBlur(img, 5)# 保存圖片cv2.imwrite('D:\Word\keli_blurred.jpg', blurred_image)# 顯示結果cv2.imshow('blurred_image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

在這里插入圖片描述
在這里插入圖片描述

參數說明

image: 輸入的圖像。
5: 濾波核的大小,必須是奇數。

適用場景
中值濾波適用于去除圖像中的椒鹽噪聲,并且在保留圖像邊緣信息方面表現較好。

4、雙邊濾波 (cv2.bilateralFilter())

雙邊濾波是一種非線性的平滑處理方法,它結合了空間鄰近度和像素值相似度。

與高斯濾波不同,雙邊濾波在平滑圖像的同時,能夠保留圖像的邊緣信息。這是因為雙邊濾波不僅考慮像素之間的空間距離,還考慮像素值之間的差異。

# 讀取圖片img = cv2.imread('D:\Word\keli.jpg')# 應用雙邊濾波blurred_image = cv2.bilateralFilter(img, 11, 17, 17)# 保存圖片cv2.imwrite('D:\Word\keli_blurred.jpg', blurred_image)# 顯示結果cv2.imshow('blurred_image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

在這里插入圖片描述

在這里插入圖片描述

cv2.bilateralFilter(image, 9, 75, 75)
參數說明

image: 輸入的圖像。
9: 濾波核的大小。
75: 顏色空間的標準差,控制像素值相似度的權重。
75:坐標空間的標準差,控制空間距離的權重。

適用場景
雙邊濾波適用于在去除噪聲的同時保留圖像的邊緣信息,常用于圖像美化或預處理。

總結

OpenCV 提供了多種圖像平滑處理方法,每種方法都有其獨特的優勢和適用場景。
均值濾波簡單易用,但可能導致圖像模糊;
高斯濾波在去除噪聲的同時能較好地保留邊緣信息;
中值濾波特別適合去除椒鹽噪聲;
雙邊濾波則在保留邊緣信息方面表現出色。
根據具體的應用場景,選擇合適的平滑處理方法,可以顯著提升圖像處理的效果。

存圖時遇到一個中文版亂碼問題

當使用cv2.imwrite保存帶有中文路徑或名稱的圖片時,可能會出現亂碼問題。這是因為cv2.imwrite在處理非ASCII字符時存在限制

# 保存圖片cv2.imwrite(r'D:\Word\keli_均值濾波.jpg', blurred_image1)cv2.imwrite(r'D:\Word\keli_高斯濾波.jpg', blurred_image2)cv2.imwrite(r'D:\Word\keli_中值濾波.jpg', blurred_image3)cv2.imwrite(r'D:\Word\keli_雙邊濾波.jpg', blurred_image4)# 使用cv2.imencode和tofile保存圖片,避免中文路徑亂碼cv2.imencode('.jpg', blurred_image1)[1].tofile('D:\Word\keli_均值濾波.jpg')cv2.imencode('.jpg', blurred_image2)[1].tofile('D:\Word\keli_高斯濾波.jpg')cv2.imencode('.jpg', blurred_image3)[1].tofile('D:\Word\keli_中值濾波.jpg')cv2.imencode('.jpg', blurred_image4)[1].tofile('D:\Word\keli_雙邊濾波.jpg')

第一種會中文亂碼,第二種就不會

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

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

相關文章

fortigate的waf功能

在系統管理----可見功能----web應用防火墻打開waf功能Web 應用程序防火墻 (WAF) 配置文件可以檢測和阻止已知的 Web 應用程序攻擊。您可以將 WAF 配置文件配置為使用簽名和約束來檢查 Web 流量。您還可以強制實施 HTTP 方法策略,該策略控制與…

AI Compass前沿速覽:可靈創意工坊、字節Coze StudioCoze Loop、通義萬相2.2 、智譜GLM-4.5、騰訊混元3D世界模型開源

AI Compass前沿速覽:可靈創意工坊、字節Coze Studio&Coze Loop、通義萬相2.2 、智譜GLM-4.5、騰訊混元3D世界模型開源 AI-Compass 致力于構建最全面、最實用、最前沿的AI技術學習和實踐生態,通過六大核心模塊的系統化組織,為不同層次的學…

SpringCloud之Gateway

SpringCloud之Gateway 官網地址: https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories 1. 什么是gateway Spring Cloud Gateway 是Spring Cloud官方推出的第二代網關框架,定位于取代 Net…

關于獲取某目錄及子目錄下所有文件且不包含隱藏文件

最近比較忙,很少寫blog了!!!關于獲取目錄及子目錄下所有文件是常遇到的功能,一般通過遞歸遍歷實現。而生產場景中,一般是遍歷nas上的目錄,在nas上利用File.listFiles(),在linux系統上無法獲取含…

docker可視化管理工具lazydocker

Lazydocker 是一個用 Go 語言編寫的命令行 Docker 管理工具。它提供了一個簡潔、直觀的終端界面,支持鍵盤和鼠標操作,可通過方向鍵與快捷鍵實時查看和管理容器、鏡像、網絡等資源,大幅簡化了原本復雜的命令行操作,提升操作效率。2…

少林寺用什么數據庫?

📢📢📢📣📣📣 作者:IT邦德 中國DBA聯盟(ACDU)成員,15年DBA工作經驗 Oracle、PostgreSQL ACE CSDN博客專家及B站知名UP主,全網粉絲15萬 擅長主流Oracle、MySQL、PG、高斯及…

C語言---萬能指針(void *)、查找子串(strncmp函數的應用)多維數組(一維數組指針、二維數組指針)、返回指針值函數、關鍵字(const)

一、字符串與指針用字符指針指向一個字符串,可以不定義字符數組,而定義字符指針。用字符指針指向字符串中的字符。不能使用指針去改變不能修改的空間。eg1. 運用指針將 src 的內容拷貝到 dest 中去void Strcpy(char *dest, char *src) {while(*src ! \0)…

Keepalived 實戰

一、高可用集群基礎核心概念與指標集群類型:LB(負載均衡):如 LVS、HAProxy、Nginx,提升吞吐量;HA(高可用):保障核心服務(數據庫、Redis)連續性&am…

窗口函數替代子查詢的復雜查詢簡化技巧

窗口函數通過單次掃描完成分析計算,能大幅簡化子查詢結構并提升性能,尤其在排名、累計計算等場景?15。以下是核心優化技巧:一、排名場景替代方案?部門工資排名?傳統子查詢需自連接和聚合計數:sqlSELECT e1.name, e1.salary, (S…

深度學習:預訓練和warm up的區別

“預訓練(Pre-training)”和“Warm-up(預熱)”是深度學習中常見的兩個訓練策略,它們雖然都在訓練初期起作用,但本質和目的完全不同。一、預訓練(Pre-training)1. 定義預訓練是指&…

Apache Ignite中分布式信號量(Distributed Semaphore)的說明和使用示例

這段內容是關于 Apache Ignite 中 分布式信號量(Distributed Semaphore) 的說明和使用示例。我們來一步步解析,幫助你深入理解它的含義和用途。🔹 一、什么是 Semaphore(信號量)? 在并發編程中&…

怎么提升服務器的防攻擊能力!

提升服務器的防攻擊能力需要從??架構設計、技術防護、運維管理??等多維度入手,覆蓋網絡層、系統層、應用層及數據層的安全防護。以下是具體的策略和實踐方法:??一、基礎安全加固:消除自身漏洞??服務器自身的脆弱性是最常見的攻擊入口…

vscode配置rust環境

1.官網下載vscode,安裝 2.vscode命令行運行: Invoke-WebRequest https://win.rustup.rs/x86_64 -OutFile rustup-init.exe然后: .\rustup-init.exe3.驗證 先配置path: $env:Path ";$env:USERPROFILE\.cargo\bin"查看是…

最新版 HarmonyOS NEXT 開發工具安裝教程:如何在 macOS 系統安裝 DevEco Studio 5.0.3 編輯器?

最新版 HarmonyOS NEXT 開發工具安裝教程:如何在 macOS 系統安裝 DevEco Studio 5.0.3 編輯器? 什么是 DevEco Studio? DevEco Studio 是華為為 HarmonyOS 開發的強大集成開發環境(IDE),專為開發 Harmony…

電商項目統一認證方案設計與實戰

1. 微服務網關整合 OAuth2.0 設計思路分析 網關整合 OAuth2.0 有兩種思路,一種是授權服務器生成令牌, 所有請求統一 在網關層驗證,判斷權限等操作;另一種是由各資源服務處理,網關只做請求 轉發 。 比較常用的是第一種&#xf…

學習Markdown

標題一 標題二 標題三 標題四 標題五 標題六這是一段引用文本直接編寫,段落換行是末尾兩個以上的空格+回車 或者在段落后加一個空行 粗體語法:使用兩個星號 ** 或兩個下劃線 __ 包圍文字:這是粗體文字使用星號 這是__粗體文字__使…

劇本殺系統 App 開發:科技賦能,重塑劇本殺游戲體驗

在科技飛速發展的當下,各個行業都在積極尋求與科技的融合,以實現創新和升級。劇本殺行業也不例外,劇本殺系統 App 的開發正是科技賦能的生動體現,它重塑了傳統的劇本殺游戲體驗,為玩家帶來了全新的感受。劇本殺系統 Ap…

wvp-gb28181-pro 只用jar運行

編譯前端后npm install --global yarnyarn --registryhttps://registry.npmjs.org installyarn run build,生成的前端文件,會在wvp-GB28181-pro\src\main\resources\static,因為是在resources中,打maven打包后會一起打到jar中&…

深度學習(魚書)day06--神經網絡的學習(后兩節)

深度學習(魚書)day06–神經網絡的學習(后兩節)一、梯度 像 這樣的由全部變量的偏導數匯總而成的向量稱為梯度(gradient)。 梯度實現的代碼: def numerical_gradient(f, x):h 1e-4 # 0.0001grad…

學習嵌入式的第三十四天-數據結構-(2025.7.29)數據庫

數據庫基礎概念 數據庫是用于存儲和管理海量數據的應用程序,提供數據增刪改查及統計功能(如最大值、最小值、平均數等)。通過SQL語句操作數據,以表格形式管理存儲。 數據庫分類 關系型數據庫 Oracle(大型&#xff0…