第5章 Python 數字圖像處理(DIP) - 圖像復原與重建16 - 約束最小二乘方濾波、幾何均值濾波

標題

    • 約束最小二乘方濾波
    • 幾何均值濾波

約束最小二乘方濾波

F^(u,v)=[H?(u,v)∣H(u,v)∣2+γ∣P(u,v)∣2]G(u,v)(5.89)\hat{F}(u,v) = \bigg[\frac{H^*(u,v)}{|H(u,v)|^2 + \gamma |P(u,v)|^2} \bigg]G(u,v) \tag{5.89}F^(u,v)=[H(u,v)2+γP(u,v)2H?(u,v)?]G(u,v)(5.89)

P(u,v)為函數p(x,y)=[0?10?14?10?10]P(u,v) 為函數 p(x, y) = \begin {bmatrix}0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0 \end {bmatrix}P(u,v)p(x,y)=???0?10??14?1?0?10????的傅里葉變換

我們認為這個函數是一個拉普拉斯核,注意式中在γ=0\gamma = 0γ=0時會簡化為逆濾波。

函數P(u,v)和H(u,v)P(u,v)和H(u,v)P(u,v)H(u,v)的大小必須相同。意味著p(x,y)p(x,y)p(x,y)必須嵌入MMM x NNN 零陣列的中心。為保持p(x,y)p(x,y)p(x,y)的偶對稱, MMMNNN必須是偶整數。如果由其獲得HHH的一幅已知退化圖像不是偶數維的,則在計算HHH之前需要酌情刪除一行和/或一行,以便可以使用

2021-21-16 update, Thanks to fans id is ‘weixin_42674476’。

