जब जेपीईजी कई बार पुन: प्रभावित होते हैं, तो कौन से कारक "उत्पन्न होने वाले नुकसान" को रोकते हैं या रोकते हैं?


29

वर्षों से, मेरा मानना ​​है कि JPEG फ़ाइलों को कई बार पुनर्प्राप्त करने से धीरे-धीरे इसकी गुणवत्ता ख़राब हो जाएगी, जब तक कि वे एक अपरिचित गड़बड़ नहीं होतीं, जिस तरह से फोटोकॉपी की फोटोकॉपी बनाती है। यह सहज रूप से समझ में आता है क्योंकि JPEG एक हानिपूर्ण प्रारूप है। अन्य प्रश्नोत्तर भी हैं जो दावा करते हैं कि ऐसा है:

हालाँकि, मैंने यह भी पढ़ा है कि एक ही गुणवत्ता के स्तर पर JPEG को फिर से जोड़ने से छवि की गुणवत्ता ख़राब नहीं होगी । यह क्रमिक गिरावट के लिए काउंटर चलाता है जिसे कहीं और वर्णित किया गया है।

जब जेपीईजी फिर से शुरू होता है तो तकनीकी रूप से क्या होता है?  क्या खो रहा है और कैसे? क्या छवि वास्तव में बर्फीली गंदगी में बदल जाएगी जो टेलीविजन पर दिखाई देती थी? उन वीडियो के बारे में क्या है जो कई बार recompressed होने के बाद गिरने वाली छवियों को दिखाते हैं?

(कृपया हानिप्रदता की सामान्य अवधारणा पर हाथ न डालें और अपील करें।)

(यह सवाल, और इसके द्वारा अब तक आकर्षित किए गए उत्तरों, तकनीकी कारकों (विशिष्ट सेटिंग्स और छवि जोड़तोड़) पर ध्यान केंद्रित करते हैं जो एक जेपीईजी फ़ाइल को कई बार फिर से दबाए जाने पर छवि के क्षरण को रोकते हैं या रोकते हैं ।)





2
@MonkeyZeus कुछ (छोटे) छवि डेटा की राशि से खो दिया है गोलाई त्रुटि पर गुणवत्ता 100 Recompressing पर समान सेटिंग (जैसे 80) के रूप में करता है नहीं में परिणाम प्रगतिशील डेटा हानि। यह "सामान्य ज्ञान" है इस क्यू एंड ए को संबोधित करने का इरादा है।
xiota

1
@MonkeyZeus फ़ोटोशॉप में "100" और "80" (या "10, 11, 12") जैसे मूल्य मनमानी हैं - 100% दोषरहित नहीं है।
Mattdm

जवाबों:


32

लगभग सभी छवि गुणवत्ता नुकसान पहली बार होते हैं जब कोई छवि JPEG के रूप में संकुचित होती है। भले ही कितनी बार JPEG समान सेटिंग्स के साथ फिर से शुरू किया गया हो , लेकिन जनरेशनल नुकसान गोलाई की त्रुटि तक सीमित हैं।

  • एमसीयू की सीमाएं बरकरार हैं (8x8 ब्लॉक)।

  • Chroma सबसैंपलिंग अक्षम है।

  • लगातार DQT (एक ही गुणवत्ता सेटिंग)।

हालाँकि, राउंडिंग त्रुटियां प्रत्येक पुनरावृत्ति के लिए बड़ी हो सकती हैं जो उपरोक्त मानदंडों को पूरा नहीं करती हैं, और सभी मूल फ़ाइलों का बैकअप रखना समझदारी है।


JPEG संपीड़न एल्गोरिथ्म

  1. रंगस्थान परिवर्तित करें। अगर वांछित, downsample रंग जानकारी (क्रोमा सबसैम्पलिंग) (अस्पष्ट) । यदि अस्वीकृत नहीं किया गया है, तो सूचना का नुकसान राउंडिंग त्रुटि का परिणाम है ।

  2. विभाजन। प्रत्येक चैनल को 8x8 ब्लॉक (MCU = Minimal Coding Unit) में विभाजित करें। (दोषरहित)

    ध्यान दें: यदि क्रोमा सबसैम्पलिंग सक्षम है, तो मूल छवि के संदर्भ में MCUs प्रभावी रूप से 16x8, 8x16 या 16x16 हो सकते हैं। हालाँकि, MCU अभी भी सभी 8x8 ब्लॉक हैं।

  3. प्रत्येक MCU पर असतत कोसाइन ट्रांसफॉर्म (DCT)। सूचना का नुकसान गोलाई त्रुटि का परिणाम है ।

  4. परिमाणीकरण।  MCU के प्रत्येक सेल में मूल्य एक परिमाणीकरण तालिका (DQT) में निर्दिष्ट संख्या से विभाजित होता है। मान नीचे किए गए हैं, जिनमें से कई शून्य हो जाएंगे। यह एल्गोरिथम का प्राथमिक हानिपूर्ण भाग है।

  5. ज़िग-ज़ैग स्कैन। ज़िग-ज़ैग पैटर्न के बाद संख्या के अनुक्रम में प्रत्येक MCU में मानों को पुन: व्यवस्थित करें। परिमाणीकरण के दौरान होने वाले शून्य को एक साथ समूहीकृत किया जाएगा। (दोषरहित)

  6. डीपीसीएम = विभेदक पल्स कोड मॉड्यूलेशन। संख्या अनुक्रमों को ऐसे रूप में परिवर्तित करें जो संपीड़ित करना आसान हो। (दोषरहित)

  7. RLE = रन लंबाई एन्कोडिंग। लगातार शून्य संकुचित होते हैं। (दोषरहित)

  8. एन्ट्रॉपी / हफमैन कोडिंग। (दोषरहित)

