【问题标题】:How to create single image from cell array of matrices in Matlab?如何从 Matlab 中的矩阵单元阵列创建单个图像?
【发布时间】:2015-03-07 18:15:57
【问题描述】:

我需要将灰度图像分成相等的部分,所以我使用了函数mat2cell。然后我必须分别均衡每个部分,为此我使用了函数histeq。我为此重用了相同的单元格数组变量。代码如下:

height=round(size(img,1)/number_of_divisions);
length=round(size(img,2)/number_of_divisions);
M=zeros(number_of_divisions,1);
N=zeros(1,number_of_divisions);
M(1:number_of_divisions)=height;
N(1:number_of_divisions)=length;
aux=mat2cell(img,M,N);

for i=1:size(aux,1)
    for j=1:size(aux,2)
        aux{i,j}=histeq(aux{i,j},256);
    end
end

那么现在如何将每个单元格合并为一个图像?

【问题讨论】:

  • 刚刚注意到您的第一条牵引线并不总是有效。对于大小 [1001,1001]number_of_divisions 它失败了。使用blockproc 的另一个原因
  • 是的,这是真的,谢谢。我一直在尝试自己发现它,但我仍然不明白blockproc 对当像素除以块数不是整数时不会“获取”的像素做了什么(原因它不适用于mat2cell)。你能给我解释一下吗?
  • blockproc 使用您传递的大小,如果需要,最后一行/列的块更小。

标签: arrays image matlab cell


【解决方案1】:

使用cell2mat

img2=cell2mat(aux);

为了获得更好的性能,请将您的代码替换为 blockproc

blocksize=ceil(size(img)./number_of_divisions);
img2=blockproc(img,blocksize,@(block_struct)histeq(block_struct.data));

【讨论】:

  • 是的,它成功了!我应该猜到了,matlab 对每个问题都有一个功能:D
猜你喜欢
  • 2023-03-16
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
相关资源
最近更新 更多