इंटीग्रेशन में रिजेक्शन: एल्गोरिदम का चुनाव और Rejection Map को पढ़ना
इंटीग्रेशन के समय होने वाला “रिजेक्शन” (rejection) दरअसल वह प्रक्रिया है जिसमें कई छवियों को एक-दूसरे पर चढ़ाते हुए उन बाहरी मानों (outliers) को अपने आप हटा दिया जाता है जिन्हें वहाँ होना ही नहीं चाहिए — उपग्रहों की लकीरें, कॉस्मिक किरणों से बने सफ़ेद धब्बे, बचे रह गए हॉट पिक्सेल, बहुत चमकीले तारों के फूले हुए किनारे, वग़ैरह। सही रिजेक्शन एल्गोरिदम चुनना और उससे बनने वाली Rejection Map को पढ़ पाना ही साफ़-सुथरी छवि पाने की कुंजी है। इस लेख में मैं रिजेक्शन एल्गोरिदम चुनने का तर्क समेट रहा हूँ, और यह भी कि अक्सर अनदेखी रह जाने वाली वे दो रिजेक्शन मैप आख़िर पढ़ी कैसे जाती हैं।
रिजेक्शन एल्गोरिदम का परिवार
PixInsight इंटीग्रेशन के समय कई रिजेक्शन एल्गोरिदम देता है। आधिकारिक दस्तावेज़ में यह सूचीबद्ध है कि कौन-सा एल्गोरिदम किस स्थिति के लिए उपयुक्त है, और वह पढ़ने लायक़ है (ध्यान रहे कि इस दस्तावेज़ को प्रकाशित हुए काफ़ी समय बीत चुका है, और बाद में जोड़े गए GESD एल्गोरिदम को इसमें शामिल नहीं किया गया है)।

मोटे तौर पर इन्हें दो श्रेणियों में बाँटा जा सकता है:
- Sigma परिवार: मानक विचलन (standard deviation) पर आधारित बाहरी मानों का निष्कासन, जैसे Sigma Clipping, इसका सुधरा हुआ रूप Winsorized Sigma Clipping, और Percentile Clipping। इनका सिद्धांत और गणित एक ही व्यवस्था से आते हैं।
- GESD Test: यह Grubbs’s test पर आधारित है, और इसका सिद्धांत तथा गणित sigma-based तरीक़ों से पूरी तरह अलग है। यह अपेक्षाकृत बाद में जोड़ा गया एल्गोरिदम है।
GESD बनाम Sigma: फ़्रेम कम हों तो कौन जीतता है?
मैंने असल में तुलना करके देखी है। एक बार मैंने सिर्फ़ 12 फ़्रेम वाला डेटा उठाया और उस पर एक साथ GESD Test, Winsorized Sigma Clipping और पारंपरिक Sigma Clipping चलाए।

12 फ़्रेम दरअसल GESD और Winsorized Sigma के लिए अनुशंसित फ़्रेम संख्या पर खरे नहीं उतरते, फिर भी इस सेट में GESD Test का नतीजा ही उलटे सबसे अच्छा निकला। हालाँकि एक बात बाद में जोड़नी ज़रूरी है: अगर डेटा रंगीन हो और फ़्रेम भी कम पड़ रहे हों, तो Winsorized Sigma या Sigma ही ज़्यादा उपयुक्त रहता है। यानी कोई एल्गोरिदम “हमेशा सबसे अच्छा” नहीं होता — यह डेटा पर निर्भर करता है।
धुँधली उपग्रह लकीरों से निपटने में GESD
GESD का एक और व्यावहारिक फ़ायदा है। पहले जब मैं sigma परिवार से इंटीग्रेशन करता था, तब अक्सर ऐसा होता था कि अपेक्षाकृत धुँधली उपग्रह लकीरें किसी तरह हट ही नहीं पातीं — 17 फ़्रेम होने पर भी इंटीग्रेशन के बाद लकीर का कुछ हिस्सा बचा रह जाता, और इस तरह की धुँधली लकीर के लिए manual selective rejection (हाथ से काला पोत देना) उपयुक्त भी नहीं है।

GESD Test पर जाकर, पैरामीटर ठीक से समायोजित करके और धुँधली उपग्रह लकीर को फैलाकर बढ़ा देने के बाद, मैं बेहद धुँधली लकीर को भी सफलतापूर्वक हटा सका; और आम तौर पर GESD का S/N अनुपात पारंपरिक Sigma Clipping या Winsorized Sigma Clipping से ऊँचा ही रहता है। (हालाँकि ज़्यादातर मामलों में sigma परिवार के साथ ऐसी न हटने वाली समस्या पेश नहीं आती, यह अपेक्षाकृत चरम मामला है।)
ख़ास हथियार: Range Clipping
सांख्यिकीय ढंग से बाहरी मान हटाने के अलावा एक और तरीक़ा भी है, जो है तो “बलप्रयोग” वाला, पर काम का — Range Clipping।

अगर आपके पास ऐसी छवियाँ हों जिनमें डार्क कैलिब्रेशन ठीक से न होने के कारण बहुत सारे काले धब्बे आ गए हों (मसलन 10 फ़्रेम में हैं और 5 में नहीं), तो नियमित रिजेक्शन एल्गोरिदम के लिए बाहरी मान चुन-चुनकर इन काले धब्बों को हटाना बहुत मुश्किल है। ऐसे में इंटीग्रेशन के समय Range Low Clipping का उपयोग करके एक निश्चित सीमा से नीचे के सारे काले धब्बे ज़बरदस्ती हटाए जा सकते हैं। यह किसी ख़ास ख़राबी पर सीधे निशाना साधने वाला तरीक़ा है, और सांख्यिकीय रिजेक्शन का पूरक है।