जेपीईजी को फिर से तैयार करना

ध्यान दें कि रंग चैनलों और मात्रा का ठहराव केवल जानबूझकर नुकसानदेह कदम हैं । अब के लिए अलग-अलग राउंडिंग त्रुटि सेट करना, अन्य सभी चरण दोषरहित हैं। एक बार परिमाणीकरण हो जाने के बाद, कदम को पीछे हटाना और दोहराना समान परिणाम देता है। दूसरे शब्दों में, पुनः-परिमाणीकरण (समान DQT के साथ) दोषरहित है

सिद्धांत रूप में, एक पुनरुत्थान एल्गोरिथ्म बनाना संभव है जो पहले पास के बाद दोषरहित है। हालाँकि, ImageMagick में कार्यान्वयन के साथ, रंग स्थिर अवस्था में आने से पहले काफी हद तक शिफ्ट हो सकते हैं, जैसा कि ths की छवि में देखा गया है।

इष्टतम स्थितियों को देखते हुए, एक ही गुणवत्ता सेटिंग्स के साथ एक जेपीईजी को पुनः प्राप्त करना ठीक जेपीईजी में परिणाम होगा। दूसरे शब्दों में, JPEGs को फिर से जोड़ना संभावित रूप से दोषरहित है । व्यवहार में, JPEGs को पुनः प्राप्त करना दोषरहित नहीं है, लेकिन त्रुटि के अनुसार, और इसके द्वारा सीमित है। हालांकि गोलाई की त्रुटियां अक्सर शून्य में परिवर्तित हो जाती हैं , जिससे कि एक ही छवि फिर से बनाई जाती है, क्रोमा सबसम्पलिंग के परिणामस्वरूप महत्वपूर्ण शारीरिक परिवर्तन हो सकते हैं।

प्रदर्शन (समान गुणवत्ता सेटिंग)

मैंने निम्न bashस्क्रिप्ट लिखी है, जो किसी दिए गए गुणवत्ता सेटिंग में JPEG फ़ाइल को बार-बार पुनर्प्राप्त करने के लिए ImageMagick का उपयोग करता है:

#!/usr/bin/env bash
n=10001; q1=90
convert original.png -sampling-factor 4:4:4 -quality ${q1} ${n}.jpg

while true ; do
   q2=${q1}            # for variants, such as adding randomness
   convert ${n}.jpg -quality ${q2} $((n+1)).jpg
   #\rm $((n-5)).jpg   # uncomment to avoid running out of space
   n=$((n+1))

   echo -n "$q2  "
   md5sum ${n}.jpg
done

कुछ सौ पुनरावृत्तियों के लिए इसे चलाने के बाद, मैं md5sumपरिणामों पर भाग गया:

d9c0d55ee5c8b5408f7e50f8ebc1010e  original.jpg

880db8f146db87d293def674c6845007  10316.jpg
880db8f146db87d293def674c6845007  10317.jpg
880db8f146db87d293def674c6845007  10318.jpg
880db8f146db87d293def674c6845007  10319.jpg
880db8f146db87d293def674c6845007  10320.jpg

हम देख सकते हैं कि, वास्तव में, राउंडिंग त्रुटि शून्य में परिवर्तित हो गई है, और ठीक उसी छवि को बार-बार पुन: प्रस्तुत किया जा रहा है

मैंने इसे कई बार अलग-अलग छवियों और गुणवत्ता सेटिंग्स के साथ दोहराया है। आमतौर पर, स्थिर स्थिति तक पहुंच जाता है, और ठीक उसी छवि को बार-बार पुन: प्रस्तुत किया जाता है।

