这个错误是因为左侧的 diff_blocks_img 是一个 8×8×3 的矩阵,而右侧的 color_block 是一个 block_size×block_size×3 的矩阵,其中 block_size 的值为 8。在循环中,我们将 color_block 复制到 diff_blocks_img 的特定位置,以突出显示差异块。

问题在于,我们尝试将 block_size×block_size×3 的 color_block 复制到 diff_blocks_img 的一个 block_size×block_size 子矩阵中,这会导致左侧和右侧的大小不匹配。因此,我们需要将 color_block 复制到 diff_blocks_img 的所有三个通道中,以使左侧和右侧的大小匹配。

为了解决这个问题,我们可以使用 repmat 函数来将 color_block 复制到所有三个通道中,使其大小与 diff_blocks_img 相匹配。具体来说,我们可以将右侧的代码修改为:

color_block_3ch = repmat(color_block, [1, 1, 3]); diff_blocks_img(row_idx, col_idx, :) = repmat(color_block_3ch, [1, 1, length(col_idx)]);

这样就可以将 color_block 复制到所有三个通道中了,同时也解决了左侧和右侧大小不匹配的问题

diff_blocks_img = repmatmodified_imgsk 113;color_block = repmat255 0 0 block_size block_size 1;for i = 1lengthdiff_blocks row_idx = diff_blocks_rowi-1block_size+1diff_blocks_rowiblock_size; col_

原文地址: https://www.cveoy.top/t/topic/hgyP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录