2010-03-19 8 views
1

스캔 된 이미지가 회전되기 때문에 C# 솔루션에서이를 수정해야합니다. 이 문제를 해결하려면 먼저 회전 각을 감지하고 이미지를 회전해야합니다. 이것은 우리의 문제에 대한 우리의 첫 번째 생각이었습니다. 그러나 스캔 한 이미지를 템플릿과 같이 만들면 이미지 뒤틀림이 더 정확할 것이라고 생각했습니다. 그런 다음 템플릿의 모든 좌표를 알고 있으므로 처리 할 수 ​​있습니다 ... 무료 SDK 또는 무료 솔루션을 C#으로 검색했습니다. 이 일을 돕는 것이 우리 일의 마지막 임무이기 때문에 큰 도움이 될 것입니다. 정말 고마워.C#에서 스캔 한 이미지의 회전 감지

답변

2

PrimeOCR 제품을 사용했습니다. 무료는 아니지만 비교 가능한 무료 프로그램을 찾을 수 없습니다.

+0

PrimeOCR에 대한 가격 책정 아이디어를 제공 할 수 있습니까? 감사합니다 – Andrew

+0

아니요, 죄송합니다. 나는 가격 책정에 관여하지 않았다. – David

1

따라서 어려운 부분은 페이지의 각도를 감지하는 것입니다.

템플릿을 완전히 제어 할 수있는 가장 간단한 방법은 쉽게 감지 할 수있는 기호 (예 : 검은 색 원)를 작성하고 템플릿에 3 개를 붙이는 것입니다. 그런 다음 그들을 감지하십시오 (단색 검은 원의 경우 채도가 높은 큰 블록의 픽셀을 찾으십시오).

그러면 좌표가 3 세트가됩니다. 상단 원, 왼쪽 원 및 오른쪽 원에서 서로 다른 거리에있는 모든 3 개의 원이있는 경우 어떤 원이 상단 원인지 확인하는 것이 매우 쉽습니다.

다음 회전 기능을 호출하십시오. 이 부분은 쉽고 이전에 완료되었습니다 (예 : http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-rotate).

편집 : 센터를 찾기가 쉽기 때문에 원을 제안했지만 직사각형도 작동해야합니다.

실제로 직사각형/원을 찾는 방법에 대해 더 자세히 알려면 모든 a × 픽셀 그룹의 평균 밝기 값을 취하십시오. 그 값이 b보다 큰 경우, a × a 픽셀 그룹은 사각형의 일부입니다. a와 b는 당신 자신을 생각해 내고 싶은 변수입니다.

flood-fill (또는 더 정확하게는 Connected Component Labeling) 그룹을 결과 픽셀과 함께 사용하십시오. 최종 결과는 직사각형을 제공합니다.

+0

우리는 이미 우리의 템플릿에 3 개의 직사각형을 붙였습니다. 그러나 스캔 된 이미지에서이 직사각형을 감지하고 회전 각 계산을위한 위치를 얻는 방법 이것은 이제 우리가 직면 한 것이지만 회전의 코드를 잘 사용할 수 있습니다. 회전 각도를 미리 감지하십시오 보다 XXXxxxxxxxxx를 –

+0

@ahmed : 추가 세부 사항을 추가했습니다. – Brian

+0

xxxxxxxxxxx보다 –

관련 문제