我正在写一篇关于SIFT算法的研究论文,我想在描述离散过程之前创建一个图形来帮助解释连续函数环境中高斯模糊的概念。我想要创建的图形是标准高斯与正弦函数卷积的图形。我可以绘制一个高斯,我可以绘制正弦,但我不知道如何绘制它们的卷积。我不知道如何计算它们的卷积来绘制它,我也不知道任何允许我在绘图中使用卷积算子的软件。我熟悉tikz和gnuplot,但我不知道如何用它们中的任何一个来做。关于我如何能够做到这一点的任何建议将不胜感激。感谢。
答案 0 :(得分:0)
您可以使用python的matplotlib和np.convolve
请参阅以下代码
__author__ = 'kgeorge'
import os
import numpy as np
import math
import matplotlib.pyplot as plt
from matplotlib import gridspec
#create gaussian for the x values in x-axis
def create_gaussian(x_axis):
sigma = 1.0
denom = math.sqrt(2 * math.pi) * sigma
twoSigmaSq = 2.0*sigma**2
e=np.zeros_like(x_axis)
for i,x in enumerate(x_axis):
e[i]=math.exp (-(x*x)/twoSigmaSq)
e = e / denom
return e
def main():
#x_axis
sz=100
halfW = int(sz/2)
x_axis=np.linspace(-halfW, halfW, 1000)
#cos fun
cos_f=np.cos(x_axis)
#gaussian
gaussian_f=create_gaussian(x_axis)
fig = plt.figure()
gs = gridspec.GridSpec(3, 1)
ax1 = fig.add_subplot(gs[0,0])
ax1.plot(x_axis, cos_f)
ax1.set_title('cos')
ax2 = fig.add_subplot(gs[1,0])
ax2.plot(x_axis, gaussian_f)
ax2.set_title('gaussian')
ax3 = fig.add_subplot(gs[2,0])
convolved_ret=np.convolve(cos_f, gaussian_f, mode='same')
ax3.plot(x_axis, convolved_ret)
ax3.set_title('cos convolved with gaussian')
gs.update(wspace=0.5, hspace=0.5)
plt.show()