@ Mattdm के परिणामों के बारे में क्या ?

मैंने Ubuntu 18.04 पर Imagemagick का उपयोग करके mattdm के परिणामों को दोहराने का प्रयास किया है। मूल रॉथरपी में TIFF के लिए एक कच्चा रूपांतरण था, लेकिन अब यह उपलब्ध नहीं लगता है। इसके स्थान पर, मैंने बढ़े हुए संस्करण को लिया और इसे अपने मूल आकार (256x256) में घटा दिया। तब मैं बार-बार 75 में पुन: मिला जब तक मुझे अभिसरण नहीं मिला। यहाँ परिणाम (मूल, 1, n, अंतर) है:

Mattdm को दोहराने का प्रयास

मेरे परिणाम अलग हैं। वास्तविक मूल के बिना, अंतर का कारण निर्धारित करना असंभव है।

@ Ths के असेंबल के बारे में क्या ?

मैंने असेंबल के ऊपरी बाएं कोने से 90 तक अभिसरण तक छवि को फिर से दबाया। यह परिणाम (मूल, 1, एन, अंतर) है:

ths-montage को दोहराने का प्रयास

क्रोमा सबसैम्पलिंग को सक्षम करने के बाद, रंग तब तक बदलते रहते हैं जब तक स्थिर स्थिति नहीं पहुंच जाती।

चौथाई रंग-शिफ्ट

कम संख्या में सेटिंग में बदलाव करना

चर को संशोधित करके q2, गुणवत्ता सेटिंग समान रूप से वितरित मूल्यों के एक सेट तक सीमित हो सकती है।

q2=$(( (RANDOM % 3)*5  + 70 ))

सेटिंग विकल्पों की एक छोटी संख्या के लिए, संतुलन अंततः पहुंच सकता है , जिसे तब देखा जाता है जब md5 मान पुनरावृत्ति करना शुरू करते हैं। ऐसा लगता है कि सेट जितना बड़ा होगा, उतना ही लंबा समय लगेगा, और छवि जितनी खराब होगी, इससे पहले कि संतुलन तक पहुंचा जा सके।

संतुलन के लिए जो प्रतीत होता है, वह DCT गुणांक से पहले का गुणांक है जो क्वांटम मानों के सभी (या अधिकांश) को विभाज्य होना चाहिए। उदाहरण के लिए, यदि दो DQTs के बीच स्विच करना जहां DCT गुणांक को 3 और 5 द्वारा वैकल्पिक रूप से विभाजित किया जाता है, तो DCT गुणांक 15 तक विभाज्य हो जाएगा।

बड़ी संख्या में सेटिंग में बदलाव करना

Eeyore खुश नहीं है जब q2ऐसा बदला जाता है:

q2=$(( (RANDOM % 9)  + 90 ))

वीडियो बनाने के लिए, उपयोग करें ffmpeg:

rename 's@1@@' 1*.jpg
ffmpeg -r 30 -i %04d.jpg -c:v libx264 -crf 1 -vf fps=25 -pix_fmt yuv420p output.mp4

पहले 9999 पुनरावृत्तियों को देखना लगभग पानी उबालने जैसा है। प्लेबैक की गति को दोगुना करना चाहते हैं। यहाँ 11999 पुनरावृत्तियों के बाद Eeyore है:

11999 पुनरावृत्तियों, यादृच्छिक DQT

क्या होगा अगर एमसीयू सीमाएं बदल जाएं?

यदि परिवर्तन कई बार सीमित संख्या में होते हैं, तो बार-बार पुनर्संक्रमण स्थिर अवस्था में पहुंचने की संभावना है। यदि प्रत्येक पुनरावृत्ति में परिवर्तन होते हैं, तो संभवतः DQT के बदलने पर छवि उसी तरह से ख़राब हो जाएगी।

  • वीडियो में ऐसा होता है जो एक छवि को आयामों के साथ घुमाता है जो 8 से विभाज्य नहीं हैं।

संपादन के बारे में क्या?

संपादन के बाद पुनःसंयोजन का प्रभाव प्रदर्शन किए गए विशेष संपादन पर निर्भर करता है। उदाहरण के लिए, जेपीईजी की कलाकृतियों को कम करने के बाद उसी गुणवत्ता की सेटिंग में बचत करना समान कलाकृतियों को फिर से प्रस्तुत करेगा। हालाँकि, एक स्थानीय परिवर्तन को लागू करना, जैसे हीलिंग ब्रश, उन क्षेत्रों को प्रभावित नहीं करेगा जिन्हें छुआ नहीं गया था।

