【发布时间】:2014-04-09 19:25:12
【问题描述】:
所以我正在 Matlab 中阅读一堆图像。
我感兴趣的图像部分是中心 32x32 像素最多的部分(实际图像中心的一个小方块)。
读入图像后,如何仅提取中心部分或 32x32 并将其存储在新的图像变量中?
提前致谢
【问题讨论】:
-
您的图像是 2D 还是 3D 数组?
所以我正在 Matlab 中阅读一堆图像。
我感兴趣的图像部分是中心 32x32 像素最多的部分(实际图像中心的一个小方块)。
读入图像后,如何仅提取中心部分或 32x32 并将其存储在新的图像变量中?
提前致谢
【问题讨论】:
如果您的图像不是 RGB,这可能会稍微简单一些,但为什么不涵盖更复杂的情况:
img = imread('image.png');
sz = size(img);
x = floor(sz(2)/2);
y = floor(sz(1)/2);
patch = img(y-15:y+16, x-15:x+16, :);
【讨论】:
, :,因为在这种情况下没有第三维
[y x] = size(...) 来避免中间向量 - 无论哪种方式,您最终都会得到几乎相同数量的代码,因此它是否真的“更简单”是值得商榷的。