2013-12-09 4 views
1

Я пытаюсь обрезать изображение, но не с прямоугольником (например, в imcrop()), но с полигоном с четырьмя углами. Я много искал и обнаружил, что мне нужно выполнить гомографию, чтобы перерисовать обрезанный многоугольник в прямоугольник.Обрезать и преобразовать изображение в Matlab

Так я использовал imcrop() выбрать полигон в изображении:

img = imread('pout.tif'); 
imshow(img); 
h = impoly; 
position = wait(h); 
x1 = min(position(:, 1)); 
x2 = max(position(:, 1)); 
y1 = min(position(:, 2)); 
y2 = max(position(:, 2)); 
BW = createMask(h); 

Как я мог бы использовать эти две вещи, чтобы обрезать область в виде многоугольника с четырьмя углами?

+0

Чтобы просто обрезать область, см., Например: http://stackoverflow.com/questions/20130210/ (используя 'imfreehand', но основная идея такая же для' impoly'). – nkjt

ответ

2

Прежде всего, это плохая идея, чтобы преобразовать изображение для обрезки. Это приведет к изменению содержания ROI с помощью артефактов из-за интерполяции при применении гомографии. Кроме того, если в один прекрасный день вы захотите превратиться в рентабельность инвестиций, определенную более чем на 4 пункта, этот подход больше не применяется.

Во-вторых, я внести некоторые незначительные изменения в сценарий, как это:

img = imread('circuit.tif'); 
imshow(img); 
h = impoly; 
position = wait(h); 
boundbox = [min(position(:,1)), .... 
     min(position(:,2)), .... 
     max(position(:,1))-min(position(:,1)), .... 
     max(position(:,2))-min(position(:,2))]; 
BW = createMask(h); 
img = imcrop(uint8(BW).*img, boundbox); 
imshow(img) 

Вы были почти там ... просто маскировать ROI изображения, которое вы хотите, и урожай с ограничительной рамки ROI , Здесь он помещает 0 вне маски; вы можете адаптироваться по-разному, если хотите.

1

функция Try "impoly" в MATLAB

см http://www.mathworks.in/help/images/ref/impoly.html

+0

Судя по этому вопросу, ОП уже пробовал «impoly». – nkjt

+0

@nkjt Это функция несовместимости. Сначала обратитесь к ссылке, приведенной выше. –

+0

Вы имеете в виду ссылку, в которой первый код синтаксиса 'h = impoly', появляется в коде OP выше? – nkjt

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

  • Нет связанных вопросов^_^