使用预定义的ROI Matlab进行图像裁剪

时间:2013-11-21 19:30:57

标签: image matlab crop roi

基本上我要做的是使用预定义的ROI来裁剪和成像到多个新图像。

更长的是我有一张大脑地图,其中有部分定义。使用它我使用imfreehand或roipoly在MATLAB中定义了许多ROI。从那里我已经染色了这些部分的幻灯片。我想使用我从地图中定义的ROI来将真实大脑的图像裁剪成许多新图像。

找不到使用ROI作为裁剪区域的东西,而不仅仅是某个矩形。

如果我需要解释一下,请告诉我。

1 个答案:

答案 0 :(得分:1)

使用imfreehand我想您想要的简单示例:

I = imread('pout.tif');
imshow(I);
h = imfreehand; % now pick ROI

BW = createMask(h); % get BW mask for that ROI
pos = getPosition(h); % get position for that ROI

% define bounding box
x1 =  round(min(pos(:,2)));
y1 =  round(min(pos(:,1)));
x2 =  round(max(pos(:,2)));
y2 =  round(max(pos(:,1)));

I2 = I.*uint8(BW); % apply mask to image
I2 = I2(x1:x2,y1:y2);

figure;
subplot(1,2,1);
imshow(I);
subplot(1,2,2);
imshow(I2);

如果您已经以某种方式保存了投资回报率,并且不想再次运行imfreehand,那么您真正需要的是计算BW(在投资回报率和零点内的掩码)在其他地方)和边界框(在投资回报率周围紧缩)。