यह पेज हिन्दी में दिखाया जा रहा है, क्योंकि आपका ब्राउज़र यही भाषा माँगता है।
इस पेज का कोड चालू नहीं हुआ।
index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए कुछ तस्वीरें चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:
ऊपर फ़ाइल चुनते ही यह खुल जाएगा।तैयार — इंटरनेट काट दीजिए, यह फिर भी चलता रहेगा।इस ब्राउज़र में उपलब्ध नहीं (बाकी सब फिर भी चलता है)।ऑफ़लाइन कैश के लिए https:// या localhost चाहिए।यहाँ कैश नहीं हो सकता, पर अपलोड फिर भी कुछ नहीं होता।आपकी फ़ाइलें कहीं नहीं गईं। {total} फ़ाइलें लोड हुईं, और वे सब इसी साइट की अपनी हैं। {platform}किसी चीज़ ने {hosts} से संपर्क किया, और यह टूल ऐसा कभी नहीं करता। यह देखने लायक बात है। {platform}विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को न कोई फ़ाइल मिली, न उसका एक बाइट।विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को न कोई फ़ाइल मिली, न उसका एक बाइट।कुछ गड़बड़ हो गई: {detail}। दोबारा शुरू करने के लिए पेज फिर से लोड कीजिए।{count} फ़ाइल पढ़ी जा रही है…{count} फ़ाइलें पढ़ी जा रही हैं…कोई उदाहरण आज़माइएउदाहरण बनाया जा रहा है…यह ब्राउज़र उदाहरण नहीं बना सका। इसके बजाय कोई फ़ाइल चुनिए।
इमेज स्टैकर — एक बर्स्ट को जोड़िए, RAW फ़ाइलें भी
बीस फ़्रेम एक में, न बीस अपलोड, न कोई RAW कन्वर्टर।
● यह टूल तस्वीरें कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।
हर फ़्रेम को खोलना, डीकोड करना, सीध में लाना, जोड़ना और लिखना, यह सब आपका अपना ब्राउज़र आपकी अपनी मशीन पर करता है। 60 MB की बीस RAW फ़ाइलें करीब एक गीगाबाइट तस्वीरें होती हैं, और उसका एक बाइट भी हिलता नहीं। इस टूल में नेटवर्क का कोई काम है ही नहीं, और फ़ाइलें सीधे आपकी डिस्क से वह worker पढ़ता है जिसके पास कुछ भेजने के लिए कोई जगह ही नहीं है।
✗ कोई अपलोड नहीं
✗ कोई अकाउंट नहीं
✗ कोई वॉटरमार्क नहीं
✓ RAW पढ़ता है
✓ ऑफ़लाइन चलता है
✓ ओपन सोर्स
लाइव जाँच:जाँच जारी…
ऑफ़लाइन:जाँच जारी…
हमारी बात पर यकीन मत कीजिए। डेवलपर टूल्स खोलिए, नेटवर्क टैब देखिए, और RAW फ़ाइलों का एक फ़ोल्डर स्टैक कीजिए। एक भी रिक्वेस्ट में न कोई तस्वीर जाती है, न थंबनेल, न फ़ाइल का नाम, न कैमरे का मॉडल। या फिर इंटरनेट बंद कर दीजिए और तब भी स्टैक करके देखिए, टूल में कुछ नहीं बदलेगा।
प्राइवेसी का यह दावा कैसे जाँचा जा सकता है
आपकी तस्वीरों के जाने के लिए कोई जगह ही नहीं है। Content-Security-Policy में हर वह पता लिखा है जिससे यह पेज बात कर सकता है, और उनमें से एक भी इस साइट का नहीं है। यहाँ कोई ऐसा एंडपॉइंट नहीं है जहाँ आपकी फ़ाइलें जमा हो सकें, और कोड में ऐसा कुछ नहीं है जो होता तो भी उन्हें भेजता। न src/ में और न worker में कोई fetch, XMLHttpRequest या sendBeacon है।
RAW फ़ाइलें पढ़ी जाती हैं, अपलोड नहीं होतीं, और पढ़ी भी बस ज़रा-सी जाती हैं। किसी कैमरे की RAW फ़ाइल में पहले से एक पूरे आकार की JPEG होती है जिसे कैमरे ने शॉट लेते वक्त ही बनाया था। यह टूल डायरेक्ट्री की कुछ प्रविष्टियाँ टटोलकर उसे ढूँढ़ता है और फिर एक ही टुकड़ा माँगता है, जो 60 MB की फ़ाइल में आम तौर पर सौ किलोबाइट से कम होता है। काम करते हुए पेज आपको वह आँकड़ा आपकी फ़ाइलों के साइज़ के साथ दिखाता रहता है। सेंसर का डेटा तो कभी पढ़ा ही नहीं जाता।
काम इसी मशीन के एक Worker में होता है, किसी सर्वर पर नहीं। यहाँ worker इस्तेमाल करने वाला यही अकेला टूल है, क्योंकि स्टैक करना सेकंड नहीं बल्कि मिनटों का गणित है, और जमा हुआ पेज न प्रगति दिखा सकता है और न रद्द किया जा सकता है। Worker इसी ब्राउज़र के भीतर एक दूसरी धारा है, देखिए src/worker.js। उसे खुद फ़ाइलें सौंपी जाती हैं, जो मुफ़्त पड़ता है क्योंकि फ़ाइल का हैंडल उसके बाइट नहीं होता। और उस पर पेज जैसी ही Content-Security-Policy लागू है, यानी भेजने के लिए कोई जगह नहीं।
इस सेट के बारे में कहीं कुछ नहीं बताया जाता। आपने कितने फ़्रेम स्टैक किए, उन्हें किस कैमरे ने लिखा, हर एक कितना खिसका था, आपने कौन-सा तरीका चुना और उसमें कितना वक्त लगा, यह सब पेज बंद करने तक इसी पेज की मेमोरी में रहता है। इस रिपॉज़िटरी में कोई अलग एनालिटिक्स इवेंट नहीं है जो उसमें से कुछ ले जाए, और डाउनलोड के बाद यह साइट जो एक सवाल पूछती है वह अंगूठा ऊपर या नीचे और टूल का नाम भेजता है, और कुछ नहीं।
यह ऑफ़लाइन चलता है। नेटवर्क काट दीजिए और टूल वैसा ही रहेगा, क्योंकि इसमें नेटवर्क वाला कोई कदम कभी था ही नहीं। worker और उसके लोड किए हर मॉड्यूल को इसी पेज का अपना service worker कैश कर लेता है, इसलिए इंस्टॉल की हुई कॉपी नेटवर्क खींच लेने पर भी RAW फ़ाइलें स्टैक करती है।
खुद जाँच लीजिए। ऊपर लिखी किसी भी बात को भरोसे पर मानने की ज़रूरत नहीं। यह पेज रिपॉज़िटरी के टेम्पलेट और कॉन्फ़िग से बनता है, एक ऐसी बिल्ड स्क्रिप्ट के ज़रिए जिसे आप पढ़ भी सकते हैं और खुद चला भी सकते हैं। उसका नतीजा dist ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं:
सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए config/site.toml, RAW फ़ाइल मेगाबाइट के बजाय किलोबाइट पढ़कर कैसे खोली जाती है इसके लिए src/raw.js, हर तरीके के गणित के लिए src/stack.js, और पेज पर दिखने वाले मेमोरी व डीकोडिंग के आँकड़े कहाँ से आते हैं इसके लिए src/plan.js। वे उसी फ़ाइल के जवाब हैं, अंदाज़े नहीं।
अगर आपके दफ़्तर का सुरक्षा सॉफ़्टवेयर अपलोड की चेतावनी दे। वह उस पल पर नज़र रखता है जब ब्राउज़र में फ़ाइल चुनी जाती है, और यह नहीं जान सकता कि पन्ना उसे भेजने वाला है या नहीं — इसलिए चुनने पर ही चेतावनी देता है। यहाँ से कुछ नहीं भेजा जाता: ब्राउज़र के डेवलपर टूल खोलिए, Network पर जाइए, और एक फ़ाइल चुनिए। उसे ले जाने वाला कोई अनुरोध नहीं है, और पन्ने की अपनी स्थानीय झलक के अलावा कोई अनुरोध ही नहीं। यही जाँच आपकी IT टीम आधे मिनट में कर सकती है।
1 फ़्रेम चुनिए
RAW फ़ाइलें उस पूरे आकार की JPEG को पढ़कर खोली जाती हैं जो कैमरा पहले ही उनके भीतर लिख चुका होता है, यानी कुछ किलोबाइट डायरेक्ट्री और फिर एक टुकड़ा। सेंसर का डेटा कभी डीकोड नहीं होता, इसलिए 60 MB का फ़्रेम लगभग उतनी ही तेज़ी से खुलता है जितनी तेज़ी से कोई JPEG। नतीजे के लिए इसका क्या मतलब है।
सूची का क्रम बदलने के लिए किसी फ़्रेम को उसके ⋮⋮ हैंडल से खींचिए, या हैंडल पर फ़ोकस रहते ऊपर-नीचे के तीर दबाइए। क्रम आपका है: वह यहाँ की सूची भर है, और बाकी जिससे मिलाए जाते हैं वह आधार चिह्नित फ़्रेम है।
2 ये कैसे जुड़ेंगे
इससे आगे छोड़ दें कम रखने पर ज़्यादा छूटता है, और उसके साथ असली बारीकी भी छूटने लगती है। दो मानक विचलन आम शुरुआती जगह है।
साफ़पन कितने दायरे में नापा जाए बड़ा रखने पर किसी एक फ़्रेम से पूरे इलाके उठा लिए जाते हैं, और छोटा रखने पर बारीक ब्योरा पकड़ में आता है पर चिकना बैकग्राउंड फ़्रेमों के बीच बिखर सकता है।
1 फ़्रेम{count} फ़्रेमअभी कोई फ़्रेम नहींआधारइसे आधार बनाएँ{name} को खिसकाएँ — खींचकर, या ऊपर-नीचे के तीरों सेहटाएँ{width} × {height}RAW — कैमरे की अपनी झलक, {width} × {height}{camera} — {width} × {height} की झलकइस RAW फ़ाइल में कोई झलक नहीं मिली{total} में से {read} पढ़ा गयाहर फ़्रेम का औसत लेता है। यादृच्छिक नॉइज़ जितनी बार ऊपर जाता है उतनी ही बार नीचे, इसलिए {count} फ़्रेमों का औसत लेने से वह करीब {factor} गुना घट जाता है। यह शांत सेट के लिए सही तरीका है, और वही तरीका है जिसे एक अकेला उड़ता पक्षी बिगाड़ देता है।हर पिक्सल का बीच वाला मान लेता है। जो कुछ सिर्फ़ कुछ ही फ़्रेमों में था, जैसे कोई सैलानी, कोई गाड़ी, कोई हवाई जहाज़, वह गायब हो जाता है। यह अकेला ऐसा तरीका है जिसे हर फ़्रेम एक साथ पकड़े रखना पड़ता है, और इसीलिए इसे नीचे पट्टियों में बाँटा जा सकता है।सीखता है कि हर पिक्सल आम तौर पर क्या होता है, और फिर सिर्फ़ उन्हीं मानों का औसत लेता है जो उससे मेल खाते हैं। इसमें माध्यिका जैसा नतीजा और औसत जैसी नॉइज़ कमी दोनों मिलते हैं। यह फ़्रेमों को दो बार पढ़ता है।हर पिक्सल का सबसे चमकीला मान रखता है। छोटी-छोटी एक्सपोज़र की कड़ी को तारों की लकीरों में यही बदलता है, और आतिशबाज़ी को उसके अपने ही फ़्रेमों से यही जोड़ता है।हर पिक्सल का सबसे गहरा मान रखता है। कोई पिक्सल तभी चमकीला रहता है जब वह हर फ़्रेम में चमकीला रहा हो, इसलिए शीशे की परछाइयाँ, गुज़रती हेडलाइट और फ़्लैश से चमकी बारिश की बूँदें चली जाती हैं।फ़्रेमों को बिना भाग दिए जोड़ देता है, यानी जितना {count} गुना लंबी एक्सपोज़र ने बटोरा होता। यह उतना ही सफ़ेद पड़ जाता है जितना वह एक्सपोज़र पड़ती। एक्सपोज़र वाले स्लाइडर से इसे वापस ले आइए।तस्वीर का हर हिस्सा उस फ़्रेम से लेता है जिसमें वह साफ़ था। किसी छोटी चीज़ को फ़ोकस रिंग घुमाते हुए खींचिए, और यह साफ़ हिस्सों को जोड़ देता है।पता लगाता है कि हर फ़्रेम कितना खिसका था और उसे उतना वापस सरका देता है, पिक्सल के अंश तक। हाथ के हिलने और तिपाई के सरकने को ठीक करता है। घुमाव को ठीक नहीं कर सकता।इसके साथ घुमाव और पैमाना भी निकाल लेता है। हर फ़्रेम पर एक नाप ज़्यादा लगती है, और अगर फ़्रेम सीधे निकलें तो कुछ भी नहीं लगती। घुमाव हमेशा आधे चक्कर के भीतर ही वापस निकाला जाता है।फ़्रेमों को ठीक वैसे ही स्टैक करता है जैसे वे आते हैं। कसी हुई तिपाई या इंटरवल की कड़ी के लिए सही, और हाथ से ली गई किसी भी चीज़ के लिए गलत।हर फ़्रेम को ब्राउज़र का अपना डीकोडर इसी नाप में डीकोड करता है, इसलिए छोटी सेटिंग सिर्फ़ कम मेमोरी नहीं, कम काम भी है।गणित के बाद और पूर्णांकन से पहले, बिलकुल आखिर में नतीजे में गुणा किया जाता है।{count} फ़्रेम जोड़ने पर यह लगभग तय है कि सफ़ेद पड़ जाएगा। जो बटोरा गया है वह देखने के लिए इसे करीब {suggested} तक घटा दीजिए।{width} × {height}करीब {mb} MB{count}, हर फ़्रेम पर एक{count} — हर फ़्रेम, {passes} बार{count} — हर फ़्रेम, {bands} पट्टियों में से हर एक के लिए एक बारडिस्क पर {total} में से {read}यह एक बार में मेमोरी में नहीं आता, इसलिए तस्वीर {bands} पट्टियों में काटी जाएगी और हर पट्टी के लिए फ़्रेम दोबारा पढ़े जाएँगे। {suggested} चुनने पर यह एक ही चक्कर में हो जाता।यह एक बार में मेमोरी में नहीं आता, इसलिए तस्वीर {bands} पट्टियों में काटी जाएगी और हर पट्टी के लिए फ़्रेम दोबारा पढ़े जाएँगे। कम फ़्रेम या छोटा काम करने वाला रिज़ॉल्यूशन इसे एक ही चक्कर में बदल देते।{name} के भीतर देखा जा रहा है…{name} पढ़ा जा रहा है…{name} कितना हिला, यह नापा जा रहा है…स्टैक हो रहा है — {total} में से {done} फ़्रेम पढ़े गएस्टैक हो रहा है — {bands} में से पट्टी {band}, {total} में से {done} फ़्रेम पढ़े गएतस्वीर लिखी जा रही है…{width} × {height}, {size} — {count} फ़्रेम {seconds} सेकंड में जोड़े गएहर फ़्रेम नापकर अपनी जगह पर सरका दिया गया।{total} में से {count} फ़्रेम भरोसे से नापे नहीं जा सके और जहाँ थे वहीं रहने दिए गए।फ़्रेम ठीक वैसे ही स्टैक किए गए जैसे वे आए थे।{count} फ़्रेमों ने इतना घुमाव बताया जो किसी बर्स्ट के लिए बहुत ज़्यादा है, इसलिए उन्हें सिर्फ़ खिसकाकर ठीक किया गया।उन्हें अलग-अलग सरकाने से ऐसे किनारे बचे जहाँ हर फ़्रेम नहीं पहुँचता था, और वे काट दिए गए।पहले कम से कम एक तस्वीर जोड़िए।इनमें से कोई भी फ़ाइल तस्वीर की तरह नहीं खुली।स्टैक करने के लिए कम से कम दो फ़्रेम चाहिए।स्टैक करते समय कुछ गड़बड़ हो गई। अगर इनमें से कोई फ़ाइल कुछ अलग किस्म की है तो उसे अकेले आज़माइए।ब्राउज़र की मेमोरी खत्म हो गई। छोटा काम करने वाला रिज़ॉल्यूशन या कम फ़्रेम आज़माइए।{name} तस्वीर की तरह नहीं खुली और बाहर रह गई।और फ़्रेम जोड़ने से पहले इस स्टैक के पूरा होने का इंतज़ार कीजिए, या इसे रद्द कर दीजिए।आपकी तस्वीरें कहीं नहीं गईं। {total} फ़ाइलें लोड हुईं। {platform}किसी चीज़ ने {hosts} से संपर्क किया, और यह टूल ऐसा कभी नहीं करता। {platform}विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को कोई तस्वीर नहीं मिली।विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को कोई तस्वीर नहीं मिली।
क्या इससे काम बन गया?
क्या गड़बड़ हुई?
शुक्रिया — इससे मदद मिलती है।
सिर्फ़ आपका जवाब भेजा जाता है, वह भी तभी जब आप बटन दबाते हैं। आपकी फ़ाइल, उसका नाम या उससे जुड़ी कोई बात कभी नहीं।
# इमेज स्टैकर — एक बर्स्ट को जोड़िए, RAW फ़ाइलें भी
बीस फ़्रेम एक में, न बीस अपलोड, न कोई RAW कन्वर्टर।
> एक बर्स्ट में ली गई तस्वीरों को एक में जोड़िए। औसत लेकर नॉइज़ खत्म कीजिए, माध्यिका से दृश्य में से लोगों को हटाइए, तारों की लकीरों के लिए हल्का कीजिए, या किसी मैक्रो शॉट की फ़ोकस स्टैकिंग कीजिए। CR2, NEF, ARW, DNG, RAF और CR3 को कैमरे की अपनी झलक निकालकर पढ़ता है। सब कुछ आपके ब्राउज़र में ही चलता है।
यह पेज एक इंटरैक्टिव टूल है जो पूरी तरह आपके ब्राउज़र में चलता है, https://abox.tools/hi/stack-images/ पर — आप इसे जो भी देते हैं, वह कहीं अपलोड नहीं होता। आगे वह सब कुछ है जो यह पेज इस टूल के बारे में शब्दों में कहता है; इसे इस्तेमाल करने के लिए यह पता खोलें।
## यह टूल तस्वीरें **कभी अपलोड नहीं करता**। यहाँ कोई सर्वर है ही नहीं।
हर फ़्रेम को खोलना, डीकोड करना, सीध में लाना, जोड़ना और लिखना, यह सब आपका अपना ब्राउज़र आपकी अपनी मशीन पर करता है। 60 MB की बीस RAW फ़ाइलें करीब एक गीगाबाइट तस्वीरें होती हैं, और उसका एक बाइट भी हिलता नहीं। इस टूल में नेटवर्क का कोई काम है ही नहीं, और फ़ाइलें सीधे आपकी डिस्क से वह worker पढ़ता है जिसके पास कुछ भेजने के लिए कोई जगह ही नहीं है।
- ✗ कोई अपलोड नहीं
- ✗ कोई अकाउंट नहीं
- ✗ कोई वॉटरमार्क नहीं
- ✓ RAW पढ़ता है
- ✓ ऑफ़लाइन चलता है
- ✓ ओपन सोर्स
## ब्राउज़र में तस्वीरों का एक सेट कैसे स्टैक करें
1. **फ़्रेम चुनिए।** कोई बर्स्ट, ब्रैकेट किया हुआ सेट, इंटरवलोमीटर से ली गई कड़ी, या RAW फ़ाइलों का फ़ोल्डर। हर फ़ाइल आते ही खुलती है और उसकी लाइन बताती है कि उसमें से क्या निकला। RAW फ़ाइल के लिए यह कैमरा, भीतर मिली झलक का आकार, और यह कि उसे ढूँढ़ने के लिए फ़ाइल का कितना कम हिस्सा पढ़ना पड़ा।
2. **वह तरीका चुनिए जो आपके खोने वाली चीज़ से मेल खाता हो।** नॉइज़ के लिए औसत, और अगर कुछ हिला हो तो सिग्मा क्लिपिंग। लोग, गाड़ियाँ या गुज़रता हवाई जहाज़ हो तो माध्यिका। अँधेरा आसमान जिसे तारों की लकीरों में बदलना हो तो हल्का। फ़ोकस रिंग घुमाकर लिया गया मैक्रो शॉट हो तो फ़ोकस स्टैकिंग। मेनू के नीचे का नोट बताता है कि आपके फ़्रेमों की गिनती पर हर तरीका क्या करेगा।
3. **तय कीजिए कि फ़्रेम सीध में लाने हैं या नहीं।** हाथ से लिए हों तो हाँ, सिर्फ़ खिसकाना। हाथ से लिए हों और आप घूम भी रहे हों तो खिसकाना, घुमाना और पैमाना। कसे हुए तिपाई या इंटरवलोमीटर पर हों तो नहीं, और वह तेज़ भी रहेगा। हर फ़्रेम उसी से नापा जाता है जिस पर आधार का निशान है, और जब तक आप कुछ और न कहें वह पहला फ़्रेम ही रहता है: “इसे आधार बनाएँ” निशान सरकाता है, और सूची का क्रम जैसा आपने रखा वैसा ही रहता है।
4. **चारों आँकड़े पढ़िए, फिर बटन दबाइए।** कुछ भी चलने से पहले पेज बताता है कि नतीजा कितना बड़ा होगा, मोटे तौर पर कितनी मेमोरी लगेगी, फ़्रेम कितनी बार डीकोड होंगे, और आपकी फ़ाइलों का कितना हिस्सा पढ़ा गया। अगर सेट एक बार में मेमोरी में नहीं आता तो वह यह भी कहता है, और यह भी कि कौन-सा काम करने वाला रिज़ॉल्यूशन इसे सुलझा देगा।
## विस्तार से
[नॉइज़ घटाने या लोगों को हटाने के लिए तस्वीरें कैसे स्टैक करें](https://abox.tools/hi/guides/stack-photos-to-reduce-noise/): स्टैक करना एक बर्स्ट के कई फ़्रेमों को एक तस्वीर में जोड़ देता है। कौन-सा तरीका चाहिए यह इस पर निर्भर है कि आप क्या खोना चाहते हैं: नॉइज़, राह चलते लोग, या किसी मैक्रो शॉट की उथली गहराई। हर तरीका कैसे काम करता है, उसका क्या खर्च है, और RAW फ़ाइलें कहाँ बैठती हैं।
## बॉक्स में और भी टूल
- [इमेज ब्लैकआउट टूल](https://abox.tools/hi/redact-image/): जो हिस्सा आप ढकते हैं वह फ़ाइल से मिट जाता है, फ़ाइल के अंदर छिपा नहीं रहता।
- [EXIF व्यूअर और रिमूवर](https://abox.tools/hi/exif-editor/): देखिए कि फ़ोटो आपके बारे में क्या-क्या बता रही है। फिर उसे निकाल बाहर कीजिए।
- [DICOM व्यूअर](https://abox.tools/hi/dicom-viewer/): CT, MRI, एक्स-रे और अल्ट्रासाउंड, विंडो, हेडर और नाप के साथ।
- [तस्वीर से ICO](https://abox.tools/hi/image-to-ico/): एक तस्वीर भीतर। ब्राउज़र, Windows या Mac जो भी साइज़ माँगे, वह सब बाहर।
## सवाल
### क्या मेरी तस्वीरें कहीं अपलोड होती हैं?
नहीं। हर फ़्रेम को खोलना, डीकोड करना, सीध में लाना, स्टैक करना और लिखना, यह सब आपका अपना ब्राउज़र आपके अपने हार्डवेयर पर करता है। इस टूल में नेटवर्क का कोई काम है ही नहीं, न यह कभी कुछ मँगाता है और न कभी कुछ भेजता है। और पेज की `Content-Security-Policy` में हर वह पता लिखा है जिससे वह बात कर सकता है, जिनमें से एक भी इस साइट का नहीं है। पेज एक बार लोड कीजिए, इंटरनेट बंद कीजिए, और यह फिर भी चलता है। यहाँ यह बात ज़्यादातर टूल से ज़्यादा मायने रखती है, सिर्फ़ मात्रा की वजह से। बीस RAW फ़्रेम करीब एक गीगाबाइट होते हैं, और एक गीगाबाइट तस्वीरें सिर्फ़ इसलिए अपलोड करना कि उनका औसत निकाला जा सके, ठीक वही चीज़ है जिससे बचने के लिए यह टूल बना है।
### यह कौन-से RAW फ़ॉर्मैट पढ़ सकता है, और कैसे?
CR2, CR3, NEF, NRW, ARW, SR2, SRF, DNG, ORF, RAF, RW2, PEF, SRW, 3FR, IIQ, DCR, KDC, MRW, MEF, RWL और कुछ और, यानी लगभग वह सब जो कैमरे लिखते हैं। इनमें से यह जो पढ़ता है वह है पूरे आकार की वह JPEG झलक जिसे खुद कैमरे ने शॉट लेते वक्त बनाया था, यानी वही तस्वीर जो कैमरे की पीठ पर दिखती है और वही जिसे आपका ऑपरेटिंग सिस्टम थंबनेल की तरह बनाता है। उसे फ़ाइल की डायरेक्ट्री संरचना टटोलकर ढूँढ़ा जाता है, जिसमें कुछ किलोबाइट के दो-चार पाठ लगते हैं, और फिर एक टुकड़ा उठा लिया जाता है। **यह सेंसर डेटा का डीमोज़ेक नहीं है।** नतीजे में कैमरे का ही व्हाइट बैलेंस और पिक्चर स्टाइल होता है, हर चैनल पर आठ बिट के साथ, न कि वह बारह या चौदह बिट का रैखिक सेंसर डेटा जो कोई RAW कन्वर्टर देता।
### तो फिर सेंसर डेटा को ठीक से डीकोड क्यों नहीं करते?
क्योंकि इसका मतलब होता LibRaw या dcraw को साथ लाना, यानी फ़ॉर्मैट के एक ही परिवार के लिए दसियों मेगाबाइट का दूसरा इंजन, जिसका ज़्यादातर हिस्सा हर निर्माता की अलग कंप्रेशन योजनाएँ हैं। यह सौदा इस साइट के सोर्स में `docs/what-can-be-built-here.md` में तय किया गया है, जहाँ कैमरा RAW इस टूल के बनने से भी पहले से बाहर रखी चीज़ों की सूची में है। जो बदला वह उस सवाल का जवाब नहीं, बल्कि यह पता चलना है कि स्टैक करने के लिए उसकी ज़रूरत ही नहीं। झलकें पूरे रिज़ॉल्यूशन की होती हैं, वे वही हैं जो कैमरा आपको वैसे भी JPEG के रूप में देता, और उन्हें पढ़ना डीमोज़ेक करने से करीब सौ गुना तेज़ है। अगर आपको सेंसर डेटा चाहिए, तो पहले फ़्रेम किसी RAW कन्वर्टर में डेवलप कीजिए और उसके बनाए TIFF या JPEG स्टैक कीजिए, यह टूल उन्हें भी लेता है।
### यह कितने फ़्रेम और कितने बड़े सँभाल सकता है?
सात में से छह तरीके बहते हुए चलते हैं। वे एक ही संचायक रखते हैं और हर फ़्रेम को ठीक एक बार पढ़ते हैं, इसलिए सौ फ़्रेम उतनी ही मेमोरी लेते हैं जितनी दो, और बढ़ता सिर्फ़ वक्त है। माध्यिका इसका अपवाद है, क्योंकि किसी सेट का बीच का मान तब तक पता नहीं चल सकता जब तक पूरा सेट न हो, इसलिए वह हर फ़्रेम एक साथ पकड़े रखती है। 24 मेगापिक्सल के बीस फ़्रेम करीब 1.4 GB होते हैं, और इतना कोई ब्राउज़र नहीं देता। ऐसा होने पर तस्वीर को आड़ी पट्टियों में काटकर एक-एक पट्टी स्टैक की जाती है, जिसमें हर पट्टी के लिए फ़्रेम दोबारा पढ़ने पड़ते हैं। पेज यह सब आपके बटन दबाने से पहले ही निकाल लेता है और आँकड़ा दिखा देता है, इसलिए धीमा चलना कभी चौंकाता नहीं।
### फ़्रेम सीध में लाने से असल में होता क्या है?
यह पता चलता है कि हर फ़्रेम आधार फ़्रेम के मुकाबले कितना खिसका था, और उसे उतना वापस सरका दिया जाता है, पिक्सल के अंश तक। तरीका फ़ेज़ कोरिलेशन है। दो तस्वीरों के बीच का खिसकाव उनके स्पेक्ट्रम के बीच फ़ेज़ के अंतर के रूप में दिखता है, इसलिए दोनों का एक-एक फ़ूरिये रूपांतरण दो सौ पिक्सल का खिसकाव भी उतने ही सस्ते में ढूँढ़ लेता है जितने में दो पिक्सल का। दूसरी सेटिंग उसी तरकीब को लॉग-पोलर निर्देशांकों में स्पेक्ट्रम पर लगाकर घुमाव और पैमाना भी वापस निकाल लेती है। यह सब वैश्विक है, यानी पूरे फ़्रेम के लिए एक खिसकाव, एक कोण, एक पैमाना। इसलिए यह हिले हुए कैमरे को ठीक करता है, हिले हुए विषय को नहीं, और एक कदम बाएँ से ली गई तस्वीर को भी नहीं। एक नतीजा दिखता भी है। बीस पिक्सल बाएँ सरकाया गया फ़्रेम अब दाएँ किनारे तक नहीं पहुँचता, इसलिए नतीजा उतने हिस्से तक काट दिया जाता है जिसे हर फ़्रेम ढकता हो। इसीलिए सीध में लगाया गया स्टैक अपने फ़्रेमों से ज़रा-सा छोटा लौटता है, और उन फ़्रेमों से बने काले किनारे से बचने का यही अकेला रास्ता है जो वहाँ थे ही नहीं।
### मुझे कौन-सा तरीका इस्तेमाल करना चाहिए?
जिस सेट में कुछ हिला न हो उसमें नॉइज़ के लिए **औसत**, जो यादृच्छिक नॉइज़ को फ़्रेमों की गिनती के वर्गमूल के बराबर घटा देता है। जो चीज़ें कुछ ही समय वहाँ थीं उन्हें हटाने के लिए **माध्यिका**, और इसका सबसे जाना-पहचाना इस्तेमाल किसी भीड़ भरे चौक की दर्जन भर तस्वीरें लेकर उसे खाली पा लेना है। दोनों चाहिए तो **सिग्मा क्लिपिंग**, जो सीख लेती है कि हर पिक्सल आम तौर पर क्या होता है और सिर्फ़ उन्हीं मानों का औसत लेती है जो उससे मेल खाते हैं, इसलिए उसमें गुज़रती गाड़ी से माध्यिका जैसी सुरक्षा और औसत जैसी नॉइज़ कमी दोनों होती हैं। तारों की लकीरों, आतिशबाज़ी और लाइट पेंटिंग के लिए **हल्का**। जो कुछ चमकीला हिला हो उसे हटाने के लिए **गहरा**। एक लंबी एक्सपोज़र जैसा असर लाने के लिए **जोड़**। फ़ोकस रिंग घुमाकर लिए गए मैक्रो शॉट के लिए **फ़ोकस स्टैकिंग**।
### मेरी RAW फ़ाइलें चौदह बिट की हैं तो नतीजा आठ बिट का क्यों है?
क्योंकि जो स्टैक हो रहा है वह कैमरे की अपनी झलक है, और वह JPEG है। यह कहना भी बनता है कि स्टैक करना उसमें से कुछ वापस दिला देता है। आठ बिट के सोलह फ़्रेमों का औसत ऐसा नतीजा देता है जिसमें उनमें से किसी एक से भी बारीक छायाएँ होती हैं, क्योंकि जिस नॉइज़ ने हर फ़्रेम का पूर्णांकन अलग किया था वही औसत को दो स्तरों के बीच बैठने देता है। यहाँ गणित फ़्लोटिंग पॉइंट में होता है और बिलकुल आखिर में एक ही बार पूर्णांकित किया जाता है, इसलिए बीच में कुछ फेंका नहीं जाता। फिर भी यह रैखिक सेंसर डेटा स्टैक करने जैसा नहीं है, और यह टूल इसका दिखावा नहीं करता।
### क्या मैं अलग-अलग नाप के या अलग कैमरों के फ़्रेम स्टैक कर सकता हूँ?
हाँ, हालाँकि यह आम तौर पर गलती होती है और जाँच लेना चाहिए कि आपका इरादा यही था। नतीजा सबसे बड़े फ़्रेम की नाप का होता है, और बाकी हर फ़्रेम को उसमें बिठाकर बीच में रखा जाता है। कैमरे मिलाने से रंगों की व्याख्या भी मिल जाती है, इसलिए दोनों का औसत एक ही रोशनी की दो अलग व्याख्याओं का औसत होता है। यह वाकई वहाँ काम आता है जहाँ सेट दो रिज़ॉल्यूशन में लिया गया हो, या जहाँ एक ही फ़्रेम की RAW फ़ाइल और JPEG दोनों हों।
### यह कह रहा है कि काम पट्टियों में होगा। इसका क्या मतलब है?
कि उस तरीके को जितनी काम करने वाली मेमोरी चाहिए वह उससे ज़्यादा है जितनी यह टूल एक बार में लेने को तैयार है, इसलिए तस्वीर को आड़ी पट्टियों में काटकर एक-एक पट्टी स्टैक की जाएगी। नतीजा फिर भी ठीक वही आता है। बस हर पट्टी के लिए फ़्रेम दोबारा पढ़े जाते हैं, इसलिए ज़्यादा वक्त लगता है, और पेज बता देता है कि यह कितनी डीकोडिंग बनेगी। काम करने वाला रिज़ॉल्यूशन एक कदम घटाने से मेमोरी चौथाई रह जाती है, जो लगभग हमेशा पट्टियों वाले काम को एक ही चक्कर में बदल देता है, और नोट बता देता है कि कौन-सी सेटिंग ऐसा करेगी।
### बाकी किसी टूल में Worker नहीं है, तो इसमें क्यों?
क्योंकि अकेला यही है जिसका काम मिनटों में नापा जाता है। यहाँ बाकी हर टूल ऐसा कुछ करता है जिसमें एक-दो सेकंड लगते हैं, जहाँ काम को मुख्य धारा से हटाना बस दिखावा होता। बीस बड़े फ़्रेम स्टैक करना सैकड़ों मेगाबाइट पर ठोस गणित है, और मुख्य धारा पर इसका मतलब है जमा हुआ पेज। न कोई प्रगति पट्टी सरकती, न रद्द वाला बटन जवाब देता, और आखिर में ब्राउज़र टैब बंद करने की पेशकश करने लगता। Worker इसी ब्राउज़र के भीतर एक दूसरी धारा है, जो इसी फ़ोल्डर की एक फ़ाइल को, इसी नीति के तहत चलाती है। वह न सर्वर है और न नेटवर्क फ़ीचर।
### क्या यह मुफ़्त है, और क्या अकाउंट चाहिए?
यह मुफ़्त है, और न अकाउंट है, न साइन-इन, न ट्रायल, न कोई वॉटरमार्क। आप कितने फ़्रेम स्टैक करें या वे कितने बड़े हों, इस पर भी कोई सीमा नहीं है, क्योंकि इसका खर्च उठाने वाला कोई सर्वर ही नहीं है। काम आपकी अपनी मशीन पर होता है और अकेली छत आपकी अपनी मेमोरी है। साइट पर विज्ञापन चलते हैं और उन्हीं से इसका खर्च निकलता है, और विज्ञापनों को आपकी तस्वीरों के बारे में कुछ नहीं दिया जाता।
## प्राइवेसी का यह दावा कैसे जाँचा जा सकता है
- **आपकी तस्वीरों के जाने के लिए कोई जगह ही नहीं है।** Content-Security-Policy में हर वह पता लिखा है जिससे यह पेज बात कर सकता है, और उनमें से एक भी इस साइट का नहीं है। यहाँ कोई ऐसा एंडपॉइंट नहीं है जहाँ आपकी फ़ाइलें जमा हो सकें, और कोड में ऐसा कुछ नहीं है जो होता तो भी उन्हें भेजता। न `src/` में और न worker में कोई `fetch`, `XMLHttpRequest` या `sendBeacon` है।
- **RAW फ़ाइलें पढ़ी जाती हैं, अपलोड नहीं होतीं, और पढ़ी भी बस ज़रा-सी जाती हैं।** किसी कैमरे की RAW फ़ाइल में पहले से एक पूरे आकार की JPEG होती है जिसे कैमरे ने शॉट लेते वक्त ही बनाया था। यह टूल डायरेक्ट्री की कुछ प्रविष्टियाँ टटोलकर उसे ढूँढ़ता है और फिर एक ही टुकड़ा माँगता है, जो 60 MB की फ़ाइल में आम तौर पर सौ किलोबाइट से कम होता है। काम करते हुए पेज आपको वह आँकड़ा आपकी फ़ाइलों के साइज़ के साथ दिखाता रहता है। सेंसर का डेटा तो कभी पढ़ा ही नहीं जाता।
- **काम इसी मशीन के एक Worker में होता है, किसी सर्वर पर नहीं।** यहाँ worker इस्तेमाल करने वाला यही अकेला टूल है, क्योंकि स्टैक करना सेकंड नहीं बल्कि मिनटों का गणित है, और जमा हुआ पेज न प्रगति दिखा सकता है और न रद्द किया जा सकता है। Worker इसी ब्राउज़र के भीतर एक दूसरी धारा है, देखिए `src/worker.js`। उसे खुद फ़ाइलें सौंपी जाती हैं, जो मुफ़्त पड़ता है क्योंकि फ़ाइल का हैंडल उसके बाइट नहीं होता। और उस पर पेज जैसी ही Content-Security-Policy लागू है, यानी भेजने के लिए कोई जगह नहीं।
- **इस सेट के बारे में कहीं कुछ नहीं बताया जाता।** आपने कितने फ़्रेम स्टैक किए, उन्हें किस कैमरे ने लिखा, हर एक कितना खिसका था, आपने कौन-सा तरीका चुना और उसमें कितना वक्त लगा, यह सब पेज बंद करने तक इसी पेज की मेमोरी में रहता है। इस रिपॉज़िटरी में कोई अलग एनालिटिक्स इवेंट नहीं है जो उसमें से कुछ ले जाए, और डाउनलोड के बाद यह साइट जो एक सवाल पूछती है वह अंगूठा ऊपर या नीचे और टूल का नाम भेजता है, और कुछ नहीं।
- **यह ऑफ़लाइन चलता है।** नेटवर्क काट दीजिए और टूल वैसा ही रहेगा, क्योंकि इसमें नेटवर्क वाला कोई कदम कभी था ही नहीं। worker और उसके लोड किए हर मॉड्यूल को इसी पेज का अपना service worker कैश कर लेता है, इसलिए इंस्टॉल की हुई कॉपी नेटवर्क खींच लेने पर भी RAW फ़ाइलें स्टैक करती है।
**खुद जाँच लीजिए।** ऊपर लिखी किसी भी बात को भरोसे पर मानने की ज़रूरत नहीं। यह पेज रिपॉज़िटरी के टेम्पलेट और कॉन्फ़िग से बनता है, एक ऐसी बिल्ड स्क्रिप्ट के ज़रिए जिसे आप पढ़ भी सकते हैं और खुद चला भी सकते हैं। उसका नतीजा `dist` ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं: https://github.com/A-Box-of-Tools/website
सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए `config/site.toml`, RAW फ़ाइल मेगाबाइट के बजाय किलोबाइट पढ़कर कैसे खोली जाती है इसके लिए `src/raw.js`, हर तरीके के गणित के लिए `src/stack.js`, और पेज पर दिखने वाले मेमोरी व डीकोडिंग के आँकड़े कहाँ से आते हैं इसके लिए `src/plan.js`। वे उसी फ़ाइल के जवाब हैं, अंदाज़े नहीं।
ब्राउज़र में तस्वीरों का एक सेट कैसे स्टैक करें
फ़्रेम चुनिए। कोई बर्स्ट, ब्रैकेट किया हुआ सेट, इंटरवलोमीटर से ली गई कड़ी, या RAW फ़ाइलों का फ़ोल्डर। हर फ़ाइल आते ही खुलती है और उसकी लाइन बताती है कि उसमें से क्या निकला। RAW फ़ाइल के लिए यह कैमरा, भीतर मिली झलक का आकार, और यह कि उसे ढूँढ़ने के लिए फ़ाइल का कितना कम हिस्सा पढ़ना पड़ा।
वह तरीका चुनिए जो आपके खोने वाली चीज़ से मेल खाता हो। नॉइज़ के लिए औसत, और अगर कुछ हिला हो तो सिग्मा क्लिपिंग। लोग, गाड़ियाँ या गुज़रता हवाई जहाज़ हो तो माध्यिका। अँधेरा आसमान जिसे तारों की लकीरों में बदलना हो तो हल्का। फ़ोकस रिंग घुमाकर लिया गया मैक्रो शॉट हो तो फ़ोकस स्टैकिंग। मेनू के नीचे का नोट बताता है कि आपके फ़्रेमों की गिनती पर हर तरीका क्या करेगा।
तय कीजिए कि फ़्रेम सीध में लाने हैं या नहीं। हाथ से लिए हों तो हाँ, सिर्फ़ खिसकाना। हाथ से लिए हों और आप घूम भी रहे हों तो खिसकाना, घुमाना और पैमाना। कसे हुए तिपाई या इंटरवलोमीटर पर हों तो नहीं, और वह तेज़ भी रहेगा। हर फ़्रेम उसी से नापा जाता है जिस पर आधार का निशान है, और जब तक आप कुछ और न कहें वह पहला फ़्रेम ही रहता है: “इसे आधार बनाएँ” निशान सरकाता है, और सूची का क्रम जैसा आपने रखा वैसा ही रहता है।
चारों आँकड़े पढ़िए, फिर बटन दबाइए। कुछ भी चलने से पहले पेज बताता है कि नतीजा कितना बड़ा होगा, मोटे तौर पर कितनी मेमोरी लगेगी, फ़्रेम कितनी बार डीकोड होंगे, और आपकी फ़ाइलों का कितना हिस्सा पढ़ा गया। अगर सेट एक बार में मेमोरी में नहीं आता तो वह यह भी कहता है, और यह भी कि कौन-सा काम करने वाला रिज़ॉल्यूशन इसे सुलझा देगा।
विस्तार से
नॉइज़ घटाने या लोगों को हटाने के लिए तस्वीरें कैसे स्टैक करेंस्टैक करना एक बर्स्ट के कई फ़्रेमों को एक तस्वीर में जोड़ देता है। कौन-सा तरीका चाहिए यह इस पर निर्भर है कि आप क्या खोना चाहते हैं: नॉइज़, राह चलते लोग, या किसी मैक्रो शॉट की उथली गहराई। हर तरीका कैसे काम करता है, उसका क्या खर्च है, और RAW फ़ाइलें कहाँ बैठती हैं।
नहीं। हर फ़्रेम को खोलना, डीकोड करना, सीध में लाना, स्टैक करना और लिखना, यह सब आपका अपना ब्राउज़र आपके अपने हार्डवेयर पर करता है। इस टूल में नेटवर्क का कोई काम है ही नहीं, न यह कभी कुछ मँगाता है और न कभी कुछ भेजता है। और पेज की Content-Security-Policy में हर वह पता लिखा है जिससे वह बात कर सकता है, जिनमें से एक भी इस साइट का नहीं है। पेज एक बार लोड कीजिए, इंटरनेट बंद कीजिए, और यह फिर भी चलता है। यहाँ यह बात ज़्यादातर टूल से ज़्यादा मायने रखती है, सिर्फ़ मात्रा की वजह से। बीस RAW फ़्रेम करीब एक गीगाबाइट होते हैं, और एक गीगाबाइट तस्वीरें सिर्फ़ इसलिए अपलोड करना कि उनका औसत निकाला जा सके, ठीक वही चीज़ है जिससे बचने के लिए यह टूल बना है।
यह कौन-से RAW फ़ॉर्मैट पढ़ सकता है, और कैसे?
CR2, CR3, NEF, NRW, ARW, SR2, SRF, DNG, ORF, RAF, RW2, PEF, SRW, 3FR, IIQ, DCR, KDC, MRW, MEF, RWL और कुछ और, यानी लगभग वह सब जो कैमरे लिखते हैं। इनमें से यह जो पढ़ता है वह है पूरे आकार की वह JPEG झलक जिसे खुद कैमरे ने शॉट लेते वक्त बनाया था, यानी वही तस्वीर जो कैमरे की पीठ पर दिखती है और वही जिसे आपका ऑपरेटिंग सिस्टम थंबनेल की तरह बनाता है। उसे फ़ाइल की डायरेक्ट्री संरचना टटोलकर ढूँढ़ा जाता है, जिसमें कुछ किलोबाइट के दो-चार पाठ लगते हैं, और फिर एक टुकड़ा उठा लिया जाता है। यह सेंसर डेटा का डीमोज़ेक नहीं है। नतीजे में कैमरे का ही व्हाइट बैलेंस और पिक्चर स्टाइल होता है, हर चैनल पर आठ बिट के साथ, न कि वह बारह या चौदह बिट का रैखिक सेंसर डेटा जो कोई RAW कन्वर्टर देता।
तो फिर सेंसर डेटा को ठीक से डीकोड क्यों नहीं करते?
क्योंकि इसका मतलब होता LibRaw या dcraw को साथ लाना, यानी फ़ॉर्मैट के एक ही परिवार के लिए दसियों मेगाबाइट का दूसरा इंजन, जिसका ज़्यादातर हिस्सा हर निर्माता की अलग कंप्रेशन योजनाएँ हैं। यह सौदा इस साइट के सोर्स में docs/what-can-be-built-here.md में तय किया गया है, जहाँ कैमरा RAW इस टूल के बनने से भी पहले से बाहर रखी चीज़ों की सूची में है। जो बदला वह उस सवाल का जवाब नहीं, बल्कि यह पता चलना है कि स्टैक करने के लिए उसकी ज़रूरत ही नहीं। झलकें पूरे रिज़ॉल्यूशन की होती हैं, वे वही हैं जो कैमरा आपको वैसे भी JPEG के रूप में देता, और उन्हें पढ़ना डीमोज़ेक करने से करीब सौ गुना तेज़ है। अगर आपको सेंसर डेटा चाहिए, तो पहले फ़्रेम किसी RAW कन्वर्टर में डेवलप कीजिए और उसके बनाए TIFF या JPEG स्टैक कीजिए, यह टूल उन्हें भी लेता है।
यह कितने फ़्रेम और कितने बड़े सँभाल सकता है?
सात में से छह तरीके बहते हुए चलते हैं। वे एक ही संचायक रखते हैं और हर फ़्रेम को ठीक एक बार पढ़ते हैं, इसलिए सौ फ़्रेम उतनी ही मेमोरी लेते हैं जितनी दो, और बढ़ता सिर्फ़ वक्त है। माध्यिका इसका अपवाद है, क्योंकि किसी सेट का बीच का मान तब तक पता नहीं चल सकता जब तक पूरा सेट न हो, इसलिए वह हर फ़्रेम एक साथ पकड़े रखती है। 24 मेगापिक्सल के बीस फ़्रेम करीब 1.4 GB होते हैं, और इतना कोई ब्राउज़र नहीं देता। ऐसा होने पर तस्वीर को आड़ी पट्टियों में काटकर एक-एक पट्टी स्टैक की जाती है, जिसमें हर पट्टी के लिए फ़्रेम दोबारा पढ़ने पड़ते हैं। पेज यह सब आपके बटन दबाने से पहले ही निकाल लेता है और आँकड़ा दिखा देता है, इसलिए धीमा चलना कभी चौंकाता नहीं।
फ़्रेम सीध में लाने से असल में होता क्या है?
यह पता चलता है कि हर फ़्रेम आधार फ़्रेम के मुकाबले कितना खिसका था, और उसे उतना वापस सरका दिया जाता है, पिक्सल के अंश तक। तरीका फ़ेज़ कोरिलेशन है। दो तस्वीरों के बीच का खिसकाव उनके स्पेक्ट्रम के बीच फ़ेज़ के अंतर के रूप में दिखता है, इसलिए दोनों का एक-एक फ़ूरिये रूपांतरण दो सौ पिक्सल का खिसकाव भी उतने ही सस्ते में ढूँढ़ लेता है जितने में दो पिक्सल का। दूसरी सेटिंग उसी तरकीब को लॉग-पोलर निर्देशांकों में स्पेक्ट्रम पर लगाकर घुमाव और पैमाना भी वापस निकाल लेती है। यह सब वैश्विक है, यानी पूरे फ़्रेम के लिए एक खिसकाव, एक कोण, एक पैमाना। इसलिए यह हिले हुए कैमरे को ठीक करता है, हिले हुए विषय को नहीं, और एक कदम बाएँ से ली गई तस्वीर को भी नहीं। एक नतीजा दिखता भी है। बीस पिक्सल बाएँ सरकाया गया फ़्रेम अब दाएँ किनारे तक नहीं पहुँचता, इसलिए नतीजा उतने हिस्से तक काट दिया जाता है जिसे हर फ़्रेम ढकता हो। इसीलिए सीध में लगाया गया स्टैक अपने फ़्रेमों से ज़रा-सा छोटा लौटता है, और उन फ़्रेमों से बने काले किनारे से बचने का यही अकेला रास्ता है जो वहाँ थे ही नहीं।
मुझे कौन-सा तरीका इस्तेमाल करना चाहिए?
जिस सेट में कुछ हिला न हो उसमें नॉइज़ के लिए औसत, जो यादृच्छिक नॉइज़ को फ़्रेमों की गिनती के वर्गमूल के बराबर घटा देता है। जो चीज़ें कुछ ही समय वहाँ थीं उन्हें हटाने के लिए माध्यिका, और इसका सबसे जाना-पहचाना इस्तेमाल किसी भीड़ भरे चौक की दर्जन भर तस्वीरें लेकर उसे खाली पा लेना है। दोनों चाहिए तो सिग्मा क्लिपिंग, जो सीख लेती है कि हर पिक्सल आम तौर पर क्या होता है और सिर्फ़ उन्हीं मानों का औसत लेती है जो उससे मेल खाते हैं, इसलिए उसमें गुज़रती गाड़ी से माध्यिका जैसी सुरक्षा और औसत जैसी नॉइज़ कमी दोनों होती हैं। तारों की लकीरों, आतिशबाज़ी और लाइट पेंटिंग के लिए हल्का। जो कुछ चमकीला हिला हो उसे हटाने के लिए गहरा। एक लंबी एक्सपोज़र जैसा असर लाने के लिए जोड़। फ़ोकस रिंग घुमाकर लिए गए मैक्रो शॉट के लिए फ़ोकस स्टैकिंग।
मेरी RAW फ़ाइलें चौदह बिट की हैं तो नतीजा आठ बिट का क्यों है?
क्योंकि जो स्टैक हो रहा है वह कैमरे की अपनी झलक है, और वह JPEG है। यह कहना भी बनता है कि स्टैक करना उसमें से कुछ वापस दिला देता है। आठ बिट के सोलह फ़्रेमों का औसत ऐसा नतीजा देता है जिसमें उनमें से किसी एक से भी बारीक छायाएँ होती हैं, क्योंकि जिस नॉइज़ ने हर फ़्रेम का पूर्णांकन अलग किया था वही औसत को दो स्तरों के बीच बैठने देता है। यहाँ गणित फ़्लोटिंग पॉइंट में होता है और बिलकुल आखिर में एक ही बार पूर्णांकित किया जाता है, इसलिए बीच में कुछ फेंका नहीं जाता। फिर भी यह रैखिक सेंसर डेटा स्टैक करने जैसा नहीं है, और यह टूल इसका दिखावा नहीं करता।
क्या मैं अलग-अलग नाप के या अलग कैमरों के फ़्रेम स्टैक कर सकता हूँ?
हाँ, हालाँकि यह आम तौर पर गलती होती है और जाँच लेना चाहिए कि आपका इरादा यही था। नतीजा सबसे बड़े फ़्रेम की नाप का होता है, और बाकी हर फ़्रेम को उसमें बिठाकर बीच में रखा जाता है। कैमरे मिलाने से रंगों की व्याख्या भी मिल जाती है, इसलिए दोनों का औसत एक ही रोशनी की दो अलग व्याख्याओं का औसत होता है। यह वाकई वहाँ काम आता है जहाँ सेट दो रिज़ॉल्यूशन में लिया गया हो, या जहाँ एक ही फ़्रेम की RAW फ़ाइल और JPEG दोनों हों।
यह कह रहा है कि काम पट्टियों में होगा। इसका क्या मतलब है?
कि उस तरीके को जितनी काम करने वाली मेमोरी चाहिए वह उससे ज़्यादा है जितनी यह टूल एक बार में लेने को तैयार है, इसलिए तस्वीर को आड़ी पट्टियों में काटकर एक-एक पट्टी स्टैक की जाएगी। नतीजा फिर भी ठीक वही आता है। बस हर पट्टी के लिए फ़्रेम दोबारा पढ़े जाते हैं, इसलिए ज़्यादा वक्त लगता है, और पेज बता देता है कि यह कितनी डीकोडिंग बनेगी। काम करने वाला रिज़ॉल्यूशन एक कदम घटाने से मेमोरी चौथाई रह जाती है, जो लगभग हमेशा पट्टियों वाले काम को एक ही चक्कर में बदल देता है, और नोट बता देता है कि कौन-सी सेटिंग ऐसा करेगी।
बाकी किसी टूल में Worker नहीं है, तो इसमें क्यों?
क्योंकि अकेला यही है जिसका काम मिनटों में नापा जाता है। यहाँ बाकी हर टूल ऐसा कुछ करता है जिसमें एक-दो सेकंड लगते हैं, जहाँ काम को मुख्य धारा से हटाना बस दिखावा होता। बीस बड़े फ़्रेम स्टैक करना सैकड़ों मेगाबाइट पर ठोस गणित है, और मुख्य धारा पर इसका मतलब है जमा हुआ पेज। न कोई प्रगति पट्टी सरकती, न रद्द वाला बटन जवाब देता, और आखिर में ब्राउज़र टैब बंद करने की पेशकश करने लगता। Worker इसी ब्राउज़र के भीतर एक दूसरी धारा है, जो इसी फ़ोल्डर की एक फ़ाइल को, इसी नीति के तहत चलाती है। वह न सर्वर है और न नेटवर्क फ़ीचर।
क्या यह मुफ़्त है, और क्या अकाउंट चाहिए?
यह मुफ़्त है, और न अकाउंट है, न साइन-इन, न ट्रायल, न कोई वॉटरमार्क। आप कितने फ़्रेम स्टैक करें या वे कितने बड़े हों, इस पर भी कोई सीमा नहीं है, क्योंकि इसका खर्च उठाने वाला कोई सर्वर ही नहीं है। काम आपकी अपनी मशीन पर होता है और अकेली छत आपकी अपनी मेमोरी है। साइट पर विज्ञापन चलते हैं और उन्हीं से इसका खर्च निकलता है, और विज्ञापनों को आपकी तस्वीरों के बारे में कुछ नहीं दिया जाता।