필터 지우기
필터 지우기

Crop image with a polygon

조회 수: 24 (최근 30일)
Elie
Elie 2014년 2월 9일
댓글: D_coder 2020년 3월 21일
I'm new to matlab , i created a function that can detect an object in a picture , after this detection i want to corp the detected part (i drew a line around the detect area). i'm lost , i read some articles online which made a good use of the imcrop() function but i wasn't able to achieve my goal please help.
if true
%Get the bounding polygon of the reference image.
boxPolygon = [1, 1;... % top-left
size(boxImage, 2), 1;... % top-right
size(boxImage, 2), size(boxImage, 1);... % bottom-right
1, size(boxImage, 1);... % bottom-left
1, 1]; % top-left again to close the polygon
% Transform the polygon into the coordinate system of the target image. The transformed polygon indicates the location of the object in the scene.
newBoxPolygon = transformPointsForward(tform, boxPolygon);
%Display the detected object.
figure();
imshow(sceneImage);
hold on;
line(newBoxPolygon(:, 1), newBoxPolygon(:, 2), 'Color', 'R');
title('Detected Box');
end
This is my code i hope you direct me to the right track. Thank you

답변 (3개)

norliana khamisan
norliana khamisan 2015년 3월 17일
hello Elie, did you get the answer how to crop the detected part which is the boxPolygon? actually, I face same problem.could you help me how to crop the detected part (boxPolygon only).I've do some coding to crop the boxPolygon but it was error..i don't know why..thank you in advance.
  댓글 수: 1
Image Analyst
Image Analyst 2015년 5월 18일
You should probably start your own question in a new/different thread. Post your image and show the desired output image.

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


Image Analyst
Image Analyst 2014년 2월 9일
I don't understand why you're doing. Why are you transforming points into a target image? What is the target image? If you just want to crops why don't you just call imcrop:
croppedImage = imcrop(yourImage, boxPolygon);
  댓글 수: 5
Image Analyst
Image Analyst 2019년 10월 17일
The rectangle 1x4 vector is [minX, minY, width, height], which is not what you had. You can also do cropping with indexing to known rows and columns:
croppedImage = originalImage(row1:row2, column1:column2, :);

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


Mehdi Saberioon
Mehdi Saberioon 2015년 3월 20일
you can use
roipoly
for cropping image in polygon format
  댓글 수: 3
dhia jamaa
dhia jamaa 2015년 5월 18일
편집: dhia jamaa 2015년 5월 18일
  • roipoly returns a binary image that you can use as a mask. so the result is a black and white image. the white region is the region that you selected. you can then replace the white region with the original photo.%%%%% matlab code
input = imread (I)
%coordinates of selected area
r=[40 204 267 102];
c=[136 125 210 219];
BW=roipoly(input,r,c);
%replacing white area with the desired image
out=zeros(size(BW,1),size(BW,2));
for i=1:size(BW,1)
for j=1:size(BW,2)
if BW(i,j)==1
out(i,j)=gray(i,j);
end
end
end
end
imshow(out)
i hope this is helpful
Image Analyst
Image Analyst 2015년 5월 18일
Instead of that for loop, you could have simply done
out = gray .* uint8(BW);

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

카테고리

Help CenterFile Exchange에서 Build Interactive Tools에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by