Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 가우스 필터 생성


가우시안 필터링은 이미지 처리 분야에서 매우 유용합니다. 이미지의 노이즈를 줄이는 데 사용됩니다. 이 섹션에서는 2D 가우시안 커널을 생성하는 방법을 살펴보겠습니다. 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.1415 네임스페이스 std;void calc_filter(double kernel[][5]) { double sigma =1.0; 이중 p, q =2.0 * 시그마 * 시그마; 이중 합계 =0.0; for (int x =-2; x <=2; x++) { for (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++) for (int j =0; j <5; j++) kernel[i][j] /=sum;}int main() { 이중 커널[5] [5]; calc_filter(커널); for (int i =0; i <5; ++i) { for (int j =0; j <5; ++j) cout < 

출력

 0.00296902 0.0133062 0.0219382 0.0133062 0.0596343 0.0983203 0.0596343 0.002969020.0133062 0.01330620.0219382 0.162103 0.0983203 0.0983203 0.0596343 0.0983203 0.0596343 0.02193820.0133062 0.01330620.00296902 0.0133062 0.0219382 0.0133062 0.00296902