2014-04-04 2 views
1

imellipse을 사용하여 관심 영역 (ROI)으로 타원을 선택했습니다. 문제는 내가 선택하고자하는 타원은 약 45도이며, imellipse을 사용하면 수평 또는 수직으로 90 도가되는 것 같습니다.관심 영역 (ROI)으로 타원 선택

어떻게하면 타원의 방향을 바꿀 수 있습니까?

감사합니다.

답변

1

타원 좌표를 회전해야합니다. 이처럼 :

npts = 1e4; 
t = linspace(0,2*pi,npts); 
theta = pi/4; 
aspect = [5 1]; % [x y] 
x = aspect(1)*sin(t+theta); 
y = aspect(2)*cos(t); 
plot(x, y); 

enter image description here


당신이, 당신이 정점을 추출 할 수있는 이미지에 타원을 그리는 imellipse를 사용하고 변환하려면 :

figure, imshow('pout.tif'); 
h = imellipse; 
exy = h.getVertices 
theta = pi/12; 
M = [cos(theta), sin(theta); -sin(theta), cos(theta)] 
exy_centered = bsxfun(@minus,exy,mean(exy)) 
exyRot = bsxfun(@plus,exy_centered*M,mean(exy)); 
hold on 
plot(exyRot(:,1),exyRot(:,2),'r') % orig: plot(exy(:,1),exy(:,2),'r') 

enter image description here

타원을 채우려면 다음과 같이하십시오. 마스크를 사용하십시오 roifill 또는 roipoly :

w=getfield(imfinfo('pout.tif'),'Width'); 
h=getfield(imfinfo('pout.tif'),'Height'); 
bw = roipoly(zeros(h,w),exyRot(:,1),exyRot(:,2)); 
+0

답장을 보내 주셔서 감사합니다. ROI가 '흰색'이고 나머지 이미지가 'balck'인 ROI를 선택하는 데 사용할 수 있습니까? –

+0

@ user3481560 물론, 이미지 처리 도구 상자가 있습니까? – chappjc

+0

예, 이미지 처리 도구 상자가 있습니다. 내가하고있는 프로그램의 한 부분 인'roi = imellipse;'는 제안을 어떻게 결합 할 수 있습니까? 고마워요. –