【问题标题】:Matlab - Matrix separate into submatrices [closed]Matlab - 矩阵分离成子矩阵[关闭]
【发布时间】:2012-06-29 14:33:31
【问题描述】:

我有一个家庭作业,其中有 640x480 的图像,我想将它分成 16x16 块。 有人可以告诉我该怎么做吗?如果可能的话,我想避免循环。 我已经尝试了几个小时,但没有运气......

【问题讨论】:

  • 哦,好吧,所以我假设您实际上希望有人像 Ben A 那样为您提供代码来执行此操作,甚至没有考虑它...从这里开始不是一个好方法。
  • 下次一定要包含你尝试过的代码。即使它不起作用。我们需要查看代码来帮助诊断问题。此外,发布它表明您已经付出了一些努力,而不仅仅是要求某人为您做作业。 (因为这完全违背了作业的目的,所以这样的帖子往往会被否决……很多。)

标签: matlab matrix split


【解决方案1】:

我认为最适合您的是使用 Matlab 函数blockproc。 如果您真的想获取块,请深入研究 matlab 代码,但我想您想对图像应用一些处理功能?假设您要进行一些图像压缩,然后通过将压缩函数和块大小作为参数提供给 blockproc 来调用它。

如果您想获取积木或没有可用的图像处理工具箱,请参阅here,您的问题实际上已被问过很多次(您甚至费心寻找它吗??)。

【讨论】:

    【解决方案2】:

    这可能不是最佳做法,但您可以根据需要做一些事情。它将允许您从生成的 40 x 30 二维矩阵中调用每个 16x16 块。

    注意:这只是一些打出来的代码,我自己没有测试过。

    如果你想把它解析成一个单元格数组,你可以这样做:

    %Original Image
    Image = imread(somefilename);
    
    %Block size desired (16x16)
    bsize = 16;
    
    % 40 and 30 come from dividing the 640 and 480 by 16 since you want 16x16 blocks.
    % result = mat2cell(Y, bsize*ones(1,40), bsize*ones(1,30))
    result = mat2cell(Y, bsize*ones(1,size(Image,1)/bsize), bsize*ones(1,size(Image,1)/bsize));
    

    【讨论】:

    • 非常感谢 m8,您的帮助很大
    • 如果有帮助,您的意思是“给我代码,这样我就不用动脑筋了”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多