第4章 Python 數字圖像處理(DIP) - 頻率域濾波1 - 傅里葉級數和變換簡史

本章主要講解頻域域濾波的技術,主要技術用到是大家熟悉的傅里葉變換與傅里葉反變換。這里有比較多的篇幅講解的傅里葉的推導進程,用到Numpy傅里葉變換。本章理論基礎比較多,需要更多的耐心來閱讀,有發現有錯誤,可以與我聯系。謝謝!

目錄

    • 背景
      • 傅里葉級數和變換簡史

import sys
import numpy as np
import cv2
import matplotlib 
import matplotlib.pyplot as plt
import PIL
from PIL import Imageprint(f"Python version: {sys.version}")
print(f"Numpy version: {np.__version__}")
print(f"Opencv version: {cv2.__version__}")
print(f"Matplotlib version: {matplotlib.__version__}")
print(f"Pillow version: {PIL.__version__}")
Python version: 3.6.12 |Anaconda, Inc.| (default, Sep  9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)]
Numpy version: 1.16.6
Opencv version: 3.4.1
Matplotlib version: 3.3.2
Pillow version: 8.0.1
def normalize(mask):return (mask - mask.min()) / (mask.max() - mask.min() + 1e-8)

背景

傅里葉級數和變換簡史

內容比較多,請自行看書,我就實現一維的傅里葉變換先。

卷積用大小為m×nm\times nm×n元素的核對大小為M×NM\times NM×N的圖像進行濾波時,需要運算次數為MNmnMNmnMNmn。如果核是可分享的,那么運算次數為MN(m+N)MN(m + N)MN(m+N),而在頻率域執行等交的濾波所需要的運算次數為2MNlog2MN2MN\text{log}_2MN2MNlog2?MN,2表示計算一次正FFT和一次反FFT。

Cn(m)=M2m22M2log2M2=m24log2M(4.1)C_n(m) = \frac{M^2 m^2}{2M^2 \text{log}_2}M^2 = \frac{m^2}{4 \text{log}_2 M}\tag{4.1}Cn?(m)=2M2log2?M2m2?M2=4log2?Mm2?(4.1)

如果是可分離核,則變為

Cs(m)=M2m22M2log2M2=m2log2M(4.2)C_s(m) = \frac{M^2 m^2}{2M^2 \text{log}_2 M^2} = \frac{m}{2 \text{log}_2 M} \tag{4.2}Cs?(m)=2M2log2?M2M2m2?=2log2?Mm?(4.2)

C(m)>1C(m) > 1C(m)>1時,FFT的方法計算優勢更大;而C(m)≤1C(m) \leq 1C(m)1時,空間濾波的優勢更大

# FFT 計算的優勢
M = 2048
m = np.arange(0, 1024, 1)
c_n = m**2 / (4 * np.log2(M))
c_s = m / (2 * np.log2(M))
fig = plt.figure(figsize=(10, 5))
ax_1 = fig.add_subplot(1, 2, 1)
ax_1.plot(c_n)
ax_1.set_xlim([0, 1024])
ax_1.set_xticks([3, 255, 511, 767, 1023])
ax_1.set_ylim([0, 25*1e3])
ax_1.set_yticks([0, 5*1e3, 10*1e3, 15*1e3, 20*1e3, 25*1e3])
ax_2 = fig.add_subplot(1, 2, 2)
ax_2.plot(c_s)
ax_2.set_xlim([0, 1024])
ax_2.set_xticks([3, 255, 511, 767, 1023])
ax_2.set_ylim([0, 5])
ax_2.set_yticks([0, 10, 20, 30, 40, 50])
plt.show()

在這里插入圖片描述

def set_spines_invisible(ax):ax.spines['left'].set_color('none')ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')ax.spines['bottom'].set_color('none')
# 不同頻率的疊加
x = np.linspace(0, 1, 500)t = 50
A = 1
y_1 = A * np.sin(t * 2 * np.pi * x)t = 20
A = 2.5
y_2 = A * np.sin(t * 2 * np.pi * x)t = 5
A = 3
y_3 = A * np.sin(t * 2 * np.pi * x)t = 2
A = 20
y_4 = A * np.sin(t * 2 * np.pi * x)y_5 = y_1 + y_2 + y_3 + y_4fig = plt.figure(figsize=(8, 8))ax_1 = fig.add_subplot(5, 1, 1)
plt.plot(x, y_1), plt.xticks([]), plt.yticks([])
set_spines_invisible(ax_1)ax_2 = fig.add_subplot(5, 1, 2)
plt.plot(x, y_2), plt.xticks([]), plt.yticks([])
set_spines_invisible(ax_2)ax_3 = fig.add_subplot(5, 1, 3)
plt.plot(x, y_3), plt.xticks([]), plt.yticks([])
set_spines_invisible(ax_3)ax_4 = fig.add_subplot(5, 1, 4)
plt.plot(x, y_4), plt.xticks([]), plt.yticks([])
set_spines_invisible(ax_4)ax_5 = fig.add_subplot(5, 1, 5)
plt.plot(x, y_5), plt.xticks([]), plt.yticks([])
set_spines_invisible(ax_5)plt.tight_layout()
plt.show()

