lrh111 发表于 2020-4-24 21:09:30

矩阵分块求助

如何将矩阵进行8×8的分块然后再进行DCT变换,以下是我写的代码,Y矩阵宽高一致(我使用了512×512的矩阵)时代码可以运行,但是宽高不一致(如960×544)时便会报错,请问有什么解决办法吗???谢谢大家!!!
Y是需要处理的矩阵,ry、cy是Y矩阵的宽度和高度。

hdata = np.split(Y, ry / 8)
    for i in range(0, ry//8):
      blockdata = np.hsplit(hdata, cy / 8)
      for j in range(0, cy//8):
            block = blockdata
            Yb_dct = cv2.dct(block.astype(np.float))

jkluoling1992 发表于 2020-4-24 22:08:52

那就加一个 assert 判断呗,长宽不相等就报错,还有就是用reshape??

lrh111 发表于 2020-4-25 20:15:54

jkluoling1992 发表于 2020-4-24 22:08
那就加一个 assert 判断呗,长宽不相等就报错,还有就是用reshape??

谢谢!!如果不适用reshape的话有没有别的方法对矩阵进行8×8分块呢?

jkluoling1992 发表于 2020-4-25 22:17:44

lrh111 发表于 2020-4-25 20:15
谢谢!!如果不适用reshape的话有没有别的方法对矩阵进行8×8分块呢?

{:10_257:}木有,百度吧

lrh111 发表于 2020-4-27 11:45:09

jkluoling1992 发表于 2020-4-25 22:17
木有,百度吧

好吧,谢谢你!我还有一个问题,对于分块后的矩阵进行dct变换之后,我想把8×8的dct块合并成原来的矩阵该怎么操作呢?

jkluoling1992 发表于 2020-4-27 11:56:11

lrh111 发表于 2020-4-27 11:45
好吧,谢谢你!我还有一个问题,对于分块后的矩阵进行dct变换之后,我想把8×8的dct块合并成原来的矩阵该 ...

numpy.concatenate

lrh111 发表于 2020-4-28 16:00:10

jkluoling1992 发表于 2020-4-27 11:56
numpy.concatenate

请问具体该怎么写呢?我不太了解这个函数的用法,在之前的代码之后添加block_dct = np.concatenate(Yb_dct , axis = 1) 又会报错{:10_266:}

永恒的蓝色梦想 发表于 2020-4-28 16:08:42

lrh111 发表于 2020-4-28 16:00
请问具体该怎么写呢?我不太了解这个函数的用法,在之前的代码之后添加block_dct = np.concatenate(Yb_dc ...

自己不会百度?

lrh111 发表于 2020-4-28 21:19:36

永恒的蓝色梦想 发表于 2020-4-28 16:08
自己不会百度?

我要是能找到会问?

永恒的蓝色梦想 发表于 2020-4-28 21:33:16

lrh111 发表于 2020-4-28 21:19
我要是能找到会问?

https://s1.ax1x.com/2020/04/28/JItn2Q.jpg
您找不着?
页: [1]
查看完整版本: 矩阵分块求助