กำลังตรวจหาไฟล์ภาพเปล่า


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 :

ลิงค์ที่สองยังมีส่วนที่ชื่อว่า "Blank Fax" ซึ่งจะอธิบายวิธีการตรวจจับหน้าแฟกซ์เปล่า น่าเศร้าที่ส่วนนั้นดูเหมือนยังไม่เสร็จ หวังว่าข้อมูลที่มีจะเพียงพอสำหรับคุณในการเริ่มต้น


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

เคล็ดลับของฉันคือการสแกนภาพในรูปแบบที่บีบอัดแบบไม่มีการสูญเสีย (การบีบอัด + การบีบอัด) ด้วยวิธีนี้หน้าว่างมีขนาดไฟล์ที่ต่ำกว่ามากและฉันสามารถตรวจจับพวกมันด้วยfindย้ายพวกมันไปยังไดเรกทอรีอื่นตรวจสอบพวกเขาอย่างรวดเร็วด้วยวิวเวอร์แล้วกำจัดมัน


0

คุณสามารถตัดแต่งเสียงดังด้วยImageMagickเช่น:

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

หน้าไม่ว่างเปล่าหากแปลงพิมพ์สิ่งนี้:

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

(อินพุตตัวอย่างคือรูปภาพ lineart สแกนขนาด 600 dpi DIN A4)

มันว่างเปล่าหากความสูง / ความกว้างหลังจากการตัดแต่งมีขนาดเล็กอย่างน่าสงสัยเช่น:

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

ตรงกันข้ามกับวิธีฮิสโตแกรมขีด จำกัด วิธีนี้จะสร้างผลบวกที่ผิดพลาดน้อยลงเมื่อคุณมีหน้าเว็บที่มีคำหรือบรรทัดข้อความ ด้วย threshold- ฮิสโตแกรมหน้าดังกล่าวสามารถตรวจพบอย่างผิดพลาดว่าว่างเปล่า

เมื่อดูที่ขนาดไฟล์ของอิมเมจที่ถูกบีบอัดนั่นคือการประมาณค่าเอนโทรปีจะให้ค่าบวกปลอมที่เหมือนกัน

ในทางกลับกันเอกสารที่มีรูพรุน แต่ว่างเปล่าไม่น่าจะถูกตรวจพบว่าว่างเปล่าด้วยการตัดแต่งที่มีเสียงดัง หากคุณสนใจสิ่งเหล่านั้นมันอาจเป็นเหตุผลที่จะบอกให้ ImageMagick ตัดพื้นที่ขอบโดยไม่มีเงื่อนไขก่อน ตัวอย่างเช่นหากรูปภาพถูกสแกนด้วย 600 dpi และคุณต้องการละเว้นระยะขอบ 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.