2016-11-27 8 views
0

SIFT 알고리즘에 대한 연구 논문을 쓰고 있는데, 이산 프로세스를 설명하기 전에 연속 함수의 컨텍스트에서 가우시안 블러 개념을 설명하는 데 도움이되는 그래픽을 만들고 싶습니다. 내가 만들고자하는 그래픽은 사인 함수와 컨 벌브 된 표준 가우스의 그래프입니다. 나는 가우시안 (Gaussian)을 음모를 꾸밀 수 있고, 나는 사인을 그릴 수 있지만, 나는 그 회선을 어떻게 그릴지를 모른다. 나는 그것들을 그려 내기 위해 그들의 회선 (convolution)을 계산하는 방법을 모르며, 내가 그 플롯에서 회선 연산자 (convolution operator)를 사용할 수있는 소프트웨어를 모른다. 나는 tikz와 gnuplot에 익숙하지만, 어느 쪽이든 이것을하는 방법을 모른다. 내가 이것에 관해 어떻게 갈 수 있는지에 대한 제안은 크게 감사 할 것입니다. 감사.가우시안 컨볼 루션 그래프 플로팅

+1

'옥타브'와 같은 프로그램을 사용하여 회선 계산을합니다. 또는 함수 솔루션으로 케이스에 분석 솔루션을 그려보십시오. – Christoph

답변

0

당신은 여기에 출력을 참조하십시오 파이썬의하기 matplotlib를 사용

다음 코드

__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() 

를 참조하십시오 np.convolve 수 있습니다. output of convolustion of cos and gaussian