Rejection Map को पढ़ना
ImageIntegration या WBPP से इंटीग्रेशन पूरा करने पर, तैयार छवि के अलावा दो रिजेक्शन मैप भी बनती हैं: एक उच्च चमक की दिशा के लिए (rejection high) और एक निम्न चमक की दिशा के लिए (rejection low)। ज़्यादातर लोग इन दोनों को सीधे अनदेखा कर देते हैं — और यह दरअसल बहुत काम की नैदानिक जानकारी को बरबाद करना है।

आम तौर पर rejection low में देखने लायक़ कुछ ख़ास नहीं होता, असली बात rejection high में है: यहाँ वे सारी बाधाएँ दिखती हैं जिन्हें आप “तैयार छवि में नहीं देखना चाहते” — उपग्रह लकीरें, बहुत चमकीले या फूले हुए तारों के किनारे, निकट-पृथ्वी पिंडों की लकीरें, और साथ ही हॉट पिक्सेल तथा कॉस्मिक किरणों से बने सफ़ेद धब्बे (हॉट पिक्सेल मैं आम तौर पर इंटीग्रेशन से पहले ही Cosmetic Correction से साफ़ कर देता हूँ, इसलिए यहाँ उनकी संख्या ज़्यादा नहीं होती)।
इस मैप को पढ़ने का सबसे व्यावहारिक तरीक़ा यह है: जिस पिक्सेल को आप हटाना चाहते थे, वह अगर rejection high में दिख रहा है तो इसका मतलब है कि वह सफलतापूर्वक हट गया; और अगर वह यहाँ नहीं दिखता, बल्कि इंटीग्रेट की हुई तैयार छवि में बचा रह गया है (जैसे कोई बची हुई उपग्रह लकीर), तो इसका मतलब है कि आपके रिजेक्शन पैरामीटर पर्याप्त नहीं हैं, या एल्गोरिदम बदलना चाहिए।
“यह फ़्रेम निकाल दूँ या नहीं” — कुछ आम सवाल
ऊपर बताया गया सिद्धांत समझ में आ जाए तो नए लोगों की बहुत-सी उलझनों का जवाब अपने आप मिल जाता है।
जिस छवि में तारे फूले हुए हों, क्या उसे इंटीग्रेशन से बाहर कर देना चाहिए? जब तक फ़ोकस ही न बिगड़ा हो, मैं आम तौर पर उसे इंटीग्रेशन में शामिल रहने देता हूँ।

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

तरीक़ा यह है: अगर फ़्रेम कम हों तो ज़्यादा दमदार रिजेक्शन क्षमता वाला एल्गोरिदम चुनिए (जैसे Sigma Clipping परिवार) और Sigma High पैरामीटर थोड़ा सख़्त कर दीजिए (मसलन 2.5 से नीचे)। एक उदाहरण में मेरे पास सिर्फ़ 7 फ़्रेम थे और उनमें से एक में उपग्रह लकीर लक्ष्य को आर-पार काट रही थी; S/N अनुपात के लिहाज़ से हर एक फ़्रेम अहम था, इसलिए उपयुक्त पैरामीटर सेट करके (सॉफ़्टवेयर के डिफ़ॉल्ट मान इस्तेमाल किए बिना) मैंने इंटीग्रेशन की प्रक्रिया को ही अपने आप रिजेक्शन पूरा करने दिया, और सफलतापूर्वक हटाई गई लकीर rejection high में दिख गई। मेहनत से कमाया गया एक-एक पिक्सेल बरबाद मत कीजिए।
ख़राब कॉलम का अपवाद: रिजेक्शन इसे हल नहीं कर सकता
अंत में एक ऐसा अपवाद भी जोड़ देता हूँ जिसे रिजेक्शन हल नहीं कर सकता — CCD का ख़राब कॉलम (defect column)।

ख़राब कॉलम बहुत गहरा काला होता है और पूरी लंबाई में फैला रहता है; ज़बरदस्ती रिजेक्शन से उसे हटाने चलें तो बहुत सारे अच्छे पिक्सेल की क़ुरबानी देनी पड़ती है और नतीजा भी अच्छा नहीं आता। सही तरीक़ा यह है कि पहले कैमरे के लिए एक Defect Map बनाई जाए (“Latte” वाले 16803 CCD का उदाहरण लें तो फ़्रेम के बीचोबीच एक साफ़ दिखने वाला ख़राब कॉलम है, और साथ में तीन कम स्पष्ट कॉलम भी), फिर उसे DefectMap प्रोसेस से लोड करके लाइट फ़्रेम पर लागू किया जाए, जिससे ख़राब कॉलम का असर काफ़ी घट जाए, और उसके बाद जो बचे वह इंटीग्रेशन के रिजेक्शन के हवाले कर दिया जाए ताकि वह आसानी से उसे साफ़ कर दे। यानी रिजेक्शन आख़िर में आने वाला सफ़ाईकर्मी है, कोई सर्वशक्तिमान पहली रक्षा-पंक्ति नहीं — जिन ख़राबियों के लिए विशेष औज़ार चाहिए, उनसे पहले सही औज़ार से ही निपटना पड़ता है।