छवि गुणवत्ता में सबसे बड़ी गिरावट पहली बार होती है जब फ़ाइल किसी दिए गए गुणवत्ता सेटिंग में संकुचित होती है। बाद में एक ही सेटिंग के साथ पुन: जुड़ना राउंडिंग त्रुटि से अधिक किसी भी परिवर्तन का परिचय नहीं देना चाहिए। इसलिए मुझे उम्मीद है कि दिए गए क्वालिटी सेटिंग में एडिट-रेसेव साइकल को समान क्वालिटी सेटिंग के साथ सेव की गई किसी अन्य इमेज की तरह देखने के लिए (जब तक MCU की सीमाएँ बरकरार रहें और क्रोमा सबसम्पलिंग अक्षम हो )।

उन वीडियो का क्या?

  • दोषपूर्ण जेपीईजी कार्यान्वयन? ( फोटोशॉप से ​​10/12 पर 500 बार री-सेविंग। )

  • गुणवत्ता सेटिंग्स बदलना। (सबसे अधिक)

  • एमसीयू सीमाओं को बाधित करना। (फसल या सड़ )

  • अन्य युद्धाभ्यास जो छवि गुणवत्ता को कम करते हैं या जेपीईजी एल्गोरिथ्म में हस्तक्षेप करते हैं?

क्या मैं जेपीईजीएस के साथ अपने मूल को ओवर-राइट कर सकता हूं?

सभी मूल फ़ाइलों का बैकअप रखना समझदारी है, लेकिन यदि आप गलती से एक को ओवरराइट कर देते हैं, तो नुकसान की संभावना सीमित है। यह जेपीईजी में काम करने के लिए ठीक होगा जिसमें क्रोमा सबमैंपलिंग अक्षम है।

JPEG का उपयोग उन छवियों के लिए नहीं किया जा सकता है जो प्रति रंग 8 बिट से अधिक का उपयोग करते हैं।


5
चित्र लोड- एडिट- लूप के साथ काफी भिन्न है, यद्यपि। इस मामले में, बार-बार परिमाणीकरण गिरावट का कारण होगा।
ths

2
मैं सिर्फ एक ही स्क्रिप्ट के साथ उत्तर में के रूप में एक परीक्षण किया। यहाँ हर 20 वीं छवि का एक tp 100 है: i.stack.imgur.com/xtob6.jpg जो महत्वपूर्ण है।
ths

2
आह। मेरी छवि के साथ समस्या मिली। यदि आपके पास क्रोमा सबसैम्पलिंग चालू है, जो प्रगतिशील गिरावट की ओर जाता है।
ths

2
वह भी मिला। इसलिए क्रोमा सबसैम्पलिंग को सक्षम करने से स्थिर स्थिति में पहुंचने से पहले छवि में रंग बदल जाता है।
15 अगस्त को xiota

2
बार-बार लोड होने और ठीक उसी पैरामीटर का उपयोग करके सहेजने की संभावना नहीं होती, जो बिना किसी अतिरिक्त गुणवत्ता के नुकसान का परिचय देगा, क्योंकि अधिकांश इनपुट फ़ाइलों को लोड किया जा सकता है और अतिरिक्त राउंडिंग त्रुटि को पेश किए बिना फिर से सहेजा जा सकता है, और राउंडिंग त्रुटियों से प्रभावित होने वाली फाइलें संभवतः में बदल जाएगी। फ़ाइलें जो नहीं होगी। दूसरी ओर, चक्रों को बार-बार लोड करना / सहेजना जो कि संपीड़न मापदंडों के बीच वैकल्पिक होते हैं जो समान हैं लेकिन समान नहीं है जिसके परिणामस्वरूप प्रत्येक चक्र पर गोल त्रुटि हो सकती है।
सुपर

20

रीकंप्रेसन लॉस वास्तविक है, खासकर जब जेपीईजी संपीड़न के उच्च स्तर के साथ काम करना।

सिद्धांत रूप में, यदि आप ठीक उसी मापदंडों के साथ JPEG फ़ाइलों को फिर से सहेजते हैं और अपनी फसल को 8 × 8 ब्लॉकों में संरेखित करते हैं, तो गिरावट कम से कम होनी चाहिए। हालाँकि, यदि आप उच्च स्तर के संपीड़न का उपयोग कर रहे हैं, तो आपको आगे की हानि दिखाई देगी, क्योंकि प्रारंभिक संपीड़न द्वारा प्रस्तुत की गई कलाकृतियाँ छवि में स्थायी परिवर्तन हैं और फिर से संकुचित हो जाएँगी, जिससे अधिक कलाकृतियाँ बन जाएँगी।

