如何用python實現圖像的一維高斯濾波器
龍游網站建設公司創新互聯建站,龍游網站設計制作,有大型網站制作公司豐富經驗。已為龍游上千多家提供企業網站建設服務。企業網站搭建\外貿網站制作要多少錢,請找那個售后服務好的龍游做網站的公司定做!
現在把卷積模板中的值換一下,不是全1了,換成一組符合高斯分布的數值放在模板里面,比如這時中間的數值最大,往兩邊走越來越小,構造一個小的高斯包。實現的函數為cv2.GaussianBlur()。對于高斯模板,我們需要制定的是高斯核的高和寬(奇數),沿x與y方向的標準差(如果只給x,y=x,如果都給0,那么函數會自己計算)。高斯核可以有效的出去圖像的高斯噪聲。當然也可以自己構造高斯核,相關函數:cv2.GaussianKernel().
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread(‘flower.jpg‘,0) #直接讀為灰度圖像
for i in range(2000): #添加點噪聲
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‘)#默認彩色,另一種彩色bgr
plt.subplot(1,2,2),plt.imshow(blur,‘gray‘)
borderType= None)函數
此函數利用高斯濾波器平滑一張圖像。該函數將源圖像與指定的高斯核進行卷積。
src:輸入圖像
ksize:(核的寬度,核的高度),輸入高斯核的尺寸,核的寬高都必須是正奇數。否則,將會從參數sigma中計算得到。
dst:輸出圖像,尺寸與輸入圖像一致。
sigmaX:高斯核在X方向上的標準差。
sigmaY:高斯核在Y方向上的標準差。默認為None,如果sigmaY=0,則它將被設置為與sigmaX相等的值。如果這兩者都為0,則它們的值會從ksize中計算得到。計算公式為:
borderType:像素外推法,默認為None(參考官方文檔 BorderTypes
)
在圖像處理中,高斯濾波主要有兩種方式:
1.窗口滑動卷積
2.傅里葉變換
在此主要利用窗口滑動卷積。其中二維高斯函數公式為:
根據上述公式,生成一個3x3的高斯核,其中最重要的參數就是標準差 ,標準差 越大,核中心的值與周圍的值差距越小,曲線越平滑。標準差 越小,核中心的值與周圍的值差距越大,曲線越陡峭。
從圖像的角度來說,高斯核的標準差 越大,平滑效果越不明顯。高斯核的標準差 越小,平滑效果越明顯。
可見,標準差 越大,圖像平滑程度越大
參考博客1:關于GaussianBlur函數
參考博客2:關于高斯核運算
高斯函數的形式為:
其中a、b與c為實數常數,且a 0。
c= 2的高斯函數是傅立葉變換的特征函數。這就意味著高斯函數的傅立葉變換不僅僅是另一個高斯函數,而且是進行傅立葉變換的函數的標量倍。
高斯函數屬于初等函數,但它沒有初等不定積分。但是仍然可以在整個實數軸上計算它的廣義積分:
擴展資料
高斯函數的應用:
高斯函數的不定積分是誤差函數。在自然科學、社會科學、數學以及工程學等領域都有高斯函數的身影,這方面的例子包括:
在統計學與機率論中,高斯函數是正態分布的密度函數,根據中心極限定理它是復雜總和的有限機率分布。
高斯函數是量子諧振子基態的波函數。
高斯函數與量子場論中的真空態相關。
在光學以及微波系統中有高斯波束的應用。
設x∈R , 用 [x]或int(x)表示不超過x 的最大整數,并用{χ}表示x的非負純小數,則 y= [x] 稱為高斯(Guass)函數,也叫取整函數。(其中y={x}叫做小數部分函數,表示x的小數部分)
任意一個實數都能寫成整數與非負純小數之和,即:x= [x] + {χ}(0≤{x}1)
參考資料:百度百科-高斯函數
clear?
close?all
%%%%%%%%%%%%%%%%%%%%%%%%%生成實驗數據集
rand('state',0)
sigma_matrix1=eye(2);
sigma_matrix2=50*eye(2);
u1=[0,0];
u2=[30,30];
m1=100;
m2=300;%樣本數
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm1數據集
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數據集')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm2數據集
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數據集')
end
function?Y?=?multivrandn(u,m,sigma_matrix)
%%生成指定均值和協方差矩陣的高斯數據
n=length(u);
c?=?chol(sigma_matrix);
X=randn(m,n);
Y=X*c+ones(m,1)*u;
end
python做科學計算的特點:1. 科學庫很全。(推薦學習:Python視頻教程)
科學庫:numpy,scipy。作圖:matplotpb。并行:mpi4py。調試:pdb。
2. 效率高。
如果你能學好numpy(array特性,f2py),那么你代碼執行效率不會比fortran,C差太多。但如果你用不好array,那樣寫出來的程序效率就只能呵呵了。所以入門后,請一定花足夠多的時間去了解numpy的array類。
3. 易于調試。
pdb是我見過最好的調試工具,沒有之一。直接在程序斷點處給你一個截面,這只有文本解釋語言才能辦到。毫不夸張的說,你用python開發程序只要fortran的1/10時間。
4. 其他。
它豐富而且統一,不像C++的庫那么雜(好比pnux的各種發行版),python學好numpy就可以做科學計算了。python的第三方庫很全,但是不雜。python基于類的語言特性讓它比起fortran等更加容易規模化開發。
數值分析中,龍格-庫塔法(Runge-Kutta methods)是用于非線性常微分方程的解的重要的一類隱式或顯式迭代法。這些技術由數學家卡爾·龍格和馬丁·威爾海姆·庫塔于1900年左右發明。
龍格-庫塔(Runge-Kutta)方法是一種在工程上應用廣泛的高精度單步算法,其中包括著名的歐拉法,用于數值求解微分方程。由于此算法精度高,采取措施對誤差進行抑制,所以其實現原理也較復雜。
高斯積分是在概率論和連續傅里葉變換等的統一化等計算中有廣泛的應用。在誤差函數的定義中它也出現。雖然誤差函數沒有初等函數,但是高斯積分可以通過微積分學的手段解析求解。高斯積分(Gaussian integral),有時也被稱為概率積分,是高斯函數的積分。它是依德國數學家兼物理學家卡爾·弗里德里希·高斯之姓氏所命名。
洛倫茨吸引子及其導出的方程組是由愛德華·諾頓·洛倫茨于1963年發表,最初是發表在《大氣科學雜志》(Journal of the Atmospheric Sciences)雜志的論文《Deterministic Nonperiodic Flow》中提出的,是由大氣方程中出現的對流卷方程簡化得到的。
這一洛倫茨模型不只對非線性數學有重要性,對于氣候和天氣預報來說也有著重要的含義。行星和恒星大氣可能會表現出多種不同的準周期狀態,這些準周期狀態雖然是完全確定的,但卻容易發生突變,看起來似乎是隨機變化的,而模型對此現象有明確的表述。
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關于python能做什么科學計算的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 08 16:16:36 2016
@author: SumaiWong
"""
import numpy as np
import pandas as pd
from numpy import dot
from numpy.linalg import inv
iris = pd.read_csv('D:\iris.csv')
dummy = pd.get_dummies(iris['Species']) # 對Species生成啞變量
iris = pd.concat([iris, dummy], axis =1 )
iris = iris.iloc[0:100, :] # 截取前一百行樣本
X = iris.ix[:, 0:4]
Y = iris['setosa'].reshape(len(iris), 1) #整理出X矩陣 和 Y矩陣
def GDA(Y, X):
theta1 = Y.mean() #類別1的比例
theta0 = 1-Y.mean() #類別2的比例
mu1 = X[Y==1].mean() #類別1特征的均值向量
mu0 = X[Y==0].mean() #類別2特征的均值向量
X_1 = X[Y==1]
X_0 = X[Y==0]
A = dot(X_1.T, X_1) - len(Y[Y==1])*dot(mu1.reshape(4,1), mu1.reshape(4,1).T)
B = dot(X_0.T, X_0) - len(Y[Y==0])*dot(mu0.reshape(4,1), mu0.reshape(4,1).T)
sigma = (A+B)/len(X) #sigma = X'X-n(X.bar)X.bar'=X'[I-1/n 1 1]X
return theta1, theta0, mu1, mu0, sigma
文章名稱:包含python的高斯函數的詞條
標題路徑:http://m.kartarina.com/article10/hjgego.html
成都網站建設公司_創新互聯,為您提供服務器托管、關鍵詞優化、用戶體驗、營銷型網站建設、網站制作、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