대학교 과제고


이 이미지를 gabor filter로 convolution 하는 거에요.

import cv2

import numpy as np

import matplotlib.pyplot as plt


def convolution_2(m,f,s=1):

   ...:     mx, my = np.shape(m)

   ...:     fx, fy = np.shape(f)

   ...:     if(mx-fx)%s==0 and (my-fy)%s==0:

   ...:         print('convolution 연산가능')

   ...:     else:

   ...:         print('convolution 연산 불가능')

   ...:         print('(mx-fx)%s=',(mx-fx)%s)

   ...:         print('(my-fy)%s=',(my-fy)%s)

   ...:         return

   ...:     o =[]

   ...:     for i in range(0,mx-fx+1,s):

   ...:         for j in range(0,my-fy+1,s):

   ...:             o.append((m[i:i+fx,j:j+fy]*f).sum())

   ...:     ow=int((mx-fx)/s)+1

   ...:     oh=int((my-fy)/s)+1

   ...:     print('ouptput 크기=(%s,%s)'%(ow,oh))

   ...:     o=np.array(o).reshape(oh,ow)

   ...:     return o


ksize = (3,3)
sigma = 50
theta  = np.pi/2
lambda_ =np.pi/2
gamma = 1
psi = 5
kernel = cv2.getGaborKernel(ksize,sigma,theta,lambda_,gamma,psi,ktype = cv2.CV_64F)

img_src ='C:\\Users\\giwon\\Desktop\\baboon.jpg'
img = cv2.imread(img_src, cv2.IMREAD_GRAYSCALE)
cv2.imshow('window_name',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

d = convolution(img,kernel)
cv2.imshow('window_name',d)

plt.imshow(d,cmap=plt.cm.gray); plt.colorbar()
plt.show()

아나콘다 쓰고있고요 사진이 왜 대각선으로 잘려서 나오는건지 모르겠어요 

구글링 해서 막 여기저기서 따온거라;;

Gabor 시그마나 세타 람다 감마 psi 얘네 정확히 뭐하는 애들인지 설명을 읽어도 이해가 안되요..