如何用python實(shí)現(xiàn)圖像的一維高斯濾波器
主要從事網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、自適應(yīng)網(wǎng)站建設(shè)、程序開(kāi)發(fā)、微網(wǎng)站、微信小程序開(kāi)發(fā)等,憑借多年來(lái)在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)絡(luò)營(yíng)銷(xiāo)經(jīng)驗(yàn),集策劃、開(kāi)發(fā)、設(shè)計(jì)、營(yíng)銷(xiāo)、管理等多方位專(zhuān)業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類(lèi)型的建設(shè)項(xiàng)目的能力。
現(xiàn)在把卷積模板中的值換一下,不是全1了,換成一組符合高斯分布的數(shù)值放在模板里面,比如這時(shí)中間的數(shù)值最大,往兩邊走越來(lái)越小,構(gòu)造一個(gè)小的高斯包。實(shí)現(xiàn)的函數(shù)為cv2.GaussianBlur()。對(duì)于高斯模板,我們需要制定的是高斯核的高和寬(奇數(shù)),沿x與y方向的標(biāo)準(zhǔn)差(如果只給x,y=x,如果都給0,那么函數(shù)會(huì)自己計(jì)算)。高斯核可以有效的出去圖像的高斯噪聲。當(dāng)然也可以自己構(gòu)造高斯核,相關(guān)函數(shù):cv2.GaussianKernel().
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread(‘flower.jpg‘,0) #直接讀為灰度圖像
for i in range(2000): #添加點(diǎn)噪聲
temp_x = np.random.randint(0,img.shape[0])
temp_y = np.random.randint(0,img.shape[1])
img[temp_x][temp_y] = 255
blur = cv2.GaussianBlur(img,(5,5),0)
plt.subplot(1,2,1),plt.imshow(img,‘gray‘)#默認(rèn)彩色,另一種彩色bgr
plt.subplot(1,2,2),plt.imshow(blur,‘gray‘)
Python math 庫(kù)提供許多對(duì)浮點(diǎn)數(shù)的數(shù)學(xué)運(yùn)算函數(shù),math模塊不支持復(fù)數(shù)運(yùn)算,若需計(jì)算復(fù)數(shù),可使用cmath模塊(本文不贅述)。
使用dir函數(shù),查看math庫(kù)中包含的所有內(nèi)容:
1) math.pi????# 圓周率π
2) math.e????#自然對(duì)數(shù)底數(shù)
3) math.inf? ? #正無(wú)窮大∞,-math.inf? ? #負(fù)無(wú)窮大-∞
4) math.nan? ? #非浮點(diǎn)數(shù)標(biāo)記,NaN(not a number)
1) math.fabs(x)? ? #表示X值的絕對(duì)值
2) math.fmod(x,y)? ? #表示x/y的余數(shù),結(jié)果為浮點(diǎn)數(shù)
3) math.fsum([x,y,z])? ? #對(duì)括號(hào)內(nèi)每個(gè)元素求和,其值為浮點(diǎn)數(shù)
4) math.ceil(x)? ? #向上取整,返回不小于x的最小整數(shù)
5)math.floor(x)? ? #向下取整,返回不大于x的最大整數(shù)
6) math.factorial(x)? ? #表示X的階乘,其中X值必須為整型,否則報(bào)錯(cuò)
7) math.gcd(a,b)? ? #表示a,b的最大公約數(shù)
8)? math.frexp(x)? ? ? #x = i *2^j,返回(i,j)
9) math.ldexp(x,i)? ? #返回x*2^i的運(yùn)算值,為math.frexp(x)函數(shù)的反運(yùn)算
10) math.modf(x)? ? #表示x的小數(shù)和整數(shù)部分
11) math.trunc(x)? ? #表示x值的整數(shù)部分
12) math.copysign(x,y)? ? #表示用數(shù)值y的正負(fù)號(hào),替換x值的正負(fù)號(hào)
13) math.isclose(a,b,rel_tol =x,abs_tol = y)? ? #表示a,b的相似性,真值返回True,否則False;rel_tol是相對(duì)公差:表示a,b之間允許的最大差值,abs_tol是最小絕對(duì)公差,對(duì)比較接近于0有用,abs_tol必須至少為0。
14) math.isfinite(x)? ? #表示當(dāng)x不為無(wú)窮大時(shí),返回True,否則返回False
15) math.isinf(x)? ? #當(dāng)x為±∞時(shí),返回True,否則返回False
16) math.isnan(x)? ? #當(dāng)x是NaN,返回True,否則返回False
1) math.pow(x,y)? ? #表示x的y次冪
2) math.exp(x)? ? #表示e的x次冪
3) math.expm1(x)? ? #表示e的x次冪減1
4) math.sqrt(x)? ? #表示x的平方根
5) math.log(x,base)? ? #表示x的對(duì)數(shù)值,僅輸入x值時(shí),表示ln(x)函數(shù)
6) math.log1p(x)? ? #表示1+x的自然對(duì)數(shù)值
7) math.log2(x)? ? #表示以2為底的x對(duì)數(shù)值
8) math.log10(x)? ? #表示以10為底的x的對(duì)數(shù)值
1) math.degrees(x)? ? #表示弧度值轉(zhuǎn)角度值
2) math.radians(x)? ? #表示角度值轉(zhuǎn)弧度值
3) math.hypot(x,y)? ? #表示(x,y)坐標(biāo)到原點(diǎn)(0,0)的距離
4) math.sin(x)? ? #表示x的正弦函數(shù)值
5) math.cos(x)? ? #表示x的余弦函數(shù)值
6) math.tan(x)? ? #表示x的正切函數(shù)值
7)math.asin(x)? ? #表示x的反正弦函數(shù)值
8)?math.acos(x)? ? #表示x的反余弦函數(shù)值
9)?math.atan(x)? ? #表示x的反正切函數(shù)值
10) math.atan2(y,x)? ? #表示y/x的反正切函數(shù)值
11) math.sinh(x)? ? #表示x的雙曲正弦函數(shù)值
12) math.cosh(x)? ? #表示x的雙曲余弦函數(shù)值
13) math.tanh(x)? ? #表示x的雙曲正切函數(shù)值
14) math.asinh(x)? ? #表示x的反雙曲正弦函數(shù)值
15) math.acosh(x)? ? #表示x的反雙曲余弦函數(shù)值
16) math.atanh(x)? ? #表示x的反雙曲正切函數(shù)值
1)math.erf(x)? ? #高斯誤差函數(shù)
2) math.erfc(x)? ? #余補(bǔ)高斯誤差函數(shù)
3) math.gamma(x)? ? #伽馬函數(shù)(歐拉第二積分函數(shù))
4) math.lgamma(x)? ? #伽馬函數(shù)的自然對(duì)數(shù)
python做科學(xué)計(jì)算的特點(diǎn):1. 科學(xué)庫(kù)很全。(推薦學(xué)習(xí):Python視頻教程)
科學(xué)庫(kù):numpy,scipy。作圖:matplotpb。并行:mpi4py。調(diào)試:pdb。
2. 效率高。
如果你能學(xué)好numpy(array特性,f2py),那么你代碼執(zhí)行效率不會(huì)比f(wàn)ortran,C差太多。但如果你用不好array,那樣寫(xiě)出來(lái)的程序效率就只能呵呵了。所以入門(mén)后,請(qǐng)一定花足夠多的時(shí)間去了解numpy的array類(lèi)。
3. 易于調(diào)試。
pdb是我見(jiàn)過(guò)最好的調(diào)試工具,沒(méi)有之一。直接在程序斷點(diǎn)處給你一個(gè)截面,這只有文本解釋語(yǔ)言才能辦到。毫不夸張的說(shuō),你用python開(kāi)發(fā)程序只要fortran的1/10時(shí)間。
4. 其他。
它豐富而且統(tǒng)一,不像C++的庫(kù)那么雜(好比pnux的各種發(fā)行版),python學(xué)好numpy就可以做科學(xué)計(jì)算了。python的第三方庫(kù)很全,但是不雜。python基于類(lèi)的語(yǔ)言特性讓它比起fortran等更加容易規(guī)模化開(kāi)發(fā)。
數(shù)值分析中,龍格-庫(kù)塔法(Runge-Kutta methods)是用于非線性常微分方程的解的重要的一類(lèi)隱式或顯式迭代法。這些技術(shù)由數(shù)學(xué)家卡爾·龍格和馬丁·威爾海姆·庫(kù)塔于1900年左右發(fā)明。
龍格-庫(kù)塔(Runge-Kutta)方法是一種在工程上應(yīng)用廣泛的高精度單步算法,其中包括著名的歐拉法,用于數(shù)值求解微分方程。由于此算法精度高,采取措施對(duì)誤差進(jìn)行抑制,所以其實(shí)現(xiàn)原理也較復(fù)雜。
高斯積分是在概率論和連續(xù)傅里葉變換等的統(tǒng)一化等計(jì)算中有廣泛的應(yīng)用。在誤差函數(shù)的定義中它也出現(xiàn)。雖然誤差函數(shù)沒(méi)有初等函數(shù),但是高斯積分可以通過(guò)微積分學(xué)的手段解析求解。高斯積分(Gaussian integral),有時(shí)也被稱(chēng)為概率積分,是高斯函數(shù)的積分。它是依德國(guó)數(shù)學(xué)家兼物理學(xué)家卡爾·弗里德里希·高斯之姓氏所命名。
洛倫茨吸引子及其導(dǎo)出的方程組是由愛(ài)德華·諾頓·洛倫茨于1963年發(fā)表,最初是發(fā)表在《大氣科學(xué)雜志》(Journal of the Atmospheric Sciences)雜志的論文《Deterministic Nonperiodic Flow》中提出的,是由大氣方程中出現(xiàn)的對(duì)流卷方程簡(jiǎn)化得到的。
這一洛倫茨模型不只對(duì)非線性數(shù)學(xué)有重要性,對(duì)于氣候和天氣預(yù)報(bào)來(lái)說(shuō)也有著重要的含義。行星和恒星大氣可能會(huì)表現(xiàn)出多種不同的準(zhǔn)周期狀態(tài),這些準(zhǔn)周期狀態(tài)雖然是完全確定的,但卻容易發(fā)生突變,看起來(lái)似乎是隨機(jī)變化的,而模型對(duì)此現(xiàn)象有明確的表述。
更多Python相關(guān)技術(shù)文章,請(qǐng)?jiān)L問(wèn)Python教程欄目進(jìn)行學(xué)習(xí)!以上就是小編分享的關(guān)于python能做什么科學(xué)計(jì)算的詳細(xì)內(nèi)容希望對(duì)大家有所幫助,更多有關(guān)python教程請(qǐng)關(guān)注環(huán)球青藤其它相關(guān)文章!
clear?
close?all
%%%%%%%%%%%%%%%%%%%%%%%%%生成實(shí)驗(yàn)數(shù)據(jù)集
rand('state',0)
sigma_matrix1=eye(2);
sigma_matrix2=50*eye(2);
u1=[0,0];
u2=[30,30];
m1=100;
m2=300;%樣本數(shù)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm1數(shù)據(jù)集
Y1=multivrandn(u1,m1,sigma_matrix1);
Y2=multivrandn(u2,m2,sigma_matrix2);
scatter(Y1(:,1),Y1(:,2),'bo')
hold?on
scatter(Y2(:,1),Y2(:,2),'r*')
title('SM1數(shù)據(jù)集')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm2數(shù)據(jù)集
u11=[0,0];
u22=[5,5];
u33=[10,10];
u44=[15,15];
m=600;
sigma_matrix3=2*eye(2);
Y11=multivrandn(u11,m,sigma_matrix3);
Y22=multivrandn(u22,m,sigma_matrix3);
Y33=multivrandn(u33,m,sigma_matrix3);
Y44=multivrandn(u44,m,sigma_matrix3);
figure(2)
scatter(Y11(:,1),Y11(:,2),'bo')
hold?on
scatter(Y22(:,1),Y22(:,2),'r*')
scatter(Y33(:,1),Y33(:,2),'go')
scatter(Y44(:,1),Y44(:,2),'c*')
title('SM2數(shù)據(jù)集')
end
function?Y?=?multivrandn(u,m,sigma_matrix)
%%生成指定均值和協(xié)方差矩陣的高斯數(shù)據(jù)
n=length(u);
c?=?chol(sigma_matrix);
X=randn(m,n);
Y=X*c+ones(m,1)*u;
end
分享名稱(chēng):python的高斯函數(shù)的簡(jiǎn)單介紹
URL地址:http://m.kartarina.com/article28/heihcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、商城網(wǎng)站、定制開(kāi)發(fā)、小程序開(kāi)發(fā)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)