img_to_projection_profile — 2D bridge op

• Data kinds: image → signal

• Call: fullseye.apply(img, "img_to_projection_profile", a=0.5, b=0.5) (2-D model = एक image + दो scalar knobs a,b∈[0,1])

img_to_projection_profile: input → output

*Figure synthetic 128×128 input पर सच में चलाकर मिला output है। बाईं ओर input, दाईं ओर output। Point clouds ऊपर से देखे गए scatter के रूप में (brightness = z), 1-D series line के रूप में, volumes z दिशा में maximum-intensity projection के रूप में, videos बीच के frame के रूप में, complex images amplitude के रूप में, और जो return values चित्र नहीं बन सकते वे स्वयं values के रूप में दिखाए जाते हैं।*

Knob a को बदलकर (0.1 / 0.5 / 0.9, दूसरा knob default पर):

▸ img_to_projection_profile: knob a को बदलने का figure (docs site)

Knob b को बदलकर (0.1 / 0.5 / 0.9, दूसरा knob default पर):

▸ img_to_projection_profile: knob b को बदलने का figure (docs site)

दूसरी images पर भी (synthetic scene / photo / coins। ऊपर की row में inputs, नीचे की row में उनके outputs। Knobs default पर):

▸ img_to_projection_profile: दूसरी images पर output (docs site)

*चौथा column colour (H,W,3) input है। यह op channels को पार किए बिना colour संभालता है (colour channel को तीसरे spatial axis की तरह convolve नहीं करता)।*

उपयोग

image को 1 direction में दबाकर बनी projection profile को 1-D signal बनाता है —— page-layout analysis की बुनियादी मात्रा।

img_to_signal जहाँ "1 row/column को जैसा है वैसा पढ़ता है", वहीं यह op सभी rows (सभी columns) को समेटकर 1 रेखा में बदल देता है। अक्षरों के बीच के अंतर, rule lines और band की सीमाएँ 1 scan line पर noise में दब जाती हैं, लेकिन collapse करने पर valley के रूप में उभर आती हैं।

• b → दिशा। b < 0.5 पर खड़ी दिशा में collapse, लंबाई W (हर column का प्रतिनिधि मान। आड़ी पंक्ति में लगे अक्षरों के बीच के अंतर valley बनते हैं), b >= 0.5 पर आड़ी दिशा में collapse, लंबाई H (हर row का। पंक्तियों के बीच की जगह valley बनती है)। img_to_signal की तरह b दिशा तय करता है, लेकिन a का अर्थ अलग है।

• a → ऊपरी trim ratio। collapse होने वाले axis की value को बड़े से छोटे क्रम में रखकर, ऊपर के m = max(1, round((1-a) * N)) मानों का ही औसत लिया जाता है। a=0 सीधा mean projection है (classical projection profile ही), a=1 maximum projection (MIP) है, और बीच में "सिर्फ़ outlier को रखकर बाक़ी को बराबर करने वाला" निरंतर समझौता होता है।

• लौटाता है: 1-D float64। normalise नहीं करता (range input जैसी ही रहती है। [0,1] वाली image हो तो [0,1])। लंबाई दिशा से तय होती है (W या H)। खाली frame से स्थिर value का sequence बनता है।

knob trim ratio क्यों है: mean projection noise के प्रति मज़बूत है, लेकिन 1 पतली रेखा background में घुलकर ग़ायब हो जाती है। maximum projection पतली रेखा को रखता है, लेकिन 1 bright spot पूरे column को ऊपर उठा देता है। कोई भी चुनें, कुछ न कुछ खोना पड़ता है, इसलिए कितना छोड़ना है इसे knob बनाकर trade-off को स्पष्ट किया गया। a बढ़ाने पर पतली संरचनाएँ बचती हैं, घटाने पर noise बराबर होता है ―― यह monotonic है, और दोनों छोर 2 classical projections से मेल खाते हैं।

गहरे अक्षरों के लिए पहले invert करें। यह op बड़े मान को रखता है, इसलिए सफ़ेद पर काले अक्षर सीधे देने पर trim background को उठा लेता है। बीच में invert (ledger) लगाने पर a "जहाँ अक्षर गहरे हैं" उसे रखता है।

पूर्व कार्य और correspondence: mean projection document analysis का classic ही है (Postl 1986 / Baird 1987 ने skew estimation के लिए जिस मात्रा का उपयोग किया), और HALCON में यह gray_projections (horizontal और vertical gray value projection) के बराबर है —— correspondence table में जो op covered: false था, उसे यह भरता है। ऊपर से trim करके maximum projection की ओर निरंतर ले जाने वाली family, fluorescence microscopy के time frame fusion में इस्तेमाल होने वाले quantile projection (ऊपरी 75 % point लेना) जैसी ही सोच है, लेकिन यह op ऊपर के m मानों का औसत है, इसलिए दोनों छोर ठीक-ठीक mean projection और maximum projection से मेल खाते हैं, और बीच में यह monotonic है।

कहाँ उपयोग करें: पंक्ति अलग करना (आड़ा collapse करके valley खोजना), अक्षर अलग करना (खड़ा collapse करना), rule line detection, band की सीमाएँ, deskew जिस निर्णय-मात्रा का अंदर उपयोग करता है उसका visualisation। downstream में 1-D function की family है (tb_smooth_funct_1d_gauss / tb_local_min_funct_1d / tb_derivate_funct_1d)।

उपयोग की विस्तृत guide

• gallery2d_bridge family guide

संदर्भ (sample data, साहित्य)

• 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 में दिए गए हैं।

Studio में आज़माएँ

नीचे का program सच में चलता है, यह जाँचा गया है (figure वाला ही input)। Studio की help में यह block buttons बन जाता है, जिनसे इसे वहीं load करके चलाया जा सकता है।

img_to_projection_profile 0.50 0.50

▸ यह pipeline load करें  ·  Load करके चलाएँ

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• gallery2d_bridge — py -3.11 examples/gallery2d_bridge.py

वे अगले ops जिनसे type जुड़ता है (signal को input के रूप में लेते हैं)

identity · tb_create_funct_1d_array · tb_smooth_funct_1d_gauss · tb_smooth_funct_1d_mean · tb_derivate_funct_1d · tb_integrate_funct_1d · tb_zero_crossings_funct_1d · tb_abs_funct_1d

इसी category के (bridge)

img_to_points · img_to_keypoints · img_to_signal · img_to_counts · img_to_matrix · img_to_video · img_to_volume · img_to_lightfield


*Provenance: ops.py — 2D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.