2013-10-24 10 views
1

현재 오프라인 서명 확인 작업을하고 있습니다. 그래서, 지금하고 싶은 것은 특정 서명 이미지에 대한 회전의 구체적인 가치를 찾는 것입니다. 이 경우 가로 축과 함께 서명의 기준선을 정규화하려고합니다.
. 당신은 코드에서 볼 수 있듯이
좀 코딩을하려고 노력했습니다Matlab에서 이미지를 자동으로 회전하는 방법은 무엇입니까?

v1(1) = column2 - column1; 
v1(2) = row2 - row1; 
v2(1) = column2 - column1; 
v2(2) = row1 - row1; 
x1 = v1(1); 
y1 = v1(2); 
x2 = v2(1); 
y2 = v2(2); 

dotproduct = (x1*x2 + y1*y2); 

v1mag = sqrt(x1*x1 + y1*y1); 
v2mag = sqrt(x2*x2 + y2*y2); 

costheta = dotproduct/(v1mag*v2mag); 
angle = acos(costheta); 

angleDeg = rad2deg(angle); 
angleDeg = uint8(angleDeg); 
angleDeg 

%B = imrotate(invImg,-(angleDeg),'bilinear'); 

는 변수 'angleDeg는'회전 각도의 값을 보유하고 있습니다. 전에는 imrotate() MATLAB을 사용했지만 문제는 'angleDeg'변수를 호출하는 대신 수동으로 각도 값을 입력해야한다는 것입니다. imrotate() 옆에 각도 값을 보유하는 변수를 호출하여 이미지를 회전하는 다른 방법/알고리즘이 있습니까?

+2

왜 회전 인수를'uint8'로 변환합니까? – Shai

+0

Shai has it - angleDeg가 음수 값을 취할 수있는 형식 인 경우 imrotate를 호출하는 방식에는 아무런 문제가 없습니다. '-angleDeg'의 출력을 확인하면 문제가 나타납니다. – nkjt

+0

나에게 도움을 주신 모든 분들께 감사드립니다. 내가 바보 같은 실수를 저지른 것처럼 보입니다. 코드가 이제는 잘 작동합니다. –

답변

0

왜 수동으로 각도를 입력해야합니까? angleDeg을 uint8에 왜 캐스팅합니까?

덧붙여서 regionprops 함수는 연결된 컴포넌트의 'Orientation'을 이진 이미지로 제공 할 수 있습니다. 이자형. 컴퍼넌트의 장축과 수평의 사이의 각도

관련 문제