在這里插入圖片描述

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

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

相關文章

python中str是什么函數_python str函數怎么用

展開全部 是將一個2113對象轉成字符串顯示5261,注意只是顯示用,有些對象4102轉成字符串沒有直1653接的意思。 str():將變量轉化為字符串類型 a 1 b [1, 2, 3] str_a str(a) print(a) print(type(a)) str_b str(b) print(b) print(type(b)) The str()…

[ofbiz]less-than (lt;) and greater-than (gt;) symbols

問題描述&#xff1a; In field [updateItemStr] less-than (<) and greater-than (>) symbols are not allowed 此處的field [updateItemStr]是services的一個IN參數&#xff0c;錯誤描述的意思是"<,>"不能出現在這個域內。 解決辦法&#xff1a; 在ser…

分頁探究--Filter+JSTL

最近卡了一個功能就是分頁&#xff0c;查了很多資料&#xff0c;分頁大概是兩種類型&#xff1a;一種是把數據庫的東西全部查出來然后放在session里&#xff0c;用list一頁一頁傳到頁面&#xff0c;這樣的消耗比較大;另一種就是使用sql語句的limit來進行數據庫分頁查詢。我使用…

iPhone開發資料之內存管理 ,循環引用導致的內存問題

iPhone開發資料之內存管理 ,循環引用導致的內存問題 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html#//apple_ref/doc/uid/TP40004447 http://en.wikipedia.org/wiki/Reference_counting 【IT168 技術文檔】開…

python能做大型游戲嗎_python有做大型游戲的潛力嗎?

著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。 豈止是有潛力&#xff0c;簡直是很合適&#xff01; 豬廠兩大游戲客戶端引擎&#xff0c;NeoX 和 Messiah&#xff0c;都使用 Python 作為腳本語言。 你最近所了解的比較火的掛著豬廠旗號的&a…

第4章 Python 數字圖像處理(DIP) - 頻率域濾波2 - 復數、傅里葉級數、連續單變量函數的傅里葉變換、卷積

目錄基本概念復數傅里葉級數沖激函數及其取樣&#xff08;篩選&#xff09;性質連續單變量函數的傅里葉變換卷積基本概念 復數 復數CCC的定義為 CRjI(4.3)C R jI \tag{4.3}CRjI(4.3) R,IR,IR,I為實數&#xff0c;RRR是實部&#xff0c;III是虛部&#xff0c;j?1j \sqrt{-…

不要迷失在技術的海洋中【轉】

轉自http://www.cnblogs.com/lovecherry/archive/2007/10/28/940555.html 不要迷失在技術的海洋中 技術就好像一片汪洋大海&#xff0c;越深入越望不到邊際。就拿自己的體驗來說吧&#xff0c;2000年的時候在學校搞ASP&#xff0c;覺得網頁開發就是這么簡單&#xff0c;把數據庫…

使用代碼設置Item級的權限(權限總結1)

itle in english:set Item Level Permission for SharePoint (MOSS/WSS) List/Document Library Programmatically 有些時候&#xff0c;我們需要為文檔庫里面某個文件設置特殊的權限&#xff0c;這個權限不繼承自列表權限&#xff0c;當然最簡單的最好是再創建一個列表&#…

echarts 4.0.4怎么下載_怎么讓ECharts的提示框tooltip自動輪播?

1. 怎么讓ECharts的提示框tooltip自動輪播?在用ECharts做大屏或者可視化展示項目的時候&#xff0c;讓提示框tooltip自動輪播是比較常見的需求&#xff0c;給大家推薦一個插件叫echarts-tooltip-auto-show,名字是有點長&#xff0c;但是挺好用的。在hover顯示tooltip之后&…

[React Native]高度自增長的TextInput組件

