빈 이미지 파일 감지


8

scanimage양면 스캔을 지원하는 문서 스캐너 (Canon DR-2510C)와 함께 사용 하고 있습니다. 불행히도, SANE 드라이버는 빈 페이지 감지를 지원하지 않으므로 혼합 페이지 (단일 / 양면)를 사용하면 빈 페이지가 스캔 결과에 포함됩니다.

스캔 출력을 후 처리 할 때 빈 페이지를 자동으로 제거하고 싶습니다 .TIFF 또는 PNM 파일이 주로 흰색 픽셀로 구성되어 있는지 여부를 감지 할 수있는 명령 줄 도구를 찾고 있습니다.

어떤 아이디어?


이것이 lesmana의 답변을 바탕으로 내가 생각해 낸 해결책입니다.

for i in "${DEST_DIR}/out"*.pnm; do
  histogram=`convert "${i}" -threshold 50% -format %c histogram:info:-`
  white=`echo "${histogram}" | grep "white" | sed -n 's/^ *\(.*\):.*$/\1/p'`
  black=`echo "${histogram}" | grep "black" | sed -n 's/^ *\(.*\):.*$/\1/p'`
  blank=`echo "scale=4; ${black}/${white} < 0.005" | bc`
  if [ ${blank} -eq "1" ]; then
    echo "${i} seems to be blank - removing it..."
    rm "${i}"
  fi
done

DSP.SE에 관련 질문 : 빠른 빈 페이지 감지
maxschlepzig

답변:


0

ImageMagick 비교 도구를 사용하여 스캔 한 이미지를 "마스터"빈 페이지와 비교할 수 있습니다 . 내 ImageMagick-fu가 상당히 제한되어 있으므로 예제 명령을 제공 할 수 없습니다. RTFM 해야합니다 :

두 번째 링크에는 빈 팩스 페이지를 감지하는 방법을 설명하는 "빈 팩스"라는 제목의 섹션도 있습니다. 슬프게도 그 부분은 미완성 된 것 같습니다. 사용 가능한 정보가 충분하기를 바랍니다.


5

여기에 제공된대로 ImageMagik CLI 의 식별 기능을 사용 하십시오.

http://www.imagemagick.org/script/identify.php

명령으로 :

$ identify -format "%#" source.png

색상 수가 1이면 빈 페이지가 있습니다.

다음 명령을 사용할 수도 있습니다.

identify -verbose source.png

빈 이미지의 경우 표준 편차, 기울기 및 첨도는 0입니다.


1
%#이미지에 대해 계산 된 해시 값을 반환하며 %kimho 여야합니다 .
Nicolai

1

문제의 코드 버전이 약간 개선되었습니다.

#!/bin/bash

mkdir -p "blanks"

for i in "$@"; do
    echo "${i}"
    if [[ -e $(dirname "$i")/.$(basename "$i") ]]; then
        echo "   protected."
        continue
    fi

    histogram=$(convert "${i}" -threshold 50% -format %c histogram:info:-)
    #echo $histogram
    white=$(echo "${histogram}" | grep "white" | cut -d: -f1)
    black=$(echo "${histogram}" | grep "black" | cut -d: -f1)
    if [[ -z "$black" ]]; then
        black=0
    fi

    blank=$(echo "scale=4; ${black}/${white} < 0.005" | bc)
    #echo $white $black $blank
    if [ "${blank}" -eq "1" ]; then
        echo "${i} seems to be blank - removing it..."
        mv "${i}" "blanks/${i}"
    fi
done

변경 사항 :

  • 고정 된 위치에서 읽지 않고 이미지를 전달하여 인수로 확인하십시오.
  • 진행 보고서
  • 코드가 제대로 파일을 감지하지 않는 경우, 당신이 힌트를 제공 할 수 있습니다 (이미지의 이름으로 빈 파일을 만들 플러스 보호 즉, 앞의 점 a.pnm사용 touch .a.pnm)
  • 입력에 검은 색 픽셀이 없었던 오류 수정

1

내 트릭은 이미지를 무손실 압축 형식 (tiff + 압축)으로 스캔하는 것입니다. 이렇게하면 빈 페이지의 파일 크기가 훨씬 작아서로 감지하고 find다른 디렉토리로 이동하고 뷰어로 신속하게 확인한 다음 제거 할 수 있습니다.


0

ImageMagick 으로 노이즈 트리밍 을 수행 할 수 있습니다 . 예 :

convert image-0001.png -virtual-pixel White -blur 0x15 -fuzz 15% -trim info:

convert가 다음과 같이 인쇄되면 페이지가 비어 있지 않습니다.

image-0001.png PNG 4565x6129 4960x7016+279+816 8-bit Gray 0.000u 0:00.000

(입력 예는 600dpi DIN A4 스캔 선화 이미지입니다)

트리밍 후 높이 / 너비가 의심스러운 경우 비어 있습니다. 예 :

image-0001.png PNG 2505x40 4960x7016+0+6976 8-bit Gray 0.000u 0:00.000

임계 값 히스토그램 방법과 달리 단어 나 한 줄의 텍스트 만 포함 된 페이지가있을 경우이 오류가 적습니다. 임계 값 히스토그램을 사용하면 이러한 페이지가 비어있는 것으로 잘못 감지 될 수 있습니다.

압축 된 이미지의 파일 크기, 즉 엔트로피의 근사치를 보면 동일한 오 탐지가 생성됩니다.

반대로, 구멍이 있지만 비어있는 문서는 시끄러운 트림만으로 비어있는 것으로 감지되지 않을 수 있습니다. 이것에 관심이 있다면 먼저 ImageMagick에게 무조건 여백 공간을 잘라내라고 지시하는 것이 좋습니다. 예를 들어 600dpi로 이미지를 스캔하고 1 인치 여백을 무시하려는 경우 :

convert i1.png -shave 600x0 -virtual-pixel White -blur 0x15 -fuzz 15% -trim info:

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.