fullseye

Fullseye Studio की पूरी गाइड

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

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

日本語 · English · 简体中文 · 繁體中文 · 한국어 · Deutsch · हिन्दी

Fullseye Studio एक HDevelop-style visual pipeline workbench है। आप operators search करके उन्हें क्रम से लगाते हैं, sliders से दो knobs घुमाते हैं, zoom/pan के साथ intermediate results देखते हुए एक-एक stage चलाते हैं, और जोड़ी गई pipeline को --ops string / Python / JSON के रूप में export करते हैं। अंदर से यह fullseye API का एक पतला GUI front end है; pipeline logic (PipelineModel), Inspector (inspect_result), और sample set (recipes) सभी Qt से स्वतंत्र हैं और unit-tested हैं।

यह गाइड studio.py (build_window) को असली code से मिलाकर features की सूची देती है। UX/design का इरादा STUDIO_UX.md में है, और v14 perception panel की पृष्ठभूमि V14.md / PERCEPTION.md में है।


Launch कैसे करें

आपको GUI extras (PySide6) चाहिए (pip install -e ".[gui]")।

py -3.11 studio.py          # directly from the repository root
fullseye-studio             # if you have run pip install -e ., via the console script

Launch करने पर 1320×860 की main window खुलती है (title: Fullseye Studio)। अगर assets/fullseye.ico मौजूद है, तो उसे window/taskbar icon के रूप में इस्तेमाल किया जाता है। शुरू में एक synthetic demo image load होती है (demo_image, एक 256×256 image जिसमें edges, blobs और एक gradient हैं)।


Screen layout (3 panels)

ऊपर एक menu bar (File / Edit / View / Run / Help) और एक brand toolbar है, और नीचे एक status bar (hover पर coordinates + pixel value, और flash() के अस्थायी messages)। बीच में बाएँ/दाएँ split में तीन panels हैं।

Panel Section (QGroupBox) भूमिका
बायाँ SAMPLE PIPELINES / OPERATORS Samples load करना और operator browser
बीच PIPELINE / SELECTED STAGE · KNOBS / EXPORT & I/O Pipeline बनाना, knobs adjust करना, export करना
दायाँ IMAGE / DISPLAY & PERCEPTION (v14) / ANALYSIS Result display, colour map/perception, histogram/Inspector

शुरुआती split widths 340 / 360 / 640 px हैं, और दायाँ panel फैलता है।


बायाँ panel: Operators browser

Sample pipelines (SAMPLE PIPELINES)

Dropdown से 25 तैयार recipes (recipes.py) में से एक चुनने पर pipeline उस recipe से बदल जाती है। Examples: “Edge — Sobel + Otsu”, “Denoise — bilateral + unsharp”, “Segment — blob / coin”, “Count — blobs”, “Texture — Gabor”, आदि। पहले कुछ चलाकर फिर यह देखने के लिए कि वह क्या करता है, यह एक अच्छा शुरुआती बिंदु है।

Operator browser (OPERATORS)

Insert की जगह “चुने गए stage के ठीक बाद” है। अगर कोई stage चुना नहीं गया है, तो यह अंत में जुड़ता है।


बीच का panel: pipeline बनाना और step execution

PIPELINE (stages की list)

हर row N. op (a=…, b=…) -> result का summary के रूप में होती है, और उस stage तक चलाने के result की स्थिति (image/region/feature आदि) दाईं ओर दिखती है।

किसी stage को चुनने पर उस stage तक का intermediate result दाईं ओर के IMAGE panel में बनता है, और नीचे का ANALYSIS (histogram / Inspector) भी sync होता है। यही “step-through debugger” के बराबर है।

SELECTED STAGE · KNOBS (knob adjustment)

