Какие версии Python в MATLAB включают функции imgaborfilt и imgaussfilt? - PullRequest
0 голосов
/ 29 сентября 2019

Пытался реализовать задачу здесь в python. Мне нужно было выполнить фильтрацию Гарбора по полутоновому изображению, а затем по Гауссу - по фильтру по Гарбору. Наблюдая за результатами кода Python и кода MATLAB, я обнаружил, что они совершенно разные.

В python есть функции cv2.filter2D cv2.GaussianBlur для фильтрации Garbor и Gaussian, так же как MATLAB имеет imgaborfilt и imgaussfilt. Использование функций python, как показано во фрагменте кода, возвращает матрицу из 0 и 1, в то время как MATLAB возвращает матрицу чисел с плавающей запятой.


def garbor_filters(wavelength, orientation):
  ksize = 39
  kern = cv2.getGaborKernel(ksize=(ksize, ksize), sigma = 0.5, theta=orientation, lambd=wavelength, gamma=math.sqrt(2), psi=0, ktype=cv2.CV_32F)
  return kern


def compute_garbor(img, filter):
 #filter: kernel obtained from the method above 
 filtered_img = cv2.filter2D(img, cv2.CV_8UC3, filter)
 return filtered_img

def getgaussianFiltrdImg(imageGarbors, filters):
  #filters: a tuple of wavelength and orientation  
  sigma = 0.5*filters[0]; #get wavelength
  K = 3;
  filtersize=2*math.ceil(2*K*sigma)+1
  gau_img = cv2.GaussianBlur(imageGarbors, (filtersize,filtersize), K*sigma)
  return gau_img


# call the methods
realimage = cv2.imread('kobi.png')
realimage = cv2.cvtColor(realimage, cv2.COLOR_BGR2GRAY)
img = rescale(realimage, 0.25, anti_aliasing=False)

imageGarbors=getImageGabor(img, (2.82,0))
imageGauss=getgaussianFiltrdImg(imageGarbors, (2.82,0))

Python возвращает только 0 и 1 в матрицах, а MATLAB возвращает значения продолжения. Что я делаю не так?

...