यदि आप कम स्तर के संपीड़न (उच्च गुणवत्ता, जैसे जिम्प में "100" या फ़ोटोशॉप में 11 या 12) के साथ फिर से बचत करते हैं, तो किसी भी नए जोड़े गए कलाकृतियों को नोटिस करना मुश्किल होगा। यह छवि को किसी भी बेहतर नहीं बनाएगा , लेकिन इससे भी बदतर नहीं। हालाँकि, यह संपूर्ण छवि में परिवर्तन पेश करेगा

एक त्वरित परीक्षण के रूप में, मैंने 75% से अधिक की JPEG छवि को फिर से खोलने के लिए ImageMagick का उपयोग किया। नीचे दिए गए नमूने PNG फ़ाइलों के रूप में अपलोड किए गए हैं ताकि आगे पुनर्मूल्यांकन से बचने के लिए, और आकार में दोगुना हो गया जब मैंने प्रभाव को और अधिक स्पष्ट करने के लिए PNG में परिवर्तित किया। (परीक्षण में उपयोग किए गए मूल दोगुना नहीं थे।) यह पता चलता है कि आठ पुनरुत्थान के बाद, प्रभाव पूरी तरह से स्थिर परिणाम में परिवर्तित हो जाता है, जहां पुनर्संयोजन से बिट-फॉर-बिट समान फ़ाइल में परिणाम होता है।

यहाँ मूल मूल है:

मूल, कोई jpeg संपीड़न नहीं

यहाँ 75% JPEG जाने का परिणाम है:

पहला jpeg

और यहाँ है कि फिर से शुरू:

दूसरा पास

उस सिंगल सेकेंड सेव से बड़ी मात्रा में अतिरिक्त क्षरण होता है!

और यहां अंतिम रूपांतरित छवि (8 वीं पास) है:

जेपीजी परिवर्तित

फिर से, रंग निश्चित रूप से और भी अधिक बंद हो जाते हैं, जिसमें कुछ झूठे रंग पैटर्न भी शामिल हैं, और अवरुद्ध कलाकृतियाँ अधिक बाहर निकलती हैं। एल्गोरिथ्म अभिसरण करता है, लेकिन एक काफी अपमानित संस्करण के लिए। तो, ऐसा मत करो।

लेकिन यहाँ ९९% गुणवत्ता स्तर के साथ एक ही बात है, ९ पास के बाद (जिस बिंदु पर यह आगे गुजरता है वह समान है):

९९% ९ बार

यहाँ, अंतर बमुश्किल रजिस्टर करता है। (मेरा मतलब है कि शाब्दिक रूप से उनकी तुलना पिक्सेल द्वारा गैर-संपीड़ित संस्करण से करें और विचलन बहुत मामूली यादृच्छिक ध्वनि है।) तो, क्या होगा यदि मैं उस पहले 75% छवि पर वापस जाऊं और फिर 99% पर फिर से लिखूं? खैर, यह, (सिर्फ एक बार के बाद):

75% एक बार और फिर एक बार 99%

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

उन वीडियो पर: मुझे यह एक शीर्ष Google हिट के रूप में मिला । ध्यान दें कि यह विवरण में कहता है:

यादृच्छिक उच्च गुणवत्ता सेटिंग्स (85 या इसके बाद के संस्करण) पर कई बार जेपीईजी छवि को फिर से एनकोड करने पर यही होता है ।

जोर दिया - यह बताता है कि कोई अभिसरण क्यों नहीं है, क्योंकि एक ही सेटिंग्स के साथ बचत करने या सुपर उच्च गुणवत्ता पर सहेजने के बजाय, हर बार यादृच्छिक सेटिंग्स का उपयोग किया जाता है

दूसरा वीडियो मैंने पाया कहते हैं:

एक JPEG छवि की प्रतिलिपि बनाई गई और प्रत्येक छवि के लिए एक पूर्ण क्रांति घुमाई गई। [...] (596 "दक्षिणावर्त घुमाएँ" क्रियाएं)

तो, फिर से, त्रुटियों को जमा रखने के लिए कुछ किया गया था।

किसी भी मामले में, व्यावहारिक फोटो संपादन के लिए , यह ध्यान देने योग्य है कि 75% एक बार की बचत 99% मिलियन बार फिर से शुरू करने की तुलना में बहुत खराब है । मेरे उदाहरण के मामले में, 75% पर कलाकृतियां इतनी स्पष्ट हैं कि आगे की गिरावट समुद्र में पानी डंप करने की तरह है। यदि आप उच्च स्तर पर बचत करते हैं कि ये कलाकृतियां वास्तव में दिखाई नहीं देती हैं, तो मूल सेटिंग्स के साथ फिर से बचत करना एक अच्छी रणनीति है। बेशक, अगर आप हमेशा असम्पीडित मूल से काम कर सकते हैं, तो आप बेहतर हो सकते हैं।

