【问题标题】:Does the segmentation of the image into blocks depend on the size of that image?将图像分割成块是否取决于该图像的大小?
【发布时间】:2013-11-24 07:58:50
【问题描述】:

我前两天在how to segment the image into block中问过如何将图像分割成块。幸运的是,我得到了 Dear chappjc 的最佳答案。

[m,n] = size(Image);
numBlocksX = 10; numBlocksY = 10;
bsX = ceil(n/numBlocksX); bsY = ceil(m/numBlocksY);
numFullBlocksX = floor(n/bsX); numFullBlocksY = floor(m/bsY);
xBlocks = [repmat(bsX,numFullBlocksX,1); mod(n,bsX)*ones(mod(n,bsX)>0)];
yBlocks = [repmat(bsY,numFullBlocksY,1); mod(m,bsY)*ones(mod(m,bsY)>0)];
blockCell = mat2cell(Image,yBlocks,xBlocks);

我的问题:

我的图片尺寸为 160 x 160。 当我尝试将图像分割成 8 x 8 块,或 10 x 10,或 12 x 12 等时,代码运行良好。

但是当我尝试将图像分割成 22 x 22 的块数时,代码可以工作,但图像被分割成 21 x 21 而不是 22 x 22!!

分割是否取决于原始图像的大小?因为当我使用更大的图像时,图像被分割成 22 x 22。

我只需要你对我的问题的意见(如果分割取决于图像的大小?)

我需要你的帮助!

【问题讨论】:

  • 你有没有试过逐行浏览代码,看看你是否理解它的作用?
  • 真诚地不,我不明白所有的行,但它运作良好:)

标签: image image-processing matlab image-segmentation


【解决方案1】:

从某种意义上说,是的,分割将取决于原始图像的大小,因为可能会发生原始图像的 X 和 Y 维度的任一/两者都不能被 MxN 完全整除(您的块总数想有到底)。

您想如何处理 mod(n,bsX) 或 mod(m,bsY) 非零的情况?你可以让一些边界块的大小与其他的不同吗?如果不是,那么您必须更改图像大小,使得每个维度的大小都可以被块数完全整除(模 = 0)。

[m,n] = size(image);
numBlocksY = 13; numBlocksX = 11;
resized = imresize(image, [ (numBlocksY*ceil(m/numBlocksY) ), (numBlocksX*ceil(n/numBlocksY)) ]);
[o,p] = size(resized)
mod(o,numBlocksY)
mod(p,numBlocksX)

你会发现 mod 结果为零。调整大小的图像现在具有完全可被每个维度中所需的分割(块)数整除的大小。您剩下要做的就是使用正确的参数在调整大小的图像上调用 mat2cell - 但我将把它留给您。这样你仍然会有 MxN 块,但它们都是相同的大小。其中大小计算为:

blockXsize = o/numBlocksY;
blockYsize = p/numBlocksX;

您需要以某种方式使用这些尺寸才能正确调用 mat2cell。

【讨论】:

  • 感谢您的回答! :) ,, désolé 它是“into”而不是“int”,这是我的键盘出错了。那么有没有一种方法可以修改代码以便有可能将图像分割成更多的块?跨度>
  • 是的,当然。但这取决于您希望达到的最终结果。每个块是否必须具有相同的大小?我会这样认为。在这种情况下,您必须先调整图像大小。那么其他的一切就容易多了。
  • 没错。 @Christinia 您希望将 160 宽的图像分成 22 个水平块吗?例如,写出您希望每个块中有多少像素。从块大小到块数,代码在另一种方式下效果更好。
  • @Christina 我的意思是,您希望从 160 像素的 22 个块的结果中得到什么?每个单元格的大小是多少?没有办法最终得到 22 个相等大小的块或 21 个相等大小的块加上 1 个更小的块,所以这种方法的应用有限,抱歉。但是,可以将其修改为在末尾有一个更大的块...
  • 当然不是。像素不像实数那样连续。任何图像/块中必须有整数个像素。
猜你喜欢
  • 2013-01-17
  • 2017-05-24
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
相关资源
最近更新 更多