数字图像处理 冈萨雷斯 一些理解
原理版
邊緣和其他灰度的急劇變化與高頻分量有關,過濾高頻信息可以模糊 平滑圖像,衰減低頻分量可以銳化圖像。
m鄰接的理解,首先明確m鄰接概念的提出,是為了避免二義性,如下圖所示,在左圖中,中心位置的1到右上角的1,有兩條路徑,也即是二義性。采用m鄰接時,當同時存在4鄰接和8鄰接時,只考慮4鄰接。右圖的情況就是m鄰接,為什么可以消除掉中心的1和右上的1的鄰接呢,是由于m鄰接有一個條件,q的4鄰域與p的4領域相交為空集(不在集合V中),而右上的1和中心的1他們的4鄰接有一個交集,就是第一排中心的那個1,因此二者不滿足m鄰接。
像素點之間的距離
坐標分別為(x,y),(s,t)的像素p, q
歐幾里得距離:
城市街區距離:
棋盤距離:
2222221112210122111222222\begin{matrix} 2&2&2&2&2\\ 2&1&1&1&2\\2&1&0&1&2\\2&1&1&1&2\\2&2&2&2&2\end{matrix}22222?21112?21012?21112?22222?
數字圖像處理中特別重要的變換函數有如下形式:
s=T(r)=(L?1)∫0rPr(ω)dωs=T(r)=(L-1)\int_{0}^{r}P_r(\omega)d\omegas=T(r)=(L?1)∫0r?Pr?(ω)dω
對這個公式總是理解不了,想知道是怎么計算出來的。目前理解是,這個是一個定義,而不是通用的公式,定義了一種較為常用的變換函數,s=T(r ),做了這種變化后,s的PDF是一個均勻概率密度函數。
4.2.2傅里葉級數的系數計算
f(t)=∑n=?∞∞Cnej2πnTtf(t)= \sum\limits_{n=-\infty}^{\infty}C_ne^{\frac{j2 \pi n }{T }t}f(t)=n=?∞∑∞?Cn?eTj2πn?t
在等式的兩端各乘以e?j2πkTte^{-\frac{j2 \pi k}{T }t}e?Tj2πk?t
變為
f(t)e?j2πkTt=∑n=?∞∞Cnej2πnTte?j2πkTtf(t)e^{-\frac{j2 \pi k}{T }t}= \sum\limits_{n=-\infty}^{\infty}C_ne^{\frac{j2 \pi n }{T }t}e^{-\frac{j2 \pi k}{T }t}f(t)e?Tj2πk?t=n=?∞∑∞?Cn?eTj2πn?te?Tj2πk?t
在-T/2到T/2范圍內,對等式進行積分
∫?T/2T/2f(t)e?j2πkTtdt=∫?T/2T/2∑n=?∞∞Cnej2πnTte?j2πkTtdt\int_{-T/2}^{T/2}f(t)e^{-\frac{j2 \pi k}{T }t}dt=\int_{-T/2}^{T/2} \sum\limits_{n=-\infty}^{\infty}C_ne^{\frac{j2 \pi n }{T }t}e^{-\frac{j2 \pi k}{T }t}dt∫?T/2T/2?f(t)e?Tj2πk?tdt=∫?T/2T/2?n=?∞∑∞?Cn?eTj2πn?te?Tj2πk?tdt
對等式的右邊進行計算
∫?T/2T/2∑n=?∞∞Cnej2π(n?k)Ttdt\int_{-T/2}^{T/2} \sum\limits_{n=-\infty}^{\infty}C_ne^{\frac{j2 \pi (n-k) }{T }t}dt∫?T/2T/2?n=?∞∑∞?Cn?eTj2π(n?k)?tdt
當n=k時,上式子=TCn
當n≠k時,上式子=0
因此,Cn=1T∫?T/2T/2f(t)e?j2πkTtdtC_n=\frac{1}{T }\int_{-T/2}^{T/2}f(t)e^{-\frac{j2 \pi k}{T }t}dtCn?=T1?∫?T/2T/2?f(t)e?Tj2πk?tdt
4.2.4
如果函數f(t)有傅里葉變換F(μ),則在點t求值后函數是F(t),它一定有變換f(-μ)。這句話一直難以理解,搜索了半天沒有找到靠譜的解釋,嘗試寫個解釋。
首先推導這個結論:f(t)做傅里葉變化后為F(μ),再做傅里葉變換為f(-t)
F(μ)=∫?∞∞f(t)e?2jπμtdtF(μ)=\int_{-\infty}^{\infty}f(t)e^{-2j\pi μt}dtF(μ)=∫?∞∞?f(t)e?2jπμtdt
對F(μ)進行傅里葉變換為
∫?∞∞F(μ)e?2jπμtdμ\int_{-\infty}^{\infty}F(μ)e^{-2j\pi μt}dμ∫?∞∞?F(μ)e?2jπμtdμ
上式子中選擇對μ積分,是因為F是μ的函數,此處需要充分理解傅里葉變換了,日后再補上。
而已知f(t)=∫?∞∞F(μ)e2jπμtdμ\int_{-\infty}^{\infty}F(μ)e^{2j\pi μt}dμ∫?∞∞?F(μ)e2jπμtdμ
f(-t)=∫?∞∞F(μ)e?2jπμtdμ\int_{-\infty}^{\infty}F(μ)e^{-2j\pi μt}dμ∫?∞∞?F(μ)e?2jπμtdμ
正是F(μ)的傅里葉變換結果。
因此,f(t)→FF(μ)→Ff(?t)f(t) \stackrel{F}{\rightarrow} F(μ) \stackrel{F}{\rightarrow}f(-t)f(t)→FF(μ)→Ff(?t)
再來看 在點t求值后函數是F(t),它一定有變換f(-μ)。
在不賦予t 和μ物理意義時,兩者實際上時沒有區別的,因此可以呼喚。
5.3.2自適應中值濾波
Level A中判斷Zmin<Zmed<Zmax,這個過程一直有點費解,因為Zmed是計算出來的中值,為什么會不在最小值Zmin和最大值Zmax之間呢。這里這個操作主要是為了排除所尋找的中值點是噪聲點,當Zmed=Zmax,或者Zmed=Zmin,則這個中值點就是一個噪聲點需要繼續擴大尋找中值點的區域范圍。
matlab版本
!!!function的應用
編寫好函數內容后,要保存函數,切記,函數保存的文件名必須與函數名一致。
如function [p,pmax,pmin]=plotrand(f,g)這樣一個函數,那么該文件需要命名為plotrand.m
imshow(f) 和imshow(f,[])的區別
imshow(f):
在matlab中,為了保證精度,經過了運算的圖像矩陣f其數據類型會從uint8型編程double型。imshow()顯示圖像時對double型認為是0~1范圍內,即大于1時都顯示為白色,imshow顯示uint8型時是0-255范圍。
imshow(f,[ ]):
是將 f 的最大值(max(f))和最小值(min(f))分別作為純白(255)和純黑(0)。中間的 K 值相應地映射為 0到255 之間的標準灰度值,這樣就可以正常顯示了,相當于將 double 型的矩陣 S 拉伸成為了 0-255 的 uint8 型的矩陣,因此就可以正常顯示。
結論:
使用 imshow(f),顯示的圖像如果是double類型,就會出現白色圖,與imshow(f,[ ])也就顯示出來了區別,當顯示的圖像如果是 uint8 時,兩者顯示的圖像沒有區別。
如何理解非線性空間濾波函數 colfilt 中,生成了一個mn×MN的矩陣
colfilt命令之后,將每個坐標點周圍的m×n范圍內的數據生成一列數據,因此這樣操作后形成的矩陣有m×n行,同時因為原圖數據共有M×N個點,因此形成的矩陣有M×N列,因此形成的矩陣是mn ×MN。
5.3.1 空間濾波
幾何平均濾波公式如下:
但在程序看到公式為
這里是一個巧妙的寫法,利用ln(a*b)=lna+lnb,因此先取了對數,再求e的次方,相當于用求和的方式求了本來需要計算的乘積。
5.3.2自適應空間濾波
adpmedian一開始很難理解,糾結為什么沒有f每個點的循環,后來仔細想一下,又忽略了matlab計算的最重要優勢,矩陣計算,在這個過程里g是一個矩陣,每對g做一次操作實際上是對矩陣里每個點的操作,所以不需要再對坐標循環操作,[M,N]=size(g)在這個程序里看來是沒什么用的廢話。為了更好的理解程序,把程序主題copy出來,去掉程序的入口,轉而直接賦值了所需要的參數(這里就是給g和Smax直接賦值),一步一步進行循環,就比較好懂了,運用矩陣操作了確實會令程序簡潔非常多。
總結
以上是生活随笔為你收集整理的数字图像处理 冈萨雷斯 一些理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智慧工地解决方案施工升降机智能监控系统
- 下一篇: 【超级账本】Fabric 层次结构以及核