Computer >> Máy Tính >  >> Lập trình >> C ++

Tạo bộ lọc Gaussian trong C ++


Như chúng ta đã biết Lọc Gaussian rất hữu ích được áp dụng trong lĩnh vực xử lý ảnh. Nó được sử dụng để giảm nhiễu của hình ảnh. Trong phần này, chúng ta sẽ xem cách tạo Hạt nhân Gaussian 2D. Phân phối Gaussian để tạo hạt nhân 2D như sau.

$$ G (x, y) =\ frac {1} {2 \ Pi \:\ sigma ^ {2}} e ^ {\ frac {x ^ {2} + y ^ {2}} {2 \ sigma ^ {2}}} $$

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

 #include  #include 
 #include  #define PI 3.1415using namespace std; void calc_filter (double kernel [] [5]) {double sigma =1.0; double p, q =2.0 * sigma * sigma; tổng kép =0,0; for (int x =-2; x <=2; x ++) {for (int y =-2; y <=2; y ++) {p =sqrt (x * x + y * y); kernel [x + 2] [y + 2] =(exp (- (p * p) / q))) / (PI * q); sum + =kernel [x + 2] [y + 2]; }} for (int i =0; i <5; i ++) for (int j =0; j <5; j ++) kernel [i] [j] / =sum;} int main () {double kernel [5] [5]; calc_filter (nhân); for (int i =0; i <5; ++ i) {for (int j =0; j <5; ++ j) cout < 

Đầu ra

 0,00296902 0,0133062 0,0219382 0,0133062 0,002969020.0133062 0,0596343 0,0983203 0,0596343 0,01330620,0219382 0,0983203 0,162103 0,0983203 0,02193820.0133062 0,0596343 0,0983203 0,063062 0,0690219382 0,0130062 0,06902191300299062 0,069021913,002990