مقاله
انشعاب در گراف آلترون: ذخیره، میانگین و نمایش همزمان
فرض کنید نمونهای را چند ساعت زیر دوربین دارید. میخواهید روی مانیتور یک تصویر صاف و کمنویز ببینید، کل دادهی خام را برای تحلیل بعدی ذخیره کنید و جدا از اینها هر چند ثانیه یک عکس برای گزارش بردارید. سه خواسته از یک دوربین. در آلترون این کار با انشعاب در گراف انجام میشود.

انشعاب یعنی چه؟
هر گراف آلترون از نودهایی ساخته شده که با سیم به هم وصلاند. دوربین سر زنجیره است. بعد پردازشها میآیند و در انتها ذخیرهسازها و نمایشگرها. خروجی یک نود لازم نیست فقط به یک نود برود. میتوانید از خروجی یک نود چند سیم بکشید و هر سیم یک شاخهی جدا بسازد.
خود انشعاب داده را کپی نمیکند و همهی شاخهها همان داده را میگیرند. پس یک شاخهی نمایش یا ذخیرهی اضافه، دادهی شاخههای دیگر را عوض نمیکند.
این مهمترین تصمیم است. هر شاخه دقیقاً همان دادهای را میگیرد که در نقطهی انشعاب جریان دارد:
- شاخهی ذخیره برای تحلیل را بعد از تصحیحهای فیزیکی سنسور جدا کنید، مثل سطح سیاه و تصحیح تاریک و سفید. ولی پیش از تغییرات ظاهری مثل گاما.
- هموارسازی و تیزکردنهایی را که فقط برای چشم است، در شاخهی نمایش بگذارید تا دادهی ذخیرهشده دست نخورد.
- اگر برنامهی خودتان باید داده را از وسط مسیر بردارد، یک نود Data Holder همانجا وصل کنید. این نود داده را تغییر نمیدهد و فقط آن را در دسترس کد بیرونی میگذارد.
در Tools › Flow Graph Editor این ساختار را بسازید:
- اول دوربین را بگذارید و بعد تصحیحهای پایه را، مثلاً نود FlatFieldCorrection برای تصحیح تاریک و سفید.
- از خروجی آخرین تصحیح، سیم اول را به یک نود ذخیرهی دادهی خام (RawData) بکشید. این شاخه همهچیز را کامل ذخیره میکند.
- سیم دوم را به یک نود Smoothing با مرحلهی Continuous Average ببرید و خروجی آن را به یک نمایشگر بدهید. این شاخه تصویر صاف و میانگینگیریشده را نشان میدهد.
- سیم سوم را مستقیم به یک نمایشگر دیگر وصل کنید تا دادهی زندهی بدون میانگین را هم ببینید.
- گراف را ذخیره کنید و در برنامهی اصلی Recreate All را بزنید. تا زنجیره از نو ساخته نشود، تغییر اعمال نمیشود.
برای عکسهای دورهای، یک نود ImagingInterval در ابتدای شاخه بگذارید و ذخیرهساز را بعد از آن وصل کنید. سه حالت دارد:
گزینهی Apply to saving too را حتماً ببینید. اگر تیک بخورد، ذخیرهسازهای بعد از این نود فقط همان نمونههای عبوری را ضبط میکنند و ضبط تایملپس دارید. اگر تیک نخورد، رقیقسازی فقط پردازش و نمایش را سبک میکند. در این حالت، تا وقتی ذخیرهسازی از همین دوربین در حال ضبط است، نود همهی داده را عبور میدهد تا چیزی از ضبط کم نشود.
در میان گرافهای پیشفرض آلترون، نمونهی آمادهای به نام Default_AreaScan_Color_Usb3+ImagingIntervalForDataSaving هم هست که میتوانید از آن شروع کنید.
- گاما یا تیزکننده را پیش از نقطهی انشعاب ذخیره میگذارند و بعد تعجب میکنند که چرا دادهی ذخیرهشده با اندازهگیری جور نیست.
- Recreate All را بعد از تغییر گراف فراموش میکنند.
- یک شاخهی نمایش سنگین کل زنجیره را کند میکند. در تب Performance ببینید کدام نود بیشترین سهم پردازنده را دارد و جلوی آن یک ImagingInterval در حالت Max rate بگذارید.
قبل از یک ضبط طولانی، گراف را چند دقیقه اجرا کنید و در تب Internal Info نرخ دادهی ورودی و خروجی هر نود را مقایسه کنید. اگر خروجی یک نود ناگهان از ورودیاش کمتر است و این کار عمدی شما نیست، داده دقیقاً در همان نود در حال افتادن است.
توضیح عمومیتری دربارهی خط لولهی پردازش را در ویکیپدیا (انگلیسی) پیدا میکنید.
سؤالات رایج دربارهی گراف و ضبط را در پرسشهای متداول جمع کردهایم. اگر گراف شما ساختار خاصی لازم دارد، از صفحهی تماس برایمان بنویسید تا با هم طراحیاش کنیم.