यदि किसी कारण से आपको JPEG के साथ काम करना है (या दृढ़ता से पसंद करना है), तो अपने कैमरे को उच्चतम गुणवत्ता में सहेजने के लिए सेट करें , भले ही आप प्रारंभिक फाइलों में अंतर को नोटिस न करें। देखें क्या यह पेंटाक्स की प्रीमियम जेपीईजी गुणवत्ता सेटिंग का उपयोग करने लायक है? उस पर अधिक के लिए - जरूरी नहीं कि वास्तव में पेंटाक्स विशिष्ट हो।


(1) आप 75% की बचत कर रहे हैं। उस सेटिंग में, छवि गुणवत्ता का नुकसान अपेक्षित है। (२) उस छवि को चयनित किया गया और जेपीईजी संपीड़न कलाकृतियों को अतिरंजित करने के लिए बदल दिया गया। (3) छवि 8 पुनर्संरचना दौर के बाद अभिसरण करती है, जिसके बाद छवि गुणवत्ता में और कमी नहीं होगी। (४) "जनरेशन लॉस" दिखाने वाली उस छवि का एक वीडियो पहले १/४ सेकंड के बाद पूरी तरह से कुछ भी नहीं होगा।
xiota

5
(1) हां। (2) "चयनित" एक विशिष्ट तस्वीर के रूप में जहां कोई इस तरह की परवाह कर सकता है। केवल "ज़ूम" करने के लिए ज़ूम इन करें। ध्यान दें कि यह केवल यहाँ प्रदर्शित करने के लिए है - मैं जिस छवि के साथ काम कर रहा था उसका आकार दोगुना नहीं था। (३) हां, लेकिन संपादन के लिए अभ्यास में, यह पहले कुछ दौर हैं जिनकी आपको परवाह हो सकती है। (४) यह सच है, लेकिन इसका मतलब यह नहीं है कि सबसे बुरे मामले में परिवर्तित होना और वहाँ रहना किसी भी तरह से उपयोगी है।
Mattdm

दोहराने के लिए, पहली छवि लें और किसी भी resampling या प्रक्षेप के बिना 256 × 256 का आकार बदलें।
Mattdm

मैं आपके द्वारा दिखाए गए चित्रों के बीच बहुत अंतर नहीं देख सकता । लेकिन अगर मैं एक सिंगल-रेम्प्रेस्ड और एक म्यूटली-रेम्प्रेस्ड इमेज का अंतर लेता हूं और इसे दृश्यमान बनाने के लिए इसे बढ़ाता हूं, तो मुझे यह (बहुत अधिक समझाने वाला) परिणाम मिलता है: i.stack.imgur.com/57uaY.png (मेरा डिलीट हुआ देखें ) वास्तव में क्या किया गया था इस पर जवाब दें) यह अधिक ठोस है क्योंकि लोगों को मिनट के अंतर का पता लगाने के लिए छवि को घूरते नहीं रहना पड़ता है।
शाबोलक्स

मतभेद बहुत छोटे हैं। यदि आपके पास एक बड़ी एलसीडी स्क्रीन है, तो अलग-अलग "व्यूमा" जो कि थोड़े अलग-अलग देखने के कोणों से उत्पन्न होते हैं, कलाकृतियों को अधिक प्रमुख बना सकते हैं।
xiota

5

पुनरावर्तन का छवि गुणवत्ता पर एक औसत दर्जे का प्रभाव पड़ता है और संपीड़न दरों को बदलते समय यह प्रभाव बहुत अधिक स्पष्ट होता है।

यहां एक त्वरित जांच के रूप में कुछ एसएसआईएम मानों के लिए एक परीक्षण छवि पर प्रदर्शन किया गया जिसमें लाइन विशेषताओं और निरंतर सुविधाओं का संयोजन होता है। मैंने JPG95 का चयन इसलिए किया क्योंकि मुझे विज्ञापन-फोटो स्कूल और JPG83 में उपयोग करना सिखाया गया था क्योंकि यह डिजिटल सामग्री प्रदाताओं में आम है।

  • TPG छवि को JPG95 - .9989 के रूप में सहेजें
  • JPG83 - .9929 के रूप में टिफ इमेज सेव करें
  • JPG95 के रूप में JPG95 छवि को 10 बार सहेजें - .9998
  • JPG83 के रूप में JPG83 छवि को 10 बार फिर से सहेजें - .9993
  • JPG83 के रूप में JPG95 को फिर से सहेजें और फिर JPG95 --9929 के रूप में सहेजें
  • JPG83 को JPG83 के रूप में फिर से बदलें, JP83 को JP92 को फिर JPG92 को JPG86 --9914 के रूप में सहेजें

