日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

高斯函数和C++简单实现

發布時間:2024/1/1 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高斯函数和C++简单实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 高斯函數在科學和工程中有廣泛應用;其定義為,

其一般圖像為,

?


? ? 高斯函數的圖形在形狀上像一個倒懸著的鐘;參數a指高斯曲線的峰值,b為其對應的橫坐標,c即標準差(有時也叫高斯RMS寬值),它控制著“鐘”的寬度;

? ? 高斯函數在圖像處理中用作預平滑核;
? ? 二維高斯函數在計算機視覺領域用處廣泛,利用0均值的二維高斯函數,可以生成高斯卷積核,用于圖像處理中的高斯濾波,實現高斯模糊的效果,有效去除高斯噪聲。

? ? 高斯函數屬于初等函數,是一個以e為底的指數函數;

下面用C++簡單實現一下;

VC6,新建一個單文檔工程,視類CPP文件頭部包含<math.h>;

void CGstestView::OnDraw(CDC* pDC) {CGstestDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereint nums[61];int y[61];int i;CString str1,str2;for(i=0; i<61; i++){nums[i]=i-30;}for(i=0; i<61; i++){//y[i] = exp(2);//y[i] = 10 * exp ( -(nums[i]-0.5)^2.0/2*0.5^2.0 );y[i] = 10 * exp ( -pow(nums[i]-0.2,2) / 2* pow(0.2,2) ); }for(i=0; i<61; i++){str2.Format("%d",nums[i]);str1.Format("%d",y[i]);//pDC->TextOut(10+i*25,50,str1);//pDC->TextOut(10+i*25,10,str2);//pDC->TextOut(nums[i]+50, 100-y[i],"*");pDC->TextOut(nums[i]*5+300, 100-y[i]*5,"*");} }

? ? 定義x的數值為-30到30,即nums[61];然后計算y[i]的值,即高斯函數的值,設a=10、b=c=0.2;

先輸出數值看一下;輸出x和高斯函數的值,

? ? ?看上去是高斯函數的值,中間大,兩邊逐步減小;算式沒寫錯;

然后在每個數值點畫一個星號,pDC->TextOut(nums[i]+50, 100-y[i],"*"),這句同時包含了簡單坐標變換;

? ? 畫出的圖形如上;看上去是高斯函數,星號都疊在一起了,

然后擴大x和y刻度范圍,看一下,pDC->TextOut(nums[i]*5+300, 100-y[i]*5,"*"),包含有簡單坐標變換,

? ? 有時間繼續;?

?

總結

以上是生活随笔為你收集整理的高斯函数和C++简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。