14 基於C 的OpenCV同態濾波

2021-10-06 22:29:52 字數 1433 閱讀 2743

同態濾波的主要目的是為了消除光照不均,將空間域的影象資訊轉換為頻率域進行處理,通過濾波器對頻率域影象進行濾波,降低光照不均勻現象的影響,完成濾波後,再將影象轉換到空間域中。

原始碼

//同態濾波

#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語句 ...