तो एक ही संपीड़न में 10 बार resaving करने के लिए खोई संरचनात्मक समानता की मात्रा 1/10 वीं है जो टिफ़ से गुणवत्ता पर इसे बचाने के रूप में खो गई है। हालाँकि, JPG संपीड़न को एक बार बदलने से गुणवत्ता हानि एक ही है क्योंकि गुणवत्ता उस टिफ़ से JPG की छवि को बचाने के लिए खो गई है।

मैं इस परीक्षा को कुछ और तरीके से चलाऊंगा और अपडेट करूंगा।

पद्धति : ImageJ में:

  1. परिवर्तित टिफ़ आरजीबी 8-बिट ग्रेस्केल के लिए
  2. TPG ओरिजिनल से JPG95 और JPG83 को बचाएं
  3. निर्दिष्ट किए गए आगे के संचालन को संचालित करें
  4. तुलना चित्रों को लोड करें और SSIM Index Plugin का उपयोग करें

नोट: कई लोग पहली बार SSIM मूल्यों को देखते हुए उन्हें प्रतिशत के रूप में पढ़ते हैं और मानते हैं कि अंतर छोटा है। आवश्यक रूप से यह सही नहीं है। SSIM मानों को 1 से भिन्नता के रूप में मानने के बजाय एक दूसरे के सापेक्ष तुलना की जानी चाहिए।


@ सुकोता, मैं ImageJ के लिए एक SSIM प्लगइन का उपयोग कर रहा हूं। यह कुछ एसएसआईएम कार्यान्वयनों में से एक है जो मापदंडों के समायोजन की अनुमति देता है (मैं फ़िल्टर की चौड़ाई 8 करने के लिए सेट करता हूं ताकि यह 16px जेपीईजी ब्लॉकों के भीतर परिवर्तनों का पता लगाने की अधिक संभावना हो।) मैं एसएसआईएम को पसंद करता हूं क्योंकि यह ऊर्जा में अंतर के प्रति अधिक संवेदनशील है। पुनर्वितरण। एक अंतर छवि भ्रामक हो सकती है यदि मतभेद रद्द हो जाते हैं या मतभेद एक छोटे से क्षेत्र में केंद्रित होते हैं।
फोटोसिस्टिस्ट

और आपके दूसरे प्रश्न के लिए, जो कहता है कि JPG95 से JPG83 तक JPG95 में जाने वाला अंतर Tiff से JPG83 तक जाने के समान है। यदि आप Tiff-JPG95-JPG83-JPG95, जो है ।9923
PhotoScientist

चार अलग-अलग संपीडनों के साथ एक प्रयास जोड़ा गया। नुकसान अभी भी अधिक है, लेकिन यह स्पष्ट है कि एक ही संपीड़न की कई पीढ़ियों पर देखा गया "अभिसरण" भी कई अलग-अलग संपीड़ितों की कोशिश करते समय मौजूद होता है। अभी भी एक app- केंद्रित वर्कफ़्लो में यह कोशिश करना चाहते हैं, लेकिन यह थोड़ा अधिक लेगवर्क लेता है।
फोटोसिस्टिस्ट

एक और मुद्दा यह है कि SSIM थ्रेसहोल्ड के लिए "गुणवत्ता" सेटिंग्स का एक मानक मानचित्रण नहीं है, और न ही यह निर्धारित करने का कोई तरीका है कि जानकारी के महत्वपूर्ण नुकसान से बचने के लिए गुणवत्ता सेटिंग की आवश्यकता क्या होगी। यदि कोई JPEG लोड करता है और इसे उच्च सेटिंग पर सहेजता है, तो अतिरिक्त गुणवत्ता हानि से बचा जा सकता है लेकिन फ़ाइल संभवतः बड़ी हो जाएगी। यदि किसी को यह पता नहीं है कि किसी फ़ाइल का उत्पादन करते समय सेटिंग का उपयोग किया गया था, तो यह निर्धारित करना कठिन हो सकता है कि इसे दोबारा सहेजते समय किस सेटिंग का उपयोग किया जाए।
सुपरकैट

4

कुछ प्रयोग जैसा कुछ नहीं। निम्न बैश स्क्रिप्ट (लिनक्स पर लिखी गई, यदि आप ImageMagick है तो OSX पर काम कर सकते हैं ):

  • पहली छवि के साथ शुरू (नाम step000.jpg)
  • JPEG फ़ाइल लेता है, एक सफेद बिंदु जोड़ता है (यह साबित करने के लिए कि यह एक नई छवि है) और इसे एक (दोषरहित PNG) के रूप में सहेजता है
  • PNG लेता है, और इसे JPEG के रूप में पुन: संपीड़ित करता है (इसलिए हम JPEG-to-JPEG को कभी भी संपीड़ित नहीं करते हैं, और यह अनुमान नहीं लगा सकते हैं कि सॉफ़्टवेयर सिर्फ एन्कोडेड ब्लॉक कॉपी करता है)
  • एक छवि बनाता है जो दो जेपीईजी के बीच अलग-अलग पिक्सेल दिखाता है
  • पिछले चरण के आउटपुट JPG का उपयोग करके कुल्ला और दोहराएं

