同態濾波的主要目的是為了消除光照不均,將空間域的影象資訊轉換為頻率域進行處理,通過濾波器對頻率域影象進行濾波,降低光照不均勻現象的影響,完成濾波後,再將影象轉換到空間域中。
原始碼
//同態濾波
#include"homofilter.h"
#include #include#include#include#include using namespace cv;
using namespace std;
mat homofilter(mat inputimg)
} //2. dct 離散余弦變換
mat mat_dct = mat::zeros(rows, cols, cv_64fc1);
dct(homoimg, mat_dct);
//3. 高斯同態濾波器
mat h_u_v;
double gammah = 3;//>1 高頻增益
double gammal = 0.1;//<1 低頻增益
double c = 0.6; //斜面銳化常數 斜率
double d0 = (homoimg.rows / 2) * (homoimg.rows / 2) + (homoimg.cols / 2) * (homoimg.cols / 2);//截止頻率
//double d0 = 150;//5-200 截止頻率 越大越亮
double d2 = 0;
h_u_v = mat::zeros(rows, cols, cv_64fc1);
for (int i = 0; i < rows; i++)
} h_u_v.ptr(0)[0] = 1.1;
mat_dct = mat_dct.mul(h_u_v);
//4. idct
idct(mat_dct, homo_result_img);
//exp
for (int i = 0; i < rows; i++)
} homo_result_img.convertto(homo_result_img, cv_8uc1);
return homo_result_img;
}//yuv空間
mat yhomofilter(mat orginalimg)
} yuvimg[0] = tempy;
merge(yuvimg, dst);
cvtcolor(dst, dst, color_yuv2bgr);
return dst;
}int main()
結果
參考(1)經典的同態濾波演算法的優化及其應用引數配置。
(2)同態濾波 原理及c++實現
(3)
基於Opencv的SIFT SURF HOG的實現
sift實現 surf的實現 include include includeusing namespace std using namespace cv using namespace cv xfeatures2d int main int argc,char ar namedwindow inpu...
基於C 的opencv(十二)角點檢測
角點檢測被定義為兩條邊的交點,更嚴格的說法是,角點的區域性領域應該具有兩個不同區域的不同方向的邊界。而實際應用中,大多數所謂的角點檢測方法檢測的是擁有特定特徵的影象點,而不僅僅是 角點 這些特徵點在影象中有具體的座標,並具有某些數學特徵,如區域性最大或最小灰度 某些梯度特徵等。興趣點 interes...
基於Opencv2017的C 入門 0
一 首先 安裝完成opencv2017鏈結為 選擇版本3.4.11的windows。在安裝opencv2017之前,需要安裝visual studio 2017,軟體及安裝步驟鏈結為 二 其次 掌握c 語言,從網上可以系統的學習。c 是在c基礎上發展過來的,基本的語句跟c的差別不大,比如說if語句 ...