2012-09-14 3 views
3

이미지로 플롯 할 필요가있는 1024 X 256 극 데이터 (행 - 반경, 열 각도)가 있습니다. 이 파일 교환에서 얻은 m 파일은 (clickhere)입니다. 그러나 큰 이미지의 경우에는 속도가 느립니다. 나는 내가 고심하고있는 서프 기능을 사용하여 이것을하는 빠른 방법이 있다고 생각한다. (아래 코드 참조)MATLAB에서 극좌표 이미지 표시

data = data; % load any polar data 

depth = 4.5; %imaging depth in mm 

offset = 0.5; 

theta = [(0:2*pi/size(data,2):2*pi-1/size(data,2))]*180/pi; 

rho = [0:(depth-offset)/size(data,1):(depth-offset)-1/size(data,1)] + offset; 

[THETA,RR] = meshgrid(theta,rho); 

[A,B] = pol2cart(THETA,RR); 

figure 

surf(A,B,data,'edgecolor','none'), 

view(0,90) 

xlabel('x [mm]') 

ylabel('y [mm]') 

axis tight 

결과가 잘못되었습니다.

내가 뭘 잘못하고 있는지 알기! 감사합니다.

답변

3

그래, 문제는 간단하다 :

pol2cart Transform polar to Cartesian coordinates. 
    [X,Y] = pol2cart(TH,R) transforms corresponding elements of data 
    stored in polar coordinates (angle TH, radius R) to Cartesian 
    coordinates X,Y. The arrays TH and R must the same size (or 
    either can be scalar). ***TH must be in radians***. 

솔루션 : 는 180/PI

+0

아, 알겠습니다. 실수를 지적 해 주셔서 감사합니다! – hkf

1

는 M-파일의 접근 방식이 올바른지를 제거합니다. 하지만 당신 말이 맞아요, 아주 천천히 실행됩니다. 당신이 놓치고있는 부분은 데이터 자체가 극지방에서 직사각형으로 변하는 것입니다.이 부분은 어려운 부분입니다. 현재 좌표를 좌표로 변환하고 있지만 극좌표 데이터를 직교 좌표로 그리는 경우 (데이터에 직교 좌표를 부과합니다).

  1. 당신이 대상 픽셀 당 하나 개의 항목을 끌기 위해하고자하는 영역에 걸쳐 직교 격자 (meshgrid를) 생성 :

    당신은 정확하고 빠르게 얻을해야 접근이입니다.

  2. 극좌표로부터 값을 보간
  3. 사용 극성 인덱스 (이것은 계정 매트릭스 크기 및 촬상 깊이 고려한)하여 극성 화상으로 극성
  4. 스케일 지표로 극좌표하여 X/​​Y 직교 변수 변환 이미지, interp2 사용하여 원래의 X/Y meshgrid 점

그 과정이 의미가 있는가에서

  • 결과 이미지는 픽셀 위치와 직교 이미지 (이 빠르고 느린 과정을 만드는 것입니다)? 이미지 프로세싱에서는 대상 공간에서 시작하여 (원본 픽셀이 필요한 곳) 원본 이미지의 분수 픽셀 오프셋으로 뒤로 이동 한 다음 보간합니다.

  • +1

    피터 (Peter)에게 감사드립니다. 나는 당신의 기술이 다른 알고리즘이 내가 그가 fileexchange에서 발견 한 것을 사용하는 것이라고 생각한다. 그러나, 내 목적을 위해 나는 surf 함수를 사용하는 것으로 벗어날 수있다. – hkf