圖像導向濾波

??導向濾波(Guided Filter)是一種基于局部線性模型的濾波方法,用于圖像處理中的去噪、圖像增強和邊緣保留等任務。它結合了引導圖像(guide image)和輸入圖像來實現對輸入圖像的濾波操作。

原理

數學原理:
  • 假設我們有一個引導圖像(guide image) I I I和一個輸入圖像(input image) P P P
  • 對于每個像素位置 i i i,我們想要計算輸出圖像 Q Q Q 中的像素值。
  • 導向濾波的目標是學習一個線性模型來估計 Q i Q_i Qi?,使得 Q i = a i I i + b i Q_i = a_i I_i + b_i Qi?=ai?Ii?+bi?
目標函數:
  • 最小化目標函數 m i n a i , b i ∑ j ∈ N i ( a i I j + b i ? P j ) 2 + ? min_{a_i,b_i} \sum_{j \in \mathcal{N}_i} (a_i I_j + b_i - P_j)^2 + \epsilon minai?,bi??jNi??(ai?Ij?+bi??Pj?)2+?,其中 N i \mathcal{N}_i Ni?是像素 i i i的鄰域, ? \epsilon ? 是一個較小的正則化參數。
線性方程求解:
  • a i a_i ai? b i b_i bi?求偏導數,可以得到它們的閉式解:
    a i = Cov ( I , P ) Var ( I ) + ? a_i = \frac{{\text{Cov}(I,P)}}{{\text{Var}(I) + \epsilon}} ai?=Var(I)+?Cov(I,P)?
    b i = P i ˉ ? a i I i ˉ b_i = \bar{P_i} - a_i \bar{I_i} bi?=Pi?ˉ??ai?Ii?ˉ?
    其中, Cov ( I , P ) \text{Cov}(I,P) Cov(I,P) I I I P P P 的協方差, Var ( I ) \text{Var}(I) Var(I) I I I的方差, I i ˉ \bar{I_i} Ii?ˉ? P i ˉ \bar{P_i} Pi?ˉ?分別是 I I I P P P在像素 i i i的均值。

作用和適用場景

  • 去噪:導向濾波能有效地去除圖像中的噪聲,尤其是在保留邊緣信息的同時減少噪聲。
  • 圖像增強:它能夠增強圖像的對比度和細節,使圖像更清晰、更鮮明。
  • 邊緣保留:導向濾波可以保留圖像中的邊緣信息,在圖像處理中有助于保持邊緣的清晰度。

代碼示例

??在 Python 中,可以使用 OpenCV 庫來實現導向濾波。以下是一個簡單的示例代碼:

