Преобразовать код обработки изображения из Matlab в python - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть кусок кода в Matlab, который мне нужно написать в python

function x = BlockMM(nr,nc,Nb,m,x1)
myfun = @(block_struct) reshape(block_struct.data,m,1);
x1 = blockproc(x1,[nr nc],myfun);
x1 = reshape(x1,m,Nb);
x1 = sum(x1,2);
x = reshape(x1,nr,nc);

1 Ответ

0 голосов
/ 25 февраля 2020
def segmented_process(M, blk_size=(16,16), fun=None):
    rows = []
    for i in range(0, M.shape[0], blk_size[0]):
        cols = []
        for j in range(0, M.shape[1], blk_size[1]):
            cols.append(fun(M[i:i+blk_size[0], j:j+blk_size[1]]))
        rows.append(np.concatenate(cols, axis=1))
    return np.concatenate(rows, axis=0)

def blockMM(nr,nc,Nb,x1):
    myfun = lambda block:block.reshape((nr*nc,1))
    x1 = segmented_process(x1, blk_size=(nr,nc), fun=myfun)
    x1 = x1.reshape((nr*nc,Nb))
    x1 = x1.sum(axis = 1)
    x = x1.reshape((nr,nc))

    return x
...