2 पॉइंट द्वारा GN⁺ 2025-12-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • यह एक प्रयोग है जो चरण-दर-चरण दिखाता है कि डिजिटल कैमरा का RAW sensor data किस रूप में रिकॉर्ड होता है
  • शुरुआती डेटा 14-bit ADC output को 0–255 RGB में साधारण मैपिंग करने पर grayscale रूप में दिखता है, और वास्तविक brightness range सीमित रहती है
  • Bayer filter लागू करके हर pixel की color filter जानकारी को दर्शाया जाता है, और पास के pixels के औसत से demosaicing किया जाता है
  • Gamma correction और white balance समायोजन के दौरान, मानव दृष्टि और display की nonlinear brightness perception के अंतर को सुधारा जाता है
  • अंत में कैमरे की internal JPEG processing से तुलना करके यह दिखाया जाता है कि “असुधारी गई फोटो” जैसी अवधारणा वास्तव में मौजूद नहीं है

RAW sensor data की शुरुआती अवस्था

  • कैमरा sensor द्वारा रिकॉर्ड किया गया मूल डेटा 14-bit ADC values से बना होता है, और इसे 0–255 RGB में सीधे बदलने पर यह grayscale image के रूप में दिखता है
    • वास्तविक ADC values की range लगभग 2110~13600 होती है, इसलिए brightness को दोबारा समायोजित करने के लिए इसी दायरे को black-and-white मानक के रूप में सेट किया जाता है
  • इस चरण की image में color information लगभग नहीं होती, क्योंकि sensor केवल प्रकाश की तीव्रता मापता है

रंग जानकारी बहाल करने की प्रक्रिया

  • color camera sensor Bayer filter array के माध्यम से हर pixel पर केवल लाल, हरा, या नीला — इन तीन रंगों में से एक ही detect करता है
  • हर pixel को उसके color filter के अनुसार रंग देने पर रंगत दिखाई देने लगती है, लेकिन एक pixel में RGB में से केवल एक ही मान मौजूद होता है
  • पास के pixels के मानों का औसत लेकर demosaicing करने पर पूरी image में रंग बहाल हो जाता है

brightness और gamma correction

  • परिणामस्वरूप image के गहरे दिखने का कारण monitor की dynamic range की सीमा और मानव दृष्टि की nonlinear brightness perception है
  • linear data को जस का तस दिखाने पर वह अंधेरा दिखता है, इसलिए nonlinear gamma curve लागू करके अंधेरे हिस्सों को उजाला किया जाता है
  • लेकिन इस प्रक्रिया में green channel के अधिक होने की समस्या आती है, जिसका कारण sensor की green sensitivity और Bayer array में green का अधिक अनुपात है

white balance और रंग सुधार

  • हर color channel को एक निश्चित अनुपात में समायोजित करके white balance सेट किया जाता है
  • nonlinear transformation से पहले वाले चरण पर लौटकर green channel को कम किया जाता है, फिर gamma curve दोबारा लागू की जाती है
  • इस प्रक्रिया से प्राकृतिक रंगों वाली फोटो तैयार होती है

कैमरा JPEG processing से तुलना

  • उसी RAW data से कैमरे द्वारा बनाई गई embedded JPEG image पहले से कई गणितीय correction प्रक्रियाओं से गुज़री हुई होती है
  • editing software में contrast या white balance को समायोजित करना मूल रूप से कैमरे की internal processing के समान ही operation है
  • “बिना edit की गई photo” जैसी अवधारणा वास्तव में मौजूद नहीं है, और हर फोटो गणितीय processing का परिणाम है
  • मानव दृष्टि को पूरी तरह पुनर्निर्मित करना कठिन है, और display की सीमाओं के कारण manual correction की आवश्यकता हमेशा बनी रहती है