import cv2
import numpy as npdef guided_filter(I, P, radius, eps):mean_I = cv2.boxFilter(I, cv2.CV_64F, (radius, radius))mean_P = cv2.boxFilter(P, cv2.CV_64F, (radius, radius))mean_IP = cv2.boxFilter(I * P, cv2.CV_64F, (radius, radius))cov_IP = mean_IP - mean_I * mean_Pmean_II = cv2.boxFilter(I * I, cv2.CV_64F, (radius, radius))var_I = mean_II - mean_I * mean_Ia = cov_IP / (var_I + eps)b = mean_P - a * mean_Imean_a = cv2.boxFilter(a, cv2.CV_64F, (radius, radius))mean_b = cv2.boxFilter(b, cv2.CV_64F, (radius, radius))Q = mean_a * I + mean_breturn Q# 讀取圖像
input_image = cv2.imread('input_image.jpg', 0)
guide_image = cv2.imread('guide_image.jpg', 0)# 將圖像轉換為浮點數
input_image = np.float32(input_image) / 255.0
guide_image = np.float32(guide_image) / 255.0# 調用導向濾波函數
radius = 5
eps = 0.01
output_image = guided_filter(guide_image, input_image, radius, eps)# 顯示結果
cv2.imshow('Input Image', input_image)
cv2.imshow('Guide Image', guide_image)
cv2.imshow('Filtered Image', output_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

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

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

相關文章

文件名稱管理文件:抓關鍵字歸類文件,讓文件管理變得簡單明了

在當今數字時代,每天都要處理大量的文件,無論是文本、圖片、視頻還是其他類型的文件。如何有效地管理這些文件,能夠迅速找到所需的信息,已經成為了一個重要的問題。文件名稱是文件內容的第一反映,也是識別和檢索文件的…

408-數據結構-代碼題

2014 2014 二叉樹&#xff08;鏈式存儲&#xff09; #include<iostream> #include<bits/stdc.h> using namespace std;typedef struct Node{struct Node *left;struct Node *right;int high0;double weight; }node;double sum0;void visit(node *t){int lop0;if…

算法刷題-動態規劃2(繼續)

算法刷題-動態規劃2 珠寶的最高價值下降路徑最小和使用最小花費爬樓梯整數拆分 珠寶的最高價值 題目 大佬思路 多開一行使得代碼更加的簡潔 移動到右側和下側 dp[ i ][ j ]有兩種情況&#xff1a; 第一種是從上面來的禮物最大價值&#xff1a;dp[ i ][ j ] dp[ i - 1 ][ j ]…

【CCF-PTA】第03屆Scratch第02題 -- 計算天數

計算天數 【題目描述】 一年有 365 天還是有 366 天呢&#xff1f;要看這一年是不是閏年。有個計算方法可以幫助我們判斷&#xff0c;那就是閏年能夠除盡 4 但不能除盡 100 或者能夠除盡 400 的年份。如果這一年是閏年&#xff0c;2 月份的天數就是 29 天。小明決定編寫一個程…

排序算法--希爾排序

實現邏輯 ① 先取一個小于n的整數d1作為第一個增量&#xff0c;把文件的全部記錄分成d1個組。 ② 所有距離為d1的倍數的記錄放在同一個組中&#xff0c;在各組內進行直接插入排序。 ③ 取第二個增量d2小于d1重復上述的分組和排序&#xff0c;直至所取的增量dt1(dt小于dt-l小于……

JSP:Servlet

Servlet處理請求過程 B/S請求響應模型 Servlet介紹 JSP是Servlet的一個成功應用&#xff0c;其子集。 JSP頁面負責前臺用戶界面&#xff0c;JavaBean負責后臺數據處理&#xff0c;一般的Web應用采用JSPJavaBean就可以設計得很好了。 JSPServletJavaBean是MVC Servlet的核心…

【實驗筆記】C語言實驗——降價提醒機器人

降價提醒機器人 題目&#xff1a; 小 T 想買一個玩具很久了&#xff0c;但價格有些高&#xff0c;他打算等便宜些再買。但天天盯著購物網站很麻煩&#xff0c;請你幫小 T 寫一個降價提醒機器人&#xff0c;當玩具的當前價格比他設定的價格便宜時發出提醒。 輸入格式&#xf…

人工智能教程(一):基礎知識

目錄 前言 什么是人工智能&#xff1f; 教學環境搭建 向量和矩陣 前言 如果你是關注計算機領域最新趨勢的學生或從業者&#xff0c;你應該聽說過人工智能、數據科學、機器學習、深度學習等術語。作為人工智能系列文章的第一篇&#xff0c;本文將解釋這些術語&#xff0c;并搭…

k8s部署-kuboard安裝(工具kuboard-spary)

Kuboard-Spray Kuboard-Spray 是一款可以在圖形界面引導下完成 Kubernetes 高可用集群離線安裝的工具 配置要求 對于 Kubernetes 初學者&#xff0c;在搭建K8S集群時&#xff0c;推薦在阿里云或騰訊云采購如下配置&#xff1a;&#xff08;您也可以使用自己的虛擬機、私有云等…

HCIP --- HCIA(部分匯總)--- 點對點網絡

抽象語言 --- 電信號 抽象語言 --- 編碼 編碼 --- 二進制 二進制 --- 電信號 處理電信號 OSI/RM ---- 開放式系統互聯參考模型 --- 1979 --- ISO --- 國際標準化組織 核心思想 --- 分層 應用層 --- 提供各種應用程序&#xff0c;抽象語言轉換成編碼&#xff0c;人機交互…

Docker 命令詳解

1. 容器生命周期管理 命令說明文檔run創建一個新的容器并運行一個命令Docker run 命令start/stop/restart啟動、停止、重啟容器Docker start/stop/restart 命令kill殺掉一個運行中的容器Docker kill 命令rm刪除一個或多個容器Docker rm 命令pause/unpause暫停 恢復容器中所有的…

Arm64版本的centos編譯muduo庫遇到的問題的歸納

環境&#xff1a;Mac m2 pro下的VMware虛擬機中Arm64 centos ./build.sh 執行后提示如下 cmake -DCMAKE_BUILD_TYPErelease -DCMAKE_INSTALL_PREFIX…/release-install-cpp11 -DCMAKE_EXPORT_COMPILE_COMMANDSON /root/package/muduo-master – Boost version: 1.69.0 – Co…

[git] 忽略已經提交的文件或文件夾

文件已經被Git跟蹤 如果某個文件已經被Git跟蹤過&#xff08;即已經添加到版本控制中&#xff09;&#xff0c;.gitignore文件對該文件將不起作用。您需要使用以下命令將該文件從Git中移除&#xff1a; git rm --cached 支持文件夾 -r <文件夾>

Flink Table API 讀寫MySQL

Flink Table API 讀寫 MySQL import org.apache.flink.connector.jdbc.table.JdbcConnectorOptions; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.DataTypes; import org.apache.flink.table.api.Envi…

投資房產的理由與好處,投資買房的方法與技巧

一、教程描述 本套買房教程&#xff0c;大小2.15G&#xff0c;共有23個文件。 二、教程目錄 00.她23歲北漂月薪600&#xff0c;7年后50萬在京買了第一套房&#xff0c;如今身價上千萬.mpg 01.這個游戲&#xff0c;有些人輸了所有錢&#xff0c;一輩子也不明白這個道理.mpg …

CSGO搬磚項目全面講解 ,CSGO搬磚注意事項

steam/csgo搬磚第二課之如何選品 Steam/CSGO游戲搬磚全套操作流程之如何選品&#xff08;第二課&#xff09; 一個游戲只要能搬&#xff0c;只要體量不夠大&#xff0c;很快就會貨幣價格暴跌&#xff0c;直接涼涼。市面上的能穩定手動搬磚的游戲越來越少。所以對于兼職賺點外快…

【Spring】 IoCDI

回顧 企業命名規范 大駝峰:BookDao(首字母都大寫) 類名 小駝峰:bookDao(第一個字母小寫) 方法名 蛇形:book_dao(小寫下劃線_) 數據庫 串形:book-dao(小寫連字符-) 項目文件夾 各種注解 學習Spring MVC, 其實就是學習各種Web開發需要?的到注解 a. RequestMapping: 路由…

[Linux] shell腳本的函數和數組

一、函數 1.1 函數的定義 函數是腳本的別名 作用&#xff1a;函數可以避免代碼重復&#xff0c;可讀性強&#xff0c;可以簡化腳本。 格式&#xff1a;函數名&#xff08;&#xff09;{腳本} 1.2 如何使用函數 1.定義 2.調用 函數一定要先定義再使用 例子&#xff1a…

編譯原理Lab1-用FLEX構造C-Minus-f詞法分析器

HNU編譯原理lab1實驗–根據cminux-f的詞法補全lexical_analyer.l文件&#xff0c;完成詞法分析器。 本文沒有添加任何圖片&#xff0c;但是以復制輸出的形式展現出來了實驗結果。 實驗要求&#xff1a; 根據cminux-f的此法補全lexical_analyer.l文件&#xff0c;完成詞法分析…