템플릿 및 페이지의 두 개의 이미지가 있습니다.
템플릿을 인쇄 한 다음 스캔합니다.
이미지에는 각 각도마다 점이 있습니다.
스캔을 변환하고 회전 할 수 있고 크기가 다를 수 있으므로 (프린터의 비뚤어 짐 때문에 가로가 세로로 길어짐) 스캔의 네 지점을 템플릿에 매핑해야합니다.
각 지점의 위치가 있습니다.
Java에서 AffineTransform을 작성하여 스캔에 적용하려면 어떻게해야합니까?회전을 포함하여 다른 사각형에 맵핑
0
A
답변
0
기술적으로 당신은 수학적으로 어파 인 변형을 찾아 내고 모든 대상 픽셀의 소스 픽셀을 찾고 그 사이에 약간의 보간법을 사용하는 루프를 사용하여 자기 자신에 의해 적용 할 수 있습니다. 그러나 실제로는 시간 낭비입니다.
OpenCv와 같이 이미지 처리 라이브러리가 많이 있습니다.
0
발견 방법! 조금 혼란 스럽지만,이 coud가 누군가를 도왔 으면합니다. referenceMarker1..4가 마커 translatedMarker1..4가 스캔 마커
referenceMarker3 및 translatedMarker3 사용하지 않는 포인트입니다 가리키는 템플릿이며, enanchement이 완료 될 수 있습니다.
final double translationX = translatedMarker1.getX() - referenceMarker1.getX();
final double translationY = translatedMarker1.getY() - referenceMarker1.getY();
// Calculate translation, rotation and scaling of the sheet
final double originalDx = referenceMarker2.getX() - referenceMarker1.getX(); // X distance between reference markers
final double originalDy = referenceMarker2.getY() - referenceMarker1.getY(); // Y distance between reference markers
final double translatedDx = translatedMarker2.getX() - translatedMarker1.getX(); // X distance between translated markers
final double translatedDy = translatedMarker2.getY() - translatedMarker1.getY(); // Y distance between translated markers
final double angle = Math.atan2(translatedDy, translatedDx) - Math.atan2(originalDy, originalDx);
double scaleX = Math.sqrt(originalDx * originalDx + originalDy * originalDy)/Math.sqrt(translatedDx * translatedDx + translatedDy * translatedDy);
final double originalDx4_2 = referenceMarker4.getX() - referenceMarker2.getX();
final double originalDy4_2 = referenceMarker4.getY() - referenceMarker2.getY();
final double translatedDx4_2 = translatedMarker4.getX() - translatedMarker2.getX();
final double translatedDy4_2 = translatedMarker4.getY() - translatedMarker2.getY();
double scaleY = Math.sqrt(originalDx4_2 * originalDx4_2 + originalDy4_2 * originalDy4_2)/Math.sqrt(translatedDx4_2 * translatedDx4_2 + translatedDy4_2 * translatedDy4_2);
// Generate a transformation matrix
// Translate back
transformation.translate(referenceMarker1.getX() - translationX, referenceMarker1.getY() - translationY);
// Scale
transformation.scale(scaleX, scaleY);
// Rotate
transformation.rotate(-angle);
// Translate first marker to origin to rotate around that point
transformation.translate(-referenceMarker1.getX(), -referenceMarker1.getY());
관련 문제
- 1. 사각형에 다른 색상 적용
- 2. 다른 구조체를 사용하기위한 맵핑
- 3. 직사각형 위치를 다른 사각형에 바인딩
- 4. 하나의 사각형을 다른 사각형에 그립니다.
- 5. 레코드가 존재하면 맵이 맵핑되지 않으면 다른 맵핑 - BizTalk 맵핑
- 6. 사각형이 다른 사각형에 포함되어 있는지 확인하십시오.
- 7. 회전을 부드럽게하기
- 8. 재단을 포함하여 재단사를 포함하여
- 9. 다른 전개 환경에 대한 기본 서블릿 맵핑
- 10. NHibernate 맵핑
- 11. 사각형에 교차 사각형 사각형
- 12. 아이폰 OS : 다른 화상 회전을 통해 이미지
- 13. 다른 객체 회전을 기반으로 display 객체 이동
- 14. 사각형에 텍스트 렌더링
- 15. 사각형에 AffineTransform 사용
- 16. 내 사각형에 곡선 추가
- 17. Javafx 사각형에 Mouselistner 만들기
- 18. 사각형에 원 그리기
- 19. 특정 사각형에 UIWebView 포커스
- 20. OpenGL Icosahedron 텍스처 맵핑
- 21. OneToMany 맵핑 곳
- 22. 테스트 맵핑 바꾸기
- 23. GPS 좌표와 이미지 맵핑
- 24. 이미지를 "맵핑"하는 방법
- 25. C# WinForms는 사각형에 이름을 추가합니까?
- 26. 임의 모양의 CGPath를 사각형에 애니메이션하기
- 27. 텍스처 맵핑 원
- 28. 문자열을 사각형에 맞추는 방법은 무엇입니까?
- 29. 지정된 사각형에 맞게 텍스트 그리기
- 30. 개체 목록을 포함하여 개체를 다른 형식으로 변환하십시오.