def get_puv(image):h, w = image.shape[:2]h_pad, w_pad = h - 3, w - 3p_xy = np.array([[0, -1, 0],[-1, 4, -1],[0, -1, 0]])p_pad = np.pad(p_xy, ((h_pad//2, h_pad - h_pad//2), (w_pad//2, w_pad - w_pad//2)), mode='constant')p_uv = np.fft.fft2(p_pad)return p_uv
def least_square_filter(image, PSF, eps, gamma=0.01):"""least square filter for image denoise, math: $$\hat{F}(u,v) = \bigg[\frac{H^*(u,v)}{|H(u,v)|^2 + \gamma |P(u,v)|^2} \bigg]G(u,v)$$param: image: input imageparam: PSF: input the PSF maskparam: eps: epsilonparam: gamma: gamma value for least square filter fuctionreturn image after least square filter問題:為什么改變gamma值結果也沒有變化,sorted 2021-12-16"""fft = np.fft.fft2(image)PSF_fft = np.fft.fft2(PSF)conj = PSF_fft.conj()p_uv = get_puv(image)abs_conj = np.abs(PSF_fft) ** 2# abs_conj = (PSF_fft * conj).realhuv = conj / (abs_conj + gamma * (np.abs(p_uv) ** 2))result = np.fft.ifft2(fft * huv)result = np.abs(np.fft.fftshift(result))return result, abs_conj
# 約束最小二乘方濾波
image = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH05/Fig0526(a)(original_DIP).tif", 0)
PSF = get_motion_dsf(image.shape[:2], -50, 100)
blurred = make_blurred(image, PSF, 1e-5)wiener = wiener_filter(blurred, PSF, 1e-5, K=0.03)     
least_square, abs_con = least_square_filter(blurred, PSF, 1e-5, gamma=1e-6)
least_square = np.uint8(normalize(least_square) * 255)img_diff = image - least_square
plt.figure(figsize=(15, 5))
plt.subplot(131), plt.imshow(blurred, 'gray'), plt.title("Motion blurred"), plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.imshow(wiener, 'gray'), plt.title("Wiener Filter"), plt.xticks([]), plt.yticks([])
plt.subplot(133), plt.imshow(least_square, 'gray'), plt.title("Least Square Filter"), plt.xticks([]), plt.yticks([])
plt.tight_layout()
plt.show()

在這里插入圖片描述

幾何均值濾波

F^(u,v)=[H?(u,v)∣H(u,v)∣2]α[H?(u,v)∣H(u,v)∣2+β[Sη(u,v)Sf(u,v)]]1?αG(u,v)(5.99)\hat{F}(u,v) = \bigg[\frac{H^*(u,v)}{|H(u,v)|^2}\bigg]^\alpha \Bigg[\frac{H^*(u,v)}{|H(u,v)|^2 + \beta \big[\frac{S_{\eta}(u,v)}{S_f(u,v)} \big]}\Bigg]^{1-\alpha} G(u, v) \tag{5.99}F^(u,v)=[H(u,v)2H?(u,v)?]α[H(u,v)2+β[Sf?(u,v)Sη?(u,v)?]H?(u,v)?]1?αG(u,v)(5.99)

α和β\alpha 和 \betaαβ 是非負的實常數。

α=1\alpha=1α=1時,幾何均值濾波器簡化為逆濾波器;當α=0\alpha=0α=0時,幾何均值濾波器變為參數維納濾波器,參數維納濾波器在β=1\beta=1β=1時簡化為標準維納濾波器;當α=1/2\alpha=1/2α=1/2時幾何均值濾波器變成冪次相同的兩個量的乘積,這就是幾何均值的定義。

β=1\beta=1β=1α\alphaα大于1/2時,濾波器更的性能更像逆濾波器。
α\alphaα 小于1/2時,濾波器的性能更像維納濾波器。
α\alphaα 等于1/2且β=1\beta=1β=1時,濾波器通常稱為頻譜均衡濾波器。

def geometric_mean_filter(image, PSF, eps, K=1, alpha=1, beta=1):"""geometric mean filter for image denoise, math: $$\hat{F}(u,v) = \bigg[\frac{H^*(u,v)}{|H(u,v)|^2}\bigg]^\alpha \Bigg[\frac{H^*(u,v)}{|H(u,v)|^2 + \beta \big[\frac{S_{\eta}(u,v)}{S_f(u,v)} \big]}\Bigg]^{1-\alpha} G(u, v) $$param: image: input imageparam: PSF  : input the PSF maskparam: eps  : epsilonparam: K    : K equal to math: \frac{S_{\eta}(u,v)}{S_f(u,v)}param: alpha: alpha value for filter fuctionparam: beta : beta value for the filter fuctionreturn image after least square filter"""fft = np.fft.fft2(image)PSF_fft = np.fft.fft2(PSF)conj = PSF_fft.conj()abs_square = (PSF_fft * conj).realhuv = np.power(conj / (abs_square), alpha) * np.power(conj / (abs_square + beta*(K)), 1 - alpha)result = np.fft.ifft2(fft * huv)result = np.abs(np.fft.fftshift(result))return result
#### 幾何均值濾波器
image = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH05/Fig0526(a)(original_DIP).tif", 0)
PSF = get_motion_dsf(image.shape[:2], -50, 100)
blurred = make_blurred(image, PSF, 1e-5)wiener = wiener_filter(blurred, PSF, 1e-5, K=0.03)     
geometric_mean = geometric_mean_filter(blurred, PSF, 1e-5, K=1, alpha=1/2, beta=0)
geometric_mean = np.uint8(normalize(geometric_mean) * 255)plt.figure(figsize=(14, 5))
plt.subplot(131), plt.imshow(blurred, 'gray'), plt.title("Motion blurred"), plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.imshow(wiener, 'gray'), plt.title("Wiener Filter"), plt.xticks([]), plt.yticks([])
plt.subplot(133), plt.imshow(geometric_mean, 'gray'), plt.title("Geometric mean Filter"), plt.xticks([]), plt.yticks([])
plt.tight_layout()
plt.show()

在這里插入圖片描述

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

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

相關文章

securecrt是什么工具_比較一下幾款常用的SSH工具

WX眾號:基因學苑Q群:32798724更多精彩內容等你發掘!編者按工欲善其事,必先利其器。作為生物信息分析人員,每天都需要通過SSH工具遠程登錄服務器,那么使用一款高效的連接工具就很有必要。這次我們來點評一下…

華為手機如何調時間顯示_華為手機照片如何出現時間地點天氣,教你30秒,一學就會...

閱讀本文前,請您先點擊上面的“藍色字體”,再點擊“關注”,這樣您就可以繼續免費收到文章了。每天都會有分享,都是免費訂閱,請您放心關注。 …

Dreamweaver使用詳解

1:dreamweaver的基本功能,其中各種功能的靈活使用 轉載于:https://www.cnblogs.com/snowhumen/archive/2012/08/01/2618480.html

第5章 Python 數字圖像處理(DIP) - 圖像復原與重建17 - 由投影重建圖像、雷登變換、投影、反投影、反投影重建

標題由投影重建圖像投影和雷登變換 Johann Radon反投影濾波反投影重建由投影重建圖像 本由投影重建圖像,主要是雷登變換與雷登把變換的應用,所以也沒有太多的研究,只為了保持完整性,而添加到這里。 # 自制旋轉投影圖像# 模擬一個…

NFC

NFC近場通信技術是由非接觸式射頻識別(RFID)及互聯互通技術整合演變而來,在單一芯片上結合感應式讀卡器、感應式卡片和點對點的功能,能在短距離內與兼容設備進行識別和數據交換。 場通信是一種短距高頻的無線電技術,在…

day12-nginx

nginx 前臺服務器并發大 安裝nginx useradd –s /sbin/nologin nginx tar xf nginx-xxx.tar.gz yum install –y gcc pcre-devel openssl-devel ./configure --prefix/etc/nginx --usernginx --groupnginx --with-http_ssl_module --http-log-path/var/log/nginx/access.…

python args_Python可變參數*args和**kwargs用法實例小結

本文實例講述了Python可變參數*args和**kwargs用法。分享給大家供大家參考,具體如下: 一句話簡單概括:當函數的參數不確定的時候就需要用到*args和**kwargs,前者和后者的區別在于,后者引入了”可變”key的概念&#xf…

文件組備份還原

-- 參考 USE master; GO-- 測試的DB CREATE DATABASE DB_Test ON PRIMARY(NAME DB_Test,FILENAME C:\DB_Test.mdf ), FILEGROUP FG1 (NAME DB_Test_FG1,FILENAME C:\DB_Test_fg1.ndf ), FILEGROUP FG2 (NAME DB_Test_FG2,FILENAME C:\DB_Test_fg2.ndf ) LOG ON(NAME DB_…

php調用c++

1.在/var/www中建個測試文件夾 cpp 在此文件夾中新建c文件sort.cpp,如下 編譯并測試執行通過進行以下步驟。 2.在cpp文件夾下新建文件cpp.html,如下 3.同樣在cpp下建php文件cpp.php,如下 保存。 4.程序執行如下 提交后: 轉載于:ht…

AI+無線通信——Top7 (Baseline)分享與總結

從浩哥那里轉載 https://wanghao.blog.csdn.net/article/details/115813954 比賽已經告一段落,現在我們隊兌現承諾,將比賽方案開源給大家,互勉互助,共同進步。 隊伍介紹 我們的隊伍名是Baseline,我們因分享Baseline…

拼字符串成為時間,和兩個計算時間點的中間值

拼字符串成為時間,和兩個計算時間點的中間值 select convert(datetime,2016-09-18 SUBSTRING(CONVERT(varchar(100),d_bdate, 24), 0, 9),21) from B2C_daima where d_noB04 select case when Datename(hour,d_edate)> Datename(hour,d_bdate) then convert(dat…

tornado post第3方_[33]python-Web-框架-Tornado

1.TornadoTornado:python編寫的web服務器兼web應用框架1.1.Tornado的優勢輕量級web框架異步非阻塞IO處理方式出色的抗負載能力優異的處理性能,不依賴多進程/多線程,一定程度上解決C10K問題WSGI全棧替代產品,推薦同時使用其web框架…

android 串口調試工具_樹莓派通用串口通信實驗

一、介紹對于樹莓派 3B來說,他的UART功能有三種:1、內部藍牙使用;2、控制終端使用;3、與其他設備進行串口通信。在樹莓派USB TO TTL模塊實驗中學習了通過串口對樹莓派進行控制臺控制,讓串口作為控制終端調試口即 seria…

Laravel5.2目錄結構及composer.json文件解析

目錄或文件說明|– app包含Controller、Model、路由等在內的應用目錄,大部分業務將在該目錄下進行|  |– Console命令行程序目錄|  |  |– Commands包含了用于命令行執行的類&#xff…

ichat在線客服jQuery插件(可能是歷史上最靈活的)

ichat是一款開源免費在線客服jQuery插件,通過該插件,您可以自由的定制屬于自己的在線客服代碼。 ichat充分吸收傳統在線客服插件的優點,并加上自身的獨特設計,使得ichat可定制性異常強大。 ichat追求簡單實用,走小清新…

POJ 1007 DNA Sorting

按照字符串的逆序排序。 /*Accepted 100K 16MS C 863B 2012-08-03 08:30:48*/ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; const int MAXN 55, MAXM 110; struct str {char…

第6章 Python 數字圖像處理(DIP) - 彩色圖像處理1 - RGB彩色模型,RGB to Gray,CMK和CMYK彩色模型,HSI彩色模型

第6章主要講的是彩色圖像處理&#xff0c;一些彩色模型如RGB&#xff0c;CMK&#xff0c;CMYK&#xff0c;HSI等色彩模型&#xff1b;彩色模型的變換關系&#xff1b;還包含由灰度圖像怎樣處理成假彩色圖像&#xff1b;使用彩色分割圖像等。本章比較少理論還有變換的描述&#…

git 命令詳解_再次學習Git版本控制工具

微信公眾號&#xff1a;PHP在線Git 究竟是怎樣的一個系統呢&#xff1f;為什么在SVN作為版本控制工具已經非常流行的時候&#xff0c;還有Git這樣一個版本控制工具呢&#xff1f;Git和SVN的區別在哪兒呢&#xff1f;Git優勢又在哪呢&#xff1f;下面PHP程序員雷雪松帶你一起詳細…

python twisted和flask_淺談Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid...

Django 是一個高級的 Python Web 框架&#xff0c;支持快速開發&#xff0c;簡潔、實用的設計。如果你正在建一個和電子商務網站相似的應用&#xff0c;那你應該選擇用 Django 框架。它能使你快速完成工作&#xff0c;也不必擔心太多的技術選擇。它能提供從模版引擎到 ORM 所需…

spring-boot 定時任務

2019獨角獸企業重金招聘Python工程師標準>>> 1、建立項目 SpringBootApplication EnableAsync EnableScheduling EnableAutoConfiguration(exclude{ DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class}) ImportResource(…