रिक्त छवि फ़ाइलों का पता लगाना


8

मैं scanimageएक दस्तावेज स्कैनर (कैनन 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

जवाबों:


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 होना चाहिए ।
निकोलई

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

(उदाहरण इनपुट एक 600 डीपीआई डीआईएन ए 4 स्कैन की गई रेखीय छवि है)

यह खाली है यदि ट्रिमिंग के बाद ऊंचाई / चौड़ाई संदिग्ध रूप से छोटी है, जैसे:

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

दहलीज हिस्टोग्राम विधि के विपरीत, यह कम झूठ-सकारात्मक पैदा करता है जब आपके पास ऐसे पृष्ठ होते हैं जिनमें सिर्फ एक शब्द या पाठ की एक पंक्ति होती है। थ्रेसहोल्ड-हिस्टोग्राम के साथ, ऐसे पन्नों को गलत तरीके से खाली पाया जा सकता है।

संपीड़ित छवि के फ़ाइल आकार को देखते हुए, यानी एन्ट्रापी के सन्निकटन के रूप में, एक ही झूठी सकारात्मक पैदावार देता है।

दूसरी तरफ, वेध के साथ दस्तावेज़ लेकिन अन्यथा खाली होने की संभावना है, केवल एक शोर ट्रिम के साथ खाली के रूप में पता नहीं लगाया गया है। यदि आप उन लोगों के बारे में परवाह करते हैं, तो यह संभव है कि पहले से ही कुछ मार्जिन स्पेस को बिना शर्त ट्रिम करने के लिए ImageMagick को बताएं। उदाहरण के लिए, यदि छवि को 600 डीपीआई के साथ स्कैन किया गया था और आप चारों ओर 1 इंच के मार्जिन को अनदेखा करना चाहते हैं:

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

0

%k प्रारूप के लिए उपयोग किया जाना चाहिए, क्योंकि यह रिटर्न करता है:

शांत: अद्वितीय रंगों की संख्या

उपयोग:

identify -format "%k" image.tif

स्रोत: https://imagemagick.org/script/escape.php

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.