之前我們學習了從零學React Native之11 TextInput了解了TextInput相關的屬性。 在開發中,我們有時候有這樣的需求, 希望輸入區域的高度隨著輸入內容的長度而增長, 如下&#xff1a; 這時候我們需要自定義一個組件&#xff1a; 在項目中創建AutoExpandingTextInput.js import …

網站開啟Gzip壓縮-apache

找到并打開apache/conf目錄中的httpd.conf文件 httpd.conf中打開deflate_Module和headers_Module模塊&#xff0c;具體做法為將 如下兩句前面的#去掉&#xff1a;LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so 3.配置文…

第4章 Python 數字圖像處理(DIP) - 頻率域濾波3 - 取樣和取樣函數的傅里葉變換、混疊

目錄取樣和取樣函數的傅里葉變換取樣取樣后的函數的傅里葉變換取樣定理混疊由取樣后的數據重建&#xff08;復原&#xff09;函數取樣和取樣函數的傅里葉變換 取樣 fˉ(t)f(t)sΔT(t)∑n?∞∞f(t)δ(t?nΔT)(4.27)\bar f(t) f(t)s_{\Delta T}(t) \sum_{n-\infty}^{\infty}…

[轉]Android開發,實現可多選的圖片ListView,便于批量操作

本文轉自&#xff1a;http://www.cnblogs.com/gergulo/archive/2011/06/14/2080629.html 之前項目需要實現一個可多選的圖片列表&#xff0c;用戶選中一到多張圖片后&#xff0c;批量上傳。但是網上有可多選普通列表的代碼、也有單純圖片列表的代碼&#xff0c;卻沒有兩者合并的…

個人信息安全影響評估指南_發布 | 網絡安全標準實踐指南—移動互聯網應用程序(App)收集使用個人信息自評估指南...

關于發布《網絡安全標準實踐指南—移動互聯網應用程序(App)收集使用個人信息自評估指南》的通知信安秘字[2020] 40號各有關單位&#xff1a;為落實《網絡安全法》相關要求&#xff0c;圍繞中央網信辦、工信部、公安部、市場監管總局聯合制定的《App違法違規收集使用個人信息行為…

Go的50度灰:Golang新開發者要注意的陷阱和常見錯誤

Go的50度灰&#xff1a;Golang新開發者要注意的陷阱和常見錯誤 http://colobu.com/2015/09/07/gotchas-and-common-mistakes-in-go-golang/

android intent和intent action大全

不管是頁面牽轉&#xff0c;還是傳遞數據&#xff0c;或是調用外部程序&#xff0c;系統功能都要用到intent。 在做了一些intent的例子之后&#xff0c;整理了一下intent&#xff0c;希望對大家有用。 由于intent內容太多&#xff0c;不可能真的寫全&#xff0c;難免會有遺落&a…

第4章 Python 數字圖像處理(DIP) - 頻率域濾波4 - 單變量的離散傅里葉變換DFT

目錄標題單變量的離散傅里葉變換由取樣后的函數的連續變換得到DFT取樣和頻率間隔的關系單變量的離散傅里葉變換 由取樣后的函數的連續變換得到DFT 對原函數的變換取樣后的業的發展的變換F~(μ)\tilde F(\mu)F~(μ)&#xff0c;但未給出取樣后的函數f~(t)\tilde f(t)f~?(t)的…

在線生成 CSS3 的工具

1) CSS Creator – Layout Design 2) CSS Menu Maker 3) CSS3 Please 4) CSS3 Generator 5) CSS Border Radius 6) CSS3 Gradient Generator 7) CSS3 Button Generator 8 ) Mike Plate’s CSS3 Playground 9) Border Image Generator 10) CSS3 WRAP 11) Button Maker 12) Font…

python image 轉成字節_就是這么牛!三行Python代碼,讓數據處理速度提高2到6倍

本文可以教你僅使用 3 行代碼&#xff0c;大大加快數據預處理的速度。Python 是機器學習領域內的首選編程語言&#xff0c;它易于使用&#xff0c;也有很多出色的庫來幫助你更快處理數據。但當我們面臨大量數據時&#xff0c;一些問題就會顯現……在默認情況下&#xff0c;Pyth…

sessionStorage 、localStorage 和 cookie 之間的區別(轉)

essionStorage 、localStorage 和 cookie 之間的區別(轉) 2012-05-08 14:29:19| 分類&#xff1a; HTML5CSS3WEBAPP|舉報|字號 訂閱 sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的&#xff0c;可以方便的在web請求之間保存數據。有了本地數據&#xff0c;…