新聞中心
如何用python實(shí)現(xiàn)圖像的一維高斯濾波器
如何用python實(shí)現(xiàn)圖像的一維高斯濾波器
創(chuàng)新互聯(lián):成立于2013年為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為上1000家公司企業(yè)提供了專業(yè)的成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)和網(wǎng)站推廣服務(wù), 定制網(wǎng)站開發(fā)由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。
現(xiàn)在把卷積模板中的值換一下,不是全1了,換成一組符合高斯分布的數(shù)值放在模板里面,比如這時(shí)中間的數(shù)值最大,往兩邊走越來越小,構(gòu)造一個(gè)小的高斯包。實(shí)現(xiàn)的函數(shù)為cv2.GaussianBlur()。對于高斯模板,我們需要制定的是高斯核的高和寬(奇數(shù)),沿x與y方向的標(biāo)準(zhǔn)差(如果只給x,y=x,如果都給0,那么函數(shù)會自己計(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表示出二維高斯分布函數(shù),mu表示均值,sigma表示協(xié)方差矩陣,x表示數(shù)據(jù)點(diǎ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
2021-02-08 Python OpenCV GaussianBlur()函數(shù)
borderType= None)函數(shù)
此函數(shù)利用高斯濾波器平滑一張圖像。該函數(shù)將源圖像與指定的高斯核進(jìn)行卷積。
src:輸入圖像
ksize:(核的寬度,核的高度),輸入高斯核的尺寸,核的寬高都必須是正奇數(shù)。否則,將會從參數(shù)sigma中計(jì)算得到。
dst:輸出圖像,尺寸與輸入圖像一致。
sigmaX:高斯核在X方向上的標(biāo)準(zhǔn)差。
sigmaY:高斯核在Y方向上的標(biāo)準(zhǔn)差。默認(rèn)為None,如果sigmaY=0,則它將被設(shè)置為與sigmaX相等的值。如果這兩者都為0,則它們的值會從ksize中計(jì)算得到。計(jì)算公式為:
borderType:像素外推法,默認(rèn)為None(參考官方文檔 BorderTypes
)
在圖像處理中,高斯濾波主要有兩種方式:
1.窗口滑動卷積
2.傅里葉變換
在此主要利用窗口滑動卷積。其中二維高斯函數(shù)公式為:
根據(jù)上述公式,生成一個(gè)3x3的高斯核,其中最重要的參數(shù)就是標(biāo)準(zhǔn)差 ,標(biāo)準(zhǔn)差 越大,核中心的值與周圍的值差距越小,曲線越平滑。標(biāo)準(zhǔn)差 越小,核中心的值與周圍的值差距越大,曲線越陡峭。
從圖像的角度來說,高斯核的標(biāo)準(zhǔn)差 越大,平滑效果越不明顯。高斯核的標(biāo)準(zhǔn)差 越小,平滑效果越明顯。
可見,標(biāo)準(zhǔn)差 越大,圖像平滑程度越大
參考博客1:關(guān)于GaussianBlur函數(shù)
參考博客2:關(guān)于高斯核運(yùn)算
當(dāng)前名稱:python+的高斯函數(shù)的簡單介紹
文章路徑:http://www.ef60e0e.cn/article/doscejj.html