2013-11-21 3 views
1

В основном, я пытаюсь использовать предопределенные ROI для обрезки и изображения на несколько новых изображений.Кадрирование изображений с использованием предопределенного ROI Matlab

Дольше это то, что у меня есть карта мозга, с определенными ее частями. используя, что я определяю много ROI от него в MATLAB, используя imfreehand или roipoly. Оттуда у меня есть пятна слайдов из этих разделов. Я хочу использовать ROI, который я определил с карты, чтобы обрезать образ реального мозга во множество новых изображений.

Просто возникли проблемы с поиском того, что использует ROI как область обрезки, а не только какой-либо прямоугольник.

Если мне нужно объяснить немного больше, дайте мне знать.

+0

Если вы имеете в виду обрезку более общей формы, а не только прямоугольник, попробуйте использовать 'inpolygon' – Adiel

+0

Итак: вы хотите взять результат« imfreehand »и вернуть меньшее изображение (ограничивающее поле ROI) со значениями изображения внутри ROI и 0 на улице? – nkjt

ответ

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 и нулями в другом месте) и ограничивающая рамка (обрезать вокруг ROI).

Смежные вопросы