逆濾波的實現

2021-04-29 06:23:41 字數 1432 閱讀 1368

#define swap(a,b) tempr=(a);(a)=(b);(b)=tempr

//引數說明:

//lpstr lpdibbits    - 指向源dib影象指標

//long  lwidth       - 源影象寬度(象素數,必須是4的倍數)

//long  lheight      - 源影象高度(象素數)

///函式說明:

//該函式用來對blurdib()生成的dib影象進行復原操作。

bool winapi restoredib (lpstr lpdibbits, long lwidth, long lheight)

dpower = log((double)lheight)/log(2.0);

if(dpower != (int) dpower)

fftsrc = new double [lheight*llinebytes*2+1];

fftkernel = new double [lheight*llinebytes*2+1];

nn[1] = lheight;

nn[2] = llinebytes;

for (j = 0;j < lheight ;j++)

else

fftkernel[(2*llinebytes)*j + 2*i + 2] = 0.0;}}

//對源影象進行fft

fourn(fftsrc,nn,2,1);

//對卷積核影象進行fft

fourn(fftkernel,nn,2,1);

for (j = 0;j < lheight ;j++)}}

//對結果影象進行反fft

fourn(fftsrc,nn,2,-1);

//確定歸一化因子

maxnum = 0.0;

for (j = 0;j < lheight ;j++)

}//轉換為影象

for (j = 0;j < lheight ;j++)

}delete fftsrc;

delete fftkernel;

// 返回

return true;

}bool fourn(double * data/*psrc*/, unsigned long nn/*w*/, int ndim/*2*/, int isign)}}

ibit=ip2 >> 1;

while (ibit >= ip1 && i2rev > ibit)

i2rev += ibit;

}ifp1=ip1;

while (ifp1 < ip2)

}wr=(wtemp=wr)*wpr-wi*wpi+wr;

wi=wi*wpr+wtemp*wpi+wi;

}ifp1=ifp2;

}nprev *= n;

}return true;

}

逆濾波與維納濾波(二)

在數學應用上,對於運動引起的影象模糊,最簡單的方法是直接做逆濾波,但是逆濾波對加性雜訊特別敏感,使得恢復的影象幾乎不可用。最小均方差 維納 濾波用來去除含有雜訊的模糊影象,其目標是找到未汙染影象的乙個估計,使它們之間的均方差最小,可以去除雜訊,同時清晰化模糊影象。給定乙個系統 我們的目標是找出這樣的...

語音頻號濾波與逆濾波效果分析

設濾波器傳遞函式為h z 則輸入訊號x z 到輸出訊號y z 的濾波變換是 y z x z h z 濾波時輸入訊號x z 和系統函式h z 已知,通過濾波過程計算輸出訊號y z 逆濾波時則是輸出訊號y z 和系統函式h z 已知,試圖從輸出訊號y z 中恢復輸入訊號x z 即實現x z y z h ...

自適應濾波 矩陣求逆

讀書筆記09 前言 西蒙.赫金的 自適應濾波器原理 第四版第八章 最小二乘法。因為最小二乘涉及到矩陣求逆,因為通常對於秩缺矩陣其逆是不可求的,這就需要借助廣義逆矩陣。而廣義逆矩陣可以借助奇異值分解 svd,singularly valuable decomposition 進行求解。有了這個思路,在...