Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การสร้างตัวกรองเกาส์เซียนใน C ++


อย่างที่เราทราบดีว่าการกรองแบบเกาส์เซียนมีประโยชน์อย่างมากในด้านการประมวลผลภาพ ใช้เพื่อลดสัญญาณรบกวนของภาพ ในส่วนนี้เราจะมาดูวิธีการสร้าง 2D Gaussian Kernel Gaussian Distribution สำหรับสร้างเคอร์เนล 2D มีดังนี้

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

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include #include 
#include #define PI 3.1415using namespace std;void calc_filter(double kernel[][5]) { double sigma =1.0; p สองเท่า, q =2.0 * ซิกมา * ซิกมา; ผลรวมสองเท่า =0.0; สำหรับ (int x =-2; x <=2; x++) { สำหรับ (int y =-2; y <=2; y++) { p =sqrt(x * x + y * y); เคอร์เนล[x + 2][y + 2] =(exp(-(p * p) / q)) / (PI * q); ผลรวม +=เคอร์เนล[x + 2][y + 2]; } } for (int i =0; i <5; i++) สำหรับ (int j =0; j <5; j++) kernel[i][j] /=sum;}int main() { เคอร์เนลคู่[5] [5]; calc_filter (เคอร์เนล); สำหรับ (int i =0; i <5; ++i) { สำหรับ (int j =0; j <5; ++j) cout <<เคอร์เนล[i][j] <<" "; ศาล < 

ผลลัพธ์

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.0596343 0.01330620.00296902 0.0133062 0.0219382 0.01330ก่อน