1 टिप्पणियां

 
GN⁺ 2025-12-29
Hacker News की टिप्पणियाँ
  • हर pixel पर वही transfer function लागू करना क्या ‘processing’ माना जाना चाहिए, इस पर सोचता हूँ
    फिल्म के दौर में अगर ISO 400 black-and-white film को 1600 पर push करके इस्तेमाल करते थे, तो दानेदार grain आता था, लेकिन वह पूरी तस्वीर में एक समान ‘noise’ होता था
    आजकल noise reduction हैरान कर देने वाली हद तक बेहतर हो चुकी है, लेकिन इस प्रक्रिया में कभी-कभी image खुद विकृत हो जाती है
    उदाहरण के लिए, मेरे IP camera में जब मैं साइकिल चलाकर अंदर आता हूँ, तो कभी-कभी पहिए का कुछ हिस्सा गायब हो जाता है। algorithm asphalt की texture को noise समझकर मिटा देता है
    smartphone या digital camera की तस्वीरें भी zoom करने पर या low light में चेहरों को ‘painting’ जैसा दिखाती हैं
    मैं तो ईमानदार noise को तरजीह दूँगा, या ऐसा noise-reduction algorithm चाहूँगा जिसे ‘none’ से लेकर मौजूदा default तक समायोजित किया जा सके

  • मुझे ऐसे लेख पसंद हैं जो ‘image’ की abstraction layers को हटाकर दिखाते हैं। आखिरकार आधुनिक photography बस signal processing है, जिस पर marketing चढ़ा दी गई है
    Bayer pattern के RGGB (green 50%) होने की वजह सिर्फ color balance नहीं, बल्कि spatial resolution भी है
    इंसानी आँख green रोशनी के प्रति सबसे अधिक संवेदनशील होती है, इसलिए green channel brightness यानी detail का अधिकांश हिस्सा संभालता है
    उन्नत demosaicing algorithms पहले green channel से high-resolution luminance map बनाते हैं, फिर red और blue को color-difference layers के रूप में interpolate करते हैं
    इसी सिद्धांत की वजह से 4:2:0 chroma subsampling जैसी video compression भी संभव होती है
    और गहराई में जाना हो तो dcraw या libraw का source code देखने की सलाह दूँगा। हर sensor manufacturer के हिसाब से ‘raw voltage’ को समझने के लिए असंख्य exception handling मौजूद हैं

    • पुराने format PPM से PGM में बदलने के लिए इस्तेमाल होने वाले ppmtopgm के quantization formula को देखें, तो green का हिस्सा लगभग 60% है
      g = .299r + .587g + .114b
      यही अनुपात grayscale image की brightness तय करता है
      और वहाँ उद्धृत की गई कविता की पंक्ति भी प्रभावशाली लगी — रंग खो चुकी दुनिया का वर्णन करते हुए, वह इस बात पर व्यंग्य करती है कि जिसे हम ‘सही’ मानते हैं, वह अंततः सिर्फ quantization error ही है
    • जब मैं Amazon Kindle ad team में काम करता था, तब RGB को simple average लेकर grayscale में बदलने की वजह से 6 महीने तक बेहद खराब ad images दिखती रहीं
      FFmpeg call में बस RGB→luma conversion flag जोड़ देने से समस्या हल हो जाती
    • सच तो यह है कि film photography भी signal processing का ही एक दूसरा रूप थी। ऐसा कोई ‘unprocessed data’ नहीं है जिसे हम वास्तव में पहचान सकें
    • Bayer pattern का green को दोगुना area देना थोड़ा नाइंसाफ़ी जैसा लगता है
      हाँ, वजह यह है कि इंसानी आँख green के प्रति ज़्यादा संवेदनशील है, फिर भी कुछ अटपटा लगता है (⩺_⩹)
    • मुझे यह पसंद नहीं कि लोग पूछते हैं कि फोटो “edited है या original?”
      camera से निकलने वाला JPEG खुद ही पहले से भारी processing का नतीजा होता है
      curves, mapping, और correction values बदलकर अलग JPEG बनाना ‘manipulation’ नहीं, बस एक अलग interpretation है
  • मैं camera sensor से जुड़े काम में हूँ, और मुझे लगता है कि यह लेख नए लोगों की training के लिए बहुत अच्छा है
    RAW data से शुरू करके परिचित output तक पहुँचने की प्रक्रिया दिखाने से समझ जल्दी बनती है

  • यह एक छोटी typo की ओर इशारा है: “then” की जगह “than” होना चाहिए

  • undergraduate के समय remote sensing पढ़ते हुए sensors और signal processing को सच में समझ पाया
    मैं जो देखता हूँ, वह ‘सच’ नहीं बल्कि data का एक partial view है
    इंसानी आँख, बिल्ली की आँख, और camera — ये सब data के अलग-अलग subset इकट्ठा करते और दर्शाते हैं
    अगर space और time को signal के अतिरिक्त dimensions की तरह देखें, तो बात और दिलचस्प हो जाती है
    आखिर में लगता है कि हम सब बस ब्रह्मांड के किसी हिस्से को देखने वाली sensor systems हैं

  • digital photography में dynamic range compression और debayering ज़रूरी हैं,
    लेकिन दूसरी तरफ AI अगर चीज़ों को पहचानकर image को इस तरह काल्पनिक ढंग से पुनर्निर्मित करे कि ‘यह ऐसा होना चाहिए’, तो वह अलग समस्या है
    manufacturers इसी दिशा में आगे बढ़ रहे हैं, जिससे evidence photos की reliability जैसी समस्याएँ पैदा होती हैं

    • मुझे नहीं लगता कि तस्वीरों में ‘real’ और ‘fake’ जैसा कुछ होता है
      हर image data की एक interpretation है, और असंख्य choices का परिणाम है
      अगर फर्क करना ही हो, तो global editing और local editing में बाँटा जा सकता है, और local editing को ‘fake’ के थोड़ा करीब कहा जा सकता है
      लेकिन आखिरकार असली बात intent है
      अगर धोखा देने का इरादा हो, तो camera से सीधे निकली तस्वीर भी ‘fake’ हो सकती है
      ज़्यादातर लोग filter लगाने को ‘fake’ मानते हैं, लेकिन सच यह है कि हर फोटो पर कोई न कोई filter लागू होता है
      उस प्रक्रिया को ही ‘fake’ कहना बेमानी है
  • फिल्म Tim’s Vermeer का एक उद्धरण याद आ गया
    “कला और तकनीक को अलग होना चाहिए” — यह आधुनिक सोच गलत है, इस विचार की तरह,
    कला और तकनीक का मेल ही स्वर्णयुग की पहचान था
    साथ ही John Lind की The Science of Photography और
    Bob Atkins की sensor explanation भी सिफारिश करूँगा।
    खासकर pixel well size के महत्व वाला हिस्सा प्रभावशाली लगा

  • linear data को ज्यों का त्यों दिखाने पर उसका अँधेरा लगना शायद monitor की सीमाओं की वजह से है
    अगर bit depth काफ़ी बड़ी हो, तो क्या gamma correction के बिना linear light में display करना संभव नहीं होगा?

    • नहीं, समस्या curve के shape की है
      इंसानी luminance perception linear नहीं है, इसलिए किसी न किसी चरण पर nonlinear बनाना ज़रूरी है
      calculation 16-bit या उससे बड़े linear color space में करना, और display से ठीक पहले gamma लागू करना आदर्श है
      पहले nonlinear RGB में blending करने से dark banding artifacts पैदा हो जाया करते थे
    • gamma correction सिर्फ monitor की वजह से नहीं, बल्कि highlights और shadows में अधिक bits बाँटने के लिए भी होता है
      CRT में electron gun की nonlinear response को ठीक करने के लिए gamma इस्तेमाल हुआ, और film या CMOS sensor भी रोशनी के प्रति लगभग logarithmic sensitivity रखते हैं, इसलिए वहाँ भी मिलती-जुलती processing होती है
    • अगर sunset को linear में दिखाएँ, तो सूरज वाला हिस्सा आँखों में चुभने जितना तेज़ दिखेगा। वह यथार्थवादी नहीं होगा
  • ‘unprocessed photo’ जैसी चीज़ लगभग अस्तित्व में नहीं है
    RAW बस RGGB pixel values का एक समूह है, और इसे screen के संकरे dynamic range में फिट करने के लिए data को रणनीतिक रूप से फेंकना
    और middle gray point को परिभाषित करना ही creative interpretation का क्षेत्र है

  • अफ़सोस है कि लेख के उदाहरण बहुत कृत्रिम और रंग-बिरंगी lighting वाले हैं, इसलिए ‘ground truth’ क्या है यह समझना मुश्किल हो जाता है

    • लेकिन वही तो मुद्दा है। ‘ground truth’ की अवधारणा को ही चुनौती देकर दोबारा सोचने पर मजबूर करना इस लेख का उद्देश्य है
      आख़िरी दो images की तुलना करके, हर कोई अपनी पसंद के हिसाब से ‘result’ तय कर सकता है