compression op• Data kinds: image2d → table
• Call: import fullseye as fs; fs.ledger.jpeg_quality_estimate(image, max_step: 'int' = 64, n_coeff: 'int' = 21) -> 'dict' (implementation को सीधे call करना हो तो import imgforensics; imgforensics.jpeg_quality_estimate(image, max_step: 'int' = 64, n_coeff: 'int' = 21) -> 'dict', registry से लेना हो तो opsimgforensics.get("jpeg_quality_estimate"))
• GPU: नहीं (केवल CPU reference implementation)
decode की गई image से quantisation table और JPEG quality का blind अनुमान लगाता है। table।
फ़ाइल के DQT को पढ़ने के बजाय, इसका अनुमान केवल पिक्सेल से लगाएं (यही बात है, भले ही छवि को पीएनजी में पुनः सहेजा/चिपकाया गया हो, मूल रूप से जेपीईजी गुणवत्ता एन'' प्रदर्शित होती है। दृश्यमान)। एक 8x8 ब्लॉक डीसीटी लें और प्रत्येक गुणांक के लिए कंघी की दूरी का अनुमान लगाएं (फैन एंड डी क्विरोज़ 2003), IJG के सार्वजनिक स्केलिंग नियमों का उपयोग करके बनाई गई मानक तालिकाओं के एक परिवार से। वह गुणवत्ता चुनें जो आपके लिए सबसे उपयुक्त हो।
वापसी (तानाशाही):
jpeg_compressed कितने n_coeff गुणांकों को संयोजित किया गया, इसके आधार पर निर्णय लेना
बूल. यह इस बात का प्रमाण नहीं है कि यह JPEG है (चेतावनी नीचे है)
गुणवत्ता अनुमानित गुणवत्ता 1..100 (यदि कोई कंघी नहीं है तो कोई नहीं) तालिका (8, 8) का अनुमानित परिमाणीकरण चरण (0 = अनुमानित नहीं) n_मात्राबद्ध डीसी को छोड़कर कॉम्बेड गुणांक की कच्ची संख्या n_tested = n_coeff - 1 fit_error चयनित गुणवत्ता मानक तालिका से पूर्ण अंतर का मतलब है चेतावनी यह संख्या क्या नहीं कह सकती
वास्तविक माप (tests/test_imgforensics.py::test_jpeg_quality_estimate_recovers_quality, पिलो के साथ 256x256 1/f^1.6 छवि को एन्कोड करें → डीकोड और अनुमान):
======= ========= =============== ============ सही Q अनुमान Q कॉम्बेड गुणांक फ़िट_त्रुटि ======= ========= =============== ============ 95 95 11/20 0.091 90 90 19/20 0.579 80 80 13/20 1.308 70 71 12/20 2.083 60 60 9/20 2.111 50 52 7/20 1.857 40 40 6/20 3.333 30 कोई नहीं 4/20 — ======= ========= =============== ============
यह एक सैद्धांतिक सीमा है कि यह निम्न गुणवत्ता पक्ष पर ढह जाता है। जैसे-जैसे गुणवत्ता घटती है, उच्च आवृत्ति गुणांक 0 हो जाता है। परिमाणित, और कंघी पढ़ने की सामग्री स्वयं छवि से गायब हो जाती है ("कंघी गुणांक" का कॉलम है यह कैसे गायब हो जाता है)। गुणवत्ता 30 पर, पर्याप्त सामग्री नहीं है और कोई अनुमान नहीं लौटाता(गुणवत्ता=कोई नहीं)। इस ऑप की डिज़ाइन नीति यहाँ उत्तर देने के लिए बाध्य करने की नहीं है।
और असम्पीडित पीएनजी के लिए jpeg_compressed=False / quality=None। (4 बीजों से पुष्टि, एक ही परीक्षण में तय)। सबसे अच्छी बात जो आप कर सकते हैं वह सिर्फ "गुणवत्ता 100" नहीं कहना है। इस मामले में, "असम्पीडित" और "वस्तुतः अविकसित जेपीईजी" एक ही उत्तर होंगे।
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।
• image_forensics_audit — py -3.11 examples/image_forensics_audit.py
table को input के रूप में लेते हैं)compression)error_level_map · jpeg_ghost_map · jpeg_ghost_quality
*Provenance: imgforensics.py — IMGFORENSICS operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.