2010-12-10 2 views
1

TWAIN 라이브러리를 사용하여 그레이 스케일 이미지를 스캔하고 있습니다. 그런 다음 스캔 한 이미지의 각 픽셀을 프로그래밍 방식으로 조정하여 다양한 흰색과 검은 색 끝 점이 생깁니다. 따라서 블랙 포인트보다 작은 컬러 값을 갖는 픽셀은 블랙 포인트에 고정됩니다. 그리고 화이트 포인트보다 큰 컬러 값을 갖는 픽셀은 화이트 포인트에 고정됩니다. 또한, 사이에있는 모든 픽셀을 외삽합니다.TWAIN으로 스캔 한 이미지의 정밀도

내 문제는 계산을 수행하는 스캔 이미지가 컬러 채널 당 8 비트이기 때문에 계산에서 품질이 떨어지는 것입니다.

색상 채널 당 더 많은 비트 수를 사용하여 이미지를 얻는 방법이 필요하거나 스캐너가이 계산을 수행하도록 알려줘야합니다.

나는 Epson 제어판에서 흑백 끝점을 지정하고이 계산을 수행 할 수 있다는 것을 알고 있으며 정확도 문제가없는 것처럼 보입니다. 그래서 엡손 (Epson) 하드웨어에 특정한 작업을하고 있는지 궁금합니다. 불행히도 제 소프트웨어는 일반 프린터를 사용해야합니다.

누구든지이 문제를 해결할 방법을 알고 있습니까?

+0

이 질문은 C#이므로 도움이 될 것입니다. – akonsu

+0

코드 샘플을 원하십니까? 내 전환 코드에는 아무런 문제가 없으므로 게시하면 아무 것도 달성하지 못합니다. 내 문제는 스캔 한 이미지가 채널 당 8 비트로 제한된다는 것입니다. 그래서 다른 방법이 필요합니다. 그것은 가능하지 않을지도 모르지만, 나는 나가 놓치고 있는지 보는 것이 가치가있는 게시물이라고 생각했다. – Dan

+0

또한 히스토그램 창에서 흑백 끝점을 변경할 때 Gimp, Photoshop 또는 PSP가 수행하는 작업과 동일합니다. 또한 정확히 동일한 부정확성을 보여 주며, 이는 내 코드가 잘못되었다는 것을 증명합니다. 입력 텍스처가 8bpp라는 사실입니다. 그래서 엡손의 컨트롤 패널에있는 다른 것은 뭔가 다른 일을해야합니다 (예.8bpp 파일에 저장되기 전에 색 변환 수행). – Dan

답변

1

TWAIN 스캐너의 일부 모델 (주로 플랫 베드)은 채널당 8 비트 이상의 데이터를 전송할 수 있습니다.

귀하의 코드가 성공하면 당신은 16

에 ICAP_BITDEPTH를 설정할 수 있다면, 참조 TWPT_GRAY에 픽셀 유형 (ICAP_PIXELTYPE)를 설정 메모리 (TWSX_MEMORY)로 전송 메커니즘 (ICAP_XFERMECH)를 설정해야합니다

, 당신 그런 다음 메모리 (일명 버퍼링 된) 이미지 전송을 수행하고 16 비트/채널 데이터를 얻을 수 있습니다. 데이터가 10-12 상위 비트 (예 : 샘플 범위가 0..65535)이고 하위 비트가 잡음이라는 것을 알게 될 것입니다.

기본 이미지 형식 (DIB 및 PICT)이 16 비트/채널 데이터를 지원하지 않기 때문에 기본 전송 모드 (TWSX_NATIVE)를 사용할 수 없습니다. TIFF 또는 JFIF와 같은 16 비트/채널 데이터를 지원하는 파일 형식의 파일 전송 모드를 사용할 수 있습니다. 스캐너를 시험 사용해보기 만하면됩니다.

필자는 책상 위에 엡손 퍼펙션 V100 사진을 만들었습니다. 다른 엡손이이를 지원할 것이라고 확신합니다. 아마도 모든 퍼펙션 시리즈 일 것입니다. 참조 : Twister Report archive

을 그리고 당신은 스캐너의 UI에서 조정을 대조 할 때 예, 이유는이 8 비트 스캔 잘 작동하면 스캐너가 앰프의 게인을 조정하여 대비를 조정된다는 점이다 - 그래서에서 작업 아날로그 도메인. (효과적으로, 무한 비트/채널 ;-)

대부분의 플랫 베드에서는 ICAP_SHADOW, ICAP_HIGHLIGHT 및 ICAP_CONTRAST를 설정할 수 있습니다.이 레벨은 스캐너의 검정 레벨, 흰색 레벨 및 대비 설정과 동일한 효과를냅니다 UI. 그런 다음 아날로그 신호를 조정하면 8 비트의 고밀도 8 비트 histograms이 생성됩니다.

+0

장황한 게시물 주셔서 감사합니다. 방금 메모리 xfermech를 사용하여 시도했지만 16 비트로 설정하면 스캐너가 작동하지 않습니다. 그것은 단지 싼 스캐너입니다. 나는 그들의 고급 스캐너에서 테스트하기 위해 소프트웨어 버전을 클라이언트에 보냈습니다. – Dan

+0

Re. ICAP_SHADOW/HIGHLIGHT/CONTRAST - 나는 그 동안 잠시 뒤돌아 보았던 것을 기억하고있는 것처럼 보였습니다. 그러나 나는 틀린 것이 아닌 값을 외삽하는 것으로 보이지 않았습니다. 내가 잘못 기억하고 있음에도 불구하고 나는 이것들을 다시 보게 될 것이고, 내가 이것을 사용하지 않은 또 다른 이유가있다. – Dan