How to extract a specific region in matlab ?

조회 수: 2 (최근 30일)
sufian ahmed
sufian ahmed 2017년 6월 25일
댓글: Image Analyst 2017년 6월 25일
I know the four coordinates of a trapezium or rectangle.Now i want to only extract this region and other things should be black. How can i do that ?
My test image
I want to do like this image:

답변 (1개)

Image Analyst
Image Analyst 2017년 6월 25일
Pass the coordinates into poly2mask() and use bsxfun() to mask
% Get the dimensions of the image. numberOfColorChannels should be = 3.
[rows, columns, numberOfColorChannels] = size(rgbImage);
% Create mask
mask = poly2mask(x, y, rows, columns);
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
  댓글 수: 2
sufian ahmed
sufian ahmed 2017년 6월 25일
why u take numof channels.??. as i saw there is no use here in u r code.. ?
Image Analyst
Image Analyst 2017년 6월 25일
Because if you leave it out,
[rows, columns, numberOfColorChannels] = size(rgbImage);
columns will be the number of columns times the number of color channels. For a full explanation, see http://blogs.mathworks.com/steve/2011/03/22/too-much-information-about-the-size-function/
Alternatively you could accept the size into a single variable, which will then be a vector but then to get the rows and columns, you will have to add an index 1 or 2 respectively:
% Get the dimensions of the image. numberOfColorChannels should be = 3.
imageSize = size(rgbImage);
% Create mask
mask = poly2mask(x, y, imageSize(1), imageSize (2));
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
I think the way I had it first is easier to understand. You could use ~ instead of numberOfColorChannels if you want:
[rows, columns, ~] = size(rgbImage);

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Convert Image Type에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by