레이저 또는 잉크젯으로 인쇄 된 QR 코드를 스캔 할 때 오류가 발생합니다. 내가 제어 할 수있는 두 변환 단계 각각에서 사용하고있는 이미지 처리 매개 변수. 나는 종류의 "솔루션"을 생각해 냈지만 얼마나 견고한 지 알지 못한다. 나는 무엇이 진행되고 있는지 그리고 더 믿을만한 접근 방법이 있는지 이해하고 싶다.ZXing의 QR 코드 이미지 내에서 "흰색 얼룩"처리
필자는 입력으로받을 PDF 파일을 제어 할 수 없으며, 필자가 가지고있는 PDF 샘플 내에서 이미지를 검사하게하는 도구를 모르지만, 샘플은 일종의 회색 이미지입니다. 예를 들어, Acrobat Reader를 사용하여 QR 코드 셀 중 하나의 코너의 화면 스냅 샷을 볼 수 있습니다. 나는 검은 내부의 퍼지 원이 이미지 내에서 하나의 "밝은"픽셀을 나타내는 것으로 가정합니다.
내가sDevice=pnggrey
와 고스트 스크립트를 사용하여 PNG 파일로 PDF를 돌립니다. ZXing이 200dpi의 출력 해상도로 QR 코드를 인식하지 못했을 때 출력 픽셀 수를 100dpi로 변경하여 성공했습니다. 아마도 주변 픽셀 수가 더 많은 밝은 픽셀을 평균하여 결과 레벨이 나중에 ZXing이 작동하는 흑백 이미지로 이미지를 전환하는 데 사용 된 임계 값.
다음 이미지 처리 단계는 ZXing.rb Ruby 보석에서 가져온 것으로, ZXing의 LuminanceSource
및 GlobalHistogramBinarizer
에 대한 호출로 구성됩니다. 후자는 이진화를 위해 하나의 전역 검정 점을 사용하고 데스크톱 애플리케이션 용으로 HybridBinarizer
을 제안하지만 ZXing의 온라인 버전에서도 이미지가 손상 되었기 때문에 'HybridBinarizer'로 실험하지 않았습니다.
가 200dpi (실패) 이미지 :
100 dpi의 (후속하는) 이미지 :
업데이트 : 600dpi로의 PDF 변환 스캔 시도 및 그것은 또한 성공했다. 호기심, 나는 다음 내 휴대 전화에 인쇄 된 이미지의 사진을 가져다가 여기에 결과 JPEG의 모듈 중 하나의 폭파 버전입니다 : 예상대로
, 휴대 전화 QR 코드 앱을했다가 각도 나 거리에 관계없이 이미지를 인식 할 수 있습니다.
항상 그렇듯이 신속하고 사려 깊은 답변, Sean에게 감사드립니다. 회색/색상 변화를 얻기 위해 바이너리 이미징과 하프 톤을 결합한 디지털 장치로 인해 인쇄물의 비율이 점차 증가하고 있으므로 사진의 반 연속 특성은 카메라의 기능이라고 생각합니다. - 모션 유도 또는 합성 된 블러는 기본 이미지의 특성입니다. 자세한 내용은 업데이트 된 질문을 참조하십시오. –
예, 휴대용 카메라의 이미지는 하프 톤 처리를 제거하기에 충분한 저레벨 모션 블러와 부정확 한 포커스를 항상 갖습니다. 다운 샘플링 또는 라이트 블러 필터는 필요한 경우 동일한 효과를 얻을 수있는 저렴한 방법입니다. –
+1 도와주세요. 다운 샘플링은 가장 저렴하고 쉬운 것처럼 보이지만 해프 토닝 문제를 제거하면서 해상도를 최대화하도록 설정하는 방법에 대한 지침을 제공 할 수 있습니까? 또한 200에서 600으로 해상도를 높이는 것이 왜 효과가 있었는지 설명 할 수 있습니까? –