परिणाम यह है कि:

  1. उच्च JPG गुणों में बहुत नुकसान नहीं है
  2. पीढ़ियों की एक छोटी संख्या के बाद, गोल-बंद त्रुटियां बस जाती हैं, चीजें किसी भी अधिक ख़राब नहीं होती हैं।

बेशक यह सब मानता है कि जेपीईजी प्रत्येक बार समान मापदंडों के साथ एक ही सॉफ्टवेयर द्वारा सहेजा जाता है।

#! /bin/bash
# Runs successive JPEG saves on an image to evaluate JPEG losses

# convert & compare command from imagemagick
# if you use a recent version of IM, set these variables to:
# compare="magick compare"
# convert="magick convert"
convert=convert
compare=compare

dotradius=2
defaultsteps=10
defaultquality=90 # default quality for "convert"

function usage {
        echo "Usage: $0 [quality [steps]]"
        echo ""
        echo "Where:"
        echo "       - 'quality' is the quality factor of the JPEG compression "
        echo "          (1-100, 100 is best, default is $defaultquality)"
        echo "       - 'steps' is the number of successive steps to perform"
        echo "         (default is $defaultsteps)"
        echo ""
        echo "Produces:"
        echo "   - successive saves of a JPEG image to test JPEG-induced losses."
        echo "   - compare images with the original file and the 1st JPEG save."
        echo ""
        echo "Starts from a 'step000.jpg' file in the current directory."
        exit 1
}

[[ -n "$3" ]] && { usage ; exit 1 ; }
steps=${1:-$defaultsteps}
quality=${2:-$defaultquality}    
dotcolor="white" # change this if the top of the image is too clear

echo "Running with $steps steps with quality $quality"

for step in $(seq $steps)
do 
    echo "Step $step of $steps"
    src=$(printf step%03d $(( $step - 1 )) ) 
    dst=$(printf step%03d $(( $step )) )
    dif=$(printf diff%03d $(( $step )) )
    # dot coordinates
    let cxc="2 * $dotradius * $step"
    let cxr="$cxc + $dotradius"
    let cyc="$dotradius * 2"
    let cyr="$dotsradius * 2"

    $convert $src.jpg -fill white -draw "circle $cxc,$cyc,$cxr,$cyr" $dst.png
    $convert $dst.png -quality $quality $dst.jpg
    rm $dst.png
    $compare $src.jpg $dst.jpg $dif.jpg
done

जब तक मैं परिणाम नहीं दिखाऊंगा, तब तक मैं आपको अपनी तस्वीरों के साथ प्रयोग करने देना चाहता हूं। पर्याप्त टिप्पणियों के साथ, मैं एक नमूना जोड़ूंगा।


1
मैं अलग-अलग सॉफ़्टवेयर चीज़ों के बारे में उत्सुक था। मैंने 7 अलग-अलग सॉफ्टवेयर से 7x को बचाने की कोशिश की। अंतर काफी बड़ा था इसलिए मैंने यह देखने के लिए इसे तोड़ दिया कि क्या प्रत्येक एप्लिकेशन को समान नुकसान हुआ था। एप्लिकेशन में से 1 सभी विविधता के लिए जिम्मेदार था। एक बार जब मैंने लाल हेरिंग को हटा दिया, 6x कार्यक्रमों से 6x बचाता है जैसा कि ImageJ से 6x बचाता है
PhotoScientist

कुछ बुरी तरह से कोड किए गए सॉफ़्टवेयर की संभावना है। यह भी संभव है कि विभिन्न एप्स से एल्गोरिदम को मिलाने से राउंड-ऑफ त्रुटियों को निपटाने से भी रोका जा सके।
xenoid

@ सुकोता, यह एक छोटा सा प्रोग्राम था जिसे FLEMinimizer कहा जाता था। मुझे यह भी याद नहीं है कि मैंने इसे पहले स्थान पर क्यों रखा था। अन्य लोग ImageJ, Matlab, Photoshop, FastStone Image Viewer, Ifranview, और CameraRaw थे। उन छह के बीच किसी भी कदम पर लगभग कोई भिन्नता नहीं थी।
फोटो साइंटिस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.