Я хочу применить фильтр Гаусса к массиву с плавающей точкой, используя python2.
На самом деле я пытаюсь переписать код Ретроспективная коррекция с использованием гомоморфной фильтрации в Python,
g(x,y) = exp(LPF(log(f(x,y)))) . C
где LPF (f (x, y)) - фильтр нижних частот f (x, y), а C - коэффициент нормализации.
Вот мой код, который вылетает в строке: LPFF = scipy_filters.gaussian_filter1d (logF, sigma = 10)
fxy = greyscale_matrix
logF = np.log1p(fxy)
print logF
LPFF = scipy_filters.gaussian_filter1d(logF, sigma=10)
print LPFF
expF = np.expm1(LPFF)
tmp_div = fxy / expF
meanF_down = np.mean(tmp_div)
meanF_top = np.mean(fxy)
C = meanF_top / meanF_down
gx_matrix = expF * C
rtn_matrix = greyscale_matrix - gx_matrix
Image.fromarray(gx_matrix).show()
Image.fromarray(rtn_matrix).show()
Я пытаюсь отладить его при переходе на
def correlate1d(*args, **kwargs): # real signature unknown
pass
из _nd_image.py код кажется сбойным без какой-либо идеи.
Я также обнаружил, что github выполняет эту работу как Реализация гомоморфного фильтра, сделанного в Python , но что-то с ним не так.
Источник img:
sourceimg
Использование этого может дать мне отфильтрованное изображение, например: отфильтрованное изображение
Конечно, изменяя атрибуты, я могу сделать его светлее, но тенденция к чрезмерному затенению, очевидно, все еще существует.
Может ли кто-нибудь пролить свет на эту проблему? Большое спасибо!