【问题标题】:Image Cropping using Predefined ROI Matlab使用预定义的 ROI Matlab 进行图像裁剪
【发布时间】:2013-12-06 11:14:39
【问题描述】:

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

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

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

如果我需要更多解释,请告诉我。

【问题讨论】:

  • 如果您的意思是裁剪更一般的形状,而不仅仅是矩形,请尝试使用inpolygon
  • 总而言之:您想获取imfreehand 结果并返回一个较小的图像(ROI 的边界框),图像值在 ROI 内部,0 的外部?

标签: image matlab crop roi


【解决方案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);

如果您已经以某种方式保存了 ROI,并且不想再次运行 imfreehand,那么您真正需要的是计算 BW(一个掩码,其中 ROI 内为 1,其他位置为 0)和边界框(在 ROI 周围紧密裁剪)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 2012-02-05
    • 2014-06-03
    相关资源
    最近更新 更多