चुने गए stage का विवरण दिखाता है (op_detail: name, in → out sort, category, HALCON alias) और उसे दो sliders a / b (0.00–1.00) से adjust करता है। Value बदलते ही result तुरंत फिर से compute होता है। जब कोई stage चुना नहीं होता, तो sliders disabled रहते हैं (ऐसा design जो किसी बेमतलब knob को live state में नहीं छोड़ता)।

Knobs का मतलब हर operator में अलग है (radius / threshold / σ / direction आदि)। आप क्या adjust कर रहे हैं, यह stage के detail label और tooltip में देखा जा सकता है।

EXPORT & I/O


दायाँ panel: display, perception, analysis

IMAGE (result view)

DISPLAY & PERCEPTION (v14)

ANALYSIS


Command palette (Ctrl+P)

Ctrl+P एक fuzzy-search dialog खोलता है जिससे आप किसी भी action या किसी भी operator को name से चला सकते हैं। यह prefix match > word-start match > substring match के क्रम में rank करता है (palette_filter, Qt से स्वतंत्र रूप से unit-tested)। Actions (जैसे ▸ Open image) पहले आते हैं, फिर सभी operators (जैसे op: gaussian), और Enter उसे चलाता है। आप सिर्फ़ keyboard से operator insert करने तक पूरा काम कर सकते हैं।


Keyboard shortcuts

App के अंदर Help ▸ Keyboard shortcuts (F1) पूरी list एक table में दिखाता है (self-documenting)। मुख्य shortcuts (studio.py की act_* definitions से):

Action Shortcut Action Shortcut
Open image Ctrl+O Remove stage Del
Synthetic demo Ctrl+D Move stage up / down Ctrl+↑ / Ctrl+↓
Save result Ctrl+S Clear pipeline Ctrl+Shift+Backspace
Open pipeline Ctrl+Shift+O Zoom in / out Ctrl+= / Ctrl+-
Save pipeline Ctrl+Shift+S Fit / Actual size (1:1) Ctrl+0 / Ctrl+1
Export Ctrl+E 3D surface Ctrl+3
Quit Ctrl+Q Reset to start Home
Command palette Ctrl+P Step forward Ctrl+→
Keyboard shortcuts F1 Run all Ctrl+Enter
Image Viewer Ctrl+Shift+I Run a ledger op Ctrl+Shift+L
Pipeline as code → editor Ctrl+Shift+E    

हर action एक ही handler से चलता है, चाहे menu से हो, toolbar से या button से (एक action, कई entry points)।


HDevelop dev_* display-control directives

HDevelop की तरह आप program से display का व्यवहार control कर सकते हैं। Program window की script में dev_* line लिखने पर उसे image stage नहीं, बल्कि display directive माना जाता है, जो Apply पर लागू होता है (सभी 43 dev_* की पूरी जानकारी docs/HDEVELOP_DEV_OPS.md में है)।

Directive असर संबंधित UI
dev_update_window ('off'|'on') Graphics window का auto-update toggle करें View ▸ Display updates ▸ Graphics window
dev_update_var ('off'|'on') Variable window का auto-update toggle करें वही, Variable window
dev_update_pc ('off'|'on') Execution cursor का update toggle करें वही, Program counter
dev_update_time ('off'|'on') हर line के processing-time display को toggle करें वही, Operator timings
dev_update_off () / dev_update_on () ऊपर के सभी को एक साथ off / on करें toolbar का Auto-update toggle
dev_set_part (Row1, Col1, Row2, Col2) Display range (zoom/pan) set करें; negative value = पूरा mouse wheel / Fit के साथ इस्तेमाल करें
dev_set_lut ('gray'|'jet'|'viridis'…) Colour map (LUT) बदलें View ▸ Display mode
dev_clear_window () मौजूदा window साफ़ करें —
set_system ('thread_num', N) OpenCV worker threads की संख्या set करें (0 = default/सभी) Tools ▸ System settings
set_system ('operator_timeout', ms) एक soft operator timeout (Run status में धीमे stage की चेतावनी देता है) वही
dev_set_draw ('fill'|'margin') Region overlay को fill और outline (margin) के बीच toggle करें View ▸ Display mode = region overlay
dev_set_color ('red'|'green'…) Region overlay का रंग वही
dev_set_line_width (N) Margin की outline width (px) वही
dev_disp_text ('label', Row, Col) Result के ऊपर text annotation (अगले draw / dev_clear_window पर साफ़ होता है) —
dev_open_window (Row, Col, W, H) Graphics window खोलें, रखें और current बनाएँ (फिर से Apply करने पर वही window फिर से रखी जाती है = बढ़ती नहीं) Ctrl+G / Window ▸ Graphics
dev_set_window (Handle) Handle से current window बदलें window पर click करें
dev_set_window_extents (Row, Col, W, H) Current window की position/size (-1 = जैसा है वैसा रखें) window को drag करें
dev_close_window () Current window बंद करें (resident main window सुरक्षित है) window का ×
set_system ('max_graphics_windows', N) Windows की संख्या की सीमा (default 256, हर path पर fail-closed) Tools ▸ System settings ▸ Windows

इस्तेमाल: सबसे ऊपर dev_update_off () रखने से आप भारी processing या कई edits बिना drawing cost के कर सकते हैं, फिर dev_update_on () से display को एक साथ मौजूदा स्थिति पर ला सकते हैं (HDevelop वाली ही performance technique)। जब updates off हों, तो status bar के दाईं ओर updates off: … दिखता है, ताकि रुकी हुई स्थिति कभी “टूटी हुई न लगे”। Toolbar का Auto-update toggle भी यही switch करता है।

ध्यान दें (ईमानदारी से): pipeline stage के उलट, dev_* if/for को नहीं मानता और बिना शर्त लागू होता है (branch के अंदर रखने पर भी चलता है)। इन्हें top level पर लिखें। Unsupported dev_* एक error है।

आज़माकर देखें: File ▸ dev_* visualization demo एक HDevelop program load करके लागू करता है जो coins image पर ऊपर के dev_* असल में इस्तेमाल करता है (segment → regions को cyan outline


कई भाषाओं का support (en / ja / zh, table-driven)

UI की भाषा Tools ▸ Language / 言語 / 语言 पर बदली जाती है (यह याद रखी जाती है)। Translations एक table हैं जो studio_assets/i18n.json में केंद्रित है, और इन्हें code बदले बिना जोड़ा जा सकता है:

अगर op_help/<name>.<lang>.html मौजूद है, तो op help हर भाषा में दिखती है। Honest disclosure: run के दौरान बदलने वाले status शब्द (running… / PASS आदि) और op notes का body अभी अनुवादित नहीं हैं (op notes को English में करना भविष्य का काम है, docstrings को bilingual बनाने के साथ)।

Python Editor और IDE features (2026-08-30)

Studio “आप सिर्फ़ pipeline से code call कर सकते हैं” वाले चरण से आगे जाता है और इसे Python development environment के रूप में भी इस्तेमाल किया जा सकता है।

Drag and drop से क्या खोला जा सकता है (2026-10-03)

Main window पर files या folders drop करें और हर एक उसके लायक window में खुलता है (एक साथ कई files कई windows खोलती हैं)। पूरी list Help ▸ Files you can open (drag & drop)… में है; वह table Studio के असल में इस्तेमाल होने वाले extension constants से बनती है, इसलिए वह इस section से नई हो सकती है।

आप क्या drop करते हैं कहाँ खुलता है Notes
Images (png / jpg / tif / webp / pgm / pfm / jp2 …), folders Image viewer List, zoom, pixel values, histogram, “Use as pipeline input”। Folder अपने अंदर की images सीधे खोलता है
.py Python editor (हर file का एक tab)  
.json Pipeline  
Point clouds और meshes (PLY / STL / PCD / OBJ / OFF / XYZ) 3-D viewer ASCII और binary दोनों (PLY little- और big-endian में, PCD binary_compressed भी)
3DGS (.ply / .splat) 3-D viewer SH DC term से रंग; opacity < 0.05 वाले splats छिपे रहते हैं
Medical volumes (NIfTI / NRRD / MHA / DICOM) 3-D viewer SimpleITK या उसके जैसा चाहिए
glTF (.glb / .gltf), LiDAR (.las / .laz) 3-D viewer pygltflib / laspy चाहिए
Robots (MJCF / URDF) 3-D viewer .xml सिर्फ़ तब जब उसका root <mujoco> या <robot> हो। mujoco चाहिए
Motion capture (.bvh), neuron morphology (.swc) 3-D viewer BVH joint paths समय के हिसाब से रंगे जाते हैं
Videos, animated GIF, HDF5 Video cube  
Event-camera (x, y, t, p) (txt / csv / npy / npz) Video cube Content से पहचाना जाता है, polarity frames में बदला जाता है
.npy Shape के हिसाब से 2-D → input image, (N, 3 / 6) → point cloud, 3-D → volume
Markdown, SVG Document viewer  
Audio (wav / mp3 / flac / ogg …) Audio window Waveform, spectrogram, playback। Non-WAV के लिए soundfile चाहिए
Robot model + qpos .npy (T, nq) साथ में Robot player Slider और play button

कोई भी ledger op आज़माएँ (Tools ▸ Run a ledger op…, Ctrl+Shift+L) (2026-10-03)

एक window जो typed-ledger ops (PIV, math, driving, 3-D … लगभग 1,700) को हर argument के type से मेल खाते input fields के साथ चलाती है। बाईं ओर के search box में name या शब्द लिखें, एक op चुनें, और उसका argument form दाईं ओर दिखता है।

कुछ ops अपने sample पर नहीं चलते (हर op का sample कैसे बनाया गया है, उसकी सीमा: 2026-10-03 को sample वाले 60 ops में से 27 जैसे के तैसे चले)। Window अपनी ओर से कोई failure नहीं जोड़ती, यह एक gate से जाँचा जाता है: इसका result sample को सीधे op में pass करने से मेल खाना चाहिए।

CSV कॉलम को table ऑपरेशन से जोड़ना

Typed input table होने पर मौजूदा ledger runner में CSV file… चुनें। हर role में केवल वास्तविक CSV कॉलम चुना जाता है। Gauge R&R के लिए part / part ID, operator / operator, value / measured value हैं। जाँच rows, distinct keys, missing values और repeats दिखाती है। असमान repeats वाले समूह नाम सहित run से पहले रोके जाते हैं, अपने-आप सुधारे नहीं जाते। Mapping operation और header signature के अनुसार सहेजी जाती है और केवल समान format में लौटती है। CSV नहीं बदली जाती।

Result view चीज़ों को कैसे दिखाता है

जो results pixels नहीं हैं, वे अपने shape के हिसाब से बनाए जाते हैं (दायाँ panel और ऊपर वाली window यह साझा करते हैं)।

Result ऐसे दिखता है
flow2d (2, h, w) colour wheel के ऊपर arrows (सबसे लंबा = 0.9 × spacing), जहाँ hue = direction, brightness = speed
1-D numbers एक line (MATLAB plot(y))
table (dict) बराबर लंबाई के उसके numeric columns lines के रूप में; x axis एक t / x / freq … column है, अगर हो
(h, w, 4) / (h, w, 1) / complex सफ़ेद के ऊपर RGB / grey / magnitude |z|
खाली arrays, 4-D और उससे ज़्यादा shape और range text के रूप में (पहली value को “scalar” के रूप में नहीं दिखाया जाता)

परिणाम कैश, जाँच-चिह्न और इनपुट छवि का संदर्भ (2026-10-19)

एक ही प्रोसेसिंग को पूरे फ़ोल्डर पर लागू करें

Run ▸ इस प्रोसेसिंग को फ़ोल्डर पर लागू करें… में इनपुट फ़ोल्डर और फ़ाइल पैटर्न चुनें, पहली, बीच की, आख़िरी या किसी भी एक छवि पर परिणाम जाँचें, और फिर सभी फ़ाइलों पर चलाएँ। शुरू करते समय इनपुट और प्रोसेसिंग चेन एक बार स्थिर कर दी जाती है, इसलिए बीच में नॉब बदलने से चल रहे बैच की शर्तें नहीं बदलतीं।

एक ही नाम की फ़ाइलों के लिए “ओवरराइट न करें”, “ओवरराइट करें” और “क्रम संख्या जोड़ें” में से चुनें; सब-फ़ोल्डर शामिल होने पर आउटपुट की ओर भी वही संरचना बनती है। summary.csv में फ़ाइल नाम, स्थिति, प्रोसेसिंग समय, संख्यात्मक आउटपुट और त्रुटि का कारण होता है। किसी एक छवि को पढ़ने या प्रोसेस करने में विफलता होने पर बाक़ी जारी रहता है, और समाप्ति के बाद विफल फ़ाइलें और कारण सूची में देखे जा सकते हैं। रोकने का अनुरोध वर्तमान छवि के पूरा होने की सीमा पर स्वीकार होता है, और वास्तव में रुकने तक “रुका हुआ” नहीं दिखाया जाता।

कार्य मोड और पैनल

ऊपर की पट्टी में प्रोसेस बनाना, परिणाम तुलना, मान जाँच या कोड बनाना चुनने पर उस काम के पैनल बड़े और बाकी संकुचित हो जाते हैं। Ctrl+1–4 से मोड बदलते हैं। इनपुट, प्रोसेस चरण और निकाले गए परिणाम नहीं बदलते; हर मोड में किए गए पैनल समायोजन याद रहते हैं। F11 अस्थायी रूप से केवल चित्र दिखाता है और Esc ठीक पिछला विन्यास लौटाता है। “पैनल खोजें…” जापानी या अंग्रेज़ी नाम से छिपा पैनल खोलता है।

डिस्प्ले रेंज और मूल डेटा

हर छवि के लिए अपने-आप प्रत्येक छवि की अलग रेंज बनाता है, तुलना छवियों के लिए साझा A/B पर एक रेंज लगाता है, और मैनुअल दर्ज की गई सीमाएँ उन डिस्प्ले मोड पर लागू करता है जो मान-सीमा का उपयोग करते हैं। region overlay जैसे मोड में, जो रेंज का उपयोग नहीं करता, लेबल यही बताता है। “केवल डिस्प्ले प्रोसेसिंग” का अर्थ है कि मूल मान नहीं बदलते। NaN और Inf मैजेंटा में दिखते हैं; रेंज से बाहर के मान अंतिम रंग में दिखते हैं और पिक्सेल संख्या की चेतावनी देते हैं। सहेजते समय मूल संख्याएँ, वर्तमान डिस्प्ले छवि, या दोनों चुनें; मूल संख्याएँ डिफ़ॉल्ट हैं।

Export और Save/Open का संबंध

Studio में बनी pipeline को तीन रूपों में निकाला जा सकता है।

रूप कैसे बनाएँ कहाँ इस्तेमाल करें
--ops string Export (Ctrl+E) CLI के imgevolve.py pipeline --ops "…" / run "…" में paste करें
Python function Export (Ctrl+E) अपने code में fullseye.run_pipeline(...) के रूप में embed करें
JSON Save pipeline (Ctrl+Shift+S) FullseyeEngine.load(...) / imgevolve.py run pipeline.json से चलाएँ

Studio में design, code/CLI में execute वाला HDevelop→HDevEngine-equivalent flow JSON के ज़रिए होता है। JSON लेकर execute करने वाले पक्ष के लिए ENGINE.md देखें।


संबंधित documents