regarding cropping a polygon out of an image

조회 수: 6 (최근 30일)
ramakrishna bathini
ramakrishna bathini 2011년 2월 22일
hi folks can anybody help me with cropping a polygon out of the image?
i used the following code
I=dicomread('100.ima');
figure,imshow(I,[]);
h=impoly;
position=wait(h);
its providing the option for configuring the required polygon.i have also said it to copy figure.
how can i see only the cropped image?
can anyone help with imcrop()to see the output

채택된 답변

Jan
Jan 2011년 2월 24일
Do not use
imshow(x(~bw), []);
but
imshow(x, []);
"x(~bw)" is a vector and IMSHOW must fail.
What is the problem with the 2nd part of your program? If you just want to apply the IMCROP once, use something like "if z==1".
  댓글 수: 2
ramakrishna bathini
ramakrishna bathini 2011년 2월 24일
편집: Walter Roberson 2012년 8월 26일
clear all;
close all;
clc
I=dicomread('100.ima');
[x,y,I2,rect]=imcrop(I,[]);
figure,imtool(I,[]);
figure,imtool(I2,[]);
m=143;
imstack=zeros(512,512,m);
for z=1:m;
n=dicomread([num2str(z),'.ima']);
n=imcrop(n,rect);
M=shrinkWrap(n,'objthresh',15000,'biggest');
Ipore=n<400&M;
imstack(:,:,z)=Ipore;
end
y=double(imstack);
D = squeeze(y);
h = vol3d('cdata',D,'texture','2D');
view(3);
Update view since 'texture' = '2D'
vol3d(h);
axis tight; daspect([1 1 .4])
alphamap('rampup');
alphamap(.06 .* alphamap);
Thanks a bunch for your help.This is the complete code that is working..the code is asking only once for cropping and then applying those dimensions to all the 143 images and popping the output..
Jan
Jan 2011년 2월 25일
Does this mean, that you accept the answer?

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

추가 답변 (2개)

Jan
Jan 2011년 2월 22일
Do you want to crop a rectangle from the image? Or mask a polygone?
figure
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);
img(~BW) = 255;
img = img(x1:x2, y1:y2);
% Or if img is a 3D RGB array:
% img(~cat(3, BW, BW, BW)) = NaN;
% img = img(x1:x2, y1:y2, :);
figure;
image(img);
  댓글 수: 8
manoj sambasivam
manoj sambasivam 2012년 5월 16일
Hi Jan simon,i have small doubt sir, regarding the program.after i select the polygon , what should i do to crop the polygon out of image and save it separetely?
Image Analyst
Image Analyst 2012년 5월 16일
You do know that images have to be rectangular, don't you? You do know that you can't have a polygonal image, right? (Looks like your answer would be "no") Even if the information is in a polygon shape, you still have to have something (like zeros) to make it a rectangular image.

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


Alex Taylor
Alex Taylor 2012년 5월 16일
Also, if you DO intend to apply a polygon mask to an image, there are easier ways of doing it. The function roipoly is designed for interactively creating a mask of an arbitrary polygon:
doc roipoly
For example:
I = imread('pout.tif');
imshow(I);
BW = roipoly
Imasked = zeros(size(I),class(I));
Imasked(BW) = I(BW);
imshow(Imasked)
  댓글 수: 5
vidya
vidya 2012년 9월 10일
Maria,
I am looking for an answer to your second question, were you able to find a solution, if yes can you share, if not can someone help me too. I also am trying to find a method that can help process only selected image pixels within a polygon for colored images, -Many thanks for your help
Image Analyst
Image Analyst 2012년 9월 10일
It depends on what kind of process you want to do: area processes and point processes would be done in different ways. Area processes (like blurring) need masking while point processes don't necessarily need extra masking steps (for example taking the average = mean(grayImage(maskImage))). Why don't you start a new thread and upload your image and tell us what you want to measure?

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by