Beispiel #1
0
def _get_HH_right(X_H, Y_H):
    """
        Принимает X_H, Y_H - градиенты по геометрии Хаджина.
        Возращает HH - квадрант на 1-ом уровне.
    """
    coef = np.sqrt(2) * 0.25
    tmp1 = ut.convolve_2d(X_H, ut.GetH_h(1), 'vertical')
    tmp2 = ut.convolve_2d(Y_H, ut.GetH_h(1), 'horizontal')
    return ut.down_sample(tmp1 + tmp2, 2) * coef
Beispiel #2
0
def Hudgin_gradien_model(image):
    """
    Возврщает градиент по геометрии Хаджина. Находится с помощью
    сверток с фильтрами пробразования Хаара.
    Keyword arguments:
        image - исходный массив из которого будут получать градиенты.
    """
    X = np.sqrt(2) * ut.convolve_2d(image, ut.GetH_h(1), mode='horizontal')
    Y = np.sqrt(2) * ut.convolve_2d(image, ut.GetH_h(1), mode='vertical')
    return X, Y
Beispiel #3
0
def fried_model_gradient(image):
    """
        Возврщает градиент по геометрии Фрайда. Hаходится с помощью
        сверток с фильтрами пробразования Хаара.
        Keyword arguments:
            image - исходный массив из которого будут получать градиенты.
    """
    tmp = ut.convolve_2d(image, ut.GetH_h(1), mode='horizontal')
    X = ut.convolve_2d(tmp, ut.GetH_l(1), mode='vertical')
    tmp = ut.convolve_2d(image, ut.GetH_l(1), mode='horizontal')
    Y = ut.convolve_2d(tmp, ut.GetH_h(1), mode='vertical')
    return X, Y
Beispiel #4
0
def _GetHL(m, X):
    """
        Принимает X - градиент по геометрии Фрайда.
        Возращает LH - квадрант составляющую на m-ом уровне. m >=1
    """
    coef = np.power(np.sqrt(2), (m - 1))
    tmp = X
    for i in range(m - 1):
        tmp = ut.convolve_2d(tmp, ut.GetH_l(2**i), 'horizontal')
        tmp = ut.convolve_2d(tmp, ut.GetH_l(2**i), 'horizontal')
    for i in range(1, m):
        tmp = ut.convolve_2d(tmp, ut.GetH_l(2**i), 'vertical')
    return coef * ut.down_sample(tmp, 2**m)
Beispiel #5
0
def _GetHH(m, X):
    """
        Принимает X - градиент по геометрии Фрайда.
        Возращает HH - квадрант составляющую на m-ом уровне. m>=2
    """
    coef = np.sqrt(2**(m - 1))
    buf = ut.convolve_2d(X, ut.GetH_l(2**0), 'horizontal')
    buf = ut.convolve_2d(buf, ut.GetH_l(2**0), 'horizontal')
    buf = ut.convolve_2d(buf, ut.GetH_h(2**(m - 1)), 'vertical')
    if (m == 2):
        return ut.down_sample(buf, 4).T * coef
    for k in range(1, m - 1):
        buf = ut.convolve_2d(buf, ut.GetH_l(2**k), 'horizontal')
        buf = ut.convolve_2d(buf, ut.GetH_l(2**k), 'horizontal')
        buf = ut.convolve_2d(buf, ut.GetH_l(2**k), 'vertical')
    return ut.down_sample(buf, 2**m).T * coef