python 上有没有MATLAB上blkproc函数类似的把矩阵,数组图像分块的函数,用于DCT变换?
展开全部
我在寻找有效地将图像分成小区域,每个区域分别处理,然后重新组装的每一个过程的结果进入GaGa的图像处理的好办法。 MATLAB不得不工具,这款名为blkproc(换成blockproc在新的Matlab的版本)。 在理想的世界中,将支持在输入矩阵司之间的函数或类重叠了。在Matlab的帮助,blkproc被定义为: Blkproc B=(A,[m×n个] CodeGo.net,[mborder nborder],乐趣,...) A是你的输入矩阵, [M n]是块大小 [Mborder,nborder]你是边境地区的大小(可选) 有趣的是适用于每个块的函数 我kluged在一起的方法,但它暨awk和bug还有更好的方法。在我自己的风险,这里是我的代码:
import numpy as np
def segmented_process(M, blk_size=(16,16), overlap=(0,0), 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)
R = np.random.rand(128,128)
passthrough = lambda(x):x
Rprime = segmented_process(R, blk_size=(16,16),
overlap=(0,0),
fun=passthrough)
np.all(R==Rprime)
具体访问http://codego.net/260720/
import numpy as np
def segmented_process(M, blk_size=(16,16), overlap=(0,0), 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)
R = np.random.rand(128,128)
passthrough = lambda(x):x
Rprime = segmented_process(R, blk_size=(16,16),
overlap=(0,0),
fun=passthrough)
np.all(R==Rprime)
具体访问http://codego.net/260720/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询