Guided Filtering相關記錄

一、背景介紹

????????以前折騰保邊濾波時候,刷了一些Guided Filtering相關資料。這里主要是對它們做個算法效果復現和資料簡單整理。

二、Guided Filtering

1、基本原理

????????原版Guided Filtering的提出,主要是為了改善雙邊濾波做保邊平滑濾波器時候的梯度翻轉偽影和性能問題。相關算法原理和公式推導,已經有很多小伙伴講過了,我這里就不做詳細介紹了,感興趣的小伙伴們可以參考:在實現何凱明導向濾波去霧算法,處理中能夠出現圖像精度損失問題,有什么解決方案?

導向濾波小結:從導向濾波(guided filter)到快速導向濾波(fast guide filter)的原理,應用及opencv實現代碼

等相關資料。

2、算法實現

?

3、算法效果

????????左邊為輸入,右邊為濾波后結果圖像

?

4、復現代碼

????????網上直接抄過來的復現代碼:

https://github.com/yulinghan/ImageQualityEnhancement/blob/master/ltm/guidedfilter/guidedfilter.cpp?github.com/yulinghan/ImageQualityEnhancement/blob/master/ltm/guidedfilter/guidedfilter.cpp

三、Fast Guided Filtering

1、基本原理

????????這篇論文主要是對原始Guided Filtering的性能優化,基本思想來說是對輸入圖,引導圖和對應的濾波半徑,都進行相同倍數下采樣,通過減少處理像素來降低算法計算量。

????????然后對生成的mean_a, mean_b再上采樣到原圖尺寸,進行后續濾波處理。

2、算法實現

?

3、算法效果

????????左邊為輸入,中間為原版濾波結果,右邊為fast版本結果:

?

4、復現代碼

????????也是網上直接抄過來的復現代碼:

ImageQualityEnhancement/ltm/guidedfilter/fast_guidedfilter.cpp at master · yulinghan/ImageQualityEnhancement · GitHub

四、Weighted Guided Filter

1、基本原理

????????這篇論文的意義在于:對濾波邊緣加上權重信息控制,進一步增加增強算法的保邊平滑效果。

????????具體來說,是對Guided Filter中生成a的公式進行改進,原本的計算公式為:

?

????????可以看到不管輸入圖像上,像素是平坦區域還是紋理區域,畫紅框的正則平滑項都是一個固定值。本篇論文就是對這個做改進。

????????具體改進措施為,將原本的固定值正則項變為根據像素變化而跟隨變化的值,簡單來說就是像素越屬于平坦區域,那么濾波強度越高,越屬于紋理,則對應權重降低。

?

?

????????ε 是一個很小的常數,值被設定為(0.001xL)的平方。

2、算法實現

????????核心部分代碼實現如下所示:

?

?

3、算法效果

????????左邊為輸入,中間為原版濾波結果,右邊為Weighted Guided Filter版本結果

?

4、復現代碼

????????一樣是網上直接抄過來的復現代碼:

ImageQualityEnhancement/ltm/guidedfilter/weight_guidedfilter.cpp at master · yulinghan/ImageQualityEnhancement · GitHub

五、Gradient Domain Guided Image Filtering

1、基本原理

????????本篇是在Weighted Guided Filter上面的進一步拓展,

????????簡單來說,就是進一步將計算a的公式在保邊效果上做進一步的改進升級為:

?

????????其中:

?

?

????????詳細介紹的話,可以參考資料:

Gradient Domain Guided Image Filtering(梯度域導向濾波) - ayew - 博客園

2、算法實現

????????核心部分算法實現為:

?

3、算法效果

????????左邊為輸入,中間為原版濾波結果,右邊為Gradient Domain Guided Image Filtering版本結果:

?

4、復現代碼

????????簡單的代碼復現地址:

ImageQualityEnhancement/ltm/guidedfilter/gradient_guidedfilter.cpp at master · yulinghan/ImageQualityEnhancement · GitHub

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

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

相關文章

知識圖譜系列(2):知識圖譜的技術架構與組成要素

1. 引言 知識圖譜作為一種強大的知識表示和組織方式,已經在搜索引擎、推薦系統、智能問答等多個領域展現出巨大的價值。在之前的上一篇文章中,我們介紹了知識圖譜的基礎概念與發展歷程,了解了知識圖譜的定義、核心特征、發展歷史以及在AI發展中的地位與作用。 要深入理解和…

操作系統|| 虛擬內存頁置換算法

題目 寫一個程序來實現 FIFO 和 LRU 頁置換算法。首先,產生一個隨機的頁面引用序列,頁面數從 0~9。將這個序列應用到每個算法并記錄發生的頁錯誤的次數。實現這個算法時要將頁幀的數量設為可變。假設使用請求調頁。可以參考所示的抽象類。 抽象類&…

開發與AI融合的Windsurf編輯器

Windsurf編輯器是開發人員和人工智能真正融合在一起的地方,提供了一種感覺像文字魔術的編碼體驗。 手冊:Windsurf - Getting Started 下載鏈接:Download Windsurf Editor for Windows | Windsurf (formerly Codeium) 下載安裝 從上面的下載…

【Java】網絡編程(Socket)

網絡編程 Socket 我們開發的網絡應用程序位于應用層,TCP和UDP屬于傳輸層協議,在應用層如何使用傳輸層的服務呢?在應用層和傳輸層之間,則使用套接字Socket來進行分離 套接字就像是傳輸層為應用層開的一個小口,應用程…

【教程】Docker方式本地部署Overleaf

轉載請注明出處:小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你,歡迎[點贊、收藏、關注]哦~ 目錄 背景說明 下載倉庫 初始化配置 修改監聽IP和端口 自定義網站名稱 修改數據存放位置 更換Docker源 更換Docker存儲位置 啟動Overleaf 創…

根據用戶ID獲取所有子節點數據或是上級直屬節點數據

一、根據用戶ID獲取所有子節點,通過存儲過程來實現 CREATE DEFINERcrmeb% PROCEDURE proc_get_user_all_children( IN rootUid INTEGER, -- 要查詢的根用戶ID IN includeSelf BOOLEAN -- 是否包含自身(1包含,0不包含) ) BEGIN -- 聲明變…

計算機組成原理——數據的表示

2.1數據的表示 整理自Beokayy_ 1.進制轉換 十六進制與二進制的轉換 一位十六進制等于四位二進制 四位二進制等于一位十六進制 0x173A4C0001 0111 0011 1010 0100 1100 十六進制與十進制的轉換 十六轉十:每一位數字乘以相應的16的冪再相加 十轉十六&#xff1a…

基于MATLAB-GUI圖形界面的數字圖像處理

基于MATLAB GUI的數字圖像處理系統實現方案,包含常見圖像處理功能。代碼分為兩部分:GUI界面設計和回調函數實現。 %% 第一部分:創建GUI界面 (使用GUIDE) % 1. 打開GUIDE: guide % 2. 創建新GUI,添加以下控件: % - …

從裸機開發到實時操作系統:FreeRTOS詳解與實戰指南

從裸機開發到實時操作系統:FreeRTOS詳解與實戰指南 本文將帶你從零開始,深入理解嵌入式系統中的裸機開發與實時操作系統,以FreeRTOS為例,全面剖析其核心概念、工作原理及應用場景。無論你是嵌入式新手還是希望提升技能的開發者&am…

zabbix7.2最新版本 nginx自定義監控(三) 設置觸發器

安裝zabbix-get服務 在zabbix-server端口安裝zabbix-get服務 [rootlocalhost ~]# dnf install -y zabbix-get Last metadata expiration check: 1:55:49 ago on Wed 14 May 2025 09:24:49 AM CST. Dependencies resolved. Package Architectur…

在 Kotlin 中,什么是解構,如何使用?

在 Kotlin 中,解構是一種語法糖,允許將一個對象分解為多個獨立的變量。 這種特性可以讓代碼更簡潔、易讀,尤其適用于處理數據類、集合(如 Pair、Map)或其他結構化數據。 1 解構的核心概念 解構通過定義 componentN()…

html的鼠標點擊事件有哪些寫法

在HTML中&#xff0c;鼠標點擊事件的實現方式多樣&#xff0c;以下從基礎語法到現代實踐為您詳細梳理&#xff1a; 一、基礎寫法&#xff1a;直接內聯事件屬性 在HTML標簽內通過on前綴事件屬性綁定處理函數&#xff0c;適合簡單交互場景&#xff1a; <!-- 單擊事件 -->…

基于EFISH-SCB-RK3576/SAIL-RK3576的智能垃圾分類站技術方案

&#xff08;國產化替代J1900的環保物聯網解決方案&#xff09; 一、硬件架構設計? ?多模態感知系統? ?高精度識別模塊?&#xff1a; 雙光譜成像&#xff08;RGB近紅外&#xff09;融合NPU加速ResNet50模型&#xff0c;支持40垃圾品類識別&#xff08;準確率>99.5%&am…

PYTHON訓練營DAY27

裝飾器 編寫一個裝飾器 logger&#xff0c;在函數執行前后打印日志信息&#xff08;如函數名、參數、返回值&#xff09; logger def multiply(a, b):return a * bmultiply(2, 3) # 輸出: # 開始執行函數 multiply&#xff0c;參數: (2, 3), {} # 函數 multiply 執行完畢&a…

Android Studio 中 build、assemble、assembleDebug 和 assembleRelease 構建 aar 的區別

上一篇&#xff1a;Tasks中沒有build選項的解決辦法 概述&#xff1a; 在構建 aar 包時通常會在下面的選項中進行構建&#xff0c;但是對于如何構建&#xff0c;選擇哪種方式構建我還是處于懵逼狀態&#xff0c;所以我整理了一下幾種構建方式的區別以及如何選擇。 1. build…

視頻質量分析時,遇到不同分辨率的對照視頻和源視頻,分辨率對齊的正確順序。

背景 我們平時在做視頻轉碼后&#xff0c;會用VMAF/PSNR得評分工具進行視頻對比的評分&#xff0c;但是這幾種客觀評分方式都有一個要求就是分辨率要一模一樣&#xff0c;因為這樣才對像素點做數學運算。 但是分辨率對齊其實有兩種選擇&#xff0c;例如源視頻是1080P&#xf…

【技巧】離線安裝docker鏡像的方法

回到目錄 【技巧】離線安裝docker鏡像的方法 0. 為什么需要離線安裝&#xff1f; 第一、 由于docker hub被墻&#xff0c;所以 拉取鏡像需要配置國內鏡像源 第二、有一些特殊行業服務器無法接入互聯網&#xff0c;需要手工安裝鏡像 1. 可以正常拉取鏡像服務器操作 服務器…

計算機網絡 : 網絡基礎

計算機網絡 &#xff1a; 網絡基礎 目錄 計算機網絡 &#xff1a; 網絡基礎引言1. 網絡發展背景2. 初始協議2.1 初始協議2.2 協議分層2.2.1 軟件分層的好處2.2.2 OSI七層模型2.2.3 TCP/IP五層&#xff08;四層&#xff09;模型 2.3 TCP/IP協議2.3.1TCP/IP協議與操作系統的關系&…

【2025最新】Windows系統裝VSCode搭建C/C++開發環境(附帶所有安裝包)

文章目錄 為什么選擇VSCode作為C/C開發工具&#xff1f;一、VSCode安裝過程&#xff08;超簡單&#xff01;&#xff09;二、VSCode中文界面設置&#xff08;再也不用對著英文發愁&#xff01;&#xff09;三、安裝C/C插件&#xff08;編程必備神器&#xff01;&#xff09;四、…

Jmeter 安裝包與界面漢化

Jmeter 安裝包&#xff1a; 通過網盤分享的文件&#xff1a;CSDN-apache-jmeter-5.5 鏈接: https://pan.baidu.com/s/17gK98NxS19oKmkdRhGepBA?pwd1234 提取碼: 1234 Jmeter界